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-03-24 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) "1b8a0332-e4f5-4e40-8cbd-2a1235f018ae";
  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' "a322b522-ab5f-4e92-9378-aae68a7bf40e";
    src -> tag.code = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Observation-Need-Need' "b61d612f-0f2d-4b5a-adcd-3dd8ad00b84e";
  } "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' "428b994f-e900-4b53-851c-7753fce7e260";
        careWorker -> participantRoleExt.valueCode = 'performer' "3c43ae7d-7649-4f38-9ba5-83051f6bd8d4";
      } "f6f24d88-bbf5-496b-af07-2253229ce42a";
      careWorker -> participantExt.extension as participantRefExt then {
        careWorker -> participantRefExt.url = 'participantReference' "75b06760-fc7c-4eba-bd90-2a0e6aad5ede";
        careWorker -> participantRefExt.valueReference as participantReference then {
          careWorker -> participantReference.reference = evaluate(careWorker, 'Practitioner/'+id) "39338f37-b4d1-4613-91d6-0dcca7087ce7";
          careWorker -> participantReference.display = evaluate(careWorker, display) "658b62be-df26-4237-bd02-c94b3b063b1b";
        } "df270598-c055-429b-9eda-b20bae1298d6";
      } "266335c8-d269-41ab-88d9-9434ad992897";
      participantExt -> tgt.extension "e0cc5f90-bfe4-42c3-8939-e93030b18800";
    } "53510fcc-ddb5-4a09-b6df-3c4acf08c948";
  } "setObservationPerformer";
  src.subjectOfCare as subjectOfCare then {
    src -> tgt.subject as subject then {
      src -> subject.reference = evaluate(subjectOfCare, 'Patient/'+id) "cbc03a39-3b92-48ab-8585-dd82168af6df";
      src -> subject.display = evaluate(subjectOfCare, display) "725998f9-52cb-49fe-b938-fb3b5bc2a59c";
    } "504f8fe4-f2cb-46ef-b9a0-c0b170be6cc8";
  } "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') "78377925-055d-472c-9fb5-309a36e90d09";
      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) "f1d617da-50f8-4ff2-b69e-509fee06c9f9";
          vcc -> coding.display = evaluate(needCategory, display) "01a4c5fa-44d0-459a-910c-987769e746fa";
        };
      } "a20a2718-bfcd-46b1-9bba-8085058e4c05";
    } "ab5a7864-dc21-4c94-b091-688f1a5d6cb7";
  } "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') "6c9e0ec5-8059-4a15-bd1f-947489053954";
      src -> freeText.valueString = evaluate(src, text) "5375dc90-ab4b-4e79-a6b8-48aa253906ad";
    } "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') "be78859d-5880-404e-bd02-0fc938c423db";
        src -> significance.valueBoolean = evaluate(src, significant) "b1415b43-8783-41fd-8574-8d11636ebf01";
      } "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') "e2590dcb-946c-4c54-8f77-83a49e46b898";
          src -> urgency.valueBoolean = evaluate(src, urgent) "39d6c9d3-c014-4712-b1be-ce79bb2483ca";
        } "setObservationNeedUrgentComponent";
      };
    };
  };
}