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: Extract Senologie Diagnose from QuestionnaireResponse

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

map "https://www.senologie.org/fhir/StructureMap/extract-diagnose" = "ExtractSenologieDiagnose"

uses "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse" alias QR as source
uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as target
uses "https://www.senologie.org/fhir/StructureDefinition/senologie-diagnose-maligne" alias Condition as target

group QuestionnaireResponseToBundle(source src : QuestionnaireResponse, target tgt : Bundle) {
  src -> tgt.type = 'transaction' "bundleType";
  src.item as grp where linkId = 'diagnose' ->  tgt.entry as entry,  entry.resource = create('Condition') as condition then {
    grp ->  entry.request as req,  req.method = 'POST',  req.url = 'Condition' "setRequest";
    grp.item as codeItem where linkId = 'diagnose.code' -> condition.code as cc then {
      codeItem.answer as ans -> cc.coding = ans.valueCoding as coding "copyCoding";
    } "snomedCode";
    grp.item as sideItem where linkId = 'diagnose.seite' then {
      sideItem.answer as ans ->  condition.bodySite as bs,  bs.coding = ans.valueCoding "copyBodySite";
    } "laterality";
    grp ->  condition.clinicalStatus as cs,  cs.coding as csc,  csc.system = 'http://terminology.hl7.org/CodeSystem/condition-clinical',  csc.code = 'active' "clinicalStatus";
    grp.item as dateItem where linkId = 'diagnose.datum' then {
      dateItem.answer as ans -> condition.recordedDate = ans.valueDate "copyDate";
    } "recordedDate";
    src.subject as subj -> condition.subject = subj;
  } "diagnoseGroup";
}