PatientAdmin PatientMerge

This data model allows you to stay up-to-date on documented patient demographics, insurance, and the patient identifier used by the EHR system (usually an MRN). PatientAdmin relies on an admission, discharge, and transfer (ADT) feed from a provider.

PatientAdmin data can vary, but there are two main categories of data:

  • Patient-level: Information about the patient that persists over time (e.g., name, address, gender, DOB, email address, primary care provider) that isn't tied to a particular encounter.
  • Visit-level: Information pertaining to the patient's visit (e.g., the current location within the hospital, referring provider, admitting provider, care team, or discharge date/time).

This data model has event types that allow you to:

  • receive a notification about patient appointments or records;
  • query for and receive a list of admitted patients; or
  • query for and receive patient visit information.
PatientAdmin vs. PatientSearch data models

PatientAdmin is a webhook-based feed that communicates changes to patient information, usually through a push notification generated from an ADT HL7v2 interface.

PatientSearch allows you to query for patient updates as you need them.

Fun fact

PatientAdmin is our most popular data model. Fun fact: Over 90% of Redox implementations use it in some form!

If you're a vendor that persists patient data in your application, we recommend using this data model.

PatientMerge

Receive a notification when a provider identifies and combines duplicate patient records in the EHR system.

We strongly recommend receiving PatientMerge events if you persist patient data in your application. Though PatientMerge events aren't triggered often, they're helpful to make sure you have the correct patient identifiers and that your system doesn't have duplicate records.

You decide what happens in your system when you receive this event type. Most customers choose to receive PatientMerge events and get notified via email or other method so someone can manually review and merge duplicate patient records.

If you don't have duplicate records

Let's say you get this event with duplicate records, but you only have one record for the patient or visit. You don't have to worry about merging records, but you should still double check that the patient identifiers match what you have in your system.

  • The Patient.Identifiers array contains the identifiers to use from now on. Make sure your record uses these identifiers.
  • The Patient.PreviousIdentifiers array contains the identifiers to retire.

The full Patient object is included in the message to provide extra context, when available.

Request Body Schema

  • Meta
    required, object
    • DataModel
      required, string
      Reliable

      PatientAdmin

    • EventType
      required, string
      Reliable

      PatientMerge

    • EventDateTime
      string, null
      Reliable

      Displays the UTC date and time that an outgoing request is delivered or an incoming request is received.
      ISO 8601 Format

    • Test
      boolean, null
      Reliable

      Indicates whether the request is a test or not.

    • Source
      object

      Contains the information for the system initiating the message, including the source ID and name.
      Included in messages from Redox

      • ID
        string, null
        Reliable

        Identifies the system initiating the message. If you have multiple OAuth API keys per environment type, this value is required. If you have only one OAuth API key per environment type, or you're using legacy API keys, this value is optional.
        UUID

      • Name
        string, null
        Reliable

        Displays the name of the system initiating the message.

    • Destinations
      Array of object

      Contains the information for the endpoint(s) receiving the request. A request must contain at least one destination, but asynchronous requests can have more than one destination. Synchronous requests like queries can only support one destination.
      Required when sending data to Redox.

      • ID
        string, null
        Reliable

        Identifies the endpoint that the request is directed to.
        UUID

      • Name
        string, null
        Reliable

        Displays the name of the endpoint that the request is directed to.

    • Logs
      Array of object

      Contains the log identifier(s) for the request.

      • ID
        string, null
        Reliable

        Identifies the request log(s) that correspond to this request. You can use this value to locate the relevant log in the Redox dashboard for support and reference.
        UUID

      • AttemptID
        string, null
        Reliable

        Identifies the request log attempt value, which is useful when retries are possible.
        UUID

    • FacilityCode
      string, null
      Possible

      Code for the facility related to the message.
      Only use this field if a health system indicates you should. The code is specific to the health system's EHR and might not be unique across health systems. In general, the facility fields within the data models (e.g. OrderingFacility) are more reliable and informative.

  • Patient
    required, object
    • Identifiers
      required, Array of object

      List of IDs and ID types that identify the patient

      • ID
        required, string
        Reliable

        ID for the patient

      • IDType
        required, string
        Reliable

        Type of ID.
        E.g. MRN, EPI

    • PreviousIdentifiers
      required, Array of object

      List of identifiers for the patient record that should be merged into the record identified by Patient.Identifiers. These identifiers should be deprecated.

      • ID
        required, string
        Reliable
      • IDType
        required, string
        Reliable

        Type of ID.
        E.g. MRN, EPI

    • Demographics
      object
      • FirstName
        string, null
        Reliable

        Patient's first name

      • MiddleName
        string, null
        Possible

        Patient's middle name or middle initial. For patients with multiple middle names, all their middle names are included in this field.

      • LastName
        string, null
        Reliable

        Patient's last name

      • DOB
        string, null
        Reliable

        Patient's date of birth.
        In ISO 8601 format

      • SSN
        string, null
        Probable

        Patient's social security number

      • Sex
        string, null
        Reliable
        Value Set

        Patient's sex

      • Race
        string, null
        Possible
        Value Set

        Patient's race

      • IsHispanic
        boolean, null
        Possible
        Value Set

        Indicates if the patient is of hispanic origin.

      • Religion
        string, null
        Possible
        Value Set

        Patient's religious affiliation

      • MaritalStatus
        string, null
        Possible
        Value Set

        Patient's marital status

      • IsDeceased
        boolean, null
        Possible

        Indicates if the patient is deceased

      • DeathDateTime
        string, null
        Possible

        Date and Time the patient was proclaimed deceased.
        ISO 8601 Format

      • PhoneNumber
        object
        • Home
          string, null
          Probable

          Patient's home phone number.
          In E. 164 Format. (e.g. +16085551234)

        • Office
          string, null
          Probable

          Patient's office phone number.
          In E. 164 Format. (e.g. +16085551234)

        • Mobile
          string, null
          Probable

          Patient's mobile phone number.
          In E. 164 Format. (e.g. +16085551234)

      • EmailAddresses
        Array of string

        Patient's email address(es)

      • Language
        string, null
        Possible
        Value Set

        Patient's primary spoken language.
        In ISO 639-1 alpha values (e.g. 'en'). Supported Values

      • Citizenship
        Array of string

        Patient's nation(s) of citizenship.
        In ISO 3166 alpha 2 format (e.g. 'US').

      • Address
        object

        Patient's home address

        • StreetAddress
          string, null
          Probable

          Street address

        • City
          string, null
          Probable

          City

        • State
          string, null
          Probable

          State

        • ZIP
          string, null
          Probable

          ZIP

        • County
          string, null
          Possible

          County

        • Country
          string, null
          Possible
          Value Set

          Country

    • Notes
      Array of string

      Patient-level notes

Example
json
1
{
2
"Meta": {
3
"DataModel": "PatientAdmin",
4
"EventType": "PatientMerge",
5
"EventDateTime": "2026-05-12T21:59:43.167Z",
6
"Test": true,
7
"Source": {
8
"ID": "7ce6f387-c33c-417d-8682-81e83628cbd9",
9
"Name": "Redox Dev Tools"
10
},
11
"Destinations": [
12
{
13
"ID": "af394f14-b34a-464f-8d24-895f370af4c9",
14
"Name": "Redox EMR"
15
}
16
],
17
"Logs": [
18
{
19
"ID": "d9f5d293-7110-461e-a875-3beb089e79f3",
20
"AttemptID": "925d1617-2fe0-468c-a14c-f8c04b572c54"
21
}
22
],
23
"FacilityCode": null
24
},
25
"Patient": {
26
"Identifiers": [
27
{
28
"ID": "0000000001",
29
"IDType": "MR"
30
},
31
{
32
"ID": "e167267c-16c9-4fe3-96ae-9cff5703e90a",
33
"IDType": "EHRID"
34
},
35
{
36
"ID": "a1d4ee8aba494ca",
37
"IDType": "NIST"
38
}
39
],
40
"PreviousIdentifiers": [
41
{
42
"ID": "53700",
43
"IDType": "MR"
44
}
45
],
46
"Demographics": {
47
"FirstName": "Timothy",
48
"MiddleName": "Paul",
49
"LastName": "Bixby",
50
"DOB": "2008-01-06",
51
"SSN": "101-01-0001",
52
"Sex": "Male",
53
"Race": "White",
54
"IsHispanic": null,
55
"Religion": null,
56
"MaritalStatus": "Single",
57
"IsDeceased": null,
58
"DeathDateTime": null,
59
"PhoneNumber": {
60
"Home": "+18088675301",
61
"Office": null,
62
"Mobile": null
63
},
64
"EmailAddresses": [],
65
"Language": "en",
66
"Citizenship": [],
67
"Address": {
68
"StreetAddress": "4762 Hickory Street",
69
"City": "Monroe",
70
"State": "WI",
71
"ZIP": "53566",
72
"County": "Green",
73
"Country": "US"
74
}
75
},
76
"Notes": []
77
}
78
}

FHIR® is a registered trademark of Health Level Seven International (HL7) and is used with the permission of HL7. Use of this trademark does not constitute an endorsement of products/services by HL7®.