Care Coordination and 360 Referrals (Proof of Concept)
0.1.0 - proof-of-concept United Kingdom flag

Care Coordination and 360 Referrals (Proof of Concept) - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

FDP Canonical Data Model Mapping

This page maps the FHIR profiles in this guide to the NHS England FDP Canonical Data Model (CDM) v1.0.0, and highlights data elements that are important for closed loop referrals and care coordination but are missing from the CDM or not represented well.

The CDM is a persistence model (the archetype layer - see Composition, Archetypes and Templates): objects as they are stored for operational products such as the Unified Pathway Manager. It is downstream of the source systems and exchange standards: its data is derived from PAS, eRS and other feeds. It is used here as evidence of what NHS operations record, not as a source for this guide's design - the guide follows IHE 360X, HL7 v2 and FHIR. This guide is an exchange model between organisations. Some differences are expected; the gaps below are those that matter when a referral, its workflow state and its outcome must be held and shared.

Checked 2026-11-02 against the CDM Object Explorer (property lists of each object). Element-level mappings are indicative - To confirm.

Summary of Gaps

# Gap Why it matters CDM today This guide
1 No referral workflow (fulfilment) state Closed loop referral depends on both parties knowing the referral's state and who owns it next Referral status is one provider-side string (e.g. Accepted, Rejected, Open, Awaiting Triage); latestTriageOutcome; no owner, requester or status history Referral Task businessStatus, statusReason, owner, lastModified, input / output
2 No link from a referral to its outcome report The loop is closed by the report answering the referral (PCC-57) Clinic Letter links only to appointmentId; no referralId Task.output (outcome report), DocumentReference.context.related
3 Placer and filler identifiers not distinguished The initiator's referral ID (placer, PLAC) must be returned on every message; the recipient's ID is separate referralId, sourceUniqueId ("ID in the original source system") and ubrn; no identifier type or assigning organisation Referral Identifier (PLAC, assigner ODS); UBRN
4 "Encounter" means an elective waiting list entry Name clash: a CDM Encounter is not a FHIR Encounter (an attendance or stay) Encounter - "present or past entries on the trust Elective Admission List" (TCI, theatre, pre-op assessment) Encounter, Hospital Spell, Visit
5 Account / Spell Number (AN) and Visit Number (VN) not explicit These identifiers carry reports and results back to the right stay or attendance (PV1-19) Admission admissionExternalId; Appointment appointmentExternalId, cdsUniqueId; no visit-to-spell link - To confirm HospitalProviderSpellIdentifier (AN), VisitNumber (VN), Visit.partOf
6 Care plan has no content A care plan is activities, goals, owners and progress; onward referrals are its activities Community Care Plan: type, agreed by / when, implementation date only Care Plan activity, goal, addresses, careTeam, period, status
7 No structured supporting information or forms Referral criteria, triage and pre-assessment use forms; answers become Observations referralLetterContent, referralLetterRid, referralNotes (text / media); no Questionnaire or QuestionnaireResponse object (Scored Assessment holds scores only) ServiceRequest.supportingInfo, Task.input / output (Questionnaire, QuestionnaireResponse)
8 Observation value is a string Numeric values, units and components (blood pressure) cannot be checked or charted reliably Observation observationValue (string), ucumUnitOfMeasurement, SNOMED / CTV3 code; no status, category, performer or components Observation valueQuantity (UCUM), component, status, category
9 Virtual ward stay not linked to its referral A virtual ward admission is the fulfilment of a referral (step-up / step-down) Virtual Ward Stay has no referralId; Referral has only isReferralToVirtualWard Encounter.basedOn; Task.output (encounter)
10 No practitioner-in-organisation (role) Requester, owner and author are a person acting for an organisation (ODS) Care Professional has role and specialty but no organisation; organisations are ODS code strings on each object; no Organisation object PractitionerRole (practitioner + organisation ODS), Organization
11 Onward referrals and replacements not linked Referrals made from a care plan or from another referral (redirect, re-referral) No basedOn / replaces on Referral; triage outcome "redirected" is text ServiceRequest.basedOn, replaces
12 Clinical documents are metadata only Reports are the referral outcome; recipients and type are needed for routing Clinic Letter: type, date, consultant, status, content / media reference; no document type code, author organisation, recipients or sections Discharge Report (HDR Composition), DocumentReference

Represented well: patient identifiers (Patient Identifier History type, value, assigning authority), GP practice registration (ODS code, named GP), referral reason (SNOMED CT and ICD-10), priority, referrer and referring / provider organisation ODS codes, appointment to referral link (Appointment.referralId), clinic slots and sessions, professional registration (body and entry ID), related persons.

Profile to CDM Object

Profile (this guide) FDP CDM object(s) Fit
Referral Request (ServiceRequest) Referral, UEC Referral, eRS Service Good for the request; gaps 3, 7, 11
Referral Task (Task) Referral (status, latestTriageOutcome, dates) Gap 1 - no equivalent object
Referral Appointment (Appointment) Appointment Good
Schedule / Slot Clinic Session / Clinic Slot Good (outpatient clinics)
Patient Patient, Patient Identifier History, GP Practice Registration Good
RelatedPerson Patient Relationship History; Patient nextOfKin* Good
Organization None - ODS code strings on each object; Site siteOdsCode Gap 10
Practitioner Care Professional Good
PractitionerRole Care Professional (role, mainSpecialty); Assigned Care Professional Gap 10
HealthcareService eRS Service - To confirm Partial - eRS services only; no general service object
Location Location (id, name, site), Site Partial - no type or physical type
Encounter Appointment (attendance), Admission, Virtual Ward Stay - not CDM Encounter Gap 4
Hospital Spell Admission (Hospital Provider Spell), Ward Stay, Consultant Episode Good; gap 5
Visit Appointment (attendanceId), Outpatient Activity, Virtual Ward Stay Partial; gaps 5, 9
EpisodeOfCare Patient Pathway (RTT), Outpatient Activity (waiting list) - To confirm Partial - RTT pathway, not a care episode
Observation Observation, Scored Assessment Gap 8
Care Plan Community Care Plan, Team Gap 6
HDR Composition / DocumentReference Clinic Letter, Clinical Note Gaps 2, 12
MessageHeader, Bundle Not applicable - exchange, not persistence -

Referral Request and Referral Task

FHIR element CDM Referral property Notes
ServiceRequest.identifier[referralId] (PLAC, assigner ODS) referralId, sourceUniqueId Gap 3 - whose ID is not stated
ServiceRequest.identifier[ubrn] ubrn Good
ServiceRequest.status status, removed Combined with workflow state
ServiceRequest.category referralType, serviceTypeRequested Partial
ServiceRequest.code treatmentFunctionCode, serviceId (eRS), requestedAppointmentType Good
ServiceRequest.priority priorityCode (NHS Data Dictionary priority type) Good
ServiceRequest.subject patientId, mrn Good
ServiceRequest.authoredOn dateReferralCreated Good
ServiceRequest.requester referrerId (not a foreign key), referringOrganisationOdsCode, referralSource Partial - gap 10
ServiceRequest.performer providerOrganisationOdsCode, trustOdsCode, siteId, specialtyId Good
ServiceRequest.reasonCode primaryReferralReasonCode, presentingComplaintSnomedCtCode, presentingComplaintIcd10Code Good
ServiceRequest.reasonReference - Gap 7
ServiceRequest.supportingInfo referralLetterRid, referralLetterContent Gap 7 - letter only
ServiceRequest.note referralNotes Good
ServiceRequest.basedOn, replaces - (pathwayId links to the RTT pathway) Gap 11
ServiceRequest.occurrence[x] dueDate, earliestDueDate, daysToBookWithin Good
Task.businessStatus status (17 values), isPatientBookable, didNotProceed Gap 1 - no history
Task.statusReason referralRejectionReasonCode, latestTriageOutcome Partial - rejection only
Task.lastModified latestTriageOutcomeTimestamp, referralRejectionTimestamp, dateReferralAccepted Partial - event dates, not a state history
Task.owner - Gap 1
Task.input (forms to complete) - Gap 7
Task.output (appointment, outcome report) Appointment referralId (appointment only) Gap 2

Patient Administration

FHIR element CDM property Notes
Patient.identifier[nhsNumber] Patient nhsNumber, nhsNumberStatusIndicatorCode Good
Patient.identifier[MedicalRecordNumber], [PatientIdentifier] (assigner ODS) Patient mrn, localPatientId, localPatientIdOrganisationOdsCode; Patient Identifier History identifierType, assigningAuthority Good
Patient.name, birthDate, deceasedDateTime, address, telecom firstName, middleName, surname, dateOfBirth, dateOfDeath, addressLine1, postcode, phoneNumber, email Good
Patient.gender, sex for clinical use phenotypicSexCode, statedGenderCode, genderIdentityCode Good
Patient.generalPractitioner (ODS) GP Practice Registration generalMedicalPracticeOdsCode, namedGeneralPractitionerId; Patient registeredGp Good
HospitalSpell.identifier (AN) Admission admissionId, admissionExternalId Gap 5 - To confirm
HospitalSpell.period, hospitalization.admitSource, dischargeDisposition Admission admissionTimestamp, dischargeTimestamp, admissionSourceCode, destinationOfDischargeCode, methodOfDischargeCode Good
HospitalSpell.participant (admitting, referring) Consultant Episode, Assigned Care Professional Partial
HospitalSpell.location Ward Stay wardId; Admission ward, bedLocation Good
Visit.identifier (VN), Visit.partOf (spell) Appointment attendanceId, appointmentExternalId, cdsUniqueId Gap 5 - no link to a spell
Encounter.basedOn (referral) Appointment referralId; Outpatient Activity referralId Good for outpatients; gap 9 for virtual wards
Encounter.status Appointment attendanceStatusCode, bookingStatus, outcomeOfAttendanceCode Good
Appointment.slot Clinic Slot appointmentId (link from slot) Good
PractitionerRole.organization - Gap 10
Practitioner.identifier Care Professional professionalRegistrationBodyCode, professionalRegistrationEntryId Good
Location.type, physicalType, managingOrganization Location siteId; Site siteType, siteOdsCode Partial

Observations and Care Plan

FHIR element CDM property Notes
Observation.code observationSnomedCtCode, observationCtv3code No LOINC
Observation.value[x] (valueQuantity, UCUM) observationValue (string), ucumUnitOfMeasurement Gap 8
Observation.component - Gap 8
Observation.status, category, performer - Gap 8
Observation.effective[x] observationTimestamp Good
Observation.method, interpretation method, interpretation Good
Observation.encounter admissionId, appointmentId, virtualWardStayId, uecAttendanceId Good
CarePlan.category communityCarePlanType Good
CarePlan.status, period implementationDate, isContentAgreed, isRemoved Partial
CarePlan.author / agreement contentAgreedBy, contentAgreedTimestamp Good
CarePlan.activity (referrals, visits, tasks) - Gap 6
CarePlan.goal, addresses, supportingInfo (assessment) - Gap 6
CarePlan.careTeam - (Team is not linked) Gap 6

Referral Status Values

The 17 allowed values of CDM Referral.status compared with this guide's referral workflow statuses (Task.businessStatus, from the 360X state transitions). Checked 2026-11-02; the CDM gives no definitions for the values, so the mapping is by name - To confirm.

CDM Referral.status Workflow status (this guide) Notes
Requested requested Match
Referral requested To confirm - meaning not defined
Awaiting triage requested Received, not yet triaged (Task.status received)
Accepted accepted Match
Open accepted To confirm - an open referral after acceptance
Waiting accepted To confirm - on a waiting list, not yet booked
Due accepted Not a state: derived from dueDate (booking deadline)
Past due accepted Not a state: derived from dueDate
Call letter sent accepted / appointment-booked To confirm - an invitation to book, or a booked appointment
Deferred deferred (provisional) Match; Task.status on-hold
Rejected declined Match; reason in referralRejectionReasonCode
Redirect redirected (provisional) Match; the referral to the other service is a new referral (ServiceRequest.replaces)
Complete completed Match only if the outcome report has been sent [PCC-57]
Closed completed or cancelled To confirm - ambiguous
Removed cancelled To confirm - removed from the waiting list, or entered in error (Referral.removed)
No referral status - Data quality value, not a state
NULL - Data quality value, not a state

This guide's statuses with no CDM status value:

Workflow status Where the CDM holds it, if anywhere
information-requested - (eRS "return to referrer"; triage outcome text at best)
appointment-booked, appointment-rescheduled, appointment-cancelled Appointment bookingStatus, dateTimeBooked, dateTimeCancelled
no-show Appointment attendanceStatus, dnaCount; Referral didNotProceed
interim-report -
cancel-requested - (no initiator-side states)
cancelled Removed / Closed - To confirm

Findings:

  • The CDM status list mixes three kinds of value: workflow states (Requested, Accepted, Rejected, Complete), derived timing flags (Due, Past due) and data quality values (No referral status, NULL). Only the first belongs in a workflow status; the others should be derived or validated.
  • The CDM values are the Referral Recipient's view. States driven by the Referral Initiator (cancel requested) or by the closing report (completed with outcome, interim report) are missing - gap 1 and gap 2 above.
  • Redirect and Deferred point to NHS operations missing from 360X. Provisional redirected and deferred workflow statuses are based on HL7 v2 (ORC-1 RU, OH) and FHIR Task, not on the CDM (see State Transitions) - the processes are To confirm against eRS and provider practice.

Open Questions

  • Which CDM property carries the Hospital Provider Spell Number and the Visit Number (admissionExternalId, appointmentExternalId, cdsUniqueId) - To confirm.
  • Whether Referral.sourceUniqueId is the Referral Initiator's (placer) ID or the receiving system's ID - To confirm.
  • Definitions of the CDM Referral.status values (Referral, Open, Waiting, Closed, Removed, Call letter sent) - To confirm; see Referral Status Values.
  • Whether Task (RttTask) is a work-list item or could hold referral fulfilment - To confirm.