Skip to main content
POST/transactional-api/register-permanent-nhs-patient

Register Permanent NHS Patient

Registers a new GMS permanent registration for a patient, the same effect as a receptionist completing GMS registration in Medicus. User-restricted only: the calling staff member must have a CIS2 identity with the B0825 (Amend Patient Demographics) RBAC activity code. Place of birth is not accepted here: for an NHS Number patient it is sourced from the PDS record, not from the request.

Authorization: Bearer token (JWT). See Authentication.

Request​

curl -L -X POST 'https://{tenantId}.api.england.medicus.health/transactional-api/register-permanent-nhs-patient' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <token>' \
-d '{
"nhsNumber": "9730069441",
"acceptanceType": "transfer-in",
"responsibleHealthAuthority": "BAA",
"usualGp": "4d59c916-9726-11ec-af3f-0a58a9feac02",
"dateOfEntryIntoUK": "2026-01-01",
"dateOfLeavingUK": "2025-09-01",
"dateOfEnlistment": "2015-01-01",
"dateOfDischarge": "2020-01-01",
"medicationDispensedByPractice": false,
"preferredLocationId": "7c2b6e2a-1f0e-4a3e-9b0a-2f6c8e4d5a1b",
"preferredCollectionLocationId": "9a1e2d3c-4b5f-4a6e-8c7d-1e2f3a4b5c6d",
"previousHomeAddress": {
"line1": "90 York Way",
"line2": "Kings Cross",
"line3": "string",
"locality": "London",
"administrativeArea": "Greater London",
"postalCode": "N1 9AG"
},
"previousGPName": "Kings Cross Surgery",
"residentialInstituteCode": "V0",
"gpNotes": "PROOF_OF_IDENTIFICATION",
"gpNotesText": "Passport seen at registration"
}'

Body parameters

FieldTypeRequiredDescription
nhsNumberstringYesA verified NHS number for the patient.
acceptanceTypeenumYesOne of: birth, first-acceptance, transfer-in, immigrant, ex-services.
responsibleHealthAuthorityenumYesThe NHAIS trading partner code for the health authority responsible for the patient. Fixed list, does not vary by practice. One of: BRS, LNC, LNH, BAA, BD, BE, LNW, BIR, BRA, LNL, LNT, BU, ROC, YW, CB, LND, CH, CR, DR, COV, LNR, CU, MID, DE, DN, DCR, DO, DUD, LNM, LNA, TE, LNE, EX, GAT, GG, SO, WR, HT, LNK, KHU, IM, LNJ, KC, LNN, LNS, LA, LDS, LD, LL, LIP, MAN, LNP, NEW, NF, YN, NO, NR, NN, OX, LNB, ROT, SLF, WBH, SOP, SHE, SA, WMF, SM, STL, ST, SPT, SU, SUN, SY, WAK, WAL, WA, GMK, TW, WIG, WL, BIK, WOM.
usualGpstring<uuid>No
dateOfEntryIntoUKstring<date>NoRequired when acceptanceType is immigrant.
dateOfLeavingUKstring<date>No
dateOfEnlistmentstring<date>NoRequired when acceptanceType is ex-services and previousHomeAddress is not supplied.
dateOfDischargestring<date>No
medicationDispensedByPracticebooleanYes
preferredLocationIdstring<uuid>NoOne of the ids returned by list-sites.
preferredCollectionLocationIdstring<uuid>NoSets a dispensing collection-point preference for the patient, if supplied. One of the ids returned by list-collection-locations.
previousHomeAddressobjectNoRequired when acceptanceType is transfer-in, or ex-services without dateOfEnlistment/dateOfDischarge.
previousGPNamestringNoRequired when acceptanceType is transfer-in.
residentialInstituteCodeenumNoOne of: V0, Y0.
gpNotesenumNoOne of: PROOF_OF_IDENTIFICATION, REGISTRATION_UNDER_OUT_OF_AREA_SCHEME, OTHER.
gpNotesTextstringNoRequired when gpNotes is OTHER.

Responses​

200 Patient registered.

Response fields

FieldTypeDescription
patientIdstring<uuid>
{
"patientId": "b3d1f7a2-6c4e-4b9a-8e0f-1a2b3c4d5e02"
}
400 Validation error.
19 possible code values
CodeDescriptionWhen
missing-nhs-numberThe nhsNumber is required.nhsNumber is blank
invalid-nhs-numberThe nhsNumber is not a valid NHS number.nhsNumber is present but not a valid NHS number
missing-acceptance-typeThe acceptanceType is required.acceptanceType is blank
invalid-acceptance-typeThe acceptanceType is required and must be a recognised value.acceptanceType is present but not a recognised value
missing-responsible-health-authorityThe responsibleHealthAuthority is required.responsibleHealthAuthority is blank
invalid-responsible-health-authorityThe responsibleHealthAuthority is required and must be a recognised value.responsibleHealthAuthority is present but not a recognised value
invalid-usual-gpThe usualGp is not valid.usualGp is not a valid UUID
invalid-preferred-location-idThe preferredLocationId is not valid.preferredLocationId is not a valid UUID
invalid-preferred-collection-location-idThe preferredCollectionLocationId is not valid.preferredCollectionLocationId is not a valid UUID
invalid-date-of-entry-into-ukThe dateOfEntryIntoUK is required and must be a valid date in Y-m-d format.dateOfEntryIntoUK is missing or invalid for an immigrant acceptanceType
invalid-date-of-leaving-ukThe dateOfLeavingUK is not valid.dateOfLeavingUK is invalid, or inconsistent with dateOfEntryIntoUK
invalid-date-of-enlistmentThe dateOfEnlistment is required and must be a valid date in Y-m-d format.dateOfEnlistment is missing or invalid for an ex-services acceptanceType without a previousHomeAddress
invalid-date-of-dischargeThe dateOfDischarge is not valid.dateOfDischarge is missing, invalid, or before dateOfEnlistment
invalid-previous-home-addressThe previousHomeAddress is required, with at least line1.previousHomeAddress (or its line1) is missing when required
invalid-previous-gp-nameThe previousGPName is required.previousGPName is missing for a transfer-in acceptanceType
invalid-residential-institute-codeThe residentialInstituteCode is not a recognised value.residentialInstituteCode is set to an unrecognised value
invalid-gp-notesThe gpNotes is not a recognised value.gpNotes is set to an unrecognised value
invalid-gp-notes-textThe gpNotesText is required (max 60 characters) when gpNotes is OTHER.gpNotesText is missing or too long when gpNotes is OTHER
patient-already-registeredThe patient for this NHS number already has an active permanent registration.the patient already has an active permanent registration

Response fields

FieldTypeDescription
errors[].codestring
errors[].descriptionstring
{
"errors": [
{
"code": "missing-nhs-number",
"description": "The nhsNumber is required."
}
]
}
403 The calling staff member cannot be authorised for this action.
3 possible code values
CodeDescriptionWhen
cis2-not-logged-inThis staff member is not currently logged in with CIS2. They must log in with CIS2 and try again.the calling staff member is not currently logged in with CIS2 (never logged in, or their session has lapsed and could not be refreshed)
cis2-activity-not-grantedThis staff member's CIS2 role does not have the RBAC activity code required.the calling staff member's CIS2 role lacks the required RBAC activity code
application-restricted-not-supportedThis endpoint is only available to user-restricted callers.the call is application-restricted rather than user-restricted

Response fields

FieldTypeDescription
errors[].codestring
errors[].descriptionstring
{
"errors": [
{
"code": "cis2-not-logged-in",
"description": "This staff member is not currently logged in with CIS2. They must log in with CIS2 and try again."
}
]
}
404 A referenced id does not correspond to anything.
3 possible code values
CodeDescriptionWhen
usual-gp-not-foundNo staff member was found for the given usualGp.usualGp is a validly formed UUID but no staff member exists with that id
preferred-location-not-foundNo site was found for the given preferredLocationId.preferredLocationId is a validly formed UUID but no site exists with that id
preferred-collection-location-not-foundNo collection location was found for the given preferredCollectionLocationId.preferredCollectionLocationId is a validly formed UUID but no collection location exists with that id

Response fields

FieldTypeDescription
errors[].codestring
errors[].descriptionstring
{
"errors": [
{
"code": "usual-gp-not-found",
"description": "No staff member was found for the given usualGp."
}
]
}
409 Another registration for this NHS number was still running after 30 seconds.

Response fields

FieldTypeDescription
errors[].codestring
errors[].descriptionstring
{
"errors": [
{
"code": "registration-in-progress",
"description": "Another registration for this NHS number is still in progress. Try again shortly."
}
]
}