[DRAFT] GP Connect (Patient Facing) User Permissions API

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

How to request a change to a patient's permissions

There is a single main use case available from the user permissions API using the POST HTTP request method i.e. requesting a change to a patient's permission. This can be further broken down into the following three cases:

  1. requesting additional access to the appointments
  2. requesting additional access to the prescriptions
  3. requesting additional access to the medical record

Prerequisites

Consumer

The consumer must make a request to get a patient's permissions prior to making any other PFS API requests. This ensures that the patient has online access enabled, see New online patient access for additional details.

Supplier

The supplier must ensure the patient has online access enabled. This is performed during the authorisation process of the patient's request by the GP supplier system. See New online patient access for additional details.

Common concerns

A request to change the level of access a patient has can be made. Requests must be to increase the level of access. Lowering the level of access is not currently supported and will be rejected.

Each use case has the same basic request format providing information on the type of permission and the access level the request is for. For medical records there is an additional property so it is known whether the medical record's current or historical permissions should be updated.

Request workflow

A POST request is made to the user permissions API with the appropriate payload based on the request the patient wants to make. Each request will be validated and if the validation passes, the request will be added to the GP system's workflow where it will be processed at some point in the future. Requests added to the workflow will be responded to with a state of pending.

Rejected requests are not added to the GP system's workflow. The text included in the response to a rejected request explains the reason for the rejection, this should be under details.text in the OperationOutcome. This should be displayed to the patient.

Request handling

Pending requests will be listed on the response to getting a patients permissions.

If a request is a duplicate, it is deduplicated by the GP system, with the original request being preserved.

If multiple requests are made (and accepted) they are combined within the workflow and reviewed together by a healthcare worker.

Use case 1 - Additional access to appointments

Access to the appointments service is represented by three levels:

level description
none no access
view view only
manage view, book, amend & cancel existing appointments

A request to update the access level for the appointments service requires a POST request to the API with a body containing JSON.

An example request to increase the access level a patient has to manage for the appointments service can be seen below.

{
  "permissionType" : "appointments",
  "accessLevel" : "manage"
}

Use case 2 - Additional access to prescriptions

Access to the prescriptions service is represented by three levels:

level description
none no access
view view only
manage view, order, amend & cancel existing prescriptions

A request to update the access level for the prescriptions service requires a POST request to the API with a body containing JSON.

An example request to increase the access level a patient has to manage for the prescriptions service can be seen below.

{
  "permissionType" : "prescriptions",
  "accessLevel" : "manage"
}

Use case 3 - Additional access to medical record

Access to the medical record is represented by five levels:

level description
none no access
summary summary record access
detailed detailed coded record access
documents documents access
full full access

Refer to How to get a patient's permissions for details on what each level provides access to.

A request to update the access level for the medical record requires a POST request to the API with a body containing JSON.

An example request to increase the access level a patient has to full for their current medical record can be seen below.

{
  "permissionType" : "medicalRecord",
  "medicalRecordType": "current",
  "accessLevel" : "full"
}

back to top