Omni Search

DexCare’s Omni Search is a web-based search experience that aides consumers looking for care options, be they individual clinicians or clinics within a health system.

Traditional healthcare search options often limit users to basic name and location lookups or filtering by specific conditions. Omni Search lets users search for care options using a single text input from which it will generate highly specific queries (referred to as long tail queries).

Our natural language processing functionality automatically breaks down a phrase such as “where to find the nearest flu shot” into its component parts and determines its intent. Our search query parsing also includes support for error tolerance (e.g., spelling mistakes) and synonym recognition of medical terms and phrases.

The Omni Search API is a REST/JSON API that powers Omni Search.

The Omni Search API allows health care systems to create their own implementations on top of the core functionality that Omni Search provides. The API allows the following functionality to be invoked:

  • Execution of search and autocomplete queries
  • Retrieving data for individual practitioners (clinicians) and clinics (departments)
  • Retrieving synonyms and facets
  • Submitting data for analytics
  • Updating the OmniSearch cache

This guide will provide an overview of Omni Search functionality, key entities that are part of the API, and example queries for standard use cases. For a comprehensive reference, consult the Omni Search OAS specification.

Use this API in conjunction with the DexCare Care Options API and the Slot Availability API to retrieve available appointment time slots for clinics and clinicians. For an overview of of those APIs consult our guide on Provider Timeslots.

Key Omni Search API Functionality

Search Input Parsing

Omni Search uses a rules-based Natural Language Parsing (NLP) to:

  • break apart search terms
  • tokenize the input for root stemming
  • process for synonyms
  • provide spelling corrections
  • identify intent

Identifying intent includes determining the best way to sort results and what type of visit the end user is interested in (see “Sorting Detection” and “Types of Visits” below).

Use the /api/OmniSearch endpoint to execute a search query, passing search text you wish to parse as the search parameter. Additional parameters allow you to apply filters, narrow the search to specific types of visits, specify a particular location (or infer it from the search), or limit the type of results that come back.

Synonym Recognition

To find the most relevant care options, Omni Search maintains relationships between recognized medical terms and possible conditions or symptoms that an end user may be experiencing.

DexCare maintains a synonym library that will match a phrase provided by the end user with clinical keywords (e.g., “daily persistent headache” will match the term “chronic migraines”). These synonyms may be customized for a given health system.

To see what synonyms are returned for a given keyword, use the api/OmniSynonyms endpoint. An example is shown below.

Keywords, Facets, and Filters

Keywords

Keywords are extracted from the search input provided to the API. These keywords will be matched against synonyms and used to match against data fields of clinicians and departments (e.g., the clinicians’s title or primary speciality). The various fields may be given different weights as part of the configuration of Omni Search that will impact the order in which matches are displayed.

Facets

Facets are a mechanism to narrow down search results based on specific criteria or attributes. Sometimes referred to as “guided navigation” or “smart filters,” facet-based search typically presents the users with multiple inputs to fill out or from which to select options.

Facets will have a limited number of options (i.e. they have low cardinality). Fields with high cardinality can still be used to narrow search results through the use of filters (see the * parameter in the Request Parameters section).

You may provide the name of facet-able fields as search parameters. See below for an example query.

Facets that are available for departments or clinicians may be retrieved using the /api/OmniSearchFacets endpoint, with the option to include the number of results that match a given facet (the count) and to limit the results to only facets that use string values (using stringvalues).

When search results are returned, a list of facets used in the search will also be returned as a part of the SearchInfo object (info property on the response object).

"facets": {
	"Languages": [
		"Spanish"
	]
},

Additionally, for any given filter that is used for a search, a list of relevant facets (if any) will be returned with search result’s info object that will include the facet’s name and value.

"filters": [
	{
		"value": "Spanish",
		"text": "spanish",
		"facets": [
			{
				"name": "Languages",
				"value": "Spanish"
			}
		],
		"auto": true,
		"facet": "Languages"
	},

Filters

Filters will be generated using both NLP and based on faceted search parameters that you provide.

Filters are described in further detail in the Entities section below.

Geographic Parameters and Determining Distance

Distance is the primary sorting signal for all searches and generated a search score. Modifiers are calculated to adjust the distance.

For the purpose of determining the end user’s location as it pertains to search you may provide:

a specific set of latitude and longitude values as decimal values

a location string with a the name of a specific locality (e.g., city or county)

the inferLocationFromSearch flag to indicate that OmniSearch should use the provided search string to determine the location.

Information about the end user’s location based on the their IP Address and search query is contained in the GeoIP entity (see below) for queries to our search endpoint.

Result Scoring and Sorting

Sorting Detection

Search results will be sorted by detecting key phrases from the end user’s input such as:

  • near me (this is the default behavior, see “How Distance Factors Into Results”)

  • soonest, next available, same day, first available (this may also be set explicitly through the soonest query parameter Boolean flag)

  • online booking, online scheduling (this may also be set explicitly through the videoVisits query parameter Boolean flag)

Types of Visits

You can prioritize the type of visit using the following Boolean flag query parameters

The following two visit type filters show results regardless of the availability of time slots.

  • acceptingNewPatients - When set to true, Omni Search orders care option results by those accepting new patients first, whether or not such appointments are currently available. This may be important for cases such as walk-in clinics, where appointments are not necessary.

  • virtualCare - When set to true, Omni Search orders care option results by those offering virtual care first. These results may be shown whether or not virtual visit time slots exist.

These two visit type flags are affected by the availability of appointment time slots correpondingto the visit type:

  • clinicVisits - When set to true, Omni Search orders care option results to prioritize those available for in person visits. Corresponds to time slots being available to this type of visit.

  • videoVisits - When set to true, Omni Search orders care option results by those available for new video visits. Corresponds to time slots being available to this type of visit.

Date Based Filters

You can limit search results to particular days of the week using the days query parameter and certain period of the day using the time parameter (morning, afternoon or any)

How Distance Factors Into Results

Distance is the primary sorting signal for all searches. Modifiers such as appointment time slot availability and relevancy to the search keywords are calculated to adjust the distance.

If your provide the user’s specific address or geographic co-ordinates, Omni Search sorts departments and clinicians using a straight-line distance between the end user and the care option. However if the location is limit to only a specific locale (e.g., “Atlanta”), all care options in that locale will be treated as equidistant, and we will sort against each care option only on relevancy and availability

How Appointment Availability Factors Into Results

  • Types of appointments (new patients, virtual visits)
  • Time slot availability (number of time slots, time slots in the future)

Use of Badges

Results include search terms/phrases that matched specific fields to help correlate what content drove the match.

These badges serve as cues for how a search was dissected and can be used as a quick mechanism to remove terms from a search if that filtering is no longer desired.

The badges explain to end users why a given care option is surfacing in the search results. When badges are not provided, it tends to lead to confusion(e.g., “why is this clinician listed?”)

When executing search for “Spanish speaking” could result in a badge in the search result "Languages: Spanish", indicating that the search term was a match for a Languages facet value.

The top 4 badges are returned along with the field they matched as part of the result object.

{
...     
      "results": [
        {
            "type": "provider", 
            ...         
            "badges": {
                "Languages: Spanish": "Languages: Spanish"
            },
        ...
        }
      ]
...
}

Below is an example of badges for a Clinician returned for a search for “cancer”

"badges": {
	"Primary Specialty: Neuro-Oncology": "Primary Specialty: Neuro-Oncology",
	"Keywords: benign neoplasm of brain": "Keywords: benign neoplasm of brain",
	"Keywords: brain neoplasms": "Keywords: brain neoplasms",
	"Keywords: orbital tumors": "Keywords: orbital tumors"
}

Limiting and Paging Results

You may limit the number of results using the numeric query string parameter top

You may page through results using the skip query string parameter, for which you will provide the offsets you wish to use for clinicians and departments as a comma separated list of numbers. For example, to skip the first 3 clinician results and the first 5 department results, set skip=3,5. The default value for skip is 0,0.

Brands

The brand is a required parameter for all searches. It corresponds to the specific code assigned to your health system. If your health system has more than one branding you will may need to provide a childBand as well.

Search Type

The parameter type will be one of the following:

  • search - Returns a list of results for a complete search
  • autocomplete - Returns a list of “completions” for an incomplete search (see below for an example of an autocomplete query).

Omni Search Entities

The primary entities you will be interacting with from the Omni Search API are returned as part of the OmniSuccessResponse object that is returned by the /api/OmniSearch endpoint. This includes the care options as Clincians (i.e., individual clinicians) and Departmets (e.g., clinics) objects are returned as a combined set of results. The deprecated fields locations and providers should not be used.

These entities may also be looked up via the /api/OmniData endpoint and this is the endpoint you should use when you want to retrueve a single provider or location.

Also included in the response is the SearchInfo object (as the info field) which will include the original search string as well as filters, facets, and locations used to narrow the results.

In addition the response object includes geographical location and IP Address information about the end user as the GeoIP object.

Omni Search UML

Common Care Option Fields

Clinicians and Departments have a number of properties in common that are described below.

  • address and contact (e.g., phone) properties
  • distance from the end user, geocoded coordinates
  • Supported Visit Types through boolean flags
    • isAcceptingNewPatients — Indicates that the care option is accepting new patients. New patient appointments are typically allotted more time for the purpose on intake.
    • isBookableOnline — Indicates if a care option webpage should display the timeslot widget
    • isBookablePhone — Indicates a care option should display phone visit types on the timeslot widget.
    • isBookableVirtual — Indicates that the care option supports virtual office visits, meaning customers can speak with a provider using video chat.
    • isNewPatientEnabled — indicates a care option accepts new patients (i.e., users open scheduling in epic)
    • isReturningPatientEnabled — indicates a care option accepts returning patients (i.e., direct open scheduling in epic)

Clinician

The Clinician entity (clinicianFastPages) is one of two care options in the results of the OmniSucessResponse object that is returned by a successful call to the Omni Search /api/OmniSearch endpoint, the other being a Department (see below). This entity will also be returned by the /api/OmniData endpoint when you provide a list of Nation Provider Identifiers (npis) or unique identifiers (ids) for a given practitioner.

Clinician refer to a specific individual physician and can be identified as such because their type field will be assigned to clinician. Because they are individual providers, Clinicians will have an National Provider Identifier (npi) and one or more urls to their online profile (profileUrls).

The following properties are distinct to clinicians:

  • credentials, certifications, education history and hospitalAffiliations
  • gender, languages they speak, and their bio
  • primarySpecialities, subSpecialties and medicalInterests
  • multiple departments where they can be found (the primary department being indicated by departmentPrimaryUuid)

You may limit the results to clinician only with the Boolean query parameter clinicians

Below is an example of a Clinician entity returned as a result in a search agains the Omni Search API

Note that it is possible for a single Clinician to have multiple departments and that will correspond to the number of distances returned.

{
  "@search.score": 0.14675301699069723,
  "@search.highlights": {
    "languages": [
      "<strong>Spanish</strong>"
    ],
    "specialties.name": [
      "<strong>Pediatrics</strong>",
      "<strong>Pediatric Infectious Diseases</strong>"
    ],
    "departments.displayName": [
      "<strong>USF Department of Pediatrics</strong>"
    ]
  },
  "credentials": [
    "MD"
  ],
  "emrIdentifiers": [
    {
      "emrId": "173427"
    }
  ],
  "networks": [],
  "profileUrls": [
    {
      "brandName": "tgh",
      "url": "https://www.yourorg.org/providers/jane-doe-1013947654"
    }
  ],
  "reviews": [],
  "subSpecialties": [
    {
      "name": "Primary Care"
    },
    {
      "name": "PCP"
    },
    {
      "name": "Pediatrics"
    },
    {
      "name": "Pediatric Infectious Diseases"
    }
  ],
  "id": "9c291327-c40b-5d48-9620-e3ab3e9993ec-tgh|602b5bb2-a7ee-5ba8-85bf-db144cdbef98-tgh",
  "imageUrl": "https://www.yourorg.org/-/media/dexcare/provider/1013947654.jpg",
  "isAcceptingNewPatients": false,
  "isBookableOnline": false,
  "isBookablePhone": false,
  "isBookableVirtual": false,
  "isNewPatientEnabled": false,
  "isReturningPatientEnabled": false,
  "name": {
    "first": "Jane",
    "last": "Doe",
    "middles": [
      ""
    ]
  },
  "npi": "1013947654",
  "resultType": "clinician",
  "@search.features": {
    "NewClinic": {
      "similarityScore": 0
    },
    "NewVideo": {
      "similarityScore": 0
    },
    "FollowUpClinic": {
      "similarityScore": 0
    },
    "FollowUpVideo": {
      "similarityScore": 0
    },
    "languages": {
      "similarityScore": 2
    },
    "specialties.name": {
      "similarityScore": 3
    }
  },
  "@search.distance": {
    "type": "absolute",
    "miles": 2395.947592132535,
    "numeric": 41.036418595925475
  },
  "departments": [
    {
      "address": {
        "addressLine1": "1313 Mockingbird Lane",
		"city": "Mockingbird Heights,
		"country": "US",
		"county": "Los Angeles",
		"latitude": 34.1371,
		"longitude": -118.3533,
		"postalCode": "91608",
		"state": "CA"
      },
      "displayName": "Department of Pediatrics",
      "emrIdentifier": {
        "emrId": "peds5"
      },
      "fax": "",
      "id": "602b5bb2-a7ee-5ba8-85bf-db144cdbef98",
      "isBookableOnline": false,
      "isBookablePhone": false,
      "isBookableVirtual": false,
      "isNewPatientEnabled": false,
      "isReturningPatientEnabled": false,
      "phoneNumber": "5555551000",
      "resultType": "department",
      "timezone": "",
      "url": "https://www.yourorg.org/locations/dept1"
    }
  ],
  "badges": [
    "Languages: Spanish",
    "Specialty: Pediatrics",
    "Specialty: Pediatric Infectious Diseases",
    "Department Name: Department of Pediatrics"
  ],
  "distances": [
    2395.947592132535
  ]
}

Department

A Department (departmentFastPages) is one of two care options in the results of the OmniSucessResponse object that is returned by a successful call to the Omni Search /api/OmniSearch endpoint, the other being a Clinician (see above). This entity will also be returned by the /api/OmniData endpoint when you provide a list of department ids or department urls.

Departments refer to retail clinics, urgent care centers, etc.

You may limit the results to only include Departments with the Boolean query parameter departments

Below is a sample result from Omni Search showing a Department.

{
	"@search.score": 0.14686883182816682,
	"@search.highlights": {
		"displayName": [
			"<strong>TGH Cancer Institute St. Petersburg</strong>"
		]
	},
	"specialties": [],
	"address": {
		"addressLine1": "1313 Mockingbird Lane",
		"city": "Mockingbird Heights,
		"country": "US",
		"county": "Los Angeles",
		"latitude": 34.1371,
		"longitude": -118.3533,
		"postalCode": "91608",
		"state": "CA"
	},
	"brandName": "yourbrand",
	"displayName": "Cancer Institute",
	"emrIdentifier": {
		"emrId": "youremr_1001",
		"emrSystemId": "youremr_system"
	},
	"id": "123457f9-ae2c-5b12-87d6-4356b4990194",
	"isAcceptingNewPatients": false,
	"isBookableOnline": false,
	"isBookablePhone": false,
	"isBookableVirtual": false,
	"isNewPatientEnabled": false,
	"isReturningPatientEnabled": false,
	"phoneNumber": "5555551001",
	"resultType": "department",
	"url": "https://www.yourorg.org/locations/location_1001",
	"@search.features": {
		"NewClinic": {
			"similarityScore": 0
		},
		"NewVideo": {
			"similarityScore": 0
		},
		"FollowUpClinic": {
			"similarityScore": 0
		},
		"FollowUpVideo": {
			"similarityScore": 0
		},
		"displayName": {
			"similarityScore": 5
		}
	},
	"@search.distance": {
		"type": "absolute",
		"miles": 2394.3928325869883,
		"numeric": 41.02563081234169
	},
	"clinicians": [],
	"badges": [
		"Name: Cancer Institute"
	],
	"distance": 2394.3928325869883
}

Search Info

The SearchInfo provides details on the search that was executed, including the type of search (provider or location), the original search string provided by the end user, and the filters, facets, and locations that the search input was parsed into or were otherwise provided as parameters.

  • any — A Boolean flag that indicates if the search that was executed was an “AND” type of search or an “OR” type of search. If the user searches for “female Spanish cardiologist”, Omni Search will first try to find a provider that matches all three criteria, doing an “AND” search — i.e., female AND speaks Spanish AND cardiologist. If there is a match, the any field will be false. If there are no clincians that match all three conditions, Omni Search will switch to an “OR” search — i.e., female OR speaks Spanish OR cardiologist. In this case, the any field will be set to true. The any field instructs frontend to display a message to indicate to end users that they are no exact matches and Omni Search has returned results that are similar to their query.
  • facets — The facets listed in the search info are those that were used as part of the search.
  • filters — Filter include not only the name pair value that was used in the search but also the facets which they matched.
  • some — A Boolean flag that will be True if the search surfaced any results.
  • search — The search property contains the original search query (if any) that was submitted as part of the search after autocorrect is applied.
  • type — The type of query that was submitted

Filters

Below is an example of the structure of a filter associated with the SearchInfo object.

"filters": [
	{
		"value": "Spanish",
		"text": "spanish",
		"facets": [
			{
				"name": "languages",
				"value": "Spanish"
			}
		],
		"auto": true,
		"facet": "languages"
	},

GeoIP

The GeoP entity contains geolocation information by IP address from the Omni Search GeoIP service as well as search criteria that was submitted.

When location information isn’t provided from the session or user, Omni Search relies on the x-forwarded-for header to do a GeoIP lookup on the origin IP address.

Example GeoIP:

"geolocation": {
                    "success": true,
                    "error": null,
                    "disclaimer": "This service may only be used by DexCare, Inc. products and services.",
                    "ip": "99.112.68.46",
                    "city": "San Francisco",
                    "state": "CA",
                    "coordinates": {
                        "lat": 37.7825,
                        "lng": -122.435
                    },
                    "type": "ip"
                },

Use Cases

Searching for Clinician That Meet Certain Criteria Using NLP

The following example of the search endpoint returns Clinicians using our Natural Language Parsing capabilities.

Find Spanish speaking pediatrics doctors near me

Example Request

curl --location 'womphealthtestapi.azurewebsites.net/api/OmniSearch?brand=demo&type=search&search=Find%20Spanish%20speaking%20pediatrics%20doctors%20near%20me' \
--header 'Accept: application/json'

Example Response

{
  "info": {
    "search": "Find Spanish speaking pediatrics doctors near me",
    "filters": [
      {
        "value": "Spanish",
        "text": "spanish",
        "facets": [
          {
            "name": "languages",
            "value": "Spanish"
          }
        ],
        "auto": true,
        "facet": "languages"
      },
      {
        "value": "speaking",
        "text": "speaking",
        "facets": [],
        "auto": true
      },
      {
        "value": "Pediatrics",
        "text": "pediatrics",
        "facets": [
          {
            "name": "conditionsTreated",
            "value": "Pediatrics"
          },
          {
            "name": "specialties.name",
            "value": "Pediatrics"
          },
          {
            "name": "subSpecialties.name",
            "value": "Pediatrics"
          }
        ],
        "auto": true,
        "facet": "subSpecialties.name"
      },
      {
        "value": "near",
        "text": "near",
        "facets": [],
        "auto": true
      }
    ],
    "locations": [
      {
        "name": "USF Pathology Department",
        "id": "1f5ef068-ca2a-5638-b7e1-341e94757bd2",
        "distance": 2398.3027556241423
      },
      {
        "name": "USF Department of Pediatrics",
        "id": "82097bb7-5499-58e1-a440-1df9985ec83a",
        "distance": 2407.325896176635
      },
      {
        "name": "USF Department of Pediatrics",
        "id": "dc762757-4a84-5d3a-b6bd-b179f8894160",
        "distance": 2395.7808170225685
      }
    ],
    "facets": {},
    "any": true,
    "some": true,
    "type": [],
    "matches": [
      "spanish",
      "kid",
      "pediatric nephrology",
      "pediatric infectious diseases",
      "usf department of pediatrics"
    ],
  },
  "results": [
    {
      "@search.score": 0.14755063455306586,
      "@search.highlights": {
        "languages": [
          "<strong>Spanish</strong>"
        ],
        "specialties.name": [
          "<strong>Pediatrics</strong>",
          "<strong>Pediatric Nephrology</strong>"
        ],
        "conditionsTreated": [
          "<strong>Pediatrics</strong>"
        ]
      },
      "credentials": [
        "MD"
      ],
      "emrIdentifiers": [
        {
          "emrId": "099218"
        }
      ],
      "networks": [],
      "profileUrls": [
        {
          "brandName": "tgh",
          "url": "https://www.getcare.tgh.org/providers/alfonso-campos-1285641076"
        }
      ],
      "reviews": [],
      "subSpecialties": [
        {
          "name": "Primary Care"
        },
        {
          "name": "Pediatric Nephrology"
        },
        {
          "name": "PCP"
        },
        {
          "name": "Pediatrics"
        }
      ],
      "id": "0dcdb27b-fe97-5e99-bb46-d8f00321774b-tgh|443797db-3cca-5161-9656-bda0c73f12e5-tgh",
      "imageUrl": "https://www.tgh.org/-/media/dexcare/provider/1285641076.jpg",
      "isAcceptingNewPatients": false,
      "isBookableOnline": false,
      "isBookablePhone": false,
      "isBookableVirtual": false,
      "isNewPatientEnabled": false,
      "isReturningPatientEnabled": false,
      "name": {
        "first": "Alfonso",
        "last": "Campos",
        "middles": [
          ""
        ]
      },
      "npi": "1285641076",
      "resultType": "clinician",
      "@search.features": {
        "NewClinic": {
          "similarityScore": 0
        },
        "NewVideo": {
          "similarityScore": 0
        },
        "FollowUpClinic": {
          "similarityScore": 0
        },
        "FollowUpVideo": {
          "similarityScore": 0
        },
        "languages": {
          "similarityScore": 2
        },
        "specialties.name": {
          "similarityScore": 3
        }
      },
      "@search.distance": {
        "type": "absolute",
        "miles": 2378.777349044822,
        "numeric": 40.87652787609675
      },
      "departments": [
        {
          "address": {
            "addressLine1": "4443 Rowan Rd",
            "city": "New Port Richey",
            "country": "US",
            "county": "Pasco County",
            "latitude": 28.2240005,
            "longitude": -82.6917538,
            "postalCode": "34653",
            "state": "FL"
          },
          "displayName": "USF Health Department of Pediatrics, Division of Nephrology",
          "emrIdentifier": {
            "emrId": "USFPedNeph"
          },
          "fax": "",
          "id": "443797db-3cca-5161-9656-bda0c73f12e5",
          "isBookableOnline": false,
          "isBookablePhone": false,
          "isBookableVirtual": false,
          "isNewPatientEnabled": false,
          "isReturningPatientEnabled": false,
          "phoneNumber": "",
          "resultType": "department",
          "timezone": "",
          "url": "https://www.getcare.tgh.org/locations/fl/new-port-richey/usf-health-department-of-pediatrics-division-of-nephrology-usfpedneph"
        },
        {
          "address": {
            "addressLine1": "4550 Colonial Blvd",
            "city": "Fort Myers",
            "country": "US",
            "county": "Lee County",
            "latitude": 26.6097132,
            "longitude": -81.82008789999999,
            "postalCode": "33966",
            "state": "FL"
          },
          "displayName": "USF Health Department of Pediatrics, Division of Nephrology",
          "emrIdentifier": {
            "emrId": "USFPedFtm"
          },
          "fax": "",
          "id": "6f18d6cd-528a-588d-9922-b39a1d076d1d",
          "isBookableOnline": false,
          "isBookablePhone": false,
          "isBookableVirtual": false,
          "isNewPatientEnabled": false,
          "isReturningPatientEnabled": false,
          "phoneNumber": "",
          "resultType": "department",
          "timezone": "",
          "url": "https://www.getcare.tgh.org/locations/fl/fort-myers/usf-health-department-of-pediatrics-division-of-nephrology-usfpedftm"
        },
        {
          "address": {
            "addressLine1": "3310 Lakeland Hills Blvd",
            "city": "Lakeland",
            "country": "US",
            "county": "Polk County",
            "latitude": 28.0848461,
            "longitude": -81.9540979,
            "postalCode": "33805",
            "state": "FL"
          },
          "displayName": "USF Health Department of Pediatrics, Division of Nephrology",
          "emrIdentifier": {
            "emrId": "USFPedLake"
          },
          "fax": "",
          "id": "774ea897-cb4d-53ab-b315-4304c4de8203",
          "isBookableOnline": false,
          "isBookablePhone": false,
          "isBookableVirtual": false,
          "isNewPatientEnabled": false,
          "isReturningPatientEnabled": false,
          "phoneNumber": "",
          "resultType": "department",
          "timezone": "",
          "url": "https://www.getcare.tgh.org/locations/fl/lakeland/usf-health-department-of-pediatrics-division-of-nephrology-usfpedlake"
        }
      ],
      "badges": [
        "Languages: Spanish",
        "Conditions Treated: Pediatrics",
        "Specialty: Pediatric Nephrology"
      ],
      "distances": [
        2378.777349044822,
        2477.8306184632997,
        2423.310726322691
      ]
    },
    {
      "@search.score": 0.14675301699069723,
      "@search.highlights": {
        "languages": [
          "<strong>Spanish</strong>"
        ],
        "specialties.name": [
          "<strong>Pediatrics</strong>",
          "<strong>Pediatric Infectious Diseases</strong>"
        ],
        "departments.displayName": [
          "<strong>USF Department of Pediatrics</strong>"
        ]
      },
      "credentials": [
        "MD"
      ],
      "emrIdentifiers": [
        {
          "emrId": "173427"
        }
      ],
      "networks": [],
      "profileUrls": [
        {
          "brandName": "tgh",
          "url": "https://www.getcare.tgh.org/providers/carina-rodriguez-1013947654"
        }
      ],
      "reviews": [],
      "subSpecialties": [
        {
          "name": "Primary Care"
        },
        {
          "name": "PCP"
        },
        {
          "name": "Pediatrics"
        },
        {
          "name": "Pediatric Infectious Diseases"
        }
      ],
      "id": "9c291327-c40b-5d48-9620-e3ab3e9993ec-tgh|602b5bb2-a7ee-5ba8-85bf-db144cdbef98-tgh",
      "imageUrl": "https://www.tgh.org/-/media/dexcare/provider/1013947654.jpg",
      "isAcceptingNewPatients": false,
      "isBookableOnline": false,
      "isBookablePhone": false,
      "isBookableVirtual": false,
      "isNewPatientEnabled": false,
      "isReturningPatientEnabled": false,
      "name": {
        "first": "Carina",
        "last": "Rodriguez",
        "middles": [
          ""
        ]
      },
      "npi": "1013947654",
      "resultType": "clinician",
      "@search.features": {
        "NewClinic": {
          "similarityScore": 0
        },
        "NewVideo": {
          "similarityScore": 0
        },
        "FollowUpClinic": {
          "similarityScore": 0
        },
        "FollowUpVideo": {
          "similarityScore": 0
        },
        "languages": {
          "similarityScore": 2
        },
        "specialties.name": {
          "similarityScore": 3
        }
      },
      "@search.distance": {
        "type": "absolute",
        "miles": 2395.947592132535,
        "numeric": 41.036418595925475
      },
      "departments": [
        {
          "address": {
            "addressLine1": "601 5th St S",
            "city": "St. Petersburg",
            "country": "US",
            "county": "Pinellas County",
            "latitude": 27.7639394,
            "longitude": -82.6403258,
            "postalCode": "33701",
            "state": "FL"
          },
          "displayName": "USF Department of Pediatrics",
          "emrIdentifier": {
            "emrId": "peds5"
          },
          "fax": "",
          "id": "602b5bb2-a7ee-5ba8-85bf-db144cdbef98",
          "isBookableOnline": false,
          "isBookablePhone": false,
          "isBookableVirtual": false,
          "isNewPatientEnabled": false,
          "isReturningPatientEnabled": false,
          "phoneNumber": "7278286390",
          "resultType": "department",
          "timezone": "",
          "url": "https://www.getcare.tgh.org/locations/fl/st.-petersburg/usf-department-of-pediatrics-peds5"
        },
        {
          "address": {
            "addressLine1": "1315 E 7th Ave",
            "addressLine2": "STE 104",
            "city": "Tampa",
            "country": "US",
            "county": "Hillsborough County",
            "latitude": 27.96015139999999,
            "longitude": -82.4448499,
            "postalCode": "33605",
            "state": "FL"
          },
          "displayName": "USF Department of Pediatrics",
          "emrIdentifier": {
            "emrId": "peds"
          },
          "fax": "",
          "id": "5a207161-c1c2-5c63-8bcf-6690982ecb12",
          "isBookableOnline": false,
          "isBookablePhone": false,
          "isBookableVirtual": false,
          "isNewPatientEnabled": false,
          "isReturningPatientEnabled": false,
          "phoneNumber": "8138218700",
          "resultType": "department",
          "timezone": "",
          "url": "https://www.getcare.tgh.org/locations/fl/tampa/usf-department-of-pediatrics-peds"
        },
        {
          "address": {
            "addressLine1": "3003 W M.L.K. Jr Blvd",
            "city": "Tampa",
            "country": "US",
            "county": "Hillsborough County",
            "latitude": 27.9826585,
            "longitude": -82.4922184,
            "postalCode": "33607",
            "state": "FL"
          },
          "displayName": "USF Department of Pediatrics",
          "emrIdentifier": {
            "emrId": "peds4"
          },
          "fax": "",
          "id": "9902a122-b8d7-52bf-ae8f-4d7ffadfab39",
          "isBookableOnline": false,
          "isBookablePhone": false,
          "isBookableVirtual": false,
          "isNewPatientEnabled": false,
          "isReturningPatientEnabled": false,
          "phoneNumber": "",
          "resultType": "department",
          "timezone": "",
          "url": "https://www.getcare.tgh.org/locations/fl/tampa/usf-department-of-pediatrics-peds4"
        },
        {
          "address": {
            "addressLine1": "13101 Bruce B Downs Blvd",
            "city": "Tampa",
            "country": "US",
            "county": "Hillsborough County",
            "latitude": 28.0662871,
            "longitude": -82.4251654,
            "postalCode": "33612",
            "state": "FL"
          },
          "displayName": "USF Department of Pediatrics",
          "emrIdentifier": {
            "emrId": "USFDOGIH"
          },
          "fax": "",
          "id": "5521ab2b-7bf0-5532-b2f4-f1fc14caabef",
          "isBookableOnline": false,
          "isBookablePhone": false,
          "isBookableVirtual": false,
          "isNewPatientEnabled": false,
          "isReturningPatientEnabled": false,
          "phoneNumber": "8138218700",
          "resultType": "department",
          "timezone": "",
          "url": "https://www.getcare.tgh.org/locations/fl/tampa/usf-department-of-pediatrics-usfdogih"
        }
      ],
      "badges": [
        "Languages: Spanish",
        "Specialty: Pediatrics",
        "Specialty: Pediatric Infectious Diseases",
        "Department Name: USF Department of Pediatrics"
      ],
      "distances": [
        2395.947592132535,
        2400.4371755799466,
        2397.1523949160346,
        2398.201168183439
      ]
    },
    {
      "@search.score": 0.146030273843954,
      "@search.highlights": {
        "languages": [
          "<strong>Spanish</strong>"
        ],
        "specialties.name": [
          "<strong>Pediatrics</strong>"
        ],
        "conditionsTreated": [
          "<strong>Pediatrics</strong>"
        ],
        "departments.displayName": [
          "<strong>USF Department of Pediatrics</strong>"
        ]
      },
      "credentials": [
        "MD"
      ],
      "emrIdentifiers": [
        {
          "emrId": "176255"
        }
      ],
      "networks": [],
      "profileUrls": [
        {
          "brandName": "tgh",
          "url": "https://www.getcare.tgh.org/providers/vinita-kiluk-1033113485"
        }
      ],
      "reviews": [],
      "subSpecialties": [
        {
          "name": "Primary Care"
        },
        {
          "name": "PCP"
        },
        {
          "name": "Pediatrics"
        }
      ],
      "id": "937fd51a-9cdc-5458-b936-663f6ce375ac-tgh|8fe022a5-d303-5457-98ab-322fd0f64c07-tgh",
      "isAcceptingNewPatients": false,
      "isBookableOnline": false,
      "isBookablePhone": false,
      "isBookableVirtual": false,
      "isNewPatientEnabled": true,
      "isReturningPatientEnabled": true,
      "name": {
        "first": "Vinita",
        "last": "Kiluk",
        "middles": [
          "C."
        ]
      },
      "npi": "1033113485",
      "resultType": "clinician",
      "@search.features": {
        "NewClinic": {
          "similarityScore": 0
        },
        "NewVideo": {
          "similarityScore": 0
        },
        "FollowUpClinic": {
          "similarityScore": 0
        },
        "FollowUpVideo": {
          "similarityScore": 0
        },
        "languages": {
          "similarityScore": 2
        },
        "specialties.name": {
          "similarityScore": 3
        }
      },
      "@search.distance": {
        "type": "absolute",
        "miles": 2400.394606215234,
        "numeric": 41.17035847283433
      },
      "departments": [
        {
          "address": {
            "addressLine1": "17 Davis Blvd",
            "city": "Tampa",
            "country": "US",
            "county": "Hillsborough County",
            "latitude": 27.936125,
            "longitude": -82.45941599999999,
            "postalCode": "33606",
            "state": "FL"
          },
          "displayName": "USF Department of Pediatrics",
          "emrIdentifier": {
            "emrId": "tghlocation_161"
          },
          "fax": "8132598710",
          "id": "8fe022a5-d303-5457-98ab-322fd0f64c07",
          "isBookableOnline": false,
          "isBookablePhone": false,
          "isBookableVirtual": false,
          "isNewPatientEnabled": false,
          "isReturningPatientEnabled": false,
          "phoneNumber": "8138218700",
          "resultType": "department",
          "timezone": "",
          "url": "https://www.getcare.tgh.org/locations/fl/tampa/usf-department-of-pediatrics-tghlocation_161"
        }
      ],
      "badges": [
        "Languages: Spanish",
        "Conditions Treated: Pediatrics",
        "Department Name: USF Department of Pediatrics"
      ],
      "distances": [
        2400.394606215234
      ],
      "imageUrl": null
    }
  ],
  "skip": "3,0",
  "cliniciansCount": 265,
  "geoip": {
    "success": true,
    "error": null,
    "disclaimer": "This service may only be used by DexCare, Inc. products and services.",
    "ip": "99.112.68.46",
    "city": "San Francisco",
    "state": "CA",
    "coordinates": {
      "lat": 37.7825,
      "lng": -122.435
    },
    "type": "ip"
  }
}

Searching for Departments By Distance

In this example we will use the search endpoint to find family medicine departments sorted by distance from an address. To do this we will:

  • set the departments flag to “true” and the providers flag to false
  • set the search parameter of “family medicine”
  • provider a specific street address. for the location parameter

Example Request

curl --location 'womphealthtestapi.azurewebsites.net/api/OmniSearch?type=search&brand=demo&departments=true&providers=false&top=3&search=family%20medicine&location=400+Broad+St%2C+Seattle%2C+WA' \
--header 'Accept: application/json'

Example Response

{
    "info": {
        "search": "cancer",
        "filters": [
            {
                "value": "cancer",
                "text": "cancer",
                "facets": [],
                "auto": true
            }
        ],
        "locations": [],
        "facets": {},
        "any": false,
        "some": false,
        "type": [],
        "matches": [
            "tgh cancer institute south tampa",
            "tampa general hospital cancer institute",
            "tgh cancer institute st. petersburg"
        ],
        "providerPosts": [],
        "locationPosts": [
            {
                "search": "cancer",
                "top": 3,
                "highlightPreTag": "<strong>",
                "highlightPostTag": "</strong>",
                "skip": 0,
                "orderby": [
                    {
                        "type": "score"
                    }
                ],
                "match": {
                    "type": "or",
                    "matches": [
                        {
                            "type": "term",
                            "text": "cancer"
                        },
                        {
                            "type": "term",
                            "text": "hospital cancer institute"
                        }
                    ]
                },
                "geolocation": {
                    "success": true,
                    "error": null,
                    "disclaimer": "This service may only be used by DexCare, Inc. products and services.",
                    "ip": "127.0.0.1",
                    "city": "San Francisco",
                    "state": "CA",
                    "coordinates": {
                        "lat": 37.7952,
                        "lng": -122.4028
                    },
                    "type": "ip"
                }
            }
        ]
    },
    "results": [
        {
            "@search.score": 0.1467210786604874,
            "@search.highlights": {
                "displayName": [
                    "<strong>TMBG</strong>"
                ]
            },
            "specialties": [],
            "address": {
				"addressLine1": "1313 Mockingbird Lane",
				"city": "Mockingbird Heights,
				"country": "US",
				"county": "Los Angeles",
				"latitude": 34.1371,
				"longitude": -118.3533,
				"postalCode": "91608",
				"state": "CA"
            },
            "brandName": "tgh",
            "displayName": "TGH Cancer Institute South Tampa",
            "emrIdentifier": {
                "emrId": "yourorglocation_1002",
                "emrSystemId": "yourorg"
            },
            "fax": "5555552001",
            "id": "12349175-155d-53d0-a37e-7c892a9b1673",
            "isAcceptingNewPatients": false,
            "isBookableOnline": false,
            "isBookablePhone": false,
            "isBookableVirtual": false,
            "isNewPatientEnabled": false,
            "isReturningPatientEnabled": false,
            "phoneNumber": "5555552000",
            "resultType": "department",
            "url": "https://www.getcare.yourorg.org/locations/ca/la/etc",
            "@search.features": {
                "NewClinic": {
                    "similarityScore": 0
                },
                "NewVideo": {
                    "similarityScore": 0
                },
                "FollowUpClinic": {
                    "similarityScore": 0
                },
                "FollowUpVideo": {
                    "similarityScore": 0
                },
                "displayName": {
                    "similarityScore": 5
                }
            },
            "@search.distance": {
                "type": "absolute",
                "miles": 2398.904239227494,
                "numeric": 41.144504678265314
            },
            "clinicians": [],
            "badges": [
                "Name: TMBG"
            ],
            "distance": 2398.904239227494
        },
        {
            "@search.score": 0.14604217280773008,
            "@search.highlights": {
                "displayName": [
                    "<strong>TMBG</strong>"
                ]
            },
            "specialties": [],
            "address": {
                "addressLine1": "1313 Mockingbird Lane",
                "city": "Mockingbird Heights,
                "country": "US",
                "county": "Los Angeles",
                "latitude": 34.1371,
                "longitude": -118.3533,
                "postalCode": "91608",
                "state": "CA"
            },
            "brandName": "yourbrand",
            "displayName": "TMBG",
            "emrIdentifier": {
                "emrId": "tghlocation_78",
                "emrSystemId": "tampa-clearwave"
            },
            "fax": "5555551001",
            "id": "1234620b-617b-566f-96f7-9c2311e4063d",
            "imageUrl": "https://www.yourorg.org/-/media/dexcare/location/1234.jpg",
            "isAcceptingNewPatients": false,
            "isBookableOnline": false,
            "isBookablePhone": false,
            "isBookableVirtual": false,
            "isNewPatientEnabled": false,
            "isReturningPatientEnabled": false,
            "phoneNumber": "5555551000",
            "resultType": "department",
            "url": "https://www.getcare.yourorg.org/locations/ca/la/tmbg",
            "@search.features": {
                "NewClinic": {
                    "similarityScore": 0
                },
                "NewVideo": {
                    "similarityScore": 0
                },
                "FollowUpClinic": {
                    "similarityScore": 0
                },
                "FollowUpVideo": {
                    "similarityScore": 0
                },
                "displayName": {
                    "similarityScore": 5
                }
            },
            "@search.distance": {
                "type": "absolute",
                "miles": 2400.3985268507536,
                "numeric": 41.17084238746305
            },
            "clinicians": [],
            "badges": [
                "Name: TMBG"
            ],
            "distance": 2400.3985268507536
        },
        {
            "@search.score": 0.14686883182816682,
            "@search.highlights": {
                "displayName": [
                    "<strong>TMBG</strong>"
                ]
            },
            "specialties": [],
            "address": {
                "1313 Mockingbird Lane",
                "city": "Mockingbird Heights,
                 "country": "US",
                 "county": "Los Angeles",
                  "latitude": 34.1371,
                  "longitude": -118.3533,
                  "postalCode": "91608",
                  "state": "CA"
            },
            "brandName": "tgh",
            "displayName": "TGH Cancer Institute St. Petersburg",
            "emrIdentifier": {
                "emrId": "tghlocation_1001",
                "emrSystemId": "tampa-clearwave"
            },
            "id": "123457f9-ae2c-5b12-87d6-4356b4990194",
            "isAcceptingNewPatients": false,
            "isBookableOnline": false,
            "isBookablePhone": false,
            "isBookableVirtual": false,
            "isNewPatientEnabled": false,
            "isReturningPatientEnabled": false,
            "phoneNumber": "5555551000",
            "resultType": "department",
            "url": "https://www.getcare.tgh.org/locations/fl/st.-petersburg/tgh-cancer-institute-st.-petersburg-tghlocation_1001",
            "@search.features": {
                "NewClinic": {
                    "similarityScore": 0
                },
                "NewVideo": {
                    "similarityScore": 0
                },
                "FollowUpClinic": {
                    "similarityScore": 0
                },
                "FollowUpVideo": {
                    "similarityScore": 0
                },
                "displayName": {
                    "similarityScore": 5
                }
            },
            "@search.distance": {
                "type": "absolute",
                "miles": 2394.3928325869883,
                "numeric": 41.02563081234169
            },
            "clinicians": [],
            "badges": [
                "Name: TMBG"
            ],
            "distance": 2394.3928325869883
        }
    ],
    "skip": "0,3",
    "departmentsCount": 11,
    "geoip": {
        "success": true,
        "error": null,
        "disclaimer": "This service may only be used by DexCare, Inc. products and services.",
        "ip": "127.0.0.1",
        "city": "San Francisco",
        "state": "CA",
        "coordinates": {
            "lat": 37.7952,
            "lng": -122.4028
        },
        "type": "ip"
    }
}

Searching Using Facets

Any field marked as “facet-able” in the your configuration may be used as a search parameter to the search endpoint. For instance in the example below we set our search parameters to be gender = “female” and specialties.name is set to “psychiatrist”

Example Request

/api/OmniSearch?brand=tgh&type=search&gender=female&specialties.name=psychiatrist

Example Response

{
    "info": {
        "search": "",
        "filters": [
            {
                "value": "female",
                "facets": [
                    {
                        "name": "gender",
                        "value": "female"
                    }
                ]
            },
            {
                "value": "psychiatrist",
                "facets": [
                    {
                        "name": "specialties.name",
                        "value": "psychiatrist"
                    }
                ]
            }
        ],
        "facets": {
            "gender": [
                "female"
            ],
            "specialties.name": [
                "psychiatrist"
            ]
        },
        "any": true,
        "some": false,
        "type": [
            "gender",
            "specialties.name"
        ],
        "matches": [
            "female"
        ]
    },
    "results": [
        {
            "@search.score": 0.2059890135529591,
            "@search.highlights": {
                "gender": [
                    "<strong>female</strong>"
                ]
            },
            "id": "b66981bd-84f2-5e81-b7c3-68fa5c83defe-tgh|270d28fe-9f8c-5bfc-816d-7ffa0016d153-tgh",
            "bio": "Dr. [Name] is a board-certified osteopathic family medicine physician. They earned their medical degree from a recognized institution and completed their residency in family medicine at a reputable medical center, where they held the role of chief resident during their final year.",
            "credentials": [
                "DO"
            ],
            "emrIdentifiers": [
                {
                    "emrId": "123456"
                }
            ],
            "imageUrl": "https://www.yourorg.org/-/media/dexcare/provider/12345.jpg",
            "isAcceptingNewPatients": true,
            "isBookableOnline": true,
            "isBookablePhone": false,
            "isBookableVirtual": false,
            "isNewPatientEnabled": true,
            "isReturningPatientEnabled": true,
            "name": {
                "first": "Jane",
                "last": "Doe",
                "middles": [
                    ""
                ]
            },
            "networks": [],
            "npi": "1962672584",
            "profileUrls": [
                {
                    "brandName": "yourbrand",
                    "url": "https://www.getcare.yourorf.org/providers/jane-doe-1234"
                }
            ],
            "resultType": "clinician",
            "reviews": [],
            "subSpecialties": [
                {
                    "name": "Family Medicine"
                },
                {
                    "name": "Primary Care"
                },
                {
                    "name": "PCP"
                }
            ],
            "@search.features": {
                "gender": {
                    "similarityScore": 2
                },
                "NewClinic": {
                    "similarityScore": 5
                },
                "NewVideo": {
                    "similarityScore": 0
                },
                "FollowUpClinic": {
                    "similarityScore": 0.5
                },
                "FollowUpVideo": {
                    "similarityScore": 0
                }
            },
            "@search.distance": {
                "type": "absolute",
                "miles": 2408.4990861604315,
                "numeric": 41.26436242126523
            },
            "departments": [
                {
                    "address": {
                        "addressLine1": "1313 Mockingbird Lane",
                        "city": "Mockingbird Heights,
                        "country": "US",
                        "county": "Los Angeles",
                        "latitude": 34.1371,
                        "longitude": -118.3533,
                        "postalCode": "91608",
                        "state": "CA"
                    },
                    "displayName": "TMBG",
                    "emrIdentifier": {
                        "emrId": "102049001"
                    },
                    "fax": "8138441141",
                    "id": "270d28fe-9f8c-5bfc-816d-7ffa0016d153",
                    "isBookableOnline": true,
                    "isBookablePhone": false,
                    "isBookableVirtual": false,
                    "isNewPatientEnabled": true,
                    "isReturningPatientEnabled": false,
                    "phoneNumber": "8138447500",
                    "resultType": "department",
                    "timezone": "America/Lost_Angeles",
                    "url": "https://www.getcare.yourorg.org/locations/ca/tmbg"
                }
            ],
            "badges": [
                "Gender: female"
            ],
            "distances": [
                2408.4990861604315
            ]
        }
    ],
    "categories": [],
    "facets": [],
    "skip": "1,0",
    "providersCount": 541,
    "@odata.count": 541,
    "geoip": {
        "success": true,
        "error": null,
        "disclaimer": "This service may only be used by DexCare, Inc. products and services.",
        "ip": "127.0.0.1",
        "city": "San Francisco",
        "state": "CA",
        "coordinates": {
            "lat": 37.7952,
            "lng": -122.4028
        },
        "type": "ip"
    }
}

Autocomplete Queries

Autocomplete type queries will generate suggested queries based on the text provider in the search property.

Suggestions for the search word “pre”

Example Request

curl --location 'womphealthtestapi.azurewebsites.net/api/OmniSearch?type=autocomplete&brand=demo&top=3&search=pre' \
--header 'Accept: application/json'

Example Response

{
    "@odata.context": "https://womphealth-search-demo.search.windows.net/indexes('providers-test-alias')/$metadata#Collection(Microsoft.Azure.Search.V2021_04_30_Preview.AutocompleteItem)",
    "value": [
        {
            "text": "preventive",
            "queryPlusText": "<strong>preventive</strong>"
        }
    ]
}

Retrieving Synonyms

Use the Omni Synonyms API endpoint /api/OmniSynonyms to test search terms and view the expanded results, including synonyms like family medicine and internal medicine.

This endpoint will return a list of synonyms as a string array.

For instance you could use the following curl request to see what synonyms are returned for the keyword “headache” from our test server for the “piedmont” brand:

Example Request

curl 'https://womphealthtestapi.azurewebsites.net/api/OmniSynonyms?brand=piedmont&search=headache'  

Example Response

{
  "synonyms": [
    "headache medicine",
    "internal medicine",
    "neurohospitalist",
    ...
    "vertex headaches"
  ]
}

Frequently Asked Questions

How Often is Omni Search Data Updated?

The data used by Omni Search is reindexed every 15 minutes to ensure what is displayed in search results is up to date.

A refresh of the cache data may be invoked programmatically using the /api/OmniCacheService endpoint.