{
  "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"
        }]
      }]
    }]
  }]
}