API usage
Resolve (zero or more) Practitioner resources using a business identifier (i.e. SDS User Id).
Request operation
The [system] field SHALL be populated with a valid practitioner identifier system URL (i.e. https://fhir.nhs.uk/Id/sds-user-id).
The consumer system SHALL apply percent encoding when constructing the request URL as indicated in RFC 3986 Section 2.1. The will ensure that downstream servers correctly handle the pipe | character which must be used in the identifier parameter value below.
FHIR relative request
GET /Practitioner?identifier=[system]|[value]
FHIR absolute request
GET https://[proxy_server]/https://[provider_server]/[fhir_base]/Practitioner?identifier=[system]|[value]
Request headers
Consumers SHALL include the following additional HTTP request headers:
| Header | Value |
|---|---|
Ssp-TraceID |
Consumer’s TraceID (i.e. GUID/UUID) |
Ssp-From |
Consumer’s ASID |
Ssp-To |
Provider’s ASID |
Ssp-InteractionID |
urn:nhs:names:services:gpconnect:fhir:rest:search:practitioner-1 |
Payload Request Body
N/A
Error Handling
Provider systems:
- SHALL return an GPConnect-OperationOutcome-1 resource that provides additional detail when one or more request fields are corrupt or a specific business rule/constraint is breached.
For example, the:
- Business identifier
[system]is not recognised/supported by the Provider system. - Business identifier fails any structural validation checks (i.e. length and check digits).
Request Response
Response Headers
Provider systems are not expected to add any specific headers beyond that described in the HTTP and FHIR® standards.
Payload Response Body
Provider systems:
- SHALL return a
200OK HTTP status code on successful execution of the operation. - SHALL return zero or more matching
Practitionerresources in aBundleoftypesearchset.- SHALL populate
entry.fullUrlfor each resource in theBundle
- SHALL populate
-
SHALL return
Practitionerresources that conform to the CareConnect-GPC-Practitioner-1 profile. - SHALL populate the following
Practitionerfields:meta.profilewith the profile URIversionIdwith the current version of eachPractitionerresource.identifierwith relevent business identifiers (i.e. SDS User Id) for eachPractitionerresource.namegenderwhere availablenhsCommunicationwith the practitioner’s language information, where available
-
SHALL meet General FHIR resource population requirements populating all fields where data is available, excluding those listed below
- SHALL NOT populate the following fields:
telecomaddressbirthDatephotoqualification
{
"resourceType": "Bundle",
"type": "searchset",
"entry": [
{
"fullUrl": "http://gpconnect.aprovider.nhs.net/GP001/STU3/1/Practitioner/15",
"resource": {
"resourceType": "Practitioner",
"id": "15",
"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": "S001"
}
],
"name": [
{
"family": [
"Black"
],
"given": [
"Sarah"
],
"prefix": [
"Mrs"
]
}
],
"gender": "female"
}
}
]
}
Example Code
C#
var client = new FhirClient("http://gpconnect.aprovider.nhs.net/GP001/STU3/1/");
client.PreferredFormat = ResourceFormat.Json;
var query = new string[] { "identifier=https://fhir.nhs.uk/Id/sds-user-id|S001" };
var bundle = client.Search("Practitioner", query);
FhirSerializer.SerializeResourceToJson(bundle).Dump();
Java
FhirContext ctx = new FhirContext();
IGenericClient client = ctx.newRestfulGenericClient("gpconnect.aprovider.nhs.net/GP001/STU3/1/");
Bundle bundle = client.search().forResource(Practitioner.class)
.where(new TokenClientParam("identifier").exactly().systemAndCode("https://fhir.nhs.uk/Id/sds-user-id", "S001"))
.encodedJson()
.execute();
