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: ObservationNeedToNeed

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

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

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

group Need(source src : NeedObservation, target tgt : Need) {
  src -> tgt.id = evaluate(src, id) "71c79021-638a-4570-9e21-5ac4967ecde8";
  src ->  tgt.meta as meta,  meta.dataClass as dataClass then {
    src -> dataClass.name = 'Need' "567dce77-3307-4fcf-aeda-c53703fcc1d2";
  } "setDataClassName";
  src.subject as subject then {
    src -> tgt.subjectOfCare as subjectOfCare then {
      src -> subjectOfCare.id = evaluate(subject, reference.replace('Patient/','')) "43944e09-ee0d-4c88-801b-a251802076f6";
      src -> subjectOfCare.type = 'SubjectOfCare' "c40f9233-ab78-4ff2-b0bc-cde8257191c5";
      src -> subjectOfCare.display = evaluate(subject, display) "e45b5088-8a9c-4e6a-9c38-d0b99655dc44";
    } "abea586e-b10f-4a43-9f7e-79a636e8485c";
  } "setNeedSubject";
  src.extension as participantsExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-ParticipantCareActor' -> tgt.careWorker as careWorker then {
    participantsExt.extension as careWorkers where $this.url='participantRole'and$this.valueCode='performer' then {
      participantsExt.extension as careWorkerParticipantReferences where $this.url='participantReference' then {
        careWorkerParticipantReferences.valueReference as careWorkerParticipantRef then {
          src -> careWorker.id = evaluate(careWorkerParticipantRef, reference.replace('Practitioner/','')) "429538c5-8297-45de-9fc9-694a6d7046ce";
          src -> careWorker.type = 'CareWorker' "9fc3b8b4-04b4-4aed-9784-129aa2c25a97";
          src -> careWorker.display = evaluate(careWorkerParticipantRef, display) "a7cb545e-ae49-497c-a393-bc6d44f18a76";
        };
      };
    };
  } "setNeedCareWorker";
  src -> tgt.datetime = evaluate(src, effectiveDateTime) "setNeedDateTime";
  src.component as component where $this.valueCodeableConcept.coding.system='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-NeedCategory-1' then {
    src -> tgt.category as category then {
      component.valueCodeableConcept as vcc, vcc.coding as vc then {
        src -> category.code = evaluate(vc, code) "0519c284-df9f-401d-98a1-d576b9712645";
        src -> category.display = evaluate(vc, display) "105e099b-c893-425c-9c55-c194009eb4f6";
      } "valueCodeableConcept";
    } "b7ff6ad8-3315-49c7-a9be-c776ddc9d07b";
  } "setNeedCategory";
  src.component as component where $this.code.coding.code='text' then {
    src -> tgt.text = evaluate(component, valueString) "8be0280a-68bc-4c3d-aa1a-9faaa0638ed6";
  } "setNeedText";
  src.component as component where $this.code.coding.code='significant' then {
    src -> tgt.significant = evaluate(component, valueBoolean) "14ea2461-08d4-49e9-8ceb-6e55b3542780";
  } "setNeedSignificant";
  src.component as component where $this.code.coding.code='urgent' then {
    src -> tgt.urgent = evaluate(component, valueBoolean) "313f93bd-28d1-474e-b918-8976038fd400";
  } "setNeedUrgent";
}