Note: This is a draft version of the GP Connect PFS Appointments capability. The current version can be found using this link.
Generic Example
Wireframe mock-ups of what GP Connect Appointment Management might look like in a consumer application
Retrieve a patient's appointments
FHIR relative request
GET /Patient/[id]/Appointment?start=ge[lower_date_range_boundary]&start=le[upper_date_range_boundary]
FHIR absolute request
GET https://[proxy_server]/https://[provider_server]/[fhir_base]/Patient/[id]/Appointment?start=ge[lower_date_range_boundary]&start=le[upper_date_range_boundary]
Example request
Retrieve all appointments for patient with logical id 1001 which start on or between 2017-07-11 and 2017-09-14:
GET /Patient/1001/Appointment?start=ge2017-07-11&start=le2017-09-14
Example response
{ "resourceType": "Bundle", "type": "searchset", "entry": [ { "resource": { "resourceType": "Appointment", "id": "148", "meta": { "versionId": "1503310820000", "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/GPConnect-Appointment-1" ] }, "contained": [ { "resourceType": "Organization", "id": "1", "meta": { "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/CareConnect-GPC-Organization-1" ] }, "identifier": [ { "system": "https://fhir.nhs.uk/Id/ods-organization-code", "value": "A00001" } ], "type": [ { "coding": [ { "system": "https://fhir.nhs.uk/STU3/CodeSystem/GPConnect-OrganisationType-1", "code": "gp-practice" } ] } ], "name": "Test Organization Name", "telecom": [ { "system": "phone", "value": "0300 303 5678" } ] } ], "extension": [ { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-BookingOrganisation-1", "valueReference": { "reference": "#1" } }, { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-PractitionerRole-1", "valueCodeableConcept": { "coding": [ { "system": "https://fhir.nhs.uk/STU3/CodeSystem/CareConnect-SDSJobRoleName-1", "code": "R0260", "display": "General Medical Practitioner" } ] } }, { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-DeliveryChannel-2", "valueCode": "In-person" } ], "status": "booked", "serviceCategory": { "text": "General GP Appointments" }, "serviceType": [ { "text": "General GP Appointment" } ], "description": "GP Connect Appointment description 148", "start": "2017-08-21T10:20:00+01:00", "end": "2017-08-21T10:50:00+01:00", "slot": [ { "reference": "Slot/544" }, { "reference": "Slot/545" }, { "reference": "Slot/546" } ], "created": "2017-07-09T13:48:41+01:00", "comment": "Test Appointment Comment 148", "participant": [ { "actor": { "reference": "Patient/2" }, "status": "accepted" }, { "actor": { "reference": "Location/1" }, "status": "accepted" }, { "actor": { "reference": "Practitioner/2" }, "status": "accepted" } ] } }, { "resource": { "resourceType": "Appointment", "id": "149", "meta": { "versionId": "1503440820000", "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/GPConnect-Appointment-1" ] }, "contained": [ { "resourceType": "Organization", "id": "1", "meta": { "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/CareConnect-GPC-Organization-1" ] }, "identifier": [ { "system": "https://fhir.nhs.uk/Id/ods-organization-code", "value": "A00001" } ], "type": [ { "coding": [ { "system": "https://fhir.nhs.uk/STU3/CodeSystem/GPConnect-OrganisationType-1", "code": "gp-practice" } ] } ], "name": "Test Organization Name 2", "telecom": [ { "system": "phone", "value": "0300 303 5679" } ] } ], "extension": [ { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-BookingOrganisation-1", "valueReference": { "reference": "#1" } }, { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-PractitionerRole-1", "valueCodeableConcept": { "coding": [ { "system": "https://fhir.nhs.uk/STU3/CodeSystem/CareConnect-SDSJobRoleName-1", "code": "R0260", "display": "General Medical Practitioner" } ] } }, { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-DeliveryChannel-2", "valueCode": "In-person" } ], "status": "booked", "serviceCategory": { "text": "General GP Appointments" }, "serviceType": [ { "text": "General GP Appointment" } ], "description": "GP Connect Appointment description 148", "start": "2016-08-16T11:20:00+01:00", "end": "2016-08-16T11:30:00+01:00", "slot": [ { "reference": "Slot/303" } ], "created": "2016-08-14T13:48:41+01:00", "participant": [ { "actor": { "reference": "Patient/2" }, "status": "accepted" }, { "actor": { "reference": "Location/1" }, "status": "accepted" } ] } } ] }
Search for free slots
FHIR relative request
GET /Slot?[start={search_prefix}start_date]
[&end=[{search_prefix}end_date]
[&status=free]
[&_include=Slot:schedule]
{&_include:recurse=Schedule:actor:Practitioner}
{&_include:recurse=Schedule:actor:Location}
{&_include:recurse=Location:managingOrganization}
{&searchFilter={OrgTypeCodeSystem}|{OrgTypeCode}}
{&searchFilter={OrgODSCodeSystem}|{OrgODSCode}}
FHIR absolute request
GET https://[proxy_server]/https://[provider_server]/[fhir_base]
/Slot?[start={search_prefix}start_date]
[&end=[{search_prefix}end_date]
[&status=free]
[&_include=Slot:schedule]
{&_include:recurse=Schedule:actor:Practitioner}
{&_include:recurse=Schedule:actor:Location}
{&_include:recurse=Location:managingOrganization}
{&searchFilter={OrgTypeCodeSystem}|{OrgTypeCode}}
{&searchFilter={OrgODSCodeSystem}|{OrgODSCode}}
Example response
{ "resourceType": "Bundle", "type": "searchset", "entry": [ { "resource": { "resourceType": "Slot", "id": "1584", "meta": { "versionId": "1471219260000", "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/GPConnect-Slot-1" ] }, "extension": [ { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-DeliveryChannel-2", "valueCode": "In-person" } ], "serviceType": [ { "text": "General GP Appointment" } ], "schedule": { "reference": "Schedule/14" }, "status": "free", "start": "2016-08-15T11:30:00+01:00", "end": "2016-08-15T11:40:00+01:00" } }, { "resource": { "resourceType": "Slot", "id": "1644", "meta": { "versionId": "1471219260112", "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/GPConnect-Slot-1" ] }, "extension": [ { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-DeliveryChannel-2", "valueCode": "In-person" } ], "serviceType": [ { "text": "NHS Health Check" } ], "schedule": { "reference": "Schedule/14" }, "status": "free", "start": "2016-08-15T11:40:00+01:00", "end": "2016-08-15T11:50:00+01:00" } }, { "resource": { "resourceType": "Schedule", "id": "14", "meta": { "versionId": "1469444400000", "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/GPConnect-Schedule-1" ] }, "extension": [ { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-PractitionerRole-1", "valueCodeableConcept": { "coding": [ { "system": "https://fhir.nhs.uk/STU3/CodeSystem/CareConnect-SDSJobRoleName-1", "code": "R0260", "display": "General Medical Practitioner" } ] } } ], "serviceCategory": { "text": "General GP Appointments" }, "actor": [ { "reference": "Location/17" }, { "reference": "Practitioner/2" } ], "planningHorizon": { "start": "2016-08-15T09:00:00+01:00", "end": "2016-08-15T12:00:00+01:00" } } }, { "resource": { "resourceType": "Practitioner", "id": "2", "meta": { "versionId": "636064088099800115", "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/CareConnect-GPC-Practitioner-1" ] }, "identifier": [ { "system": "https://fhir.nhs.uk/Id/sds-user-id", "value": "111122223333" } ], "name": [ { "family": "Black", "given": [ "Sarah" ], "prefix": [ "Mrs" ] } ], "gender": "female" } }, { "resource": { "resourceType": "Location", "id": "17", "meta": { "versionId": "636064088100870233", "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/CareConnect-GPC-Location-1" ] }, "name": "The Trevelyan Practice", "address": { "line": [ "Trevelyan Square", "Boar Ln", "Leeds" ], "postalCode": "LS1 6AE" }, "telecom": { "system": "phone", "value": "03003035678", "use": "work" }, "managingOrganization": { "reference": "Organization/23" } } }, { "resource": { "resourceType": "Organization", "id": "23", "meta": { "versionId": "636064088098730113", "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/CareConnect-GPC-Organization-1" ] }, "identifier": [ { "system": "https://fhir.nhs.uk/Id/ods-organization-code", "value": "A00001" } ], "name": "The Trevelyan Practice", "address": { "line": [ "Trevelyan Square", "Boar Ln" ], "city": "Leeds", "district": "West Yorkshire", "postalCode": "LS1 6AE" }, "telecom": { "system": "phone", "value": "03003035678", "use": "work" } } } ] }
View schedules with free slots
Book an appointment
FHIR relative request
POST /Appointment
FHIR absolute request
POST https://[proxy_server]/https://[provider_server]/[fhir_base]/Appointment
Example request body
On the wire, a JSON serialised request would look something like the following:
{ "resourceType": "Appointment", "meta": { "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/GPConnect-Appointment-1" ] }, "contained": [ { "resourceType": "Organization", "id": "1", "meta": { "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/CareConnect-GPC-Organization-1" ] }, "identifier": [ { "system": "https://fhir.nhs.uk/Id/ods-organization-code", "value": "A00001" } ], "type": [ { "coding": [ { "system": "https://fhir.nhs.uk/STU3/CodeSystem/GPConnect-OrganisationType-1", "code": "gp-practice" } ] } ], "name": "Test Organization Name", "telecom": [ { "system": "phone", "value": "0300 303 5678" } ] } ], "extension": [ { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-BookingOrganisation-1", "valueReference": { "reference": "#1" } } ], "status": "booked", "description": "Free text description.", "start": "2017-05-30T10:00:00+01:00", "end": "2017-05-30T10:25:00+01:00", "slot": [ { "reference": "Slot/1" } ], "created": "2017-05-25T13:48:41+01:00", "comment": "Free text comment.", "participant": [ { "actor": { "reference": "Patient/1" }, "status": "accepted" }, { "actor": { "reference": "Location/32" }, "status": "accepted" } ] }
Example response
{ "resourceType": "Appointment", "id": "9", "meta": { "versionId": "636068818095315079", "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/GPConnect-Appointment-1" ] }, "contained": [ { "resourceType": "Organization", "id": "1", "meta": { "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/CareConnect-GPC-Organization-1" ] }, "identifier": [ { "system": "https://fhir.nhs.uk/Id/ods-organization-code", "value": "A00001" } ], "name": "Test Organization Name", "telecom": [ { "system": "phone", "value": "0300 303 5678" } ] } ], "extension": [ { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-BookingOrganisation-1", "valueReference": { "reference": "#1" } }, { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-PractitionerRole-1", "valueCodeableConcept": { "coding": [ { "system": "https://fhir.nhs.uk/STU3/CodeSystem/CareConnect-SDSJobRoleName-1", "code": "R0260", "display": "General Medical Practitioner" } ] } }, { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-DeliveryChannel-2", "valueCode": "In-person" } ], "status": "booked", "serviceCategory": { "text": "General GP Appointments" }, "serviceType": [ { "text": "General GP Appointment" } ], "description": "Free text description.", "start": "2017-05-30T10:00:00+01:00", "end": "2017-05-30T10:25:00+01:00", "slot": [ { "reference": "Slot/1" } ], "created": "2017-05-25T13:48:41+01:00", "comment": "Free text comment.", "participant": [ { "actor": { "reference": "Patient/1" }, "status": "accepted" }, { "actor": { "reference": "Location/32" }, "status": "accepted" } ] }
Cancel an appointment
FHIR relative request
PUT /Appointment/[id]
FHIR absolute request
PUT https://[proxy_server]/https://[provider_server]/[fhir_base]/Appointment/[id]
Example request
On the wire, a JSON serialised request would look something like the following:
{ "resourceType": "Appointment", "id": "9", "meta": { "versionId": "636068818095315079", "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/GPConnect-Appointment-1" ] }, "contained": [ { "resourceType": "Organization", "id": "1", "meta": { "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/CareConnect-GPC-Organization-1" ] }, "identifier": [ { "system": "https://fhir.nhs.uk/Id/ods-organization-code", "value": "A00001" } ], "type": [ { "coding": [ { "system": "https://fhir.nhs.uk/STU3/CodeSystem/GPConnect-OrganisationType-1", "code": "gp-practice" } ] } ], "name": "Test Organization Name", "telecom": [ { "system": "phone", "value": "0300 303 5678" } ] } ], "extension": [ { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-BookingOrganisation-1", "valueReference": { "reference": "#1" } }, { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-AppointmentCancellationReason-1", "valueString": "Free text cancellation reason." } ], "status": "cancelled", "description": "Free text description updated.", "start": "2017-05-30T10:00:00+01:00", "end": "2017-05-30T10:25:00+01:00", "slot": [ { "reference": "Slot/1" } ], "created": "2017-05-25T13:48:41+01:00", "comment": "Free text comment.", "participant": [ { "actor": { "reference": "Patient/1" }, "status": "accepted" }, { "actor": { "reference": "Location/32" }, "status": "accepted" } ] }
Example response
{ "resourceType": "Appointment", "id": "9", "meta": { "versionId": "636068818095315079", "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/GPConnect-Appointment-1" ] }, "contained": [ { "resourceType": "Organization", "id": "1", "meta": { "profile": [ "https://fhir.nhs.uk/STU3/StructureDefinition/CareConnect-GPC-Organization-1" ] }, "identifier": [ { "system": "https://fhir.nhs.uk/Id/ods-organization-code", "value": "A00001" } ], "type": [ { "coding": [ { "system": "https://fhir.nhs.uk/STU3/CodeSystem/GPConnect-OrganisationType-1", "code": "gp-practice" } ] } ], "name": "Test Organization Name", "telecom": [ { "system": "phone", "value": "0300 303 5678" } ] } ], "extension": [ { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-BookingOrganisation-1", "valueReference": { "reference": "#1" } }, { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-AppointmentCancellationReason-1", "valueString": "Free text cancellation reason." }, { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-PractitionerRole-1", "valueCodeableConcept": { "coding": [ { "system": "https://fhir.nhs.uk/STU3/CodeSystem/CareConnect-SDSJobRoleName-1", "code": "R0260", "display": "General Medical Practitioner" } ] } }, { "url": "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-GPConnect-DeliveryChannel-2", "valueCode": "In-person" } ], "status": "cancelled", "serviceCategory": { "text": "General GP Appointments" }, "serviceType": [ { "text": "General GP Appointment" } ], "description": "Free text description updated.", "start": "2017-05-30T10:00:00+01:00", "end": "2017-05-30T10:25:00+01:00", "slot": [ { "reference": "Slot/1" } ], "created": "2017-05-25T13:48:41+01:00", "comment": "Free text comment.", "participant": [ { "actor": { "reference": "Patient/1" }, "status": "accepted" }, { "actor": { "reference": "Location/32" }, "status": "accepted" } ] }