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

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

map "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/CareWorker-Practitioner" = "CareWorkerToPractitioner"

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

group Practitioner(source src : CareWorker, target tgt : Practitioner) {
  src -> tgt.id = evaluate(src, id) "setPractitionerId";
  src -> tgt.name as name then {
    src -> name.given = evaluate(src, name.given) "f73a62a1-bb8e-4496-82fb-dcfc1a87f86f";
    src -> name.family = evaluate(src, name.family) "7519bc1f-7db9-435b-9c25-d3b3e81db715";
  } "setPractitionerName";
  src.contactDetails as emailContactDetails then {
    emailContactDetails.emailAddressDetails as emailAddressDetails -> tgt.telecom as telecom then {
      src -> telecom.system = 'email' "2ef26959-7e54-4716-9cbd-e78475a4e969";
      src -> telecom.value = evaluate(emailAddressDetails, emailAddress) "c377acdf-3186-4ebb-9bc0-d05db40adbdf";
      src -> telecom.rank = evaluate(emailAddressDetails, preferredOrder) "3dff3637-08e6-45d3-bbf3-cbdde5969028";
      src -> src.emailAddressType = create('Coding') as etvt then {
        src -> etvt.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/person-email-address-type' "fae7267d-9f89-4006-bdad-0d2a54c7f796";
        src -> etvt.code = evaluate(emailAddressDetails, type.code) "3698b0f0-5a84-4c10-9bd7-2d1565ba94b0";
        src -> telecom.use = translate(etvt, 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/ConceptMap/MODS-FHIREmailContactPointUse-1', 'code') "a73b5476-08df-4aa7-aff7-4c4b00996f83";
        src -> telecom.extension as emailTypeExt then {
          src -> emailTypeExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonEmailAddressType' "8d8d1c2c-cb44-4e8a-ba36-4e44c9bcb9b6";
          src -> emailTypeExt.valueCoding as emailTypeValueCoding then {
            src -> emailTypeValueCoding.system = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-EmailAddressType-1' "41d389bf-01e4-4e4b-9430-1d83c90c82db";
            src -> emailTypeValueCoding.code = evaluate(emailAddressDetails, type.code) "88d2e8f5-876d-42b0-acb2-62a696040c1a";
            src -> emailTypeValueCoding.display = evaluate(emailAddressDetails, type.display) "6373f4ca-1d86-42e5-9e9b-c2d1ea5d04bd";
          } "fa36062c-2e08-4900-a567-ec8def6d7ff5";
        } "120ba4aa-eb89-46a0-bf1d-b8dfd36adafa";
      } "5c6a7888-77f7-4d1c-af32-6c5a76c30320";
    } "setCareWorkerEmailAddress";
    src.contactDetails as telephoneContactDetails then {
      telephoneContactDetails.telephoneDetails as telephoneNumberDetails -> tgt.telecom as telecom then {
        src -> telecom.system = 'phone' "780cd4a0-5a3b-4eb2-812b-21d7e8fdbe1c";
        src -> telecom.value = evaluate(telephoneNumberDetails, telephoneNumber) "a4b0b305-741f-4706-937a-dea747d276b2";
        src -> telecom.rank = evaluate(telephoneNumberDetails, preferredOrder) "2ce2dca8-d13e-4c54-84b3-162be8e4d2af";
        src -> src.telephoneType = create('Coding') as ttvt then {
          src -> ttvt.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/person-telephone-type' "e847b6fa-93ef-4aee-b06c-5a456ad6956f";
          src -> ttvt.code = evaluate(telephoneNumberDetails, type.code) "e090cd2e-a75a-40e0-9fe8-bbc7fb242759";
          src -> telecom.use = translate(ttvt, 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/ConceptMap/MODS-FHIRTelephoneContactPointUse-1', 'code') "9793d9a4-759e-4177-a92e-7ef90d3013a2";
        } "557e0cbc-1c20-4b62-ac9d-1fad9d031260";
        src -> telecom.extension as telephoneTypeExt then {
          src -> telephoneTypeExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonTelephoneNumberType' "8bfb3096-fbbc-4e19-b01e-d57ad11ead68";
          src -> telephoneTypeExt.valueCoding as telephoneNumberTypeCoding then {
            src -> telephoneNumberTypeCoding.system = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-TelephoneNumberType-1' "c1445e52-08ec-44a6-9c90-2b8e332c5016";
            src -> telephoneNumberTypeCoding.code = evaluate(telephoneNumberDetails, type.code) "416fea65-98bd-476d-8542-5faf2eeaf0f6";
            src -> telephoneNumberTypeCoding.display = evaluate(telephoneNumberDetails, type.display) "b2a937f8-9dd2-421e-b0ed-06cfcb6de877";
          } "07fb37e3-88ee-4085-a66b-f6e5fe0dd64d";
        } "75cf2fe9-e57c-4b46-a429-5f7e5b6216bc";
      } "setCareWorkerTelephone";
    };
  };
}