Kerndatensatz Senologie
0.9.0 - ci-build
Kerndatensatz Senologie - Local Development build (v0.9.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Draft as of 2026-05-04 |
{
"resourceType" : "StructureMap",
"id" : "SenologieToObdsTod",
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap SenologieToObdsTod</b></p><a name=\"SenologieToObdsTod\"> </a><a name=\"hcSenologieToObdsTod\"> </a><pre class=\"fml\">\r\n<b>map</b><span style=\"color: navy\"> "</span>https://www.senologie.org/fhir/StructureMap/SenologieToObdsTod<span style=\"color: navy\">" = "</span>SenologieToObdsTod<span style=\"color: navy\">"\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">title: Senologie Patient + Conditions to oBDS Todesmeldung</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">status: draft</span>\r\n\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R4/bundle.html\" title=\"Bundle\">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style=\"color: navy\">" </span><b>alias </b>Bundle <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R4/patient.html\" title=\"Patient\">http://hl7.org/fhir/StructureDefinition/Patient</a><span style=\"color: navy\">" </span><b>alias </b>Patient <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R4/condition.html\" title=\"Condition\">http://hl7.org/fhir/StructureDefinition/Condition</a><span style=\"color: navy\">" </span><b>alias </b>Condition <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"StructureDefinition-obds-meldung.html\" title=\"oBDS Meldung\">https://www.senologie.org/fhir/StructureDefinition/obds-meldung</a><span style=\"color: navy\">" </span><b>alias </b>OBDSMeldung <b>as </b><b>target</b>\r\n\r\n<b>imports</b><span style=\"color: navy\"> "</span><a href=\"StructureMap-SenologieToObdsTumorzuordnung.html\" title=\"SenologieToObdsTumorzuordnung\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsTumorzuordnung</a><span style=\"color: navy\">"\r\n</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Known limitation: Sub-groups (MapTod, MapTodesursache) use</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">`target tgt : BackboneElement` because FML has no syntax to declare the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Logical Model sub-path for BackboneElement slices. The IG Publisher produces</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">SM_TARGET_PATH errors (~10). Element names are correct per the oBDS LM.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">============================================================================</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Hauptgruppe: Bundle -> oBDS Todesmeldung</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Das Bundle enthaelt einen Patient (mit deceasedDateTime) und ggf.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Conditions fuer Todesursachen (category = cause-of-death).</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Die Tumorzuordnung wird aus der Tumor-Condition abgeleitet.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">============================================================================</span>\r\n<b>group </b>SenologieToObdsTod<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">src</span><span style=\"color: navy\"> : </span>Bundle, <b>target</b> <span style=\"color: maroon\">tgt</span><span style=\"color: navy\"> : </span>OBDSMeldung<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Tumorzuordnung: aus der Tumor-Condition (nicht cause-of-death)</span>\r\n src.entry<b> as </b><span style=\"color: maroon\">entry</span><b> where </b>resource.is(Condition) and resource.category.coding.exists(code = 'encounter-diagnosis')<b> then</b><span style=\"color: navy\"> {\r\n</span> entry.resource<b> as </b><span style=\"color: maroon\">condition</span><b> then</b><span style=\"color: navy\"> {\r\n</span> condition<span style=\"color: navy\"><b> -> </b></span>tgt.tumorzuordnung<b> as </b><span style=\"color: maroon\">tz</span><b> then </b>MapTumorzuordnung<span style=\"color: navy\">(</span><span style=\"color: maroon\">condition</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">tz</span><span style=\"color: navy\">)</span> <i>"CallMapTumorzuordnung"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"ConditionContext"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"EntryConditionTZ"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Tod: aus Patient + Todesursachen-Conditions</span>\r\n src.entry<b> as </b><span style=\"color: maroon\">patEntry</span><b> where </b>resource.is(Patient)<b> then</b><span style=\"color: navy\"> {\r\n</span> patEntry.resource<b> as </b><span style=\"color: maroon\">patient</span><span style=\"color: navy\"><b> -> </b></span>tgt.tod<b> as </b><span style=\"color: maroon\">tod</span><b> then </b>MapTod<span style=\"color: navy\">(</span><span style=\"color: maroon\">patient</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">tod</span><span style=\"color: navy\">)</span> <i>"CallMapTod"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Bundle lookups moved from MapTod</span>\r\n src.entry<b> as </b><span style=\"color: maroon\">codEntry</span><b> where </b>resource.is(Condition) and resource.category.coding.exists(code = 'cause-of-death')<b> then</b><span style=\"color: navy\"> {\r\n</span> codEntry.resource<b> as </b><span style=\"color: maroon\">codCondition</span><b> then</b><span style=\"color: navy\"> {\r\n</span> codCondition.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</span> code.coding<b> as </b><span style=\"color: maroon\">c</span><b> where </b>(system = 'http://fhir.de/CodeSystem/bfarm/icd-10-gm') and code.startsWith('C')<b> then</b><span style=\"color: navy\"> {\r\n</span> c<span style=\"color: navy\"><b> -> </b></span>tod.todTumorbedingt = <span style=\"color: blue\">'J'</span> <i>"SetTodTumorbedingtJa"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"CheckIsCancer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"CheckCodCode"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"AnalyseCodCondition"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"EntryCheckTumorbedingt"</i><span style=\"color: navy\">;</span>\r\n src.entry<b> as </b><span style=\"color: maroon\">codEntry2</span><b> where </b>resource.is(Condition) and resource.category.coding.exists(code = 'cause-of-death')<b> then</b><span style=\"color: navy\"> {\r\n</span> codEntry2.resource<b> as </b><span style=\"color: maroon\">codCondition</span><span style=\"color: navy\"><b> -> </b></span>tod.todesursachen<b> as </b><span style=\"color: maroon\">tu</span><b> then </b>MapTodesursache<span style=\"color: navy\">(</span><span style=\"color: maroon\">codCondition</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">tu</span><span style=\"color: navy\">)</span> <i>"CallMapTodesursache"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"EntryTodesursachen"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"EntryPatient"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">============================================================================</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Tod: Patient -> OBDSMeldung.tod</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Sterbedatum, Tod tumorbedingt, Todesursachen</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">============================================================================</span>\r\n<b>group </b>MapTod<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">src</span><span style=\"color: navy\"> : </span>Patient, <b>target</b> <span style=\"color: maroon\">tgt</span><span style=\"color: navy\"> : </span>BackboneElement<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Abschluss_ID: aus Patient.identifier oder generiert</span>\r\n src.id<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -> </b></span>tgt.abschlussID = <span style=\"color: maroon\">id</span> <i>"SetAbschlussID"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Sterbedatum: aus Patient.deceasedDateTime</span>\r\n src.deceased<b> as </b><span style=\"color: maroon\">d</span><b> where </b>$this.is(dateTime)<span style=\"color: navy\"><b> -> </b></span>tgt.sterbedatum = <span style=\"color: maroon\">d</span> <i>"SetSterbedatum"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Tod_tumorbedingt: Default U; bundle lookups moved to calling group.</span>\r\n src<span style=\"color: navy\"><b> -> </b></span>tgt.todTumorbedingt = <span style=\"color: blue\">'U'</span> <i>"SetTodTumorbedingtDefault"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Tod tumorbedingt: aus Extension (falls explizit angegeben)</span>\r\n src.extension<b> as </b><span style=\"color: maroon\">ext</span><b> where </b>url = 'https://www.medizininformatik-initiative.de/fhir/ext/modul-onko/StructureDefinition/mii-ex-onko-tod-tumorbedingt'<b> then</b><span style=\"color: navy\"> {\r\n</span> ext.value<b> as </b><span style=\"color: maroon\">val</span><b> then</b><span style=\"color: navy\"> {\r\n</span> val.coding<b> as </b><span style=\"color: maroon\">c</span><b> then</b><span style=\"color: navy\"> {\r\n</span> c.code<b> as </b><span style=\"color: maroon\">cd</span><span style=\"color: navy\"><b> -> </b></span>tgt.todTumorbedingt = <span style=\"color: maroon\">cd</span> <i>"SetTodTumorbedingtExplicit"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"ExtractTodTumorbedingtCode"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"MapTodTumorbedingtValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"MapTodTumorbedingtExtension"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">============================================================================</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Todesursache: Condition (cause-of-death) -> OBDSMeldung.tod.todesursachen</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">ICD-10-GM Code und Version der Todesursache</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">============================================================================</span>\r\n<b>group </b>MapTodesursache<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">src</span><span style=\"color: navy\"> : </span>Condition, <b>target</b> <span style=\"color: maroon\">tgt</span><span style=\"color: navy\"> : </span>BackboneElement<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> <span style=\"color: navy\">// </span><span style=\"color: green\">ICD-10-Code der Todesursache</span>\r\n src.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</span> code.coding<b> as </b><span style=\"color: maroon\">c</span><b> where </b>system = 'http://fhir.de/CodeSystem/bfarm/icd-10-gm'<b> then</b><span style=\"color: navy\"> {\r\n</span> c.code<b> as </b><span style=\"color: maroon\">cd</span><span style=\"color: navy\"><b> -> </b></span>tgt.code = <span style=\"color: maroon\">cd</span> <i>"SetTodesursacheCode"</i><span style=\"color: navy\">;</span>\r\n c.version<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -> </b></span>tgt.version = <span style=\"color: maroon\">v</span> <i>"SetTodesursacheVersion"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"ExtractTodesursacheICD"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"MapTodesursacheCode"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"
},
"url" : "https://www.senologie.org/fhir/StructureMap/SenologieToObdsTod",
"version" : "0.9.0",
"name" : "SenologieToObdsTod",
"status" : "draft",
"date" : "2026-05-04T16:55:55+00:00",
"publisher" : "Berlin Institute of Health at Charité (BIH)",
"contact" : [
{
"name" : "Berlin Institute of Health at Charité (BIH)",
"telecom" : [
{
"system" : "url",
"value" : "https://www.bihealth.org"
}
]
}
],
"description" : "title: Senologie Patient + Conditions to oBDS Todesmeldung\r\nstatus: draft",
"structure" : [
{
"url" : "http://hl7.org/fhir/StructureDefinition/Bundle",
"mode" : "source",
"alias" : "Bundle"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Patient",
"mode" : "source",
"alias" : "Patient"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Condition",
"mode" : "source",
"alias" : "Condition"
},
{
"url" : "https://www.senologie.org/fhir/StructureDefinition/obds-meldung",
"mode" : "target",
"alias" : "OBDSMeldung"
}
],
"import" : [
🔗 "https://www.senologie.org/fhir/StructureMap/SenologieToObdsTumorzuordnung"
],
"group" : [
{
"name" : "SenologieToObdsTod",
"typeMode" : "none",
"documentation" : "Known limitation: Sub-groups (MapTod, MapTodesursache) use\r\n`target tgt : BackboneElement` because FML has no syntax to declare the\r\nLogical Model sub-path for BackboneElement slices. The IG Publisher produces\r\nSM_TARGET_PATH errors (~10). Element names are correct per the oBDS LM.\r\n============================================================================\r\nHauptgruppe: Bundle -> oBDS Todesmeldung\r\nDas Bundle enthaelt einen Patient (mit deceasedDateTime) und ggf.\r\nConditions fuer Todesursachen (category = cause-of-death).\r\nDie Tumorzuordnung wird aus der Tumor-Condition abgeleitet.\r\n============================================================================",
"input" : [
{
"name" : "src",
"type" : "Bundle",
"mode" : "source"
},
{
"name" : "tgt",
"type" : "OBDSMeldung",
"mode" : "target"
}
],
"rule" : [
{
"name" : "EntryConditionTZ",
"source" : [
{
"context" : "src",
"element" : "entry",
"variable" : "entry",
"condition" : "resource.is(Condition) and resource.category.coding.exists(code = 'encounter-diagnosis')"
}
],
"rule" : [
{
"name" : "ConditionContext",
"source" : [
{
"context" : "entry",
"element" : "resource",
"variable" : "condition"
}
],
"rule" : [
{
"name" : "CallMapTumorzuordnung",
"source" : [
{
"context" : "condition"
}
],
"target" : [
{
"context" : "tgt",
"contextType" : "variable",
"element" : "tumorzuordnung",
"variable" : "tz"
}
],
"dependent" : [
{
"name" : "MapTumorzuordnung",
"variable" : [
"condition",
"tz"
]
}
]
}
]
}
]
},
{
"name" : "EntryPatient",
"source" : [
{
"context" : "src",
"element" : "entry",
"variable" : "patEntry",
"condition" : "resource.is(Patient)"
}
],
"rule" : [
{
"name" : "CallMapTod",
"source" : [
{
"context" : "patEntry",
"element" : "resource",
"variable" : "patient"
}
],
"target" : [
{
"context" : "tgt",
"contextType" : "variable",
"element" : "tod",
"variable" : "tod"
}
],
"dependent" : [
{
"name" : "MapTod",
"variable" : [
"patient",
"tod"
]
}
]
},
{
"name" : "EntryCheckTumorbedingt",
"source" : [
{
"context" : "src",
"element" : "entry",
"variable" : "codEntry",
"condition" : "resource.is(Condition) and resource.category.coding.exists(code = 'cause-of-death')"
}
],
"rule" : [
{
"name" : "AnalyseCodCondition",
"source" : [
{
"context" : "codEntry",
"element" : "resource",
"variable" : "codCondition"
}
],
"rule" : [
{
"name" : "CheckCodCode",
"source" : [
{
"context" : "codCondition",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "CheckIsCancer",
"source" : [
{
"context" : "code",
"element" : "coding",
"variable" : "c",
"condition" : "(system = 'http://fhir.de/CodeSystem/bfarm/icd-10-gm') and code.startsWith('C')"
}
],
"rule" : [
{
"name" : "SetTodTumorbedingtJa",
"source" : [
{
"context" : "c"
}
],
"target" : [
{
"context" : "tod",
"contextType" : "variable",
"element" : "todTumorbedingt",
"transform" : "copy",
"parameter" : [
{
"valueString" : "J"
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "EntryTodesursachen",
"source" : [
{
"context" : "src",
"element" : "entry",
"variable" : "codEntry2",
"condition" : "resource.is(Condition) and resource.category.coding.exists(code = 'cause-of-death')"
}
],
"rule" : [
{
"name" : "CallMapTodesursache",
"source" : [
{
"context" : "codEntry2",
"element" : "resource",
"variable" : "codCondition"
}
],
"target" : [
{
"context" : "tod",
"contextType" : "variable",
"element" : "todesursachen",
"variable" : "tu"
}
],
"dependent" : [
{
"name" : "MapTodesursache",
"variable" : [
"codCondition",
"tu"
]
}
]
}
]
}
]
}
]
},
{
"name" : "MapTod",
"typeMode" : "none",
"documentation" : "============================================================================\r\nTod: Patient -> OBDSMeldung.tod\r\nSterbedatum, Tod tumorbedingt, Todesursachen\r\n============================================================================",
"input" : [
{
"name" : "src",
"type" : "Patient",
"mode" : "source"
},
{
"name" : "tgt",
"type" : "BackboneElement",
"mode" : "target"
}
],
"rule" : [
{
"name" : "SetAbschlussID",
"source" : [
{
"context" : "src",
"element" : "id",
"variable" : "id"
}
],
"target" : [
{
"context" : "tgt",
"contextType" : "variable",
"element" : "abschlussID",
"transform" : "copy",
"parameter" : [
{
"valueId" : "id"
}
]
}
]
},
{
"name" : "SetSterbedatum",
"source" : [
{
"context" : "src",
"element" : "deceased",
"variable" : "d",
"condition" : "$this.is(dateTime)"
}
],
"target" : [
{
"context" : "tgt",
"contextType" : "variable",
"element" : "sterbedatum",
"transform" : "copy",
"parameter" : [
{
"valueId" : "d"
}
]
}
]
},
{
"name" : "SetTodTumorbedingtDefault",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "tgt",
"contextType" : "variable",
"element" : "todTumorbedingt",
"transform" : "copy",
"parameter" : [
{
"valueString" : "U"
}
]
}
]
},
{
"name" : "MapTodTumorbedingtExtension",
"source" : [
{
"context" : "src",
"element" : "extension",
"variable" : "ext",
"condition" : "url = 'https://www.medizininformatik-initiative.de/fhir/ext/modul-onko/StructureDefinition/mii-ex-onko-tod-tumorbedingt'"
}
],
"rule" : [
{
"name" : "MapTodTumorbedingtValue",
"source" : [
{
"context" : "ext",
"element" : "value",
"variable" : "val"
}
],
"rule" : [
{
"name" : "ExtractTodTumorbedingtCode",
"source" : [
{
"context" : "val",
"element" : "coding",
"variable" : "c"
}
],
"rule" : [
{
"name" : "SetTodTumorbedingtExplicit",
"source" : [
{
"context" : "c",
"element" : "code",
"variable" : "cd"
}
],
"target" : [
{
"context" : "tgt",
"contextType" : "variable",
"element" : "todTumorbedingt",
"transform" : "copy",
"parameter" : [
{
"valueId" : "cd"
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "MapTodesursache",
"typeMode" : "none",
"documentation" : "============================================================================\r\nTodesursache: Condition (cause-of-death) -> OBDSMeldung.tod.todesursachen\r\nICD-10-GM Code und Version der Todesursache\r\n============================================================================",
"input" : [
{
"name" : "src",
"type" : "Condition",
"mode" : "source"
},
{
"name" : "tgt",
"type" : "BackboneElement",
"mode" : "target"
}
],
"rule" : [
{
"name" : "MapTodesursacheCode",
"source" : [
{
"context" : "src",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "ExtractTodesursacheICD",
"source" : [
{
"context" : "code",
"element" : "coding",
"variable" : "c",
"condition" : "system = 'http://fhir.de/CodeSystem/bfarm/icd-10-gm'"
}
],
"rule" : [
{
"name" : "SetTodesursacheCode",
"source" : [
{
"context" : "c",
"element" : "code",
"variable" : "cd"
}
],
"target" : [
{
"context" : "tgt",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueId" : "cd"
}
]
}
]
},
{
"name" : "SetTodesursacheVersion",
"source" : [
{
"context" : "c",
"element" : "version",
"variable" : "v"
}
],
"target" : [
{
"context" : "tgt",
"contextType" : "variable",
"element" : "version",
"transform" : "copy",
"parameter" : [
{
"valueId" : "v"
}
]
}
]
}
]
}
]
}
]
}
]
}