openapi: 3.2.0 info: title: Fhir Patient Access Coverage 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: Coverage paths: /Coverage: get: summary: /Coverage - GET description: /Coverage - GET operationId: get-coverage parameters: - name: payor in: query description: The identity of the insurer or party paying for services 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: type in: query description: The kind of coverage (health plan, auto, Workers Compensation) schema: type: string - name: subscriber in: query description: Reference to the subscriber schema: type: string - name: status in: query description: The status of the Coverage schema: type: string - name: policy-holder in: query description: Reference to the policyholder schema: type: string - name: class-value in: query description: Value of the class (eg. Plan number, group number) 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: Retrieve coverages for a patient schema: type: string - name: beneficiary in: query description: Covered party schema: type: string - name: _source in: query description: Identifies where the resource comes from schema: type: string - name: _tag in: query description: Tags applied to this resource schema: type: string - name: identifier in: query description: The primary identifier of the insured and the coverage schema: type: string - name: class-type in: query description: Coverage class (eg. plan, group) schema: type: string - name: dependent in: query description: Dependent number schema: type: string - name: _format in: query description: Output formatting schema: type: string responses: '200': description: Success tags: - Coverage /Coverage/{id}: get: summary: /Coverage/{id} - GET description: /Coverage/{id} - GET operationId: get-coverage-id parameters: - name: id in: path description: id of resource required: true schema: type: string responses: '200': description: Success tags: - Coverage /Coverage/{id}/_history/{vid}: get: summary: /Coverage/{id}/_history/{vid} - GET description: /Coverage/{id}/_history/{vid} - GET operationId: get-coverage-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: - Coverage /Coverage/{id}/_history: get: summary: /Coverage/{id}/_history - GET description: /Coverage/{id}/_history - GET operationId: get-coverage-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: - Coverage /Coverage/_history: get: summary: /Coverage/_history - GET description: /Coverage/_history - GET operationId: get-coverage-_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: - Coverage