Access Procedure Codes and EHR-specific Appointment Types

🚧

Supported Integrations

Currently, Procedure Codes are supported for Dentrix, Dentrix Ascend, Dentrix Enterprise, Denticon, Eaglesoft, and Open Dental. EHR-specific appointment types are supported for athenahealth, Dentrix, Dentrix Enterprise, Eaglesoft, and Open Dental.

In this guide we'll cover how to read and write Procedure Codes and EHR-specific Appointment Types. Procedure codes are either Current Dental Terminology (CDT) codes for dental or Current Procedural Terminology (CPT) codes for medical. EHR-specific Appointment Types are another way to categorize appointments in systems such as athenahealth.

This guide is written with the assumption that you already have a sandbox environment set up and bearer token ready. If you don't have access request a sandbox here and if you don't have a bearer token check out our doc on authentication here.

Reading Procedure Codes and EHR-specific Appointment Types

Reading Procedure Codes and EHR-specific Appointment Types can help you more accurately understand how appointments are categorized in a health record system or what services are associated with a given appointment to show the value of appointments you book for the practice, trigger pre- or post-op instructions, or evaluate and recommend patient care options.

Procedure Codes and EHR-specific Appointment Types are available via our API at the location or appointment level. You can access all Procedure Codes and EHR-specific Appointment Types available in a location with a GET request to /locations/{id}/appointment_descriptors.

Make sure to fill in your location and bearer token.

curl --request GET \
     --url https://nexhealth.info/locations/YOUR_LOCATION/appointment_descriptors \
     --header 'Accept: application/vnd.Nexhealth+json;version=2' \
     --header 'Authorization: Bearer YOUR_BEARER_TOKEN'

You should get a response similar to the one below. You can see the Procedure Code or EHR-specific Appointment Type under code and a more display friendly name above that.

{
    "code": true,
    "description": [],
    "error": [],
    "data": [
        {
            "id": 2581,
            "descriptor_type": "Procedure Codes",
            "name": "Composite-2 Surf, Posterior",
            "code": "T5833",
            "location_id": 405,
            "foreign_id": "10:1",
            "foreign_id_type": "msg-opendental-DataSource-156",
            "data": {
                "AbbrDesc": "C2(P)",
                "ProcTime": "/X/",
                "PaintType": 6,
                "TreatArea": 1
            },
            "active": true,
            "last_sync_time": null,
            "created_at": "2022-04-19T22:57:22.860Z",
            "updated_at": "2022-04-19T22:57:22.860Z"
        },
        {
            "id": 1822,
            "descriptor_type": "Appointment Type",
            "name": "NEW PRIMARY CARE VISIT",
            "code": "NPR",
            "location_id": 5,
            "foreign_id": "17",
            "foreign_id_type": "msg-athena-DataSource-2558",
            "data": {},
            "active": true,
            "last_sync_time": null,
            "created_at": "2022-04-19T22:57:22.860Z",
            "updated_at": "2022-04-19T22:57:22.860Z"
        }
      ]
}

If instead you want to see the specific Procedure Codes or EHR-specific Appointment Types attached to an appointment and patient, just make a GET request to /appointments/{id}/appointment_descriptors or /appointments/{id}?include[]=descriptors.

Make sure to fill in your subdomain, appointment ID, and bearer token.

curl --request GET \
     --url 'https://nexhealth.info/appointments/YOUR_APPOINTMENT_ID?subdomain=YOUR_SUBDOMAIN&include\[\]=descriptors' \
     --header 'Accept: application/vnd.Nexhealth+json;version=2' \
     --header 'Authorization: Bearer YOUR_BEARER_TOKEN'

The appointment object you get in response will have a descriptors property with the Procedure Codes and EHR-specific Appointment Types that are associated with the appointment.

"descriptors": [
      {
            "id": 2581,
            "descriptor_type": "Procedure Codes",
            "name": "Composite-2 Surf, Posterior",
            "code": "T5833",
            "location_id": 405,
            "foreign_id": "10:1",
            "foreign_id_type": "msg-opendental-DataSource-156",
            "data": {
                "AbbrDesc": "C2(P)",
                "ProcTime": "/X/",
                "PaintType": 6,
                "TreatArea": 1
            },
            "active": true,
            "last_sync_time": null,
            "created_at": "2022-04-19T22:57:22.860Z",
            "updated_at": "2022-04-19T22:57:22.860Z"
        }
    ]

Writing Procedure Codes and EHR-specific Appointment Types

Writing Procedure Codes and EHR-specific Appointment Types allows you to ensure that your booked appointments have all the information a practice needs to easily understand what services they should provide and bill insurance appropriately.

This can be done by setting up a NexHealth Appointment Type (which is different from an EHR-specific Appointment Type) that is associated with the procedure code(s) or EHR-specific Appointment Types you would like to input. NexHealth Appointment Types are things like a cleaning or extraction, and can be thought of as a logical bundling of Procedure Codes or EHR-specific Appointment Types that represent a specific kind of appointment.

To create a NexHealth Appointment Type you make a Post request to /appointment_types as shown below. There you can declare which Procedure Codes and EHR-specific Appointment Types should be attached to this type of appointments with the field emr_appt_descriptor_ids.

Make sure to fill in your subdomain, bearer token, and the details of your NexHealth Appointment Type and its associated emr_appt_descriptor_ids in the body. emr_appt_descriptor_ids represents various ways that appointments are categorized within health record systems, such as CDT codes, CPT codes, and EHR-specific Appointment Types.

curl --request POST \
     --url 'https://nexhealth.info/appointment_types?subdomain=YOUR_SUBDOMAIN' \
     --header 'Accept: application/vnd.Nexhealth+json;version=2' \
     --header 'Authorization: Bearer YOUR_BEARER_TOKEN' \
     --header 'Content-Type: application/json' \
     --data '
{
     "appointment_type": {
          "emr_appt_descriptor_ids": [
               123456,
               123457,
               123458
          ],
          "name": "Cleaning",
          "minutes": 60,
          "parent_type": "Institution"
     }
}

If you already have a NexHealth Appointment Type, you can edit it to include the associated Procedure Codes and EHR-specific Appointment Types with the request below.

Make sure to fill in your subdomain, NexHealth Appointment Type, bearer token, and the emr_appt_descriptor_ids you would like attached.

curl --request PATCH \
     --url 'https://nexhealth.info/appointment_types/YOUR_TYPE?subdomain=YOUR_SUBDOMAIN' \
     --header 'Accept: application/vnd.Nexhealth+json;version=2' \
     --header 'Authorization: Bearer YOUR_BEARER_TOKEN' \
     --header 'Content-Type: application/json' \
     --data '
{
     "appointment_type": {
          "emr_appt_descriptor_ids": [
               1234545,
               123453
          ]
     }
}
'

Once you've created a NexHealth Appointment Type all you have to do is specify the type when you create an appointment and the Procedure Codes and EHR-specific Appointment Types will be attached to the appointment.

You do this via the appointment_type_id property.

Make sure to fill in subdomain, location, bearer token, patient, provider, operatory, and start time. If you are confused on how to create an appointment, check out our guide.

curl --request POST \
     --url 'https://nexhealth.info/appointments?subdomain=YOUR_SUBDOMAIN&location_id=YOUR_LOCATION' \
     --header 'Accept: application/vnd.Nexhealth+json;version=2' \
     --header 'Authorization: Bearer YOUR_BEARER_TOKEN' \
     --header 'Content-Type: application/json' \
     --data '
{
     "appt": {
          "patient_id": "YOUR_PATIENT",
          "provider_id": "YOUR_PROVIDER",
          "operatory_id": "YOUR_OPERATORY",
          "start_time": "YOUR_STARTTIME"
          "appointment_type_id": 12345
     }
}
'