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

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

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

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

group SocialCircumstance(source src : SocialCircumstanceObservation, target tgt : SocialCircumstance) {
  src -> tgt.id = evaluate(src, id) "09d41aae-3584-44a9-b77e-791736e63e95";
  src ->  tgt.meta as meta,  meta.dataClass as dataClass then {
    src -> dataClass.name = 'Social Circumstance' "70f21289-333c-4700-ab8f-491fee15c2b0";
  } "setDataClassName";
  src.subject as subject then {
    src -> tgt.subjectOfCare as subjectOfCare then {
      src -> subjectOfCare.id = evaluate(subject, reference.replace('Patient/','')) "8664b664-19eb-4528-95fe-6e06fc27a45a";
      src -> subjectOfCare.type = 'SubjectOfCare' "1f5a5319-cae8-4f4d-a7c5-7a77b4a51451";
      src -> subjectOfCare.display = evaluate(subject, display) "0b830021-0257-4da6-bd6f-c031751af399";
    } "94bf0da3-2853-49eb-b026-939ce3874c92";
  } "setSocialCircumstanceSubject";
  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/','')) "7a6730e2-e602-4bd4-b439-5ef25525ffcd";
          src -> careWorker.type = 'CareWorker' "cfaf4f02-9bb2-4285-8efe-1005ff332299";
          src -> careWorker.display = evaluate(careWorkerParticipantRef, display) "9ecb2a09-736d-438a-9b5a-42d596d2dd6d";
        };
      };
    };
  } "setSocialCircumstanceCareWorker";
  src -> tgt.datetime = evaluate(src, effectiveDateTime) "setSocialCircumstanceDateTime";
  src.component as component where $this.code.coding.code='text' then {
    src -> tgt.text = evaluate(component, valueString) "91cfb2f8-7e39-4369-9c31-6218368770fd";
  } "setSocialCircumstanceText";
}