openapi: 3.0.0 info: title: Real Provider Access API description: FHIR Provider Access APIs version: 1.0.0 servers: - url: https://sandbox-apigw.optum.com paths: /oihub/fhirprovideraccess/v1/R4/{payerId}/{lob}/Group/$bulk-member-match: post: operationId: bulkMemberMatch tags: - ProviderAccessBulkMemberMatch security: - oAuth: - read_healthcheck parameters: - name: payerId in: path required: true schema: type: string example: '87726' - name: lob in: path required: true schema: type: string example: bh - name: x-optum-consumer-correlation-id in: header schema: type: string description: Unique transaction identifier example: uuid-123 - name: environment in: header schema: type: string description: Environment name example: sandbox requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BulkMemberMatchRequest' example: resourceType: Parameters id: provider-bulk-member-match-in meta: profile: - http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/provider-parameters-multi-member-match-bundle-in parameter: - name: MembersToMatch part: - name: MemberPatient resource: resourceType: Patient id: patient-provider-1 text: status: generated div:
Patient firstName lastName
identifier: - type: coding: - system: http://terminology.hl7.org/CodeSystem/v2-0203 code: MB system: http://example.org/provider-emr/identifiers/patient value: EMR-98765 assigner: display: Provider 1 EMR System name: - use: official family: Person given: - givenName - givenName2 gender: female birthDate: '1974-12-25' - name: CoverageToMatch resource: resourceType: Coverage id: coverage-provider-1 text: status: generated div:
Coverage information from insurance card
identifier: - type: coding: - system: http://terminology.hl7.org/CodeSystem/v2-0203 code: MB system: http://example.org/health-plan value: HP-12345678 status: active subscriberId: SUB-987654321 beneficiary: reference: Patient/patient-provider-1 relationship: coding: - system: http://terminology.hl7.org/CodeSystem/subscriber-relationship code: self period: start: '2024-01-01' end: '2024-12-31' payor: - identifier: system: http://hl7.org/fhir/sid/us-npi value: '1234567890' display: Example Health Plan class: - type: coding: - system: http://terminology.hl7.org/CodeSystem/coverage-class code: group value: GRP-001 - type: coding: - system: http://terminology.hl7.org/CodeSystem/coverage-class code: plan value: PLAN-GOLD - name: Consent resource: resourceType: Consent id: consent-provider-1 text: status: generated div:
Provider attestation to treatment relationship
status: active scope: coding: - system: http://terminology.hl7.org/CodeSystem/consentscope code: treatment category: - coding: - system: http://terminology.hl7.org/CodeSystem/v3-ActCode code: IDSCL display: Information Disclosure - coding: - system: http://loinc.org code: 64292-6 display: Release of information consent patient: reference: Patient/patient-provider-1 dateTime: '2024-11-14T10:30:00Z' performer: - reference: Practitioner/4 display: Dr. Susan Smith sourceReference: reference: DocumentReference/provider-attestation-doc-1 policy: - uri: https://example.org/provider-attestation-policy verification: - verified: true verifiedWith: reference: Patient/patient-provider-1 verificationDate: '2024-11-14T10:30:00Z' provision: type: permit period: start: '2024-01-15' actor: - role: coding: - system: http://terminology.hl7.org/CodeSystem/v3-ParticipationType code: IRCP reference: identifier: system: http://hl7.org/fhir/sid/us-npi value: '1982943213' display: Dr. Susan Smith - role: coding: - system: http://terminology.hl7.org/CodeSystem/v3-RoleClass code: PROV reference: identifier: system: http://hl7.org/fhir/sid/us-npi value: '1982947230' display: Provider 1 purpose: - system: http://terminology.hl7.org/CodeSystem/v3-ActReason code: TREAT - system: http://terminology.hl7.org/CodeSystem/v3-ActReason code: HPAYMT - system: http://terminology.hl7.org/CodeSystem/v3-ActReason code: HOPERAT responses: '200': description: Bulk member match response content: application/json: schema: $ref: '#/components/schemas/BulkMemberMatchResponse' example: resourceType: Parameters id: provider-bulk-member-match-out meta: profile: - http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/provider-parameters-multi-member-match-bundle-out parameter: - name: MatchedMembers resource: resourceType: Group id: provider-matched-group-001 text: status: generated div:
Matched members group - members authorized for provider access
contained: - resourceType: Patient id: provider-submitted-patient-1 identifier: - type: coding: - system: http://terminology.hl7.org/CodeSystem/v2-0203 code: MR system: http://example.org/provider-emr/identifiers/patient value: EMR-98765 assigner: display: Provider 1 EMR System name: - use: official family: Person given: - givenName - givenName2 gender: female birthDate: '1974-12-25' - resourceType: Patient id: provider-submitted-patient-2 identifier: - type: coding: - system: http://terminology.hl7.org/CodeSystem/v2-0203 code: MR system: http://example.org/provider-emr/identifiers/patient value: EMR-45678 assigner: display: Provider 1 EMR System name: - use: official family: Doe given: - John - Michael gender: male birthDate: '1985-06-15' identifier: - system: http://hl7.org/fhir/sid/us-npi value: '1982947230' assigner: display: Provider 1 type: person actual: true code: coding: - system: http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS code: match display: Matched managingEntity: identifier: system: http://hl7.org/fhir/sid/us-npi value: '1234567890' display: Example Health Plan characteristic: - code: coding: - system: http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS code: match display: Matched valueReference: identifier: system: http://hl7.org/fhir/sid/us-npi value: '1982947230' display: Provider 1 exclude: false period: start: '2024-11-14' member: - entity: extension: - url: http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters valueReference: reference: '#provider-submitted-patient-1' reference: Patient/payer-patient-1001 display: GivenName LastName - Payer Record - entity: extension: - url: http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters valueReference: reference: '#provider-submitted-patient-2' reference: Patient/payer-patient-2002 display: John Michael Doe - Payer Record - name: NonMatchedMembers resource: resourceType: Group id: provider-nomatch-group-001 text: status: generated div:
Non-matched members group - members not found in payer system
contained: - resourceType: Patient id: provider-submitted-patient-3 identifier: - type: coding: - system: http://terminology.hl7.org/CodeSystem/v2-0203 code: MR system: http://example.org/provider-emr/identifiers/patient value: EMR-99999 assigner: display: Provider 1 EMR System name: - use: official family: Smith given: - GivenName - GivenName2 gender: female birthDate: '1990-03-20' identifier: - system: http://hl7.org/fhir/sid/us-npi value: '1982947230' assigner: display: Provider 1 type: person actual: true code: coding: - system: http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS code: nomatch display: Not Matched managingEntity: identifier: system: http://hl7.org/fhir/sid/us-npi value: '1234567890' display: Example Health Plan member: - entity: extension: - url: http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters valueReference: reference: '#provider-submitted-patient-3' reference: '#provider-submitted-patient-3' display: GivenName GivenName2 Smith - Not Found - name: ConsentConstrainedMembers resource: resourceType: Group id: provider-consent-constraint-group-001 text: status: generated div:
Consent-constrained members group - members who opted out of Provider Access API
contained: - resourceType: Patient id: provider-submitted-patient-4 identifier: - type: coding: - system: http://terminology.hl7.org/CodeSystem/v2-0203 code: MR system: http://example.org/provider-emr/identifiers/patient value: EMR-77777 assigner: display: Provider 1 EMR System name: - use: official family: Wilson given: - GivenName - GivenName2 gender: male birthDate: '1978-11-30' identifier: - system: http://hl7.org/fhir/sid/us-npi value: '1982947230' assigner: display: Provider 1 type: person actual: true code: coding: - system: http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS code: consentconstraint display: Consent Constraint managingEntity: identifier: system: http://hl7.org/fhir/sid/us-npi value: '1234567890' display: Example Health Plan member: - entity: extension: - url: http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters valueReference: reference: '#provider-submitted-patient-4' reference: '#provider-submitted-patient-4' display: GivenName GivenName2 Wilson - Opted Out '400': description: Bad Request content: application/json: example: message: Bad Request statusCode: 400 '401': description: UnAuthorized content: application/json: example: message: UnAuthorized statusCode: 401 '406': description: Not Acceptable content: application/json: example: message: Not Acceptable statusCode: 406 '500': description: Internal Server Error content: application/json: example: message: Internal server error statusCode: 500 /oihub/fhirprovideraccess/v1/R4/{payerId}/{lob}/Group/{groupId}/$davinci-data-export: post: operationId: davinciDataExport tags: - ProviderAccessDaVinciExport parameters: - name: payerId in: path required: true schema: type: string example: '87726' - name: lob in: path required: true schema: type: string example: bh - name: groupId in: path required: true schema: type: string example: '12345' - name: patient in: query schema: type: string example: patient-123,patient-456 - name: exportType in: query schema: type: string - name: x-optum-consumer-correlation-id in: header schema: type: string description: Unique transaction identifier example: uuid-123 - name: environment in: header schema: type: string description: Environment name example: sandbox security: - oAuth: - read_healthcheck responses: '200': description: Export request created successfully. Use Content-Location to poll status. headers: Content-Location: description: Polling URL for export status schema: type: string content: application/json: schema: $ref: '#/components/schemas/OperationOutcome' example: resourceType: OperationOutcome issue: - severity: information code: informational diagnostics: The request has been created successfully. Polling Location is present in the 'Content-Location' header. '400': description: Bad Request content: application/json: example: message: Bad Request statusCode: 400 '401': description: UnAuthorized content: application/json: example: message: UnAuthorized statusCode: 401 '406': description: Not Acceptable content: application/json: example: message: Not Acceptable statusCode: 406 '500': description: Internal Server Error content: application/json: example: message: Internal server error statusCode: 500 /oihub/fhirprovideraccess/v1/R4/{payerId}/{lob}/$bulk-member-match-status/{jobId}: get: operationId: bulkMemberMatchStatus tags: - ProviderAccessBulkMemberMatchStatus parameters: - name: payerId in: path required: true schema: type: string example: '87726' - name: lob in: path required: true schema: type: string example: bh - name: jobId in: path required: true schema: type: string example: 6875735d-61dc-4703-84c9-bc7f48356225 - name: x-optum-consumer-correlation-id in: header schema: type: string description: Unique transaction identifier example: uuid-123 - name: environment in: header schema: type: string example: sandbox security: - oAuth: - read_healthcheck responses: '200': description: Bulk Member Match status response content: application/json: schema: $ref: '#/components/schemas/BulkMemberMatchStatusResponse' example: transactionTime: '2021-01-01T00:00:00Z' request: https://sandbox-apigw.optum.com/Provider/fhir/R4/87726/ph/Group/provider-group-123/$davinci-data-export requiresAccessToken: true output: - type: Patient url: https://sandbox-apigw.optum.com/.../Patient_file_1.ndjson error: - type: OperationOutcome url: https://sandbox-apigw.optum.com/.../error_file_1.ndjson '400': description: Bad Request content: application/json: example: message: Bad Request statusCode: 400 '401': description: UnAuthorized content: application/json: example: message: UnAuthorized statusCode: 401 '406': description: Not Acceptable content: application/json: example: message: Not Acceptable statusCode: 406 '500': description: Internal Server Error content: application/json: example: message: Internal server error statusCode: 500 /oihub/fhirprovideraccess/v1/R4/{payerId}/{lob}/download/Group/{fileName}/$davinci-data-export: get: operationId: downloadDaVinciExportFile tags: - ProviderAccessDaVinciExportDownload parameters: - name: payerId in: path required: true schema: type: string example: '87726' - name: lob in: path required: true schema: type: string example: bh - name: fileName in: path required: true schema: type: string example: 6875735d-61dc-4703-84c9-bc7f48356225_Coverage_file.ndjson - name: x-optum-consumer-correlation-id in: header schema: type: string example: uuid-123 - name: environment in: header schema: type: string example: sandbox security: - oAuth: - read_healthcheck responses: '200': description: Successful response content: application/fhir+ndjson: schema: type: string description: FHIR NDJSON stream (newline-delimited JSON resources) examples: patientExample: summary: Sample Patient NDJSON line value: '{"resourceType":"Patient","id":"5c41cecf-cf81-434f-9da7-e24e5a99dbc2","name":[{"given":["givenName"],"family":["familyName"]}],"gender":"female","birthDate":"1956-10-14T00:00:00.000Z"}' application/json: schema: $ref: '#/components/schemas/Patient' example: id: 5c41cecf-cf81-434f-9da7-e24e5a99dbc2 name: - given: - givenName family: - familyName gender: female birthDate: '1956-10-14T00:00:00.000Z' resourceType: Patient '400': description: Bad Request content: application/json: example: message: Bad Request statusCode: 400 '401': description: Unauthorized content: application/json: example: message: Unauthorized statusCode: 401 '404': description: File not found content: application/json: example: message: File not found statusCode: 404 '406': description: Not Acceptable content: application/json: example: message: Not Acceptable statusCode: 406 '500': description: Internal Server Error content: application/json: example: message: Internal server error statusCode: 500 /oihub/fhirprovideraccess/v1/health-check: get: summary: Health Check description: Performs a health check to validate the availability and operational status of the FHIR Provider Access. operationId: healthCheck security: - oAuth: - read_healthcheck tags: - HealthCheck responses: '200': description: Service is healthy - If the API engine is working correctly and if the entry points are accessible, the API operating status response shows "OK". '500': description: 'Service is unhealthy - **Note:** If you receive a response other than 200 OK, the health check failed. Please submit a ticket with Optum. ' components: schemas: OperationOutcome: type: object description: FHIR OperationOutcome resource properties: resourceType: type: string example: OperationOutcome issue: type: array items: $ref: '#/components/schemas/OperationOutcomeIssue' OperationOutcomeIssue: type: object properties: severity: type: string enum: - fatal - error - warning - information code: type: string example: informational diagnostics: type: string BulkMemberMatchRequest: type: object description: FHIR Parameters request for bulk member match properties: resourceType: type: string example: Parameters id: type: string meta: $ref: '#/components/schemas/Meta' parameter: type: array items: $ref: '#/components/schemas/Parameter' BulkMemberMatchResponse: type: object description: FHIR Parameters response containing grouped match results properties: resourceType: type: string example: Parameters id: type: string meta: $ref: '#/components/schemas/Meta' parameter: type: array items: $ref: '#/components/schemas/ResponseParameter' Parameter: type: object description: Input parameter entry properties: name: type: string part: type: array items: $ref: '#/components/schemas/ParameterPart' ParameterPart: type: object description: Nested part representing Patient/Coverage/Consent properties: name: type: string enum: - MemberPatient - CoverageToMatch - Consent resource: oneOf: - $ref: '#/components/schemas/Patient' - $ref: '#/components/schemas/Coverage' - $ref: '#/components/schemas/Consent' ResponseParameter: type: object description: Response parameter containing Group properties: name: type: string enum: - MatchedMembers - NonMatchedMembers - ConsentConstrainedMembers resource: $ref: '#/components/schemas/Group' Group: type: object description: FHIR Group resource used for match result properties: resourceType: type: string example: Group id: type: string text: $ref: '#/components/schemas/Narrative' contained: type: array items: $ref: '#/components/schemas/Patient' identifier: type: array items: $ref: '#/components/schemas/Identifier' type: type: string example: person actual: type: boolean example: true code: $ref: '#/components/schemas/CodeableConcept' managingEntity: $ref: '#/components/schemas/Reference' characteristic: type: array items: $ref: '#/components/schemas/Characteristic' member: type: array items: $ref: '#/components/schemas/GroupMember' GroupMember: type: object properties: entity: type: object properties: reference: type: string display: type: string extension: type: array items: $ref: '#/components/schemas/Extension' Characteristic: type: object properties: code: $ref: '#/components/schemas/CodeableConcept' valueReference: $ref: '#/components/schemas/Reference' exclude: type: boolean period: $ref: '#/components/schemas/Period' Patient: type: object properties: resourceType: type: string example: Patient id: type: string text: $ref: '#/components/schemas/Narrative' identifier: type: array items: $ref: '#/components/schemas/IdentifierWithType' name: type: array items: $ref: '#/components/schemas/HumanName' gender: type: string birthDate: type: string Coverage: type: object properties: resourceType: type: string id: type: string text: $ref: '#/components/schemas/Narrative' identifier: type: array items: $ref: '#/components/schemas/IdentifierWithType' status: type: string subscriberId: type: string beneficiary: $ref: '#/components/schemas/Reference' relationship: $ref: '#/components/schemas/CodeableConcept' period: $ref: '#/components/schemas/Period' payor: type: array items: $ref: '#/components/schemas/Reference' class: type: array items: $ref: '#/components/schemas/CoverageClass' CoverageClass: type: object properties: type: $ref: '#/components/schemas/CodeableConcept' value: type: string Consent: type: object properties: resourceType: type: string id: type: string text: $ref: '#/components/schemas/Narrative' status: type: string scope: $ref: '#/components/schemas/CodeableConcept' category: type: array items: $ref: '#/components/schemas/CodeableConcept' patient: $ref: '#/components/schemas/Reference' dateTime: type: string performer: type: array items: $ref: '#/components/schemas/Reference' sourceReference: $ref: '#/components/schemas/Reference' policy: type: array items: type: object properties: uri: type: string verification: type: array items: $ref: '#/components/schemas/Verification' provision: $ref: '#/components/schemas/Provision' Verification: type: object properties: verified: type: boolean verifiedWith: $ref: '#/components/schemas/Reference' verificationDate: type: string Provision: type: object properties: type: type: string period: $ref: '#/components/schemas/Period' actor: type: array items: $ref: '#/components/schemas/ProvisionActor' purpose: type: array items: $ref: '#/components/schemas/Coding' ProvisionActor: type: object properties: role: $ref: '#/components/schemas/CodeableConcept' reference: $ref: '#/components/schemas/Reference' HumanName: type: object properties: use: type: string family: type: string given: type: array items: type: string IdentifierWithType: type: object properties: type: $ref: '#/components/schemas/CodeableConcept' system: type: string value: type: string assigner: type: object properties: display: type: string Identifier: type: object properties: system: type: string value: type: string CodeableConcept: type: object properties: coding: type: array items: $ref: '#/components/schemas/Coding' Coding: type: object properties: system: type: string code: type: string display: type: string Reference: type: object properties: reference: type: string display: type: string identifier: $ref: '#/components/schemas/Identifier' Period: type: object properties: start: type: string end: type: string Narrative: type: object properties: status: type: string div: type: string Extension: type: object properties: url: type: string valueReference: $ref: '#/components/schemas/Reference' Meta: type: object properties: profile: type: array items: type: string BulkMemberMatchStatusResponse: type: object description: FHIR Bulk Export style response for member match status properties: transactionTime: type: string description: The time when the response was generated example: '2021-01-01T00:00:00Z' request: type: string description: Original export request URL requiresAccessToken: type: boolean description: Indicates if access token is required to download files output: type: array items: $ref: '#/components/schemas/BulkExportOutput' error: type: array items: $ref: '#/components/schemas/BulkExportError' BulkExportOutput: type: object properties: type: type: string example: Patient url: type: string description: NDJSON file download URL BulkExportError: type: object properties: type: type: string example: OperationOutcome url: type: string description: Error file URL securitySchemes: oAuth: type: oauth2 description: This API uses OAuth 2 with the client_credentials grant flow. flows: clientCredentials: tokenUrl: /apip/auth/v2/token scopes: read_txn: read transactions create_txn: submit a new transaction request read_coveragediscovery: read coverage discovery tasks create_coveragediscovery: submit a new coverage discovery task read_healthcheck: check the status of the system x-readme: explorer-enabled: true proxy-enabled: true