openapi: 3.2.0 info: title: Fhir Patient Access Related Person API description: "**Patient Access API for CMS 9115-F**\n\nTo access the DentaQuest Patient Access API, a third-party application must obtain a valid JWT token by following the SMART on FHIR authorization framework.\n\n**1. Get Your Credentials** To begin, you must request a `client_id` and `client_secret` by completing the request form available at: [Logic Manager Form](https://dentaquest.logicmanager.com/incidents/?t=1241&p=215&k=F0E3BD92F157F9B73EDE82834286E7CEA4044134B39D92AC3EE7E56392194241)\n\n**2. Authorize and Get a Token** With your credentials, you can initiate the authorization flow to obtain member consent and exchange the resulting authorization code for a JWT token.\n\n- **Authorization Endpoint:** `https://api.dentaquest.com/FhirPatientAccess/v1/authorize`\n \n- **Token Endpoint:** `https://api.dentaquest.com/FhirPatientAccess/v1/token`\n \n\nFor a detailed guide on this process, refer to the [SMART App Launch Framework](https://hl7.org/fhir/smart-app-launch/1.0.0/).\n\n### **API Standards and Conformance**\n\nThis API conforms to the following standards and implementation specifications:\n\n- **FHIR Version:** `4.0.1` (R4)\n \n- **Implementation Guide:** `HL7 US Core Implementation Guide 7.0.0-ballot`\n \n- **Security:** \n - `SMART Application Launch Framework Implementation Guide Release 1.0.0`\n - `OpenID Connect Core 1.0`\n \n\n### **Exception Handling**\n\nThe API uses standard HTTP status codes to indicate the success or failure of a request. In the event of an error (HTTP status codes `4xx` or `5xx`), for example an invalid SMART on FHIR Token (`403 Forbidden`) or a malformed request (`400 Bad Request`). The response body will also contain a FHIR `OperationOutcome` resource. This resource provides detailed, structured information about the error, including severity, error codes, and human-readable diagnostics to assist with troubleshooting.\n\n### **Exception Response**\n| HTTP Status | Response | Reason |\n| ----------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |\n| **400** | `Bad Request` | The request could not be understood by the server due to malformed syntax (e.g., an invalid parameter). |\n| **401** | `Unauthorized` | The request lacks valid authentication credentials. This may occur if the JWT token is missing, expired, or invalid. |\n| **403** | `Forbidden` | The server understood the request, but refuses to authorize it. This may occur if the member has not granted the application access. |\n| **404** | `Not Found` | The requested FHIR resource (e.g., a specific Patient or Coverage record) does not exist. |\n| **500** | `Internal Server Error` | The server encountered an unexpected condition that prevented it from fulfilling the request. |\n\n" version: v1 servers: - url: https://api.dentaquest.com/FhirPatientAccess/v1 - url: https://api.deltadentalma.com/FhirPatientAccess/v1 tags: - name: RelatedPerson paths: /RelatedPerson: get: summary: /RelatedPerson - GET description: /RelatedPerson - GET operationId: get-relatedperson parameters: - name: phone in: query description: "Multiple Resources: \n\n* [Patient](patient.html): A value in a phone contact\n* [Person](person.html): A value in a phone contact\n* [Practitioner](practitioner.html): A value in a phone contact\n* [PractitionerRole](practitionerrole.html): A value in a phone contact\n* [RelatedPerson](relatedperson.html): A value in a phone contact" schema: type: string - name: relationship in: query description: The relationship between the patient and the relatedperson schema: type: string - name: address in: query description: "Multiple Resources: \n\n* [Patient](patient.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\n* [Person](person.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\n* [Practitioner](practitioner.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\n* [RelatedPerson](relatedperson.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text" schema: type: string - name: birthdate in: query description: "Format - date (as full-date in RFC3339). Format - date (as full-date in RFC3339). Multiple Resources: \n\n* [Patient](patient.html): The patient's date of birth\n* [Person](person.html): The person's date of birth\n* [RelatedPerson](relatedperson.html): The Related Person's date of birth" schema: type: string format: date - name: phonetic in: query description: "Multiple Resources: \n\n* [Patient](patient.html): A portion of either family or given name using some kind of phonetic matching algorithm\n* [Person](person.html): A portion of name using some kind of phonetic matching algorithm\n* [Practitioner](practitioner.html): A portion of either family or given name using some kind of phonetic matching algorithm\n* [RelatedPerson](relatedperson.html): A portion of name using some kind of phonetic matching algorithm" schema: type: string - name: active in: query description: Indicates if the related person record is active schema: type: string - name: address-state in: query description: "Multiple Resources: \n\n* [Patient](patient.html): A state specified in an address\n* [Person](person.html): A state specified in an address\n* [Practitioner](practitioner.html): A state specified in an address\n* [RelatedPerson](relatedperson.html): A state specified in an address" schema: type: string - name: _id in: query description: Logical id of this artifact schema: type: string - name: _profile in: query description: Profiles this resource claims to conform to schema: type: string - name: gender in: query description: "Multiple Resources: \n\n* [Patient](patient.html): Gender of the patient\n* [Person](person.html): The gender of the person\n* [Practitioner](practitioner.html): Gender of the practitioner\n* [RelatedPerson](relatedperson.html): Gender of the related person" schema: type: string - name: address-country in: query description: "Multiple Resources: \n\n* [Patient](patient.html): A country specified in an address\n* [Person](person.html): A country specified in an address\n* [Practitioner](practitioner.html): A country specified in an address\n* [RelatedPerson](relatedperson.html): A country specified in an address" schema: type: string - name: _lastUpdated in: query description: Format - date (as full-date in RFC3339). Format - date (as full-date in RFC3339). When the resource version last changed schema: type: string format: date - name: _security in: query description: Security Labels applied to this resource schema: type: string - name: patient in: query description: The patient this related person is related to schema: type: string - name: address-postalcode in: query description: "Multiple Resources: \n\n* [Patient](patient.html): A postalCode specified in an address\n* [Person](person.html): A postal code specified in an address\n* [Practitioner](practitioner.html): A postalCode specified in an address\n* [RelatedPerson](relatedperson.html): A postal code specified in an address" schema: type: string - name: _source in: query description: Identifies where the resource comes from schema: type: string - name: address-use in: query description: "Multiple Resources: \n\n* [Patient](patient.html): A use code specified in an address\n* [Person](person.html): A use code specified in an address\n* [Practitioner](practitioner.html): A use code specified in an address\n* [RelatedPerson](relatedperson.html): A use code specified in an address" schema: type: string - name: address-city in: query description: "Multiple Resources: \n\n* [Patient](patient.html): A city specified in an address\n* [Person](person.html): A city specified in an address\n* [Practitioner](practitioner.html): A city specified in an address\n* [RelatedPerson](relatedperson.html): A city specified in an address" schema: type: string - name: name in: query description: A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text schema: type: string - name: _tag in: query description: Tags applied to this resource schema: type: string - name: identifier in: query description: An Identifier of the RelatedPerson schema: type: string - name: email in: query description: "Multiple Resources: \n\n* [Patient](patient.html): A value in an email contact\n* [Person](person.html): A value in an email contact\n* [Practitioner](practitioner.html): A value in an email contact\n* [PractitionerRole](practitionerrole.html): A value in an email contact\n* [RelatedPerson](relatedperson.html): A value in an email contact" schema: type: string - name: telecom in: query description: "Multiple Resources: \n\n* [Patient](patient.html): The value in any kind of telecom details of the patient\n* [Person](person.html): The value in any kind of contact\n* [Practitioner](practitioner.html): The value in any kind of contact\n* [PractitionerRole](practitionerrole.html): The value in any kind of contact\n* [RelatedPerson](relatedperson.html): The value in any kind of contact" schema: type: string - name: _format in: query description: Output formatting schema: type: string responses: '200': description: Success tags: - RelatedPerson /RelatedPerson/{id}: get: summary: /RelatedPerson/{id} - GET description: /RelatedPerson/{id} - GET operationId: get-relatedperson-id parameters: - name: id in: path description: id of resource required: true schema: type: string responses: '200': description: Success tags: - RelatedPerson /RelatedPerson/{id}/_history/{vid}: get: summary: /RelatedPerson/{id}/_history/{vid} - GET description: /RelatedPerson/{id}/_history/{vid} - GET operationId: get-relatedperson-id-_history-vid parameters: - name: id in: path description: id of resource required: true schema: type: string - name: vid in: path description: version id of resource required: true schema: type: string responses: '200': description: Success tags: - RelatedPerson /RelatedPerson/{id}/_history: get: summary: /RelatedPerson/{id}/_history - GET description: /RelatedPerson/{id}/_history - GET operationId: get-relatedperson-id-_history parameters: - name: id in: path description: id of resource required: true schema: type: string - name: _count in: query description: number to return schema: type: string - name: _since in: query description: how far back schema: type: string responses: '200': description: Success tags: - RelatedPerson /RelatedPerson/_history: get: summary: /RelatedPerson/_history - GET description: /RelatedPerson/_history - GET operationId: get-relatedperson-_history parameters: - name: _count in: query description: number to return schema: type: string - name: _since in: query description: how far back schema: type: string responses: '200': description: Success tags: - RelatedPerson