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

StructureMap: SenologieToObdsTumorzuordnung

Official URL: https://www.senologie.org/fhir/StructureMap/SenologieToObdsTumorzuordnung Version: 0.9.0
Draft as of 2026-05-04 Computable Name: SenologieToObdsTumorzuordnung

title: Senologie Diagnose to oBDS Tumorzuordnung status: draft

map "https://www.senologie.org/fhir/StructureMap/SenologieToObdsTumorzuordnung" = "SenologieToObdsTumorzuordnung"

// title: Senologie Diagnose to oBDS Tumorzuordnung
// status: draft

uses "http://hl7.org/fhir/StructureDefinition/Condition" alias Condition as source
uses "https://www.senologie.org/fhir/StructureDefinition/obds-meldung" alias OBDSMeldung as target

// Known limitation: MapTumorzuordnung uses `target tgt : BackboneElement`
// because FML has no syntax to declare the Logical Model sub-path for
// BackboneElement slices. The IG Publisher produces SM_TARGET_PATH errors (~5).
// Element names are correct per the oBDS Logical Model.
// ============================================================================
// Tumorzuordnung: Condition (Diagnose) -> OBDSMeldung.tumorzuordnung
// Wird von allen Meldungstypen importiert, da die Tumorzuordnung in jeder
// oBDS-Meldung enthalten sein muss.
// ============================================================================
group MapTumorzuordnung(source src : Condition, target tgt : BackboneElement) {
  // Tumor_ID: aus Condition.identifier (Tumor-Kennung)
  src.identifier as id where system = 'https://www.senologie.org/fhir/sid/tumor-id' then {
    id.value as v -> tgt.tumorID = v "SetTumorID";
  } "MapTumorID";
  // Primaertumor_ICD: ICD-10-GM Code und Version aus Condition.code
  src.code as code then {
    code.coding as c where system = 'http://fhir.de/CodeSystem/bfarm/icd-10-gm' -> tgt.primaertumorICD as icd then {
      c.code as cd -> icd.code = cd "SetICDCode";
      c.version as v -> icd.version = v "SetICDVersion";
    } "MapICD10Coding";
  } "MapPrimaertumorICD";
  // Diagnosedatum: aus Condition.onsetDateTime
  src.onset as onset where $this.is(dateTime) -> tgt.diagnosedatum = onset "SetDiagnosedatum";
  // Seitenlokalisation: aus Condition.bodySite mit Uebersetzung SNOMED -> oBDS
  src.bodySite as bs then {
    bs.coding as c where system = 'http://snomed.info/sct' -> tgt.seitenlokalisation = translate(c, 'https://www.senologie.org/fhir/ConceptMap/cm-sct-to-obds-seitenlokalisation', 'code') "TranslateSeitenlokalisation";
  } "MapSeitenlokalisation";
  // Morphologie_ICD_O: aus Condition.code ICD-O Morphologie (falls vorhanden)
  src.code as code then {
    code.coding as c where system = 'urn:oid:2.16.840.1.113883.6.43.1' -> tgt.morphologieICDO as morph then {
      c.code as cd -> morph.code = cd "SetMorphCode";
      c.version as v -> morph.version = v "SetMorphVersion";
    } "MapMorphCoding";
  } "MapMorphologieICDO";
}