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-03-24 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) "e92be9d1-8f24-42d4-afb1-ebed6d3c3f57";
  src ->  tgt.meta as meta,  meta.dataClass as dataClass then {
    src -> dataClass.name = 'Need' "e764dc30-cbf6-471f-83e4-e1f2bc26772f";
  } "setDataClassName";
  src.subject as subject then {
    src -> tgt.subjectOfCare as subjectOfCare then {
      src -> subjectOfCare.id = evaluate(subject, reference.replace('Patient/','')) "c716eb8d-54bc-4af3-b4ba-a56c09976ff5";
      src -> subjectOfCare.type = 'SubjectOfCare' "f2b07e03-658f-4814-af8c-47c92dcf4a28";
      src -> subjectOfCare.display = evaluate(subject, display) "01414fdc-af7f-4d63-b81f-f6c1b4942180";
    } "a383070a-6c59-4d32-9988-ede61606e674";
  } "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/','')) "ddca24e5-9464-4fea-bf9d-be82debc3066";
          src -> careWorker.type = 'CareWorker' "116282aa-5bbc-413e-96ea-1185c886fa30";
          src -> careWorker.display = evaluate(careWorkerParticipantRef, display) "06264a99-a491-49ba-9a32-e55e0c3ee5fe";
        };
      };
    };
  } "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) "6bedf5fd-368f-4f89-afa5-0da75c518e35";
        src -> category.display = evaluate(vc, display) "c1fdc640-3842-4028-8a9c-7abfa67f7acc";
      } "valueCodeableConcept";
    } "d6e5c138-5a3f-4f2a-a4e5-3ff5b6b5d5e4";
  } "setNeedCategory";
  src.component as component where $this.code.coding.code='text' then {
    src -> tgt.text = evaluate(component, valueString) "070ac676-2f00-40a3-a44c-57f746343ca1";
  } "setNeedText";
  src.component as component where $this.code.coding.code='significant' then {
    src -> tgt.significant = evaluate(component, valueBoolean) "b74a220c-9bc6-4061-ad7f-014e347f7acf";
  } "setNeedSignificant";
  src.component as component where $this.code.coding.code='urgent' then {
    src -> tgt.urgent = evaluate(component, valueBoolean) "e3cfc6bc-aa75-4fa9-9b4a-b1b097783c55";
  } "setNeedUrgent";
}