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-03-24 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) "26a17569-a535-45cb-9c75-e07ab9570879";
  src ->  tgt.meta as meta,  meta.dataClass as dataClass then {
    src -> dataClass.name = 'Risk' "1222ac71-a250-4072-b442-60205616192c";
  } "setDataClassName";
  src.subject as subject then {
    src -> tgt.subjectOfCare as subjectOfCare then {
      src -> subjectOfCare.id = evaluate(subject, reference.replace('Patient/','')) "46846670-8849-4fac-b4c4-c10f8833a908";
      src -> subjectOfCare.type = 'SubjectOfCare' "f8400755-5621-4700-94cb-32bba11ee055";
      src -> subjectOfCare.display = evaluate(subject, display) "49c023f0-eb80-4df4-a976-6a92e8a7d75c";
    } "684b82a8-c022-4675-9cee-e3c06603db8f";
  } "setRiskSubject";
  src.performer as performer then {
    src -> tgt.careWorker as careWorker then {
      src -> careWorker.id = evaluate(performer, reference.replace('Practitioner/','')) "fb79dbd9-9bf2-445c-ae21-a79b39154cd8";
      src -> careWorker.type = 'CareWorker' "defd5137-b515-4fc3-8e58-4a8d59c95e44";
      src -> careWorker.display = evaluate(performer, display) "7e8d8298-9a8a-41da-8465-3c12944ebebe";
    } "d616823d-ac7d-4b64-b89f-f676d53b2027";
  } "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/','')) "4cc3c3da-bbdf-44bd-966a-bc37a7f65d64";
          src -> informed.type = 'CareWorker' "b00c00cb-03bf-46b9-ac86-102ac264acf7";
          src -> informed.display = evaluate(informedParticipantRef, display) "7860b874-d2c6-429c-9003-93746e445014";
        };
      };
    };
  } "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/','')) "52652886-f625-42a9-82dc-35bb9b28d706";
          src -> involved.type = 'CareWorker' "023c73f6-804b-493c-8bbe-cde120d6f7b1";
          src -> involved.display = evaluate(involvedParticipantRef, display) "b36dcc42-7ed6-49bc-9e70-b173c763157b";
        };
      };
    };
  } "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) "5716916c-c7c5-40fc-9187-8e305903019c";
        src -> category.display = evaluate(vc, display) "98b3aabe-3d68-48da-8404-415faf2b3576";
      } "valueCodeableConcept";
    } "37b6298e-0c4b-4932-a650-1829c7458b83";
  } "setRiskCategory";
  src.effectivePeriod as period then {
    period.start as start then {
      src -> tgt.startDate = evaluate(period, start) "47d6287a-116b-44ce-8454-3a9340affb77";
    };
    period.end as end then {
      src -> tgt.endDate = evaluate(period, end) "3b84faa9-5ea8-4d3a-8c23-1c6ec96fe11e";
    };
  } "setRiskStartEndDates";
  src.component as component where $this.code.coding.code='text' then {
    src -> tgt.text = evaluate(component, valueString) "3a6938d4-2c6f-49e7-ae72-a3eb54ba84a6";
  } "setRiskText";
  src.component as component where $this.code.coding.code='triggers' then {
    src -> tgt.trigger = evaluate(component, valueString) "6a33eb72-8d8b-4085-8d30-2cecf1842c10";
  } "setRiskTrigger";
  src.component as component where $this.code.coding.code='relapse-indicators' then {
    src -> tgt.relapseIndicators = evaluate(component, valueString) "5577fd44-eed3-4f4a-ada6-d9f403fd75c2";
  } "setRiskRelapseIndicators";
  src.component as component where $this.code.coding.code='comment' then {
    src -> tgt.comment = evaluate(component, valueString) "0783ee75-bd73-4cb6-8a00-0008c7742b24";
  } "setRiskComment";
}