Skip to content

Register a Patient

Request

Create or update a patient based on the data sent. If a patient with matching NHS number and DOB exists for the practice group, it will be updated. Otherwise, a new patient record is created.

Unlike Register Patient via PDS, this endpoint does not perform a Spine lookup — you provide the full patient demographics directly. Use this when you already hold the patient's details and do not need PDS tracing.

Security
apiKeyAuth and practiceGroupId
Bodyapplication/jsonrequired
One of:
ehr_partner_idstring
nhs_numberstring
dobstring, non-emptyrequired
first_namestring, non-emptyrequired
last_namestring, non-emptyrequired
sexstring
Enum:"Not known""Not specified""Male""Female""Other"
titlestring
One of:
string
Enum:"Baron""Baroness""Brigadier""Count""Colonel""Countess""Captain""Dame""The Dowager Viscountess""Dr"
landlinestring
address_line_1string
address_line_2string
address_line_3string
countrystring
postcodestring
townstring
countystring
data_sourcestring
Default:"emis"
Enum:"hero""emis""pds""gha""systm_one"
callerstring, non-empty

[Internal use only] The name of the application calling the register endpoint

mobilestring, non-emptyrequired
emailstring
curl -i -X POST \
  https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/patients/register \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_API_KEY_HERE' \
  -H 'x-practice-group-id: YOUR_API_KEY_HERE' \
  -d '{
    "ehr_partner_id": "string",
    "nhs_number": "string",
    "dob": "string",
    "first_name": "string",
    "last_name": "string",
    "sex": "Not known",
    "title": "Baron",
    "landline": "string",
    "address_line_1": "string",
    "address_line_2": "string",
    "address_line_3": "string",
    "country": "string",
    "postcode": "string",
    "town": "string",
    "county": "string",
    "data_source": "hero",
    "caller": "string",
    "mobile": "string",
    "email": "string"
  }'

Responses

Ok

Bodyapplication/json
patient_idstring^\d+$required
Response
{ "patient_id": "string" }