Specialties Endpoint

Overview

Description: This endpoint allows you to search through provider specialties that exist within the Ribbon API.

If you are leveraging a Custom Provider Index, then you can also use this endpoint to create and edit your own specialties.

Endpoints:
Standard Index: /v1/specialties/ and /v1/specialties/{UUID}
Custom Index: /v1/custom/specialties/ and /v1/custom/specialties/{UUID}

Status: Live

Methods:
Standard Index: GET
Custom Index: GET, PUT, POST, DELETE

Example use-case:
You want your users to be able to select from a drop down list of available provider specialties (i.e. Cardiology), which you power through GET requests to this endpoint.

Diving In - Searching & Viewing Specialties

To search across the specialties endpoint, you can use GET requests.

Add the "search" parameter to get a paginated list of all available specialties. This parameter will run a 'fuzzy' search against key fields within each specialties object to return the most relevant options.

For example, if you are looking for gastroenterologists, you could conduct a call as follows:

curl -X GET \
  'https://api.ribbonhealth.com/v1/custom/specialties?search=Gastroenterology' \
  -H 'authorization: Token <your_token>'

We'll see our response:

{
    "count": 3,
    "next": null,
    "previous": null,
    "results": [
        {
            "uuid": "ca571ba5-da97-4c9a-8289-2aaac198d4b2",
            "taxonomy_code": "207RG0100X",
            "provider_name": "Gastroenterologist",
            "colloquial": "Stomach Doctor",
            "board_specialty": "Internal Medicine",
            "board_sub_specialty": "Gastroenterology",
            "non_md_specialty": null,
            "non_md_sub_specialty": null,
            "taxonomy_1": "Allopathic & Osteopathic Physicians",
            "taxonomy_2": "Internal Medicine",
            "taxonomy_3": "Gastroenterology",
            "display": "Gastroenterology",
            "provider_type": "Doctor"
        },
        {
            "uuid": "f97d7692-d8dd-448e-ab9a-21ea70289621",
            "taxonomy_code": "2080P0206X",
            "provider_name": "Pediatric Gastroenterologist",
            "colloquial": "Children & Adolescent Stomach Doctor",
            "board_specialty": "Pediatrics",
            "board_sub_specialty": "Pediatric Gastroenterology",
            "non_md_specialty": null,
            "non_md_sub_specialty": null,
            "taxonomy_1": "Allopathic & Osteopathic Physicians",
            "taxonomy_2": "Pediatrics",
            "taxonomy_3": "Pediatric Gastroenterology",
            "display": "Pediatrics - Gastroenterology",
            "provider_type": "Doctor"
        },
                ... 1 more specialty ...
    ]
}

👍

'Fuzzy' Search Using the Specialties Endpoint

The specialties endpoint's "search" parameter allows for fuzzy searching as well!

For example, any of the following calls would return the same list of Gastroenterology related specialties as you see above:
https://api.ribbonhealth.com/v1/custom/specialties?search=Gastroenterology
https://api.ribbonhealth.com/v1/custom/specialties?search=Gastroenterologist
https://api.ribbonhealth.com/v1/custom/specialties?search=Stomach Doc
https://api.ribbonhealth.com/v1/custom/specialties?search=Gastro
https://api.ribbonhealth.com/v1/custom/specialties?search=Gastroo

In addition to using the "search" parameter, you can add the "provider_type" parameter (as seen at the /provider/ endpoint) to further filter results.

For example, when you search for "Gastroenterology" you will receive 3 results. Two of these results are for specialties for Doctors, while the third is a specialty for Nurses.

If you set provider_type=Doctor, however, you can limit the result to only specialties with the inputted provider type.

Diving In - Creating New Specialties

Now, let's say that we want to deviate from the ~700 CMS standardized specialties we offer.

For instance, let's say that between an Internal Medicine Doctor, Family Medicine and General Practitioner, you want to create an overarching category called Primary Care Physician. We could simply make a POST request to this endpoint, like so:

curl -X POST \
  'http://api.ribbonhealth.com/v1/custom/specialties' \
  -H 'Authorization: Token <>' \
  -d '{
    "display": "Primary Care Physician (PCP)"
}'

Assuming we did not pass any incorrect fields, we'll get back a valid response:

{
    "data": {
        "uuid": "aab7cc3b-bf42-4fce-9e45-03fbc807992d",
        "taxonomy_code": "",
        "board_specialty": "",
        "board_sub_specialty": "",
        "non_md_specialty": "",
        "non_md_sub_specialty": "",
        "provider_name": "",
        "colloquial": "",
        "display": "Primary Care Physician (PCP)",
        "taxonomy_1": "",
        "taxonomy_2": "",
        "taxonomy_3": ""
    }
}

We can now add this specialty to any doctor via the v1/custom/providers/{NPI}/specialties endpoint!

If we didn't do this correctly and now want to edit or delete this custom specialty, we can use the next endpoint, which is a subset of this one!

Diving In - Editing & Deleting Specialties

We can edit a new, custom specialty with a PUT request at /v1/custom/specialties/{UUID}:

curl -X PUT \
  http://api.ribbonhealth.com/v1/custom/specialties/813c684e-bcb1-4a51-98a2-dc2f8a64871b \
  -H 'Authorization: Token <your token>' \
  -d '{
    "taxonomy_code": "",
    "board_specialty": "",
    "board_sub_specialty": "",
    "non_md_specialty": "",
    "non_md_sub_specialty": "",
    "provider_name": "",
    "colloquial": "PCP",
    "display": "Primary Care Physician",
    "taxonomy_1": "",
    "taxonomy_2": "",
    "taxonomy_3": ""
}'

Upon success, this will update the record! Please note, you need all of the above fields to submit a PUT request.

🚧

You can only edit and delete custom specialties

You cannot edit or delete the specialties that Ribbon provides (although you can remove specialties from a provider record). If you want to 'edit' a specialty, you can create a new custom specialty with the fields populated as you desire and then link it to the appropriate providers.

Note: We are working on functionality to allow for bulk updates!

Now, perhaps we REALLY screwed up and want to delete a custom specialty all together? We can be merely submit a DELETE request to the v1/custom/specialties/{UUID} endpoint, like so:

curl -X DELETE \
  http://api.ribbonhealth.com/v1/custom/specialties/aab7cc3b-bf42-4fce-9e45-03fbc807992d \
  -H 'Authorization: Token <your token>'

❗️

Be careful when deleting a custom specialty!

Once you delete it, you cannot get it back, and all the doctors that you added it to will no long have it!