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
| Official URL: https://www.senologie.org/fhir/StructureMap/SenologieToObdsNebenwirkung | Version: 0.9.0 | |||
| Draft as of 2026-05-04 | Computable Name: SenologieToObdsNebenwirkung | |||
title: Senologie Nebenwirkung Observations to oBDS Nebenwirkungen BackboneElement status: draft
map "https://www.senologie.org/fhir/StructureMap/SenologieToObdsNebenwirkung" = "SenologieToObdsNebenwirkung" // title: Senologie Nebenwirkung Observations to oBDS Nebenwirkungen BackboneElement // status: draft uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as source uses "http://hl7.org/fhir/StructureDefinition/Observation" alias Observation as source // Import-only map: no target `uses` declaration — the calling map (SYST / ST) // provides the correct BackboneElement context (syst.nebenwirkungen / st.nebenwirkungen). // Omitting the root-level target type avoids SM_TARGET_PATH false positives // where the validator would resolve property names against obds-meldung root. // ============================================================================ // Gemeinsame Nebenwirkungen-Map: Extrahiert Nebenwirkungen (Adverse Events) // aus dem Bundle und mappt auf das oBDS Nebenwirkungen-BackboneElement. // Wird von SYST und ST importiert. // MII Onko Profil: mii-pr-onko-nebenwirkung-adverse-event // Die Nebenwirkung wird als Observation modelliert mit: // - code: CTCAE-Term (NCI Thesaurus Code + Text) // - value: CTCAE-Grad als CodeableConcept // - method: CTCAE-Version // oBDS-Struktur: // nebenwirkungen.gradMaximal2OderUnbekannt: Wenn alle Nebenwirkungen // Grad <=2 oder unbekannt sind, wird hier "2" oder "U" gesetzt. // nebenwirkungen.nebenwirkung[]: Einzelne Nebenwirkungen Grad >=3 // mit art/bezeichnung, grad (3, 4, 5) und CTCAE-Version. // ============================================================================ // ============================================================================ // MapNebenwirkungenSYST: Bundle -> oBDS Nebenwirkungen (fuer Systemtherapie) // Bei SYST: Observations mit CTCAE-Codierung extrahieren, // Grad >=3 als einzelne Eintraege, sonst gradMaximal2OderUnbekannt // ============================================================================ group MapNebenwirkungenSYST(source src : Bundle, target tgt : BackboneElement) { // Default: Wenn keine Nebenwirkungen vorhanden -> U (unbekannt) src where entry.where(resource.is(Observation) and resource.code.coding.exists(system = 'http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl')).exists().not() -> tgt.gradMaximal2OderUnbekannt = 'U' "SetGradUnbekannt"; // Nebenwirkungen mit CTCAE-Codierung: jede Observation einzeln verarbeiten src.entry as obsEntry where resource.is(Observation) and resource.code.coding.exists(system = 'http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl') then { obsEntry.resource as obs then MapNebenwirkungEinzeln(obs, tgt) "CallMapNebenwirkungEinzeln"; } "EntryNebenwirkungen"; } // ============================================================================ // MapNebenwirkungenST: Bundle -> oBDS Nebenwirkungen (fuer Strahlentherapie) // Gleiche Logik wie SYST, aber separat um verschiedene Kontexte zu ermoeglichen // ============================================================================ group MapNebenwirkungenST(source src : Bundle, target tgt : BackboneElement) { // Default: Wenn keine Nebenwirkungen vorhanden -> U (unbekannt) src where entry.where(resource.is(Observation) and resource.code.coding.exists(system = 'http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl')).exists().not() -> tgt.gradMaximal2OderUnbekannt = 'U' "SetGradUnbekannt"; // Nebenwirkungen mit CTCAE-Codierung src.entry as obsEntry where resource.is(Observation) and resource.code.coding.exists(system = 'http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl') then { obsEntry.resource as obs then MapNebenwirkungEinzeln(obs, tgt) "CallMapNebenwirkungEinzeln"; } "EntryNebenwirkungen"; } // ============================================================================ // MapNebenwirkungEinzeln: Observation -> oBDS Nebenwirkung (einzeln) // Erzeugt einen Nebenwirkung-Eintrag mit Art/Bezeichnung, Grad und Version // ============================================================================ group MapNebenwirkungEinzeln(source src : Observation, target tgt : BackboneElement) { // Einzelne Nebenwirkung src.value as val then { val.coding as c -> tgt.nebenwirkung as nw then { // Art/Bezeichnung der Nebenwirkung (aus Observation.code) src.code as obsCode then { obsCode.text as t -> nw.artBezeichnung = t "SetNwBezeichnung"; obsCode.coding as coding then { coding.display as d where %obsCode.text.exists().not() -> nw.artBezeichnung = d "SetNwBezeichnungDisplay"; } "FallbackNwBezeichnung"; } "ExtractNwBezeichnung"; // CTCAE-Grad (1-5) c.code as g -> nw.grad = g "SetNwGrad"; // CTCAE-Version (z.B. "4.03", "5.0") src.method as method then { method.text as t -> nw.version = t "SetNwVersion"; method.coding as mc then { mc.code as v where %method.text.exists().not() -> nw.version = v "SetNwVersionFromCoding"; } "FallbackNwVersion"; } "ExtractNwVersion"; } "CreateNebenwirkung"; } "MapNebenwirkungGrad"; }