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-06-10 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) "583eba4f-0a2b-48ca-a053-254e8e8fe77e";
    src -> name.family = evaluate(src, name.family) "bbe32752-13bd-49be-9923-e7ffb834a7b1";
  } "setPractitionerName";
  src.contactDetails as emailContactDetails then {
    emailContactDetails.emailAddressDetails as emailAddressDetails -> tgt.telecom as telecom then {
      src -> telecom.system = 'email' "dd314f1c-a1c0-40a2-85c9-7a6ec1e06074";
      src -> telecom.value = evaluate(emailAddressDetails, emailAddress) "7ee4c413-c030-4a27-9be1-85c10eb33ad1";
      src -> telecom.rank = evaluate(emailAddressDetails, preferredOrder) "2127180a-d617-4db1-9f4a-817c359b6fb4";
      src -> src.emailAddressType = create('Coding') as etvt then {
        src -> etvt.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/person-email-address-type' "9f09d9ff-98c5-4d3b-9499-fe841e644878";
        src -> etvt.code = evaluate(emailAddressDetails, type.code) "236e4d7c-58b3-44cb-b986-3273e7f523a0";
        src -> telecom.use = translate(etvt, 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/ConceptMap/MODS-FHIREmailContactPointUse-1', 'code') "5d73c763-9534-473a-af26-e96129be92d5";
        src -> telecom.extension as emailTypeExt then {
          src -> emailTypeExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonEmailAddressType' "a0c718b4-de64-41d6-aaf4-c160ad938798";
          src -> emailTypeExt.valueCoding as emailTypeValueCoding then {
            src -> emailTypeValueCoding.system = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-EmailAddressType-1' "1294850f-cba1-4b1a-b96d-f1c9fc499404";
            src -> emailTypeValueCoding.code = evaluate(emailAddressDetails, type.code) "20aa3271-cdd7-44cf-84c2-8c291c017d3e";
            src -> emailTypeValueCoding.display = evaluate(emailAddressDetails, type.display) "23d7969a-8414-4e4e-b2f6-94cd106db788";
          } "08a9242b-bded-49e7-b713-a88f4342c5b2";
        } "2cde027a-c5f6-435c-a357-d5e4ce587d50";
      } "a5076c0c-b31f-4d26-96ea-4ce2ce41bbb3";
    } "setCareWorkerEmailAddress";
    src.contactDetails as telephoneContactDetails then {
      telephoneContactDetails.telephoneDetails as telephoneNumberDetails -> tgt.telecom as telecom then {
        src -> telecom.system = 'phone' "0bf8dfa0-8f5f-4235-8919-33f71ffb60dd";
        src -> telecom.value = evaluate(telephoneNumberDetails, telephoneNumber) "a7c7b555-d6d9-4064-b1a9-a14d3e0f2fea";
        src -> telecom.rank = evaluate(telephoneNumberDetails, preferredOrder) "fa14624b-3efe-4555-b198-bad82c2984cf";
        src -> src.telephoneType = create('Coding') as ttvt then {
          src -> ttvt.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/person-telephone-type' "f764fee5-b169-469c-9709-145a3f6f25ba";
          src -> ttvt.code = evaluate(telephoneNumberDetails, type.code) "3d42a9ba-b0c3-449c-9ee8-6b8091f675ef";
          src -> telecom.use = translate(ttvt, 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/ConceptMap/MODS-FHIRTelephoneContactPointUse-1', 'code') "b336e6ba-0479-4b79-8985-73cbab82a761";
        } "edab1140-2a2c-4d22-9298-65ddc78387f2";
        src -> telecom.extension as telephoneTypeExt then {
          src -> telephoneTypeExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonTelephoneNumberType' "b260f1b3-902d-472d-8ecd-8ab031074ff2";
          src -> telephoneTypeExt.valueCoding as telephoneNumberTypeCoding then {
            src -> telephoneNumberTypeCoding.system = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-TelephoneNumberType-1' "ec80ae07-e8f2-46ff-92e1-ac6eab2f8a5f";
            src -> telephoneNumberTypeCoding.code = evaluate(telephoneNumberDetails, type.code) "adf2a199-6b90-46cd-93c4-726d19a87f43";
            src -> telephoneNumberTypeCoding.display = evaluate(telephoneNumberDetails, type.display) "98feaffb-954b-4795-87bd-5277df8d1aed";
          } "02c4a08a-e9ff-47a3-bf4e-519af284bb7b";
        } "65544433-92b1-460e-bfbe-c82a49f3167b";
      } "setCareWorkerTelephone";
    };
  };
}