-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Background
One part of the DIMP processsing is the re-pseudonymization of identifier.
Specifically the patient identifier and the encounter identifier.
Both have nothing to do with the data extraction specification (CRTDL) as such and therefore should not be part of the CRTDL or TORCH.
However the identifier need to be extracted as part of the data extraction in order for aether to be able to re-pseudonymize the extracted data in dem DIMP step using the fhir pseudonymizer.
Therefore a pre-procesing step should be added to aether, which adds specific fields to be added to the CRTDL before it is send to TORCH in order to extract the required fields later needed for DIMP.
Further to make it more generalizable (e.g. if certain elements are required for a custom step) the task is to add a pre-processing step which allows certain elements to be added to CRTDL.
Task
Aether should be extended to allow standardised adding of elements (by element id) to attributeGroups of an input CRTDL based on the groupReference (profile url) and the fields to add.
Additionally it should be possible to add a whole new group to a CRTDL - marked in the config by addGroupIfNotExists
Additionally it should possible to add an element which links to all other elements of a profile. aether should then add the links by id to all other features of the profile to the linkedGroups and remove the profile link from the linkedGroups.
Example
Example CRTDL - dataExtraction excerpt
{
"attributeGroups": [
{
"attributes": [
{
"attributeRef": "Patient.deceased[x]",
"mustHave": false
}
],
"id": "167e3817-8e6e-4191-bd14-ff616696aa9a",
"groupReference": "https://www.medizininformatik-initiative.de/fhir/core/modul-person/StructureDefinition/PatientPseudonymisiert",
"name": "MII PR Person Patient (Pseudonymisiert)"
},
{
"attributes": [
{
"attributeRef": "Condition.abatement[x]",
"mustHave": false
},
{
"attributeRef": "Condition.clinicalStatus",
"mustHave": false
},
{
"attributeRef": "Condition.code",
"mustHave": false
},
{
"attributeRef": "Condition.onset[x]",
"mustHave": false
},
{
"attributeRef": "Condition.recordedDate",
"mustHave": false
},
{
"attributeRef": "Condition.verificationStatus",
"mustHave": false
}
],
"id": "41a7863b-2b26-4b7b-a7ac-59934688699c",
"groupReference": "https://www.medizininformatik-initiative.de/fhir/core/modul-diagnose/StructureDefinition/Diagnose",
"name": "MII PR Diagnose Condition"
},
{
"attributes": [
{
"attributeRef": "Encounter.class",
"mustHave": false
},
{
"attributeRef": "Encounter.period",
"mustHave": false
},
{
"attributeRef": "Encounter.serviceType",
"mustHave": false
},
{
"attributeRef": "Encounter.status",
"mustHave": false
},
{
"attributeRef": "Encounter.type",
"mustHave": false
}
],
"id": "1ee3c1f4-8efc-4080-9655-996bffce9316",
"groupReference": "https://www.medizininformatik-initiative.de/fhir/core/modul-fall/StructureDefinition/KontaktGesundheitseinrichtung",
"name": "MII PR Fall Kontakt mit einer Gesundheitseinrichtung"
},
{
"attributes": [
{
"attributeRef": "Encounter.class",
"mustHave": false
},
{
"attributeRef": "Encounter.status",
"mustHave": false
},
{
"attributeRef": "Encounter.type",
"mustHave": false
}
],
"id": "d1048bd7-1e7a-4135-937e-baa1556e0f74",
"groupReference": "https://www.medizininformatik-initiative.de/fhir/core/modul-fall/StructureDefinition/KontaktGesundheitseinrichtung",
"name": "My other treatment cases"
}
]
}Example config to change CRTDL
[
{
"groupReference": "https://www.medizininformatik-initiative.de/fhir/core/modul-person/StructureDefinition/PatientPseudonymisiert",
"addGroupIfNotExists": false,
"attributesToAdd": [
{
"attributeRef": "Patient.identifier:PseudonymisierterIdentifier",
"mustHave": true
}
]
},
{
"groupReference": "https://www.medizininformatik-initiative.de/fhir/core/modul-diagnose/StructureDefinition/Diagnose",
"addGroupIfNotExists": true,
"attributesToAdd": [
{
"attributeRef": "Condition.code",
"mustHave": false
},
{
"attributeRef": "Condition.encounter",
"linkedGroups": ["https://www.medizininformatik-initiative.de/fhir/core/modul-fall/StructureDefinition/KontaktGesundheitseinrichtung"]
"mustHave": false
}
]
},
{
"groupReference": "https://www.medizininformatik-initiative.de/fhir/core/modul-fall/StructureDefinition/KontaktGesundheitseinrichtung",
"ddGroupIfNotExists": true,
"attributesToAdd": [
{
"attributeRef": "Encounter.identifier:Aufnahmenummer",
"mustHave": true
}
]
}
]Resulting (changed) CRTDL
{
"attributeGroups": [
{
"attributes": [
{
"attributeRef": "Patient.deceased[x]",
"mustHave": false
},
{
"attributeRef": "Patient.identifier:PseudonymisierterIdentifier",
"mustHave": true
}
],
"id": "167e3817-8e6e-4191-bd14-ff616696aa9a",
"groupReference": "https://www.medizininformatik-initiative.de/fhir/core/modul-person/StructureDefinition/PatientPseudonymisiert",
"name": "MII PR Person Patient (Pseudonymisiert)"
},
{
"attributes": [
{
"attributeRef": "Condition.abatement[x]",
"mustHave": false
},
{
"attributeRef": "Condition.clinicalStatus",
"mustHave": false
},
{
"attributeRef": "Condition.code",
"mustHave": true
},
{
"attributeRef": "Condition.onset[x]",
"mustHave": false
},
{
"attributeRef": "Condition.recordedDate",
"mustHave": false
},
{
"attributeRef": "Condition.verificationStatus",
"mustHave": false
},
{
"attributeRef": "Condition.encounter",
"linkedGroups": ["d1048bd7-1e7a-4135-937e-baa1556e0f74"]
"mustHave": false
}
],
"id": "41a7863b-2b26-4b7b-a7ac-59934688699c",
"groupReference": "https://www.medizininformatik-initiative.de/fhir/core/modul-diagnose/StructureDefinition/Diagnose",
"name": "MII PR Diagnose Condition"
},
{
"attributes": [
{
"attributeRef": "Encounter.class",
"mustHave": false
},
{
"attributeRef": "Encounter.period",
"mustHave": false
},
{
"attributeRef": "Encounter.serviceType",
"mustHave": false
},
{
"attributeRef": "Encounter.status",
"mustHave": false
},
{
"attributeRef": "Encounter.type",
"mustHave": false
},
{
"attributeRef": "Encounter.identifier:Aufnahmenummer",
"mustHave": true
}
],
"id": "1ee3c1f4-8efc-4080-9655-996bffce9316",
"groupReference": "https://www.medizininformatik-initiative.de/fhir/core/modul-fall/StructureDefinition/KontaktGesundheitseinrichtung",
"name": "MII PR Fall Kontakt mit einer Gesundheitseinrichtung"
},
{
"attributes": [
{
"attributeRef": "Encounter.class",
"mustHave": false
},
{
"attributeRef": "Encounter.status",
"mustHave": false
},
{
"attributeRef": "Encounter.type",
"mustHave": false
},
{
"attributeRef": "Encounter.identifier:Aufnahmenummer",
"mustHave": true
}
],
"id": "d1048bd7-1e7a-4135-937e-baa1556e0f74",
"groupReference": "https://www.medizininformatik-initiative.de/fhir/core/modul-fall/StructureDefinition/KontaktGesundheitseinrichtung",
"name": "My other treatment cases"
}
]
}