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

Official URL: https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Risk-Observation-Risk Version: 0.1.0
Draft as of 2026-03-24 Computable Name: RiskToObservationRisk

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

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

group RiskObservation(source src : Risk, target tgt : RiskObservation) {
  src -> tgt.id = evaluate(src, id) "b891e350-e793-415a-b394-92dd5f931bc1";
  src.involved as involved then {
    src ->  src.extension as participantExt,  participantExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-ParticipantCareActor' then {
      involved -> participantExt.extension as participantRoleExt then {
        involved -> participantRoleExt.url = 'participantRole' "df3837f5-36a6-495d-b6e6-f5cea44cf462";
        involved -> participantRoleExt.valueCode = 'involved' "a254e0dd-f6e0-4bd9-a0e8-799e8350e213";
      } "5ea97ad6-5e3a-46f7-acb5-b96574a361f1";
      involved -> participantExt.extension as participantRefExt then {
        involved -> participantRefExt.url = 'participantReference' "957cff84-3765-4100-9066-3e2dd9fb9be4";
        involved -> participantRefExt.valueReference as participantReference then {
          involved -> participantReference.reference = evaluate(involved, 'Practitioner/'+id) "6a3a5fe0-2eb4-4405-bb27-42da74948907";
          involved -> participantReference.display = evaluate(involved, display) "97c0abbe-3d8d-4542-a97c-7198c11d30f4";
        } "fda074b7-333a-44ac-b264-8fb76f6b56d7";
      } "e34f86a7-81b6-4776-9909-e3e7bff18688";
      participantExt -> tgt.extension "8d67b7f2-2b15-4074-8726-c08917042464";
    } "fca9057b-4ff0-494e-bd81-0f2f084a8683";
  } "setObservationInvolved";
  src.informed as informed then {
    src ->  src.extension as participantExt,  participantExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-ParticipantCareActor' then {
      informed -> participantExt.extension as participantRoleExt then {
        informed -> participantRoleExt.url = 'participantRole' "793037f8-307e-4288-824e-cd3364379ab5";
        informed -> participantRoleExt.valueCode = 'informed' "c2a354ec-269c-4622-be99-7f5dc0beffca";
      } "e00ed6ed-1ce7-405e-954e-d97425b72957";
      informed -> participantExt.extension as participantRefExt then {
        informed -> participantRefExt.url = 'participantReference' "bb46a7cf-f4f1-4978-b73a-50369b397cb8";
        informed -> participantRefExt.valueReference as participantReference then {
          informed -> participantReference.reference = evaluate(informed, 'Practitioner/'+id) "2417ca6a-f35e-4311-9b2b-d6acfb690c16";
          informed -> participantReference.display = evaluate(informed, display) "1d9e190b-5997-49bb-9586-c13456c0455a";
        } "6bb6c41c-8f40-463b-9ea4-45ae1358e856";
      } "0bfda73d-e32f-40f3-9a8a-a514a522bdf8";
      participantExt -> tgt.extension "8a1986c3-e2a0-4a9f-9a11-227244b74ede";
    } "31e6f634-a684-4f9a-95aa-7d1a6822835d";
  } "setObservationInformed";
  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' "6119592e-0cb2-4739-a767-7c225781729b";
    src -> tag.code = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Observation-Risk-Risk' "4b6a4eca-26be-4e24-bba6-ceaddf50223c";
  } "setMetaTag";
  src -> tgt.status = 'final' "setObservationStatus";
  src.subjectOfCare as subjectOfCare then {
    src -> tgt.subject as subject then {
      src -> subject.reference = evaluate(subjectOfCare, 'Patient/'+id) "8b8f9697-cc0c-46aa-8606-d18e66fbb0ba";
      src -> subject.display = evaluate(subjectOfCare, display) "d37c0817-fb77-46fe-ac14-2778cb39e2f3";
    } "25832731-26cf-4f52-8214-2003cf4d11e6";
  } "setObservationSubject";
  src.careWorker as careWorker then {
    src -> tgt.performer as performer then {
      src -> performer.reference = evaluate(careWorker, 'Practitioner/'+id) "21fd2c65-c89e-4241-9507-53c065b1bbdf";
      src -> performer.display = evaluate(careWorker, display) "bd91531a-89ce-42a2-8cff-1ce9b7868c28";
    } "4952503d-4b2e-4db9-a0f7-cf00ccfca484";
  } "setObservationPerformer";
  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', '6', 'Risk') "setObservationCode";
  src -> src.period as period then {
    src.startDate as start then {
      src -> period.start = evaluate(src, startDate) "9ca12f72-7bba-499b-9ff8-602f711f2f1c";
    };
    src.endDate as end then {
      src -> period.end = evaluate(src, end) "83ca23a1-c7b3-44ed-bcf9-d2c45f4866cd";
    };
    period where $this.start.empty().not()or$this.end.empty().not() -> tgt.effectivePeriod "fb2fa00d-2ea0-458d-ab66-d97bec8bd780";
  } "setObservationPeriod";
  src.category as category 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') "ebe806bc-98c9-49aa-a463-2da94e2c978a";
      src -> coded.valueCodeableConcept = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-RiskCategory-1', '', '') as vcc then {
        vcc.coding as coding then {
          vcc -> coding.code = evaluate(category, code) "b6e77271-9b67-4b95-8b7b-9803a6d74440";
          vcc -> coding.display = evaluate(category, display) "0f1af9f1-b230-47b9-a471-6777c53a7bf9";
        };
      } "cd5d1090-7b34-46bf-aca7-7b80704c9b21";
    } "57594bcc-f211-470c-a61b-fdcd1d7d3a27";
  } "setObservationRiskCategoryComponent";
  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') "909ded4d-264f-492b-b97a-94eb6c07dc50";
      src -> freeText.valueString = evaluate(src, text) "261f975e-651b-48e1-a3ff-c0f3d9d2d41c";
    } "setObservationTextComponent";
    src.trigger as trigger then {
      src -> tgt.component as freeText then {
        src -> freeText.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-RiskComponentCode-1', 'triggers', 'Triggers') "7c161b12-60d1-49b7-848e-cd13d57f9870";
        src -> freeText.valueString = evaluate(src, trigger) "60687d93-1c7b-47cd-ba1a-93a77ea6817c";
      } "setObservationTriggerComponent";
      src.relapseIndicators as relapseIndicators then {
        src -> tgt.component as freeText then {
          src -> freeText.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-RiskComponentCode-1', 'relapse-indicators', 'Relapse Indicators') "74488a5c-854b-44c3-9d9a-aa0424066135";
          src -> freeText.valueString = evaluate(src, relapseIndicators) "c919b6e6-f1fb-496f-a5a9-9ae6bc294b2f";
        } "setObservationRelapseIndicatorsComponent";
        src.comment as comment then {
          src -> tgt.component as freeText then {
            src -> freeText.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-RiskComponentCode-1', 'comment', 'Comment') "1e6e8726-7a17-42b1-b4f4-a9d8abe06d5c";
            src -> freeText.valueString = evaluate(src, comment) "6ee3b79e-3861-4a61-9b79-30999b30ca86";
          } "setObservationCommentComponent";
        };
      };
    };
  };
}