GP Connect - Access Record Structured

This guidance is under active development by NHS Digital and content may be added or updated on a regular basis.

Consultations guidance

Consultations are one of the most important forms in which structured clinical information is recorded in the patient records within GP systems.

However, there is no standard structure or format for recording consultations that is common across all systems.

This presents a challenge in developing a common set of FHIR profiles that are capable of representing the consultation structures that exist within participating systems.

It is also a challenge for provider systems in expressing native consultations in a standardised form as well as being a challenge for consumers in understanding those structures.

It is important to define what we mean by consultation. Not all clinical information is recorded consistently across systems within structures that can be classed as consultations. Therefore, it is important to note that a consultation-oriented query alone will not return all of the clinical information held within a patient record.

This page is designed to address these challenges:

  • it provides a clear definition of what is meant by consultation in the context of the current set of participating provider systems
  • it identifies the limitations of consultation-based queries in isolation as a method for retrieving all elements of patient records
  • it describes the set of consultation structures available in provider systems and guidance for populating the FHIR resources required to represent these structures in a consistent manner that is processable by consumers
  • it provides guidance for consumer systems processing the FHIR resources representing consultation structures on source systems as to the variances between representations and the correct handling of these structures

What is a consultation?

For GP Connect, a consultation is the structure within which source systems group one or more clinical record entries which occurred at the same time and for the same or similar purpose attributed to or asserted by the same actor.

  • the provider system determines under what circumstances to create a consultation - this may vary between provider systems
  • consultations do not exclusively represent clinician-patient encounters, although they are commonly used for that purpose
  • consultations may record purely administrative or communications triggered events on source systems (for example, repeat medication administration, a pathology report filed into the patient record via messaging workflow)
  • consultations are generally assigned and attributed to what can loosely be termed a Date / Doctor / Place / Type (Encounter), although these attributes may be overridden or refined in the context of individual record entries within the consultation
  • consultations may or may not have associated structure (for example, the ability to decompose a - consultation into multiple topics / subjects / problems and within each "topic" further group clinical content under headings (SOAP headings) in line with long standing clinical note taking practice)
  • consultations may also be recorded in non-structured form - that is, a grouping of clinical record entries under the same Date / Doctor / Place / Type but without additional structure (topics or SOAP headings)
  • consultations may incorporate a range of different record entries (for example, measurements, test results, textual narrative, structured narrative, coded observations, medications)

Logical structure

Consultations follow a common logical structure:

Context

  • Each consultation has context data that describes when and where the consultation took place, the patient it covered, and who else was involved (such as a doctor). This information is usually generated automatically by the provider system but it may include some manually recorded values.

Topics

  • A Consultation will be split into one of more topics. Each topic describes an area of discussion (or activity) that took place in the Consultation.
  • A topic may (or may not) have a title.
  • A topic may (or may not) be related to a specific problem in the patient’s record. In these cases, all the discussions and activities recorded under that topic are in regard to that problem.

Headings

  • A topic may be split into one of more headings (sometimes referred to as SOAP headings). Each heading covers a specific part of the Consultation process about that topic.

  • There is no national standard for headings so they will reflect the headings available in the provider clinical system.

Clinical items

  • Within each heading there may be one or more clinical items. Grouped together and in order, these clinical items describe in full all the details recorded under that heading of the consultation.

  • Any type of clinical item may form part of the consultation (medications, allergies, immunisations, uncategorised data, and so on).

Topics without headings

  • A topic can be created without headings. In these cases, the clinical items are recorded directly under the topic the same way they are recording under a heading.

Approach

The logical structure of a Consultation is reflected in FHIR using the Encounter and List profiles.

Logical structure FHIR profile Description
Context Encounter The context information is held in the Encounter profile
List The clinical information is grouped and organised within multiple List profiles. The top level list contains references to each of the Topics within the Consultation.
Topic List Each Topic is held as a List containing references to each of the Headings under the Topic.
Where a Topic does not contain Headings the List directly references Clinical Items.
Heading List Each Heading is held as a List containing references to each of the CLinical items under the Heading
Clinical Items Appropriate FHIR profile Each Clinical Item will be held in the appropriate FHIR profile as defined eslewhere in this data model

Consultation structure

Consultation context
Encounter
Consultation context...
Consultation
List.code = 325851000000107 | Consultation encounter type (record artifact) |
Consultation...
1..1
1..1
1..1
1..1
Topic / Problem
List.code = 25851000000105 | Topic (EHR) (record artifact) |
Topic / Problem...
1..1
1..1
1..
1..
Actor
Practitioner
Actor...
0..
0..
0..
0..
1..1
1..1
0..
0..
Record Entry
Appropriate FHIR resource
Record Entry...
0..
0..
0..
0..
0..1
0..1
Heading
List.code = 24781000000107 | Category (EHR) (record artifact) |
Heading...
1..1
1..1
0..
0..
1..
1..
0..1
0..1
Reoresents the authorship of the Consultation
Reoresents the authorsh...
A consultation has context - Date, Doctor, Place, Type - represented by the FHIR Encounter resource
A consultation has context - Date, D...
A consutlation as a grouped and organised collection of clinical record entries is represented by a top-level FHIR List resource
A consutlation as a grouped and orga...
A consultation may be oragnised into sub-groups, sometimes described as "topics" or "related problems"
A consultation may be oragnised into...
A topic is further decomposed into sub-headings equivalent to, or along the lines of the SOAP structure of medical notes
A topic is further decomposed into s...
A consultation or record-entry may be attributed to more than one Actor in a different role
A consultation or record-entry may b...
Record entries may appear directly within a consultation without being embedded in the Topic / Heading structure.

By convention, an "artificial" topic level will eb generated to accommodate record entries recorded within this "flat" structure

A consultation may exhibit both styles, but be represented within different topics.
Record entries may appear directly w...
Each heading may contain multiple record entries of different types, represented by an apporpriate FHIR resource
Each heading may contain multiple re...
* cardinalities are based on a principle of suppressing empty consultation, and sub-sections at source
* cardinalities are based on a principle of suppressing empty consultation, and sub-section...
Text is not SVG - cannot display

Consultation_Stucture

Consultation notes

Consultation notes are the human readable version of the clinical information recorded under each heading. They may or may not be accompanied by a clinically coded version of the information. Where text is entered freely into a consultation without being associated with a clinical code it will be returned in an Observation with the SNOMED code 37331000000100 Comment note

There are two primary ways that consultation notes are recorded on native GP systems:

Model #1

Consultation notes for a heading are recorded as a single piece of free text. Any clinical coded information under the same heading is associated to that text as a whole.

The patient  has a temperature of 36.7 Cel.
The patient looks flushed.
Arterial oxygen saturation breathing room air at rest 96%
Respiratory rate 16 / min, taken over 30 seconds
Pulse irregularly irregular 70 / min
Swelling lower legs bilaterally
Mild pitting oedema
Chest clear
Heart sounds normal
No distriess
Abdomen normal
No cervical lymphadenopathy
Throat normal
Ears normal
A patient  has a temperature of 36.7 Cel.The patient looks flus...
Uncategorised data
703421000 | Temperature (observable entity) |
36.7 Cel
Uncategorised data...
Uncategorised data
1097811000000106 | Arterial oxygen saturation breathing room air at rest (observable entity) |
96%
Uncategorised data...
Uncategorised data
86290005 | Respiratory rate (observable entity) |
16 / min
Uncategorised data...
Uncategorised data
271637005 | Pulse irregularly irregular (finding) |
70 / min
Uncategorised data...
Text is not SVG - cannot display

Model 2

Consultation notes for a heading are recorded as a collection of observations, each with a clinical code and or text. When read together in order they produce the consultation notes.

Note: This may be entering free text format dynamically identifying codes or through forms where there are specific fields for codes and free text.

Uncategorised data
703421000 | Temperature (observable entity) |
36.7 Cel
Patient looks flushed
Uncategorised data...
Uncategorised data
1097811000000106 | Arterial oxygen saturation breathing room air at rest (observable entity) |
96%
Uncategorised data...
Uncategorised data
86290005 | Respiratory rate (observable entity) |
16 / min
Taken over 30 seconds
Uncategorised data...
Uncategorised data
271637005 | Pulse irregularly irregular (finding) |
70 / min
Uncategorised data...
Uncategorised data
37331000000100 | Comment note (record artifact) |
Swelling lower legs bilaterally | Mild pitting oedema | Chest clear | Heart sounds normal | No distriess | Adbomen normal | No cervical lymphadenopathy | Throat normal | Ears normal
Uncategorised data...
Text is not SVG - cannot display

When refelcting these in FHIR, it is important that these two methods are represented in a way that:

  • retains the structural information they contain
  • does not create any unintended clinical meaning
  • can be viewed / imported

This is done by taking any free-text in model one, and representing it as uncategorised data, and positioning it as the first clinical item under the heading.

Uncategorised data
703421000 | Temperature (observable entity) |
36.7 Cel
Patient looks flushed
Uncategorised data...
Uncategorised data
1097811000000106 | Arterial oxygen saturation breathing room air at rest (observable entity) |
96%
Uncategorised data...
Uncategorised data
86290005 | Respiratory rate (observable entity) |
16 / min
Taken over 30 seconds
Uncategorised data...
Uncategorised data
271637005 | Pulse irregularly irregular (finding) |
70 / min
Uncategorised data...
Uncategorised data
703421000 | Temperature (observable entity) |
36.7 Cel
Patient looks flushed
Uncategorised data...
Uncategorised data
1097811000000106 | Arterial oxygen saturation breathing room air at rest (observable entity) |
96%
Uncategorised data...
Uncategorised data
86290005 | Respiratory rate (observable entity) |
16 / min
Taken over 30 seconds
Uncategorised data...
Uncategorised data
271637005 | Pulse irregularly irregular (finding) |
70 / min
Uncategorised data...
Uncategorised data
37331000000100 | Comment note (record artifact) |
Swelling lower legs bilaterally | Mild pitting oedema | Chest clear | Heart sounds normal | No distriess | Adbomen normal | No cervical lymphadenopathy | Throat normal | Ears normal
Uncategorised data...
from Model #1...
from Model #1...
Uncategorised data
37331000000100 | Comment note (record artifact) |
The patient has a temperature of 36.7 Cel.
The patient looks flushed.
Arterial oxygen saturation breathing room air at rest 96%
Respiratory rate 16 / min, taken over 30 seconds
Pulse irregularly irregular 70 / min
Swelling lower legs bilaterally
Mild pitting oedema
Chest clear
Heart sounds normal
No distriess
Abdomen normal
No cervical lymphadenopathy
Throat normal
Ears normal
Uncategorised data...
from Model #2...
from Model #2...
Text is not SVG - cannot display

While there are differences between the two outputs, the consultation notes can be derived from both by reading through each clinical item in order and merging the Term Text, Clinical Code, Values and Comment into a single narrative.

703421000 | Temperature (observable entity) |
36.7 Cel
The patient looks flushed
1097811000000106 | Arterial oxygen saturation breathing room air at rest (observable entity) |
96%
86290005 | Respiratory rate (observable entity) |
16 / min
Taken over 30 seconds
271637005 | Pulse irregularly irregular (finding) |
70 / min
Swelling lower legs bilaterally | Mild pitting oedema | Chest clear | Heart sounds normal | No distriess | Adbomen normal | No cervical lymphadenopathy | Throat normal | Ears normal
703421000 | Temperature (observable entity) |...
from Model #1...
from Model #1...
The patient has a temperature of 36.7 Cel.
The patient looks flushed.
Arterial oxygen saturation breathing room air at rest 96%
Respiratory rate 16 / min, taken over 30 seconds
Pulse irregularly irregular 70 / min
Swelling lower legs bilaterally
Mild pitting oedema
Chest clear
Heart sounds normal
No distriess
Abdomen normal
No cervical lymphadenopathy
Throat normal
Ears normal
703421000 | Temperature (observable entity) |
36.7 Cel
1097811000000106 | Arterial oxygen saturation breathing room air at rest (observable entity) |
96%
86290005 | Respiratory rate (observable entity) |
16 / min
271637005 | Pulse irregularly irregular (finding) |
70 / min
The patient has a temperature of 36.7 Cel....
from Model #2...
from Model #2...
Text is not SVG - cannot display


Example illustration

Consultation
Consultation
Anxiety with depression
Anxiety with depression
History
History
Uncategorised data
37331000000100 | Comment note (record artifact) |
The patient came for a review and is overall doing better. Mood is still low, but reported improving - more good days than bad. Energy levels OK. Motivation improving. Has support from neighbour who visits daily.
Uncategorised data...
Examination
Examination
Uncategorised data
37331000000100 | Comment note (record artifact) |
MSE euthymic. Not anxious. No deliberate self-harm / hallucinations / abnormal thoughts.
Uncategorised data...
Social
Social
Uncategorised data
266919005 | Never smoked tobacco (finding) |
Uncategorised data...
Uncategorised data
1082641000000106 | Alcohol units consumed per week (observable entity) |
0 units / week
Uncategorised data...
Plan
Plan
Medication
321987003 | Product containing precisely citalopram (as citalopram hydrobromide) 20 milligram/1 each conventional release oral tablet (clinical drug) |
Medication...
Referral
308448008 | Referral to counselor (procedure) |
Referral...
Uncategorised
308931006 | Walking practice (regime/therapy) |
Advice regarding local walking group
Uncategorised308931006 | Walking practic...
Swollen legs
Swollen legs
History
History
Uncategorised data
37331000000100 | Comment note (record artifact) |
2 months - bilateral swollen lower legs
Uncategorised data...
Examination
Examination
Uncategorised data
703421000 | Temperature (observable entity) |
36.7 Cel
Uncategorised data...
Uncategorised data
097811000000106 | Arterial oxygen saturation breathing room air at rest (observable entity) |
96%
Uncategorised data...
Uncategorised data
86290005 | Respiratory rate (observable entity) |
16 / min, taken over 30 seconds
Uncategorised data...
Uncategorised data
271637005 | Pulse irregularly irregular (finding) |
70 / min
Uncategorised data...
Problem
Anxiety with Depression
Problem...
Problem
Swollen legs
Problem...
Uncategorised data
37331000000100 | Comment note (record artifact) |
Swelling lower legs bilaterally
Mild pitting oedema
Chest clear
Heart sounds normal
No distriess
Abdomen normal
No cervical lymphadenopathy
Throat normal
Ears normal
Uncategorised data...
Plan
Plan
Uncategorised data
37331000000100 | Comment note (record artifact) |
Advice to mobilise more frequently. Review with results.
Uncategorised data...
Test Request
396550006 | Blood test (procedure) |
U+E, FBC, LFT, NTproBNP
Test Request...
Test Request
46825001 | Electrocardiographic monitoring (procedure) |
Test Request...
Uncategorised data
413153004 | Blood pressure recorded by patient at home (procedure) |
Average for the previous six weeks
Uncategorised data...
Uncategorised data
75367002 | Blood pressure (observable entity) |
155 / 96 mmHg
Uncategorised data...
Medication
39731911000001109 | Amlodipine 10mg tablets (product) |
Patient to take Amlodipine 10mg tablets and monitor blood pressure
Medication...
Upper respiratory
tract infection
Upper respiratory...
History
History
Uncategorised data
37331000000100 | Comment note (record artifact) |
2 weeks cough - white sputum - no blood - 1 week nose running, 5 days sore throat, no shortness of breath
Uncategorised data...
Uncategorised data
49727002 | Cough (finding) |
Uncategorised data...
Uncategorised data
82272006 | Common cold (disorder) |
Uncategorised data...
Uncategorised data
162397003 | Pain in throat (finding) |
Uncategorised data...
Medication
322236009 | Product containing precisely paracetamol 500 milligram/1 each conventional release oral tablet (clinical drug) |
Medication...
Plan
Plan
Knee pain
Knee pain
History
History
Problem
Upper respiratory tract infection
Problem...
Uncategorised data
1003722009 | Pain of knee region (finding) |
Medial pain in right knee for previous three weeks. No report of trauma.
Uncategorised data...
Uncategorised data
37331000000100 | Comment note (record artifact) |
Similar problem 3 months ago - settled after 2 weeks.
Uncategorised data...
Uncategorised data
37331000000100 | Comment note (record artifact) |
No locking. No effusion. No giving way.
Uncategorised data...
Examination
Examination
Uncategorised data
37331000000100 | Comment note (record artifact) |
No effusion. Full range of movement. No giving way.
Uncategorised data...
Uncategorised data
299373004 | Tenderness on medial joint line of knee (finding) |
Uncategorised data...
Examination
Examination
Medication
308447003 | Referral to physiotherapist (procedure) |
Medication...
Uncategorised data
37331000000100 | Comment note (record artifact) |
Analgesia advice, try knee support daytime
Uncategorised data...
Text is not SVG - cannot display


Clinical item references

Clinical items linked to a consultation, contain a reference to a FHIR resource, which is held in the entry.item field in the apporpriate CareConnect-GPC-List-1 resource.


Coded clinical items returned as text

The provider MUST return the following items as text, where they are contained in returned consultations, as they are not covered by the clinical areas defined in this specification version

  • Completed diary entries
  • Test requests (which are not in scope of investigations)

These must be returned in an CareConnect-GPC-Observation-1 profile in the same manner as a comment note and as defined in the uncategorised data profile. The returned resource must represent the full text as presented in the GP system, including notes and qualifiers, not just the code description.


Consultations containing unsupported clinical items

Depending on the GP Connect version supported by the provider system it can be possible for the consultation to link to a clinical item that the provider system is not yet able to export with GP Connect. For example, if the consultation contains a link to a referral record, but the provider system does not yet support exporting referrals.

Where a provider system is not able to export a linked clinical item, it will create a section.section.entry (or section.entry) entry with the:

  • List.entry.item.display with the value of "[Clinical area] items are not supported by the provider system."

      Where [Clinical area] identifies the type of the clinical item that is not supported.
    

The example below shows references to two items, one for an observation, and the other for referrals that aren't supported by the provider system.

<List>
    ...
    <section>
        <entry>
            <item>
                <reference value="observation-99asd2" />
            </item>
            <item>
                <display value="Referral items are not supported by the provider system" />
            </item>
        </entry>
    </section>
</List>

{
  "item": {
    "reference": "Observation/6734572634"
  }
},
{
  "item": {
    "display": "Referral items are not supported by the provider system"
  }
}


Consultations containing confidential items

A consultation which is marked as confidential will (as per the structured requirements on confidentially) not be included in the returned data, and the Confidential Items warning message will be included in the primary List containing the query response.

If a consultation is not marked as confidential, but includes items that are marked as confidential or are considered sensitive, the following information is returned:

  • the consultation will be included in the response as normal
  • the confidential item(s) will NOT be included in the response
  • there will be NO reference to the confidential item(s) in the List profiles defining the consultation structure
  • the Confidential Items warning message will be included in the appropriate secondary list (Using secondary lists to respond to queries for consultations and problems) for the relevant type of type data that was omitted (for example, if a piece of uncategorised data was excluded as it was confidential then the warning code would be in the List "Consultations - uncategorised data contained in consultations" that was returned as part of the query) - the warning will NOT be included in the List profiles defining the consultation structure

In effect, there will be a warning message that items were excluded from the response due to confidentiality but there will be no indication from which consultation(s) they were removed from.


Draft consultations

In some GP practice clinical systems, it is possible for the clinician to save a consultation record in a draft (or equivalent) status.

Consultations in this draft status MUST be included in the response. Encounter.status is used to identify them as draft.


Suppression of empty consultations, topics and headings

On some systems all or almost all record entry is captured in the context of a consultation. This, coupled with default behaviours such as starting a consultation on opening a patient record, leads to the phenomenon of ‘empty’ consultations where the Data / Doctor / Place / Type has been created as a default but there is no subsequent entry of any clinical information within the consultation.

Provider systems which allow empty consultations should not return empty consultations in response to consultation queries.

The same approach is followed for empty topic and heading levels recorded at source - that is, these should be suppressed by the producer.


What information may be recorded outside of consultations

  • some systems do not restrict entry of clinical data to a consultation context - that is, it is possible to record clinical information about a patient without starting or initiating a consultation
  • such "Non-Consultation" behaviour does not imply any loss of information or structure by the source system - that is, the record items are still fully recorded and attributed
  • however, since they are recorded outside of a consultation context, they will not be returned by an API query directed at returning consultation resources (see the "Design decisions" section below)

Consumer (receiver) guidance

Although the expression of full consultation structure is provided by the specified protocols, it is recognised that many consumers simply want access to the resources referenced by the consultations rather than the topic or SOAP heading structures.

Consumers (receivers) in the category may simply flatten the consultation structure or otherwise extract the resources referenced within the List resources carrying the consultation structure


Consumer (receiver) cautions

  • A consumer making consultation-oriented queries only MUST NOT expect to obtain all items in the patient record
  • Other GP Connect APIs will provide full access to items in the patient record including all medications, all allergies, all problems up to and including get whole record queries

Design decisions

Systems which allow direct recording of data outside of consultation contexts should not fabricate consultations to return such data when consultation queries are received.

To do so would be generating information and structure which does not exist on the source system, and which would obscure the genuine consultation content that does exist.

Systems that fall in this category have clear distinctions between consultations and other types of record content (for example, last x consultations displayed in patient summaries and to synthesise consultations would distort this native behaviour).


Using the List resource for consultation queries

The results of a query for consultation details MUST return a List containing references to all the Encounter resources which represent each consultation that is returned.

The List MUST be populated in line with the guidance on List resources.

If the List is empty, then it MUST be returned where the emptyReason.code has the value of no-content-recorded, and the List.note element MUST be populated with the text "Information not available".

<List>
    <emptyReason>
        <coding>
            <system value="https://fhir.nhs.uk/STU3/CodeSystem/CareConnect-ListEmptyReasonCode-1" />
            <code value="no-content-recorded" />
            <display value="No Content Recorded" />
        </coding>
    </emptyReason>
</List>

back to top