Social Care Interoperability Platform FHIR Implementation Guide
Version: 0.1.0, Status: draft

Social Care Interoperability Platform FHIR Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

StructureMap: ObservationRiskToRisk

Official URL: https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Observation-Risk-Risk Version: 0.1.0
Draft as of 2026-06-10 Computable Name: ObservationRiskToRisk

map "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Observation-Risk-Risk" = "ObservationRiskToRisk"

uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-RiskObservation" alias RiskObservation as source
uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-Risk" alias Risk as target

group Risk(source src : RiskObservation, target tgt : Risk) {
  src -> tgt.id = evaluate(src, id) "d0e20776-22e2-411b-ab0f-ba0ae5420cd1";
  src ->  tgt.meta as meta,  meta.dataClass as dataClass then {
    src -> dataClass.name = 'Risk' "6ed098e3-a806-4586-b059-6b212708fb25";
  } "setDataClassName";
  src.subject as subject then {
    src -> tgt.subjectOfCare as subjectOfCare then {
      src -> subjectOfCare.id = evaluate(subject, reference.replace('Patient/','')) "7a289f08-b9e4-48b5-acd1-bdf7a43af2d7";
      src -> subjectOfCare.type = 'SubjectOfCare' "3903cf49-17d0-4904-a964-f8e84f0473b2";
      src -> subjectOfCare.display = evaluate(subject, display) "d82ef971-9441-4e59-80e3-f627547cf630";
    } "f261cd58-55e7-4dd8-a3de-68f29c2572d6";
  } "setRiskSubject";
  src.performer as performer then {
    src -> tgt.careWorker as careWorker then {
      src -> careWorker.id = evaluate(performer, reference.replace('Practitioner/','')) "b162e766-dcf8-4dee-bda9-7cdb761955b8";
      src -> careWorker.type = 'CareWorker' "af285b09-e2e6-4f1a-9f18-ac047d19d2a6";
      src -> careWorker.display = evaluate(performer, display) "c886bf26-6835-4acf-ae18-36bce9521285";
    } "3c2e075c-e0fc-4b26-a214-92da6ac22679";
  } "setRiskCareWorker";
  src.extension as participantsExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-ParticipantCareActor' -> tgt.informed as informed then {
    participantsExt.extension as informedParticipants where $this.url='participantRole'and$this.valueCode='informed' then {
      participantsExt.extension as informedParticipantReferences where $this.url='participantReference' then {
        informedParticipantReferences.valueReference as informedParticipantRef then {
          src -> informed.id = evaluate(informedParticipantRef, reference.replace('Practitioner/','')) "b7b1dc7b-80ff-4de8-9b24-5448c1458f2e";
          src -> informed.type = 'CareWorker' "6a1c54f4-03b6-47a5-a1e7-03030abfcf48";
          src -> informed.display = evaluate(informedParticipantRef, display) "5d131e91-2838-44b5-a295-e32bc00e1203";
        };
      };
    };
  } "setRiskInformed";
  src.extension as participantsExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-ParticipantCareActor' -> tgt.involved as involved then {
    participantsExt.extension as involvedParticipants where $this.url='participantRole'and$this.valueCode='involved' then {
      participantsExt.extension as involvedParticipantReferences where $this.url='participantReference' then {
        involvedParticipantReferences.valueReference as involvedParticipantRef then {
          src -> involved.id = evaluate(involvedParticipantRef, reference.replace('Practitioner/','')) "d37e1582-fde7-422c-9b7c-70d4fea02837";
          src -> involved.type = 'CareWorker' "e861ffa9-80ce-48d9-95cc-011419c202d1";
          src -> involved.display = evaluate(involvedParticipantRef, display) "d0a2674f-963b-400b-b138-67a73b17c4ce";
        };
      };
    };
  } "setRiskInvolved";
  src.component as component where $this.valueCodeableConcept.coding.system='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-RiskCategory-1' then {
    src -> tgt.category as category then {
      component.valueCodeableConcept as vcc, vcc.coding as vc then {
        src -> category.code = evaluate(vc, code) "9b2335a6-3be4-4563-b8e1-bfa092177bb8";
        src -> category.display = evaluate(vc, display) "73d40e25-5a93-421d-89bb-34aed5b1d920";
      } "valueCodeableConcept";
    } "6f98a68b-6aa7-4d48-b2fa-10ea6413b454";
  } "setRiskCategory";
  src.effectivePeriod as period then {
    period.start as start then {
      src -> tgt.startDate = evaluate(period, start) "40ae4160-451d-4744-923a-d0863153ea74";
    };
    period.end as end then {
      src -> tgt.endDate = evaluate(period, end) "a2022f14-4ca7-403e-823a-cb988e6167bf";
    };
  } "setRiskStartEndDates";
  src.component as component where $this.code.coding.code='text' then {
    src -> tgt.text = evaluate(component, valueString) "b343d3b9-faf8-47cf-b4e5-8e6a90cf553f";
  } "setRiskText";
  src.component as component where $this.code.coding.code='triggers' then {
    src -> tgt.trigger = evaluate(component, valueString) "8f0bed5b-4cf3-4274-8507-792e8265f42e";
  } "setRiskTrigger";
  src.component as component where $this.code.coding.code='relapse-indicators' then {
    src -> tgt.relapseIndicators = evaluate(component, valueString) "4b5d6e72-673c-42ee-8f4f-81f7ddf04a6e";
  } "setRiskRelapseIndicators";
  src.component as component where $this.code.coding.code='comment' then {
    src -> tgt.comment = evaluate(component, valueString) "869c06cb-21fa-4754-a9b4-e71de82961da";
  } "setRiskComment";
}