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

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

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

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

group SocialCircumstanceObservation(source src : SocialCircumstance, target tgt : SocialCircumstanceObservation) {
  src -> tgt.id = evaluate(src, id) "6625409c-769e-4f59-85db-c92ade64ebdc";
  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' "cacbaf9a-a089-4a95-9ea6-197e94e44ce5";
    src -> tag.code = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Observation-SocialCircumstance-SocialCircumstance' "579a12e9-441c-4565-b21e-77ddc8597f7c";
  } "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' "d7837d56-7d0d-4da1-9914-10b96b9f37af";
        careWorker -> participantRoleExt.valueCode = 'performer' "3fe69928-269d-4235-a24d-435193eb0a6c";
      } "509a10db-cc87-44fc-a643-d3ea9c422173";
      careWorker -> participantExt.extension as participantRefExt then {
        careWorker -> participantRefExt.url = 'participantReference' "10b96bcf-159d-42a9-98b2-ccc07a869af2";
        careWorker -> participantRefExt.valueReference as participantReference then {
          careWorker -> participantReference.reference = evaluate(careWorker, 'Practitioner/'+id) "a6ea6d2a-4060-47f4-bd06-f383ac7a5d5b";
          careWorker -> participantReference.display = evaluate(careWorker, display) "5f938ad7-42be-44bf-a247-b37107b64151";
        } "670c7bb5-2e6a-4bf6-9da4-a78bcdc90f2f";
      } "1e96126a-aaee-4c48-b5bf-162d48024153";
      participantExt -> tgt.extension "7ae507b4-4edc-4b0c-adcb-de703a9b18a9";
    } "3e3c1cc4-d731-4d7b-bfec-962df35af05e";
  } "setObservationPerformer";
  src.subjectOfCare as subjectOfCare then {
    src -> tgt.subject as subject then {
      src -> subject.reference = evaluate(subjectOfCare, 'Patient/'+id) "dff8e78e-da60-4060-93ef-560676bf3af4";
      src -> subject.display = evaluate(subjectOfCare, display) "9595a667-7b68-426c-b6ee-b1f8952a7176";
    } "faa8311a-245f-43ea-a2e3-71f0a8e4c63a";
  } "setObservationSubject";
  src -> tgt.status = 'final' "setObservationStatus";
  src -> tgt.category = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-ObservationCategory-1', '3', 'Observations') "setObservationCategory";
  src -> tgt.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-ObservationCode-1', '11', 'Social Circumstance') "setObservationCode";
  src -> tgt.effectiveDateTime = evaluate(src, datetime) "setObservationEffectDateTime";
  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') "ea3a4e59-ed79-4726-9f9c-593fcc6e1b45";
      src -> freeText.valueString = evaluate(src, text) "7a43f1fa-0281-4535-b2c1-6c466f3295df";
    } "setObservationTextComponent";
  };
}