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

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

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

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

group NeedObservation(source src : Need, target tgt : NeedObservation) {
  src -> tgt.id = evaluate(src, id) "2063e93d-3707-45fb-a5a8-b58dd7b5a8df";
  src ->  tgt.meta as meta,  meta.tag as tag then {
    src -> tag.system = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-FhirStructureMapCatalog-1' "fb26a371-d40e-461d-a9b0-f38e7cbf555f";
    src -> tag.code = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Observation-Need-Need' "83b577d1-2805-4e7f-a744-4526a5fdf834";
  } "setMetaTag";
  src.careWorker as careWorker then {
    src ->  src.extension as participantExt,  participantExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-ParticipantCareActor' then {
      careWorker -> participantExt.extension as participantRoleExt then {
        careWorker -> participantRoleExt.url = 'participantRole' "4f06b15b-36a4-48dd-85e3-4717c58fe789";
        careWorker -> participantRoleExt.valueCode = 'performer' "bf04bf76-1a22-45a7-a116-6080a923b903";
      } "6d1f720a-600c-42ae-b135-3f8027c8a6b5";
      careWorker -> participantExt.extension as participantRefExt then {
        careWorker -> participantRefExt.url = 'participantReference' "d93b1039-734c-466d-88ae-a014fb782650";
        careWorker -> participantRefExt.valueReference as participantReference then {
          careWorker -> participantReference.reference = evaluate(careWorker, 'Practitioner/'+id) "42d57543-0e98-4d12-b2b3-523b0f408c52";
          careWorker -> participantReference.display = evaluate(careWorker, display) "9b288041-9a8c-480b-84d7-f13a224512b9";
        } "de61968b-5908-4725-ad18-c69db01979e0";
      } "c6e2bea9-485f-4205-8a3a-bfce3c99afc6";
      participantExt -> tgt.extension "fc4c8207-58ce-41d3-a87b-f782bafa73bc";
    } "328ebc44-d877-4c16-8701-1ffcfd22cd74";
  } "setObservationPerformer";
  src.subjectOfCare as subjectOfCare then {
    src -> tgt.subject as subject then {
      src -> subject.reference = evaluate(subjectOfCare, 'Patient/'+id) "55fbec27-5272-4c2e-85ac-fc0ecff8118a";
      src -> subject.display = evaluate(subjectOfCare, display) "be2a6a09-0785-4f39-9da9-f422b29a61d4";
    } "2fe0a3b8-c678-4c5c-bdad-55229dd3aa6a";
  } "setObservationSubject";
  src -> tgt.status = 'final' "setObservationStatus";
  src -> tgt.category = cc('https://metadata.phase2.synanetics.cloud/fhir/r4/CodeSystem/MODS-ObservationCategory-1', '3', 'Observations') "setObservationCategory";
  src -> tgt.code = cc('https://metadata.phase2.synanetics.cloud/fhir/r4/CodeSystem/MODS-ObservationCode-1', '7', 'Need') "setObservationCode";
  src -> tgt.effectiveDateTime = evaluate(src, datetime) "setObservationEffectDateTime";
  src.category as needCategory then {
    src -> tgt.component as coded then {
      src -> coded.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-ObservationComponentCode-1', 'coded', 'Coded') "91047b3b-9a8e-4482-b51a-ca69a60f5f56";
      src -> coded.valueCodeableConcept = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-NeedCategory-1', '', '') as vcc then {
        vcc.coding as coding then {
          vcc -> coding.code = evaluate(needCategory, code) "3e3735d0-c996-449e-9b33-31a0ffde7462";
          vcc -> coding.display = evaluate(needCategory, display) "9856c385-ae0b-4c52-9ede-e5d3cbb5d316";
        };
      } "a9b4cbe1-2f83-438d-8e1f-e8ab61638792";
    } "37fd8191-66ca-49e9-b370-3cab16e8f375";
  } "setObservationNeedCategoryComponent";
  src.text as text then {
    src -> tgt.component as freeText then {
      src -> freeText.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-ObservationComponentCode-1', 'text', 'Free-text') "a3d0667c-f023-499b-8619-832b9158a1d8";
      src -> freeText.valueString = evaluate(src, text) "c4caffe1-0fc2-407f-97e1-af73bc001dc1";
    } "setObservationNeedTextComponent";
    src.significant as significant then {
      src -> tgt.component as significance then {
        src -> significance.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-NeedComponentCode-1', 'significant', 'Significant') "20323a1d-6878-48d0-acd2-11a792493252";
        src -> significance.valueBoolean = evaluate(src, significant) "dfd8576e-0f97-4e5b-8c54-6991582c35ac";
      } "setObservationNeedSignificantComponent";
      src.urgent as urgent then {
        src -> tgt.component as urgency then {
          src -> urgency.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-NeedComponentCode-1', 'urgent', 'Urgent') "b9c8e179-4438-4bbd-ae15-35f4ad46d9cb";
          src -> urgency.valueBoolean = evaluate(src, urgent) "f57174aa-2d93-43de-8f52-7e65905ff889";
        } "setObservationNeedUrgentComponent";
      };
    };
  };
}