Care Coordination and 360 Referrals (Proof of Concept)
0.1.0 - proof-of-concept
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
| Official URL: https://fhir.acmeexample.org.uk/PatientCareCoordination/StructureDefinition/Referral | Version: 0.1.0 | ||||
| Draft as of 2026-11-03 | Computable Name: Referral | ||||
Proof of concept - not an authoritative source.
The information exchanged during a closed loop referral, from the referral request to the referral outcome. Based on the data items of the IHE 360X transactions (PCC TF-2 3.55 to 3.61), FHIR Workflow and HL7 v2 orders, with the UBRN from eRS. It is the same for a referral to an outpatient clinic, a community service or a virtual ward. National services such as BaRS are mapped onto this model (see the BaRS review), not the other way round. The PRSB Clinical Referral Information Standard v1.0 gives the clinical headings.
The referral stays small: the clinical content is in separate documents referenced as supporting information - a Discharge Report or clinic letter for the episode, a Patient Summary and referral forms. A referral may be one activity of a Care Plan.
The Mappings tab shows each element in HL7 v2 (360X) and FHIR.
Usages:
You can also check for usages in the FHIR IG Statistics
Description Differentials, Snapshots, and other representations.
This structure is derived from Base
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() |
|---|---|---|---|---|
![]() |
0..* | Base | Clinical Referral Instances of this type can be the target of a Reference | |
![]() ![]() |
1..1 | Identifier | Referral ID | |
![]() ![]() |
0..1 | Identifier | Unique Booking Reference Number | |
![]() ![]() |
1..1 | BackboneElement | Patient | |
![]() ![]() ![]() |
0..1 | Identifier | NHS Number | |
![]() ![]() ![]() |
0..* | Identifier | Local patient identifier | |
![]() ![]() ![]() |
1..1 | BackboneElement | Demographics | |
![]() ![]() |
1..1 | BackboneElement | Referrer | |
![]() ![]() ![]() |
1..1 | Identifier | Referring clinician | |
![]() ![]() ![]() |
1..1 | Identifier | Referring organisation | |
![]() ![]() |
0..1 | BackboneElement | Referred to | |
![]() ![]() ![]() |
0..1 | Identifier | Service | |
![]() ![]() ![]() |
0..1 | Identifier | Clinician | |
![]() ![]() ![]() |
0..1 | Identifier | Organisation | |
![]() ![]() |
1..1 | CodeableConcept | Service requested | |
![]() ![]() |
0..1 | code | Priority | |
![]() ![]() |
0..1 | dateTime | Expected service provision time | |
![]() ![]() |
0..1 | Period | Validity | |
![]() ![]() |
1..* | CodeableConcept | Reason for referral | |
![]() ![]() |
0..1 | string | Referral question | |
![]() ![]() |
0..* | Reference(DocumentReference | Bundle) | Clinical document | |
![]() ![]() |
0..1 | Reference(DocumentReference | Bundle) | Patient summary | |
![]() ![]() |
0..* | Reference(QuestionnaireResponse) | Referral forms | |
![]() ![]() |
0..* | Reference(Observation) | Observations | |
![]() ![]() |
0..1 | Reference(CarePlan) | Care plan | |
![]() ![]() |
1..1 | dateTime | Date of referral | |
![]() ![]() |
1..1 | code | Referral status | |
![]() ![]() |
0..1 | CodeableConcept | Reason for decline or cancellation | |
![]() ![]() |
0..* | BackboneElement | Appointment | |
![]() ![]() ![]() |
1..1 | Identifier | Appointment ID | |
![]() ![]() ![]() |
1..1 | dateTime | Appointment date and time | |
![]() ![]() ![]() |
0..1 | Identifier | Appointment provider | |
![]() ![]() ![]() |
1..1 | code | Appointment status | |
![]() ![]() |
0..* | Reference(DocumentReference | Bundle) | Interim consultation note | |
![]() ![]() |
0..1 | Reference(DocumentReference | Bundle) | Referral outcome | |
Documentation for this format | ||||
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() |
|---|---|---|---|---|
![]() |
0..* | Base | Clinical Referral Instances of this type can be the target of a Reference | |
![]() ![]() |
1..1 | Identifier | Referral ID | |
![]() ![]() |
0..1 | Identifier | Unique Booking Reference Number | |
![]() ![]() |
1..1 | BackboneElement | Patient | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
0..1 | Identifier | NHS Number | |
![]() ![]() ![]() |
0..* | Identifier | Local patient identifier | |
![]() ![]() ![]() |
1..1 | BackboneElement | Demographics | |
![]() ![]() |
1..1 | BackboneElement | Referrer | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
1..1 | Identifier | Referring clinician | |
![]() ![]() ![]() |
1..1 | Identifier | Referring organisation | |
![]() ![]() |
0..1 | BackboneElement | Referred to | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
0..1 | Identifier | Service | |
![]() ![]() ![]() |
0..1 | Identifier | Clinician | |
![]() ![]() ![]() |
0..1 | Identifier | Organisation | |
![]() ![]() |
1..1 | CodeableConcept | Service requested | |
![]() ![]() |
0..1 | code | Priority | |
![]() ![]() |
0..1 | dateTime | Expected service provision time | |
![]() ![]() |
0..1 | Period | Validity | |
![]() ![]() |
1..* | CodeableConcept | Reason for referral | |
![]() ![]() |
0..1 | string | Referral question | |
![]() ![]() |
0..* | Reference(DocumentReference | Bundle) | Clinical document | |
![]() ![]() |
0..1 | Reference(DocumentReference | Bundle) | Patient summary | |
![]() ![]() |
0..* | Reference(QuestionnaireResponse) | Referral forms | |
![]() ![]() |
0..* | Reference(Observation) | Observations | |
![]() ![]() |
0..1 | Reference(CarePlan) | Care plan | |
![]() ![]() |
1..1 | dateTime | Date of referral | |
![]() ![]() |
1..1 | code | Referral status | |
![]() ![]() |
0..1 | CodeableConcept | Reason for decline or cancellation | |
![]() ![]() |
0..* | BackboneElement | Appointment | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
1..1 | Identifier | Appointment ID | |
![]() ![]() ![]() |
1..1 | dateTime | Appointment date and time | |
![]() ![]() ![]() |
0..1 | Identifier | Appointment provider | |
![]() ![]() ![]() |
1..1 | code | Appointment status | |
![]() ![]() |
0..* | Reference(DocumentReference | Bundle) | Interim consultation note | |
![]() ![]() |
0..1 | Reference(DocumentReference | Bundle) | Referral outcome | |
Documentation for this format | ||||
| Id | Grade | Path(s) | Description | Expression |
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
This structure is derived from Base
Differential View
This structure is derived from Base
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() |
|---|---|---|---|---|
![]() |
0..* | Base | Clinical Referral Instances of this type can be the target of a Reference | |
![]() ![]() |
1..1 | Identifier | Referral ID | |
![]() ![]() |
0..1 | Identifier | Unique Booking Reference Number | |
![]() ![]() |
1..1 | BackboneElement | Patient | |
![]() ![]() ![]() |
0..1 | Identifier | NHS Number | |
![]() ![]() ![]() |
0..* | Identifier | Local patient identifier | |
![]() ![]() ![]() |
1..1 | BackboneElement | Demographics | |
![]() ![]() |
1..1 | BackboneElement | Referrer | |
![]() ![]() ![]() |
1..1 | Identifier | Referring clinician | |
![]() ![]() ![]() |
1..1 | Identifier | Referring organisation | |
![]() ![]() |
0..1 | BackboneElement | Referred to | |
![]() ![]() ![]() |
0..1 | Identifier | Service | |
![]() ![]() ![]() |
0..1 | Identifier | Clinician | |
![]() ![]() ![]() |
0..1 | Identifier | Organisation | |
![]() ![]() |
1..1 | CodeableConcept | Service requested | |
![]() ![]() |
0..1 | code | Priority | |
![]() ![]() |
0..1 | dateTime | Expected service provision time | |
![]() ![]() |
0..1 | Period | Validity | |
![]() ![]() |
1..* | CodeableConcept | Reason for referral | |
![]() ![]() |
0..1 | string | Referral question | |
![]() ![]() |
0..* | Reference(DocumentReference | Bundle) | Clinical document | |
![]() ![]() |
0..1 | Reference(DocumentReference | Bundle) | Patient summary | |
![]() ![]() |
0..* | Reference(QuestionnaireResponse) | Referral forms | |
![]() ![]() |
0..* | Reference(Observation) | Observations | |
![]() ![]() |
0..1 | Reference(CarePlan) | Care plan | |
![]() ![]() |
1..1 | dateTime | Date of referral | |
![]() ![]() |
1..1 | code | Referral status | |
![]() ![]() |
0..1 | CodeableConcept | Reason for decline or cancellation | |
![]() ![]() |
0..* | BackboneElement | Appointment | |
![]() ![]() ![]() |
1..1 | Identifier | Appointment ID | |
![]() ![]() ![]() |
1..1 | dateTime | Appointment date and time | |
![]() ![]() ![]() |
0..1 | Identifier | Appointment provider | |
![]() ![]() ![]() |
1..1 | code | Appointment status | |
![]() ![]() |
0..* | Reference(DocumentReference | Bundle) | Interim consultation note | |
![]() ![]() |
0..1 | Reference(DocumentReference | Bundle) | Referral outcome | |
Documentation for this format | ||||
Snapshot ViewView
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() |
|---|---|---|---|---|
![]() |
0..* | Base | Clinical Referral Instances of this type can be the target of a Reference | |
![]() ![]() |
1..1 | Identifier | Referral ID | |
![]() ![]() |
0..1 | Identifier | Unique Booking Reference Number | |
![]() ![]() |
1..1 | BackboneElement | Patient | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
0..1 | Identifier | NHS Number | |
![]() ![]() ![]() |
0..* | Identifier | Local patient identifier | |
![]() ![]() ![]() |
1..1 | BackboneElement | Demographics | |
![]() ![]() |
1..1 | BackboneElement | Referrer | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
1..1 | Identifier | Referring clinician | |
![]() ![]() ![]() |
1..1 | Identifier | Referring organisation | |
![]() ![]() |
0..1 | BackboneElement | Referred to | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
0..1 | Identifier | Service | |
![]() ![]() ![]() |
0..1 | Identifier | Clinician | |
![]() ![]() ![]() |
0..1 | Identifier | Organisation | |
![]() ![]() |
1..1 | CodeableConcept | Service requested | |
![]() ![]() |
0..1 | code | Priority | |
![]() ![]() |
0..1 | dateTime | Expected service provision time | |
![]() ![]() |
0..1 | Period | Validity | |
![]() ![]() |
1..* | CodeableConcept | Reason for referral | |
![]() ![]() |
0..1 | string | Referral question | |
![]() ![]() |
0..* | Reference(DocumentReference | Bundle) | Clinical document | |
![]() ![]() |
0..1 | Reference(DocumentReference | Bundle) | Patient summary | |
![]() ![]() |
0..* | Reference(QuestionnaireResponse) | Referral forms | |
![]() ![]() |
0..* | Reference(Observation) | Observations | |
![]() ![]() |
0..1 | Reference(CarePlan) | Care plan | |
![]() ![]() |
1..1 | dateTime | Date of referral | |
![]() ![]() |
1..1 | code | Referral status | |
![]() ![]() |
0..1 | CodeableConcept | Reason for decline or cancellation | |
![]() ![]() |
0..* | BackboneElement | Appointment | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
1..1 | Identifier | Appointment ID | |
![]() ![]() ![]() |
1..1 | dateTime | Appointment date and time | |
![]() ![]() ![]() |
0..1 | Identifier | Appointment provider | |
![]() ![]() ![]() |
1..1 | code | Appointment status | |
![]() ![]() |
0..* | Reference(DocumentReference | Bundle) | Interim consultation note | |
![]() ![]() |
0..1 | Reference(DocumentReference | Bundle) | Referral outcome | |
Documentation for this format | ||||
| Id | Grade | Path(s) | Description | Expression |
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
This structure is derived from Base
Other representations of profile: CSV, Excel
This logical model says what information a closed loop referral carries. An implementation splits it into FHIR resources, each owned by one side of the exchange, and sends them by one of the Exchange Options. The Mappings tab gives the element-level mapping; this section shows the breakdown.
Next: the Clinical Referral Domain Model goes into more
detail on how the bulk of this model - the request: ServiceRequest and what it
references - is implemented, field by field, in FHIR and HL7 v2.
flowchart LR
subgraph LM [Clinical Referral - logical model]
L1[Identification]
L2[Patient]
L3[Referrer / Recipient]
L4[Request and reason]
L5[Supporting information]
L6[Status]
L7[Appointment]
L8[Interim note / Outcome]
end
subgraph RI [Owned by the Referral Initiator]
SR[ServiceRequest<br/>Referral Request]
PR[PractitionerRole<br/>Practitioner, Organization]
DOC1[Documents and forms<br/>HDR, EPS, QuestionnaireResponse,<br/>Observation]
end
subgraph RR [Owned by the Referral Recipient]
T[Task<br/>Referral Task]
AP[Appointment, Slot<br/>Referral Appointment]
EN[Encounter<br/>Visit / Hospital Spell]
DOC2[Documents<br/>HDR, clinic letter]
HS[HealthcareService<br/>Organization]
end
PT[Patient]
L1 --> SR
L2 --> PT
L3 --> PR
L3 --> HS
L4 --> SR
L5 --> DOC1
L6 --> T
L7 --> AP
L7 --> EN
L8 --> DOC2
SR -. "supportingInfo" .-> DOC1
T -. "basedOn / focus" .-> SR
T -. "output" .-> DOC2
AP -. "basedOn" .-> SR
| Logical model | Implementation resource (profile) | Elements | Owned and updated by |
|---|---|---|---|
referralId, ubrn |
ServiceRequest (Referral Request) |
identifier:referralId (Referral Identifier, type PLAC, assigner ODS code), identifier:ubrn |
Referral Initiator. Every other resource refers to the referral by this identifier (basedOn.identifier) |
patient |
Patient (Patient) |
ServiceRequest.subject; Task.for |
Referral Initiator sends it with the request; afterwards the patient is known to both sides and referenced by NHS Number (for.identifier) |
referrer |
PractitionerRole (PractitionerRole), with Practitioner and Organization |
ServiceRequest.requester, Task.requester - professional code and ODS code |
Referral Initiator |
recipient |
HealthcareService (eRS service ID, Directory of Services ID) or Organization |
ServiceRequest.performer (who is asked), Task.owner (who has taken it on) |
Referral Initiator chooses; Referral Recipient confirms as Task.owner |
serviceRequested, priority, expectedBy, reasonForReferral, referralQuestion, dateOfReferral |
ServiceRequest |
code, priority, occurrenceDateTime, reasonCode / reasonReference, note, authoredOn |
Referral Initiator |
validityPeriod |
Task (Referral Task) |
restriction.period |
Referral Initiator sets; Referral Recipient works within it |
clinicalDocument, patientSummary, forms, observations |
Bundle (FHIR Document - HL7 Europe HDR, EPS) or DocumentReference; QuestionnaireResponse; Observation (Observation) |
ServiceRequest.supportingInfo |
Referral Initiator - see the Discharge Report and Patient Summary models and Referral Forms |
carePlan |
CarePlan (Care Plan) |
ServiceRequest.basedOn |
Whoever owns the plan - see Care Plan and Execution |
status, statusReason |
Task (Referral Task) |
status, businessStatus (Referral Workflow Status), statusReason |
Referral Recipient (the Referral Initiator only requests a cancellation) - see Referral Status |
appointment |
Appointment (Referral Appointment), Slot; Encounter (Visit or Hospital Spell) |
Appointment.basedOn, start, status; Encounter.basedOn; Task.output |
Referral Recipient (or the Referral Initiator when booking through eRS) - see Appointment Booking |
interimNote, outcome |
Bundle (FHIR Document - HL7 Europe HDR, or a clinic letter) or DocumentReference |
Task.output (linked to the referral through the Task, not inside the document) |
Referral Recipient - see Referral Outcome Reports |
The same resources are exchanged differently depending on the exchange option:
| Step | FHIR REST | FHIR Messaging | HL7 v2 (360X) | Document sharing |
|---|---|---|---|---|
| Referral Request [PCC-55] | Create ServiceRequest and Task (status requested) on the recipient's or a shared server |
Referral Order (O19): MessageHeader, ServiceRequest, Patient, PractitionerRole, supporting resources |
OMG^O19: PID, ORC (ORC-2 Referral ID, ORC-12, ORC-21), TQ1, OBR, OBX, NTE |
Supporting documents published; ServiceRequest.supportingInfo references them |
| Accept, decline, cancel, status | Update Task |
Referral Order Status (O51): MessageHeader, Task only - patient, referrer and recipient by identifier |
OSU^O51: PID, ORC (ORC-1 / ORC-5) |
- |
| Appointment [PCC-60], [PCC-61] | Create / update Appointment |
O51 with the Appointment in Task.output |
SIU^S12 / S13 / S15 / S26 |
- |
| Interim note [PCC-59], outcome [PCC-57] | Create document; update Task.output |
O51 with the document Bundle |
OSU^O51 and MDM^T02 (TXA-14 Referral ID) |
MHD Provide Document Bundle; DocumentReference.context.related the referral |
Rules that hold whatever the exchange option:
ServiceRequest); the Referral Recipient
owns the work (Task, Appointment, Encounter) and the documents it writes.Example: the GP to cardiology referral - Referral Request, Referral Task - Accepted, Appointment, Referral Task - Completed, and as messages Referral Order (O19) and Referral Order Status (O51), accepted.