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

: SenologieToObdsMeldung - JSON Representation

Draft as of 2026-05-04

Raw json | Download

{
  "resourceType" : "StructureMap",
  "id" : "SenologieToObdsMeldung",
  "text" : {
    "status" : "generated",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap SenologieToObdsMeldung</b></p><a name=\"SenologieToObdsMeldung\"> </a><a name=\"hcSenologieToObdsMeldung\"> </a><pre class=\"fml\">\r\n<b>map</b><span style=\"color: navy\"> &quot;</span>https://www.senologie.org/fhir/StructureMap/SenologieToObdsMeldung<span style=\"color: navy\">&quot; = &quot;</span>SenologieToObdsMeldung<span style=\"color: navy\">&quot;\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">title: Senologie FHIR Bundle to oBDS Meldung (Master Orchestrator)</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\"> &quot;</span><a href=\"http://hl7.org/fhir/R4/bundle.html\" title=\"Bundle\">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style=\"color: navy\">&quot; </span><b>alias </b>Bundle <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R4/condition.html\" title=\"Condition\">http://hl7.org/fhir/StructureDefinition/Condition</a><span style=\"color: navy\">&quot; </span><b>alias </b>Condition <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R4/procedure.html\" title=\"Procedure\">http://hl7.org/fhir/StructureDefinition/Procedure</a><span style=\"color: navy\">&quot; </span><b>alias </b>Procedure <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R4/careplan.html\" title=\"CarePlan\">http://hl7.org/fhir/StructureDefinition/CarePlan</a><span style=\"color: navy\">&quot; </span><b>alias </b>CarePlan <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R4/patient.html\" title=\"Patient\">http://hl7.org/fhir/StructureDefinition/Patient</a><span style=\"color: navy\">&quot; </span><b>alias </b>Patient <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R4/observation.html\" title=\"Observation\">http://hl7.org/fhir/StructureDefinition/Observation</a><span style=\"color: navy\">&quot; </span><b>alias </b>Observation <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureDefinition-obds-meldung.html\" title=\"oBDS Meldung\">https://www.senologie.org/fhir/StructureDefinition/obds-meldung</a><span style=\"color: navy\">&quot; </span><b>alias </b>OBDSMeldung <b>as </b><b>target</b>\r\n\r\n<b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsTumorzuordnung.html\" title=\"SenologieToObdsTumorzuordnung\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsTumorzuordnung</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsDiagnose.html\" title=\"SenologieToObdsDiagnose\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsDiagnose</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsOP.html\" title=\"SenologieToObdsOP\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsOP</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsSYST.html\" title=\"SenologieToObdsSYST\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsSYST</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsST.html\" title=\"SenologieToObdsST\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsST</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsTumorkonferenz.html\" title=\"SenologieToObdsTumorkonferenz\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsTumorkonferenz</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsVerlauf.html\" title=\"SenologieToObdsVerlauf\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsVerlauf</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsTod.html\" title=\"SenologieToObdsTod\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsTod</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsTNM.html\" title=\"SenologieToObdsTNM\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsTNM</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsHistologie.html\" title=\"SenologieToObdsHistologie\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsHistologie</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsModulMamma.html\" title=\"SenologieToObdsModulMamma\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsModulMamma</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsFernmetastasen.html\" title=\"SenologieToObdsFernmetastasen\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsFernmetastasen</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsResidualstatus.html\" title=\"SenologieToObdsResidualstatus\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsResidualstatus</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsNebenwirkung.html\" title=\"SenologieToObdsNebenwirkung\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsNebenwirkung</a><span style=\"color: navy\">&quot;\r\n</span><b>imports</b><span style=\"color: navy\"> &quot;</span><a href=\"StructureMap-SenologieToObdsLeistungszustand.html\" title=\"SenologieToObdsLeistungszustand\">https://www.senologie.org/fhir/StructureMap/SenologieToObdsLeistungszustand</a><span style=\"color: navy\">&quot;\r\n</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">============================================================================</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Master Orchestrator: Bundle -&gt; oBDS Meldung</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Empfaengt ein FHIR Bundle mit allen Ressourcen eines Patienten und</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">dispatcht an die jeweiligen Teil-Maps basierend auf Ressourcentyp und Profil.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Jede Ressource erzeugt eine separate oBDS-Meldung:</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">- Condition (Erstdiagnose)         -&gt; Diagnosemeldung</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">- Condition (Rezidiv)              -&gt; Verlaufsmeldung</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">- Procedure (Operation)            -&gt; OP-Meldung</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">- Procedure (Systemtherapie)       -&gt; SYST-Meldung</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">- Procedure (Strahlentherapie)     -&gt; ST-Meldung</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">- CarePlan (Tumorboard)            -&gt; Tumorkonferenzmeldung</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">- Patient (verstorben)             -&gt; Todesmeldung</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">============================================================================</span>\r\n<b>group </b>SenologieToObdsMeldung<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\">--- Meldungs-Metadaten ---</span>\r\n  src<span style=\"color: navy\"><b> -&gt; </b></span>tgt<b> then </b>SetMeldungMetadata<span style=\"color: navy\">(</span><span style=\"color: maroon\">src</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">tgt</span><span style=\"color: navy\">)</span> <i>&quot;CallSetMeldungMetadata&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">--- Diagnose: Condition mit Senologie-Diagnose-Profil, NICHT Rezidiv ---</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">clinicalStatus != recurrence und Profil senologie-diagnose</span>\r\n  src.entry<b> as </b><span style=\"color: maroon\">entry</span><b> where </b>resource.is(Condition) and resource.meta.profile.exists($this.contains('senologie-diagnose')) and resource.clinicalStatus.coding.exists(code = 'recurrence').not()<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>      <span style=\"color: navy\">// </span><span style=\"color: green\">Tumorzuordnung</span>\r\n      condition<span style=\"color: navy\"><b> -&gt; </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>&quot;DiagnoseTZ&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">// </span><span style=\"color: green\">Diagnose-Basisfelder</span>\r\n      condition<span style=\"color: navy\"><b> -&gt; </b></span>tgt.diagnose<b> as </b><span style=\"color: maroon\">dx</span><b> then </b>MapDiagnose<span style=\"color: navy\">(</span><span style=\"color: maroon\">condition</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">dx</span><span style=\"color: navy\">)</span> <i>&quot;DiagnoseDX&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;DiagnoseConditionContext&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">Bundle-Lookups fuer Diagnose (Histologie, TNM, ECOG, ModulMamma, Klassifikationen)</span>\r\n    src.entry<b> as </b><span style=\"color: maroon\">histEntry</span><b> where </b>resource.is(Observation) and resource.code.coding.exists(code = '59847-4')<b> then</b><span style=\"color: navy\"> {\r\n</span>      histEntry.resource<b> as </b><span style=\"color: maroon\">histObs</span><span style=\"color: navy\"><b> -&gt; </b></span> tgt.diagnose<b> as </b><span style=\"color: maroon\">dx</span><span style=\"color: navy\">, </span> dx.histologie<b> as </b><span style=\"color: maroon\">histo</span><b> then </b>MapHistologie<span style=\"color: navy\">(</span><span style=\"color: maroon\">histObs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">histo</span><span style=\"color: navy\">)</span> <i>&quot;DiagCallHisto&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;DiagEntryHisto&quot;</i><span style=\"color: navy\">;</span>\r\n    src.entry<b> as </b><span style=\"color: maroon\">tnmEntry</span><b> where </b>resource.is(Observation) and resource.code.coding.exists(code = '21908-9')<b> then</b><span style=\"color: navy\"> {\r\n</span>      tnmEntry.resource<b> as </b><span style=\"color: maroon\">tnmObs</span><span style=\"color: navy\"><b> -&gt; </b></span> tgt.diagnose<b> as </b><span style=\"color: maroon\">dx</span><span style=\"color: navy\">, </span> dx.cTNM<b> as </b><span style=\"color: maroon\">ctnm</span><b> then </b>MapTNM<span style=\"color: navy\">(</span><span style=\"color: maroon\">tnmObs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ctnm</span><span style=\"color: navy\">)</span> <i>&quot;DiagCallCTNM&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;DiagEntryCTNM&quot;</i><span style=\"color: navy\">;</span>\r\n    entry.resource<b> as </b><span style=\"color: maroon\">cond2</span><span style=\"color: navy\"><b> -&gt; </b></span>tgt.diagnose<b> as </b><span style=\"color: maroon\">dx</span><b> then </b>MapLeistungszustandFromBundle<span style=\"color: navy\">(</span><span style=\"color: maroon\">src</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">dx</span><span style=\"color: navy\">)</span> <i>&quot;DiagCallECOG&quot;</i><span style=\"color: navy\">;</span>\r\n    entry.resource<b> as </b><span style=\"color: maroon\">cond3</span><span style=\"color: navy\"><b> -&gt; </b></span> tgt.diagnose<b> as </b><span style=\"color: maroon\">dx</span><span style=\"color: navy\">, </span> dx.modulMamma<b> as </b><span style=\"color: maroon\">mamma</span><b> then </b>MapModulMamma<span style=\"color: navy\">(</span><span style=\"color: maroon\">src</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">mamma</span><span style=\"color: navy\">)</span> <i>&quot;DiagCallModulMamma&quot;</i><span style=\"color: navy\">;</span>\r\n    src.entry<b> as </b><span style=\"color: maroon\">raEntry</span><b> where </b>resource.is(RiskAssessment)<b> then</b><span style=\"color: navy\"> {\r\n</span>      raEntry.resource<b> as </b><span style=\"color: maroon\">ra</span><span style=\"color: navy\"><b> -&gt; </b></span> tgt.diagnose<b> as </b><span style=\"color: maroon\">dx</span><span style=\"color: navy\">, </span> dx.weitereKlassifikationen<b> as </b><span style=\"color: maroon\">wk</span><b> then </b>MapWeitereKlassifikation<span style=\"color: navy\">(</span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">wk</span><span style=\"color: navy\">)</span> <i>&quot;DiagCallWK&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;DiagEntryWK&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;EntryDiagnose&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">--- Verlauf: Condition mit clinicalStatus = recurrence (Rezidiv) ---</span>\r\n  src.entry<b> as </b><span style=\"color: maroon\">entry</span><b> where </b>resource.is(Condition) and resource.clinicalStatus.coding.exists(code = 'recurrence')<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>      <span style=\"color: navy\">// </span><span style=\"color: green\">Tumorzuordnung</span>\r\n      condition<span style=\"color: navy\"><b> -&gt; </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>&quot;VerlaufTZ&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">// </span><span style=\"color: green\">Verlauf: delegiert an SenologieToObdsVerlauf.MapVerlauf</span>\r\n      condition<span style=\"color: navy\"><b> -&gt; </b></span>tgt.verlauf<b> as </b><span style=\"color: maroon\">verl</span><b> then </b>MapVerlauf<span style=\"color: navy\">(</span><span style=\"color: maroon\">condition</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">verl</span><span style=\"color: navy\">)</span> <i>&quot;VerlaufMap&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;VerlaufConditionContext&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;EntryVerlauf&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">--- OP: Procedure mit Senologie-Operation-Profil ---</span>\r\n  src.entry<b> as </b><span style=\"color: maroon\">entry</span><b> where </b>resource.is(Procedure) and resource.meta.profile.exists($this.contains('senologie-operation') or $this.contains('senologie-brustop'))<b> then</b><span style=\"color: navy\"> {\r\n</span>    entry.resource<b> as </b><span style=\"color: maroon\">procedure</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      procedure<span style=\"color: navy\"><b> -&gt; </b></span>tgt.op<b> as </b><span style=\"color: maroon\">op</span><b> then </b>MapOP<span style=\"color: navy\">(</span><span style=\"color: maroon\">procedure</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">op</span><span style=\"color: navy\">)</span> <i>&quot;OPMap&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;OPProcedureContext&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">Bundle-Lookups fuer OP (Histologie, pTNM, ModulMamma)</span>\r\n    src.entry<b> as </b><span style=\"color: maroon\">histEntry</span><b> where </b>resource.is(Observation) and resource.code.coding.exists(code = '59847-4')<b> then</b><span style=\"color: navy\"> {\r\n</span>      histEntry.resource<b> as </b><span style=\"color: maroon\">histObs</span><span style=\"color: navy\"><b> -&gt; </b></span> tgt.op<b> as </b><span style=\"color: maroon\">op</span><span style=\"color: navy\">, </span> op.histologie<b> as </b><span style=\"color: maroon\">histo</span><b> then </b>MapHistologie<span style=\"color: navy\">(</span><span style=\"color: maroon\">histObs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">histo</span><span style=\"color: navy\">)</span> <i>&quot;OPCallHisto&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;OPEntryHisto&quot;</i><span style=\"color: navy\">;</span>\r\n    src.entry<b> as </b><span style=\"color: maroon\">tnmEntry</span><b> where </b>resource.is(Observation) and resource.code.coding.exists(code = '21902-2')<b> then</b><span style=\"color: navy\"> {\r\n</span>      tnmEntry.resource<b> as </b><span style=\"color: maroon\">tnmObs</span><span style=\"color: navy\"><b> -&gt; </b></span> tgt.op<b> as </b><span style=\"color: maroon\">op</span><span style=\"color: navy\">, </span> op.tnm<b> as </b><span style=\"color: maroon\">ptnm</span><b> then </b>MapTNM<span style=\"color: navy\">(</span><span style=\"color: maroon\">tnmObs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ptnm</span><span style=\"color: navy\">)</span> <i>&quot;OPCallPTNM&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;OPEntryPTNM&quot;</i><span style=\"color: navy\">;</span>\r\n    entry.resource<b> as </b><span style=\"color: maroon\">proc2</span><span style=\"color: navy\"><b> -&gt; </b></span> tgt.op<b> as </b><span style=\"color: maroon\">op</span><span style=\"color: navy\">, </span> op.modulMamma<b> as </b><span style=\"color: maroon\">mamma</span><b> then </b>MapModulMamma<span style=\"color: navy\">(</span><span style=\"color: maroon\">src</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">mamma</span><span style=\"color: navy\">)</span> <i>&quot;OPCallModulMamma&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;EntryOP&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">--- Systemische Therapie: Procedure mit Systemtherapie-Profil ---</span>\r\n  src.entry<b> as </b><span style=\"color: maroon\">entry</span><b> where </b>resource.is(Procedure) and resource.meta.profile.exists($this.contains('senologie-systemtherapie-procedure'))<b> then</b><span style=\"color: navy\"> {\r\n</span>    entry.resource<b> as </b><span style=\"color: maroon\">procedure</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      <span style=\"color: navy\">// </span><span style=\"color: green\">SYST: delegiert an SenologieToObdsSYST.MapSYST</span>\r\n      procedure<span style=\"color: navy\"><b> -&gt; </b></span>tgt.syst<b> as </b><span style=\"color: maroon\">syst</span><b> then </b>MapSYST<span style=\"color: navy\">(</span><span style=\"color: maroon\">procedure</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">syst</span><span style=\"color: navy\">)</span> <i>&quot;SYSTMap&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;SYSTProcedureContext&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;EntrySYST&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">--- Strahlentherapie: Procedure mit Strahlentherapie-Profil ---</span>\r\n  src.entry<b> as </b><span style=\"color: maroon\">entry</span><b> where </b>resource.is(Procedure) and resource.meta.profile.exists($this.contains('senologie-strahlentherapie'))<b> then</b><span style=\"color: navy\"> {\r\n</span>    entry.resource<b> as </b><span style=\"color: maroon\">procedure</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      <span style=\"color: navy\">// </span><span style=\"color: green\">ST: delegiert an SenologieToObdsST.MapST</span>\r\n      procedure<span style=\"color: navy\"><b> -&gt; </b></span>tgt.st<b> as </b><span style=\"color: maroon\">st</span><b> then </b>MapST<span style=\"color: navy\">(</span><span style=\"color: maroon\">procedure</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">st</span><span style=\"color: navy\">)</span> <i>&quot;STMap&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;STProcedureContext&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;EntryST&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">--- Tumorkonferenz: CarePlan mit Tumorboard-Empfehlung-Profil ---</span>\r\n  src.entry<b> as </b><span style=\"color: maroon\">entry</span><b> where </b>resource.is(CarePlan) and resource.meta.profile.exists($this.contains('senologie-tumorboard-empfehlung'))<b> then</b><span style=\"color: navy\"> {\r\n</span>    entry.resource<b> as </b><span style=\"color: maroon\">careplan</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      <span style=\"color: navy\">// </span><span style=\"color: green\">Tumorkonferenz: delegiert an SenologieToObdsTumorkonferenz.MapTumorkonferenz</span>\r\n      careplan<span style=\"color: navy\"><b> -&gt; </b></span>tgt.tumorkonferenz<b> as </b><span style=\"color: maroon\">tk</span><b> then </b>MapTumorkonferenz<span style=\"color: navy\">(</span><span style=\"color: maroon\">careplan</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">tk</span><span style=\"color: navy\">)</span> <i>&quot;TumorkonferenzMap&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;TumorkonferenzCarePlanContext&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;EntryTumorkonferenz&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">--- Tod: Patient mit deceasedDateTime ---</span>\r\n  src.entry<b> as </b><span style=\"color: maroon\">entry</span><b> where </b>resource.is(Patient) and resource.deceased.exists()<b> then</b><span style=\"color: navy\"> {\r\n</span>    entry.resource<b> as </b><span style=\"color: maroon\">patient</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      <span style=\"color: navy\">// </span><span style=\"color: green\">Tod: delegiert an SenologieToObdsTod.MapTod</span>\r\n      patient<span style=\"color: navy\"><b> -&gt; </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>&quot;TodMap&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;TodPatientContext&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;EntryTod&quot;</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\">SetMeldungMetadata: Meldungs-Metadaten erzeugen</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">meldungID, melderID, meldebegruendung, eigeneLeistung</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">============================================================================</span>\r\n<b>group </b>SetMeldungMetadata<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\">Meldung_ID: aus Bundle.identifier oder generierte UUID</span>\r\n  src.identifier<b> as </b><span style=\"color: maroon\">id</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    id.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>tgt.meldungID = <span style=\"color: maroon\">v</span> <i>&quot;SetMeldungIDFromIdentifier&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;MapMeldungID&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Fallback: generierte UUID als Meldung_ID</span>\r\n  src<b> where </b>identifier.exists().not()<span style=\"color: navy\"><b> -&gt; </b></span>tgt.meldungID = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span> <i>&quot;SetMeldungIDGenerated&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Melder_ID: aus Bundle.meta.source oder fest konfigurierter Wert</span>\r\n  src.meta<b> as </b><span style=\"color: maroon\">meta</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    meta.source<b> as </b><span style=\"color: maroon\">s</span><span style=\"color: navy\"><b> -&gt; </b></span>tgt.melderID = <span style=\"color: maroon\">s</span> <i>&quot;SetMelderIDFromSource&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;MapMelderID&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Meldebegruendung: I (eigene Leistung) als Standard</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Wird ggf. durch die Teil-Maps ueberschrieben basierend auf Meldungstyp</span>\r\n  src<span style=\"color: navy\"><b> -&gt; </b></span>tgt.meldebegruendung = <span style=\"color: blue\">'I'</span> <i>&quot;SetMeldebegruendung&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Eigene Leistung: J als Standard (Behandlungseinrichtung meldet eigene Daten)</span>\r\n  src<span style=\"color: navy\"><b> -&gt; </b></span>tgt.eigeneLeistung = <span style=\"color: blue\">'J'</span> <i>&quot;SetEigeneLeistung&quot;</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/SenologieToObdsMeldung",
  "version" : "0.9.0",
  "name" : "SenologieToObdsMeldung",
  "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 FHIR Bundle to oBDS Meldung (Master Orchestrator)\r\nstatus: draft",
  "structure" : [
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/Bundle",
      "mode" : "source",
      "alias" : "Bundle"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/Condition",
      "mode" : "source",
      "alias" : "Condition"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/Procedure",
      "mode" : "source",
      "alias" : "Procedure"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/CarePlan",
      "mode" : "source",
      "alias" : "CarePlan"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/Patient",
      "mode" : "source",
      "alias" : "Patient"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/Observation",
      "mode" : "source",
      "alias" : "Observation"
    },
    {
      "url" : "https://www.senologie.org/fhir/StructureDefinition/obds-meldung",
      "mode" : "target",
      "alias" : "OBDSMeldung"
    }
  ],
  "import" : [
    🔗 "https://www.senologie.org/fhir/StructureMap/SenologieToObdsTumorzuordnung"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsDiagnose"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsOP"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsSYST"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsST"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsTumorkonferenz"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsVerlauf"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsTod"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsTNM"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsHistologie"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsModulMamma"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsFernmetastasen"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsResidualstatus"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsNebenwirkung"🔗 ,
    "https://www.senologie.org/fhir/StructureMap/SenologieToObdsLeistungszustand"
  ],
  "group" : [
    {
      "name" : "SenologieToObdsMeldung",
      "typeMode" : "none",
      "documentation" : "============================================================================\r\nMaster Orchestrator: Bundle -> oBDS Meldung\r\nEmpfaengt ein FHIR Bundle mit allen Ressourcen eines Patienten und\r\ndispatcht an die jeweiligen Teil-Maps basierend auf Ressourcentyp und Profil.\r\nJede Ressource erzeugt eine separate oBDS-Meldung:\r\n- Condition (Erstdiagnose)         -> Diagnosemeldung\r\n- Condition (Rezidiv)              -> Verlaufsmeldung\r\n- Procedure (Operation)            -> OP-Meldung\r\n- Procedure (Systemtherapie)       -> SYST-Meldung\r\n- Procedure (Strahlentherapie)     -> ST-Meldung\r\n- CarePlan (Tumorboard)            -> Tumorkonferenzmeldung\r\n- Patient (verstorben)             -> Todesmeldung\r\n============================================================================",
      "input" : [
        {
          "name" : "src",
          "type" : "Bundle",
          "mode" : "source"
        },
        {
          "name" : "tgt",
          "type" : "OBDSMeldung",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "CallSetMeldungMetadata",
          "source" : [
            {
              "context" : "src"
            }
          ],
          "target" : [
            {
              "context" : "tgt",
              "contextType" : "variable"
            }
          ],
          "dependent" : [
            {
              "name" : "SetMeldungMetadata",
              "variable" : [
                "src",
                "tgt"
              ]
            }
          ]
        },
        {
          "name" : "EntryDiagnose",
          "source" : [
            {
              "context" : "src",
              "element" : "entry",
              "variable" : "entry",
              "condition" : "resource.is(Condition) and resource.meta.profile.exists($this.contains('senologie-diagnose')) and resource.clinicalStatus.coding.exists(code = 'recurrence').not()"
            }
          ],
          "rule" : [
            {
              "name" : "DiagnoseConditionContext",
              "source" : [
                {
                  "context" : "entry",
                  "element" : "resource",
                  "variable" : "condition"
                }
              ],
              "rule" : [
                {
                  "name" : "DiagnoseTZ",
                  "source" : [
                    {
                      "context" : "condition"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "tumorzuordnung",
                      "variable" : "tz"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapTumorzuordnung",
                      "variable" : [
                        "condition",
                        "tz"
                      ]
                    }
                  ]
                },
                {
                  "name" : "DiagnoseDX",
                  "source" : [
                    {
                      "context" : "condition"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "diagnose",
                      "variable" : "dx"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapDiagnose",
                      "variable" : [
                        "condition",
                        "dx"
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name" : "DiagEntryHisto",
              "source" : [
                {
                  "context" : "src",
                  "element" : "entry",
                  "variable" : "histEntry",
                  "condition" : "resource.is(Observation) and resource.code.coding.exists(code = '59847-4')"
                }
              ],
              "rule" : [
                {
                  "name" : "DiagCallHisto",
                  "source" : [
                    {
                      "context" : "histEntry",
                      "element" : "resource",
                      "variable" : "histObs"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "diagnose",
                      "variable" : "dx"
                    },
                    {
                      "context" : "dx",
                      "contextType" : "variable",
                      "element" : "histologie",
                      "variable" : "histo"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapHistologie",
                      "variable" : [
                        "histObs",
                        "histo"
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name" : "DiagEntryCTNM",
              "source" : [
                {
                  "context" : "src",
                  "element" : "entry",
                  "variable" : "tnmEntry",
                  "condition" : "resource.is(Observation) and resource.code.coding.exists(code = '21908-9')"
                }
              ],
              "rule" : [
                {
                  "name" : "DiagCallCTNM",
                  "source" : [
                    {
                      "context" : "tnmEntry",
                      "element" : "resource",
                      "variable" : "tnmObs"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "diagnose",
                      "variable" : "dx"
                    },
                    {
                      "context" : "dx",
                      "contextType" : "variable",
                      "element" : "cTNM",
                      "variable" : "ctnm"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapTNM",
                      "variable" : [
                        "tnmObs",
                        "ctnm"
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name" : "DiagCallECOG",
              "source" : [
                {
                  "context" : "entry",
                  "element" : "resource",
                  "variable" : "cond2"
                }
              ],
              "target" : [
                {
                  "context" : "tgt",
                  "contextType" : "variable",
                  "element" : "diagnose",
                  "variable" : "dx"
                }
              ],
              "dependent" : [
                {
                  "name" : "MapLeistungszustandFromBundle",
                  "variable" : [
                    "src",
                    "dx"
                  ]
                }
              ]
            },
            {
              "name" : "DiagCallModulMamma",
              "source" : [
                {
                  "context" : "entry",
                  "element" : "resource",
                  "variable" : "cond3"
                }
              ],
              "target" : [
                {
                  "context" : "tgt",
                  "contextType" : "variable",
                  "element" : "diagnose",
                  "variable" : "dx"
                },
                {
                  "context" : "dx",
                  "contextType" : "variable",
                  "element" : "modulMamma",
                  "variable" : "mamma"
                }
              ],
              "dependent" : [
                {
                  "name" : "MapModulMamma",
                  "variable" : [
                    "src",
                    "mamma"
                  ]
                }
              ]
            },
            {
              "name" : "DiagEntryWK",
              "source" : [
                {
                  "context" : "src",
                  "element" : "entry",
                  "variable" : "raEntry",
                  "condition" : "resource.is(RiskAssessment)"
                }
              ],
              "rule" : [
                {
                  "name" : "DiagCallWK",
                  "source" : [
                    {
                      "context" : "raEntry",
                      "element" : "resource",
                      "variable" : "ra"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "diagnose",
                      "variable" : "dx"
                    },
                    {
                      "context" : "dx",
                      "contextType" : "variable",
                      "element" : "weitereKlassifikationen",
                      "variable" : "wk"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapWeitereKlassifikation",
                      "variable" : [
                        "ra",
                        "wk"
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "EntryVerlauf",
          "source" : [
            {
              "context" : "src",
              "element" : "entry",
              "variable" : "entry",
              "condition" : "resource.is(Condition) and resource.clinicalStatus.coding.exists(code = 'recurrence')"
            }
          ],
          "rule" : [
            {
              "name" : "VerlaufConditionContext",
              "source" : [
                {
                  "context" : "entry",
                  "element" : "resource",
                  "variable" : "condition"
                }
              ],
              "rule" : [
                {
                  "name" : "VerlaufTZ",
                  "source" : [
                    {
                      "context" : "condition"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "tumorzuordnung",
                      "variable" : "tz"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapTumorzuordnung",
                      "variable" : [
                        "condition",
                        "tz"
                      ]
                    }
                  ]
                },
                {
                  "name" : "VerlaufMap",
                  "source" : [
                    {
                      "context" : "condition"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "verlauf",
                      "variable" : "verl"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapVerlauf",
                      "variable" : [
                        "condition",
                        "verl"
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "EntryOP",
          "source" : [
            {
              "context" : "src",
              "element" : "entry",
              "variable" : "entry",
              "condition" : "resource.is(Procedure) and resource.meta.profile.exists($this.contains('senologie-operation') or $this.contains('senologie-brustop'))"
            }
          ],
          "rule" : [
            {
              "name" : "OPProcedureContext",
              "source" : [
                {
                  "context" : "entry",
                  "element" : "resource",
                  "variable" : "procedure"
                }
              ],
              "rule" : [
                {
                  "name" : "OPMap",
                  "source" : [
                    {
                      "context" : "procedure"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "op",
                      "variable" : "op"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapOP",
                      "variable" : [
                        "procedure",
                        "op"
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name" : "OPEntryHisto",
              "source" : [
                {
                  "context" : "src",
                  "element" : "entry",
                  "variable" : "histEntry",
                  "condition" : "resource.is(Observation) and resource.code.coding.exists(code = '59847-4')"
                }
              ],
              "rule" : [
                {
                  "name" : "OPCallHisto",
                  "source" : [
                    {
                      "context" : "histEntry",
                      "element" : "resource",
                      "variable" : "histObs"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "op",
                      "variable" : "op"
                    },
                    {
                      "context" : "op",
                      "contextType" : "variable",
                      "element" : "histologie",
                      "variable" : "histo"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapHistologie",
                      "variable" : [
                        "histObs",
                        "histo"
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name" : "OPEntryPTNM",
              "source" : [
                {
                  "context" : "src",
                  "element" : "entry",
                  "variable" : "tnmEntry",
                  "condition" : "resource.is(Observation) and resource.code.coding.exists(code = '21902-2')"
                }
              ],
              "rule" : [
                {
                  "name" : "OPCallPTNM",
                  "source" : [
                    {
                      "context" : "tnmEntry",
                      "element" : "resource",
                      "variable" : "tnmObs"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "op",
                      "variable" : "op"
                    },
                    {
                      "context" : "op",
                      "contextType" : "variable",
                      "element" : "tnm",
                      "variable" : "ptnm"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapTNM",
                      "variable" : [
                        "tnmObs",
                        "ptnm"
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name" : "OPCallModulMamma",
              "source" : [
                {
                  "context" : "entry",
                  "element" : "resource",
                  "variable" : "proc2"
                }
              ],
              "target" : [
                {
                  "context" : "tgt",
                  "contextType" : "variable",
                  "element" : "op",
                  "variable" : "op"
                },
                {
                  "context" : "op",
                  "contextType" : "variable",
                  "element" : "modulMamma",
                  "variable" : "mamma"
                }
              ],
              "dependent" : [
                {
                  "name" : "MapModulMamma",
                  "variable" : [
                    "src",
                    "mamma"
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "EntrySYST",
          "source" : [
            {
              "context" : "src",
              "element" : "entry",
              "variable" : "entry",
              "condition" : "resource.is(Procedure) and resource.meta.profile.exists($this.contains('senologie-systemtherapie-procedure'))"
            }
          ],
          "rule" : [
            {
              "name" : "SYSTProcedureContext",
              "source" : [
                {
                  "context" : "entry",
                  "element" : "resource",
                  "variable" : "procedure"
                }
              ],
              "rule" : [
                {
                  "name" : "SYSTMap",
                  "source" : [
                    {
                      "context" : "procedure"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "syst",
                      "variable" : "syst"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapSYST",
                      "variable" : [
                        "procedure",
                        "syst"
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "EntryST",
          "source" : [
            {
              "context" : "src",
              "element" : "entry",
              "variable" : "entry",
              "condition" : "resource.is(Procedure) and resource.meta.profile.exists($this.contains('senologie-strahlentherapie'))"
            }
          ],
          "rule" : [
            {
              "name" : "STProcedureContext",
              "source" : [
                {
                  "context" : "entry",
                  "element" : "resource",
                  "variable" : "procedure"
                }
              ],
              "rule" : [
                {
                  "name" : "STMap",
                  "source" : [
                    {
                      "context" : "procedure"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "st",
                      "variable" : "st"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapST",
                      "variable" : [
                        "procedure",
                        "st"
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "EntryTumorkonferenz",
          "source" : [
            {
              "context" : "src",
              "element" : "entry",
              "variable" : "entry",
              "condition" : "resource.is(CarePlan) and resource.meta.profile.exists($this.contains('senologie-tumorboard-empfehlung'))"
            }
          ],
          "rule" : [
            {
              "name" : "TumorkonferenzCarePlanContext",
              "source" : [
                {
                  "context" : "entry",
                  "element" : "resource",
                  "variable" : "careplan"
                }
              ],
              "rule" : [
                {
                  "name" : "TumorkonferenzMap",
                  "source" : [
                    {
                      "context" : "careplan"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "tumorkonferenz",
                      "variable" : "tk"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapTumorkonferenz",
                      "variable" : [
                        "careplan",
                        "tk"
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "EntryTod",
          "source" : [
            {
              "context" : "src",
              "element" : "entry",
              "variable" : "entry",
              "condition" : "resource.is(Patient) and resource.deceased.exists()"
            }
          ],
          "rule" : [
            {
              "name" : "TodPatientContext",
              "source" : [
                {
                  "context" : "entry",
                  "element" : "resource",
                  "variable" : "patient"
                }
              ],
              "rule" : [
                {
                  "name" : "TodMap",
                  "source" : [
                    {
                      "context" : "patient"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "tgt",
                      "contextType" : "variable",
                      "element" : "tod",
                      "variable" : "tod"
                    }
                  ],
                  "dependent" : [
                    {
                      "name" : "MapTod",
                      "variable" : [
                        "patient",
                        "tod"
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "SetMeldungMetadata",
      "typeMode" : "none",
      "documentation" : "============================================================================\r\nSetMeldungMetadata: Meldungs-Metadaten erzeugen\r\nmeldungID, melderID, meldebegruendung, eigeneLeistung\r\n============================================================================",
      "input" : [
        {
          "name" : "src",
          "type" : "Bundle",
          "mode" : "source"
        },
        {
          "name" : "tgt",
          "type" : "OBDSMeldung",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "MapMeldungID",
          "source" : [
            {
              "context" : "src",
              "element" : "identifier",
              "variable" : "id"
            }
          ],
          "rule" : [
            {
              "name" : "SetMeldungIDFromIdentifier",
              "source" : [
                {
                  "context" : "id",
                  "element" : "value",
                  "variable" : "v"
                }
              ],
              "target" : [
                {
                  "context" : "tgt",
                  "contextType" : "variable",
                  "element" : "meldungID",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueId" : "v"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "SetMeldungIDGenerated",
          "source" : [
            {
              "context" : "src",
              "condition" : "identifier.exists().not()"
            }
          ],
          "target" : [
            {
              "context" : "tgt",
              "contextType" : "variable",
              "element" : "meldungID",
              "transform" : "uuid"
            }
          ]
        },
        {
          "name" : "MapMelderID",
          "source" : [
            {
              "context" : "src",
              "element" : "meta",
              "variable" : "meta"
            }
          ],
          "rule" : [
            {
              "name" : "SetMelderIDFromSource",
              "source" : [
                {
                  "context" : "meta",
                  "element" : "source",
                  "variable" : "s"
                }
              ],
              "target" : [
                {
                  "context" : "tgt",
                  "contextType" : "variable",
                  "element" : "melderID",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueId" : "s"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "SetMeldebegruendung",
          "source" : [
            {
              "context" : "src"
            }
          ],
          "target" : [
            {
              "context" : "tgt",
              "contextType" : "variable",
              "element" : "meldebegruendung",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "I"
                }
              ]
            }
          ]
        },
        {
          "name" : "SetEigeneLeistung",
          "source" : [
            {
              "context" : "src"
            }
          ],
          "target" : [
            {
              "context" : "tgt",
              "contextType" : "variable",
              "element" : "eigeneLeistung",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "J"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}