Bulk Data for an Attributed Patient Population - smart-on-fhir/smart-on-fhir.github.io GitHub Wiki
This page describes the process by which an organization responsible for clinical care, typically in a value-based arrangement, can download data about an attributed population from a payer.
Preconditions
- Payer and clinical provider have a pre-existing agreement
- Payer has algorithms to attribute a population of patients to the clinical provider
API Definition
This document describes how a clinical provider can determine the attribution list of patients attributed to its organization (i.e., "a roster")
In the context of shared risk contracts, clinical providers require three critical types of data:
- Patient attribution defines the patients for which the clinical organization is responsible.
- Paid claims describe the attributed patients' utilization of healthcare.
- Quality measures are the shared understanding of metrics defined in the shared risk contract.
The Bulk Data specification leaves some of these details out of scope, so this document provides a complementary API specification to enable full access to these data types.
Step 1: Client determines Organization by querying Payer FHIR server
When the server maintains an attribution list of patients associated with a given practitioner or organization, a client can access this list by:
/Organization?id=<TIN or NPI or CMS-ACO-ID>
{
"resourceType": "Organization",
"id": "goodhealth-7xtebfkae",
"identifier": [
{
"system": "2.16.840.1.113883.4.4",
"value": "taxid-123"
}
],
"name": "Good Health Clinic"
}
Step 2: Client searches for the Group attributed to this Organization:
GET /Group?characteristic=attributed-to&characteristic-reference=<Organization FHIR id>
Or alternatively, client searches for a Group attributed to an individual Practitioner:
GET /Group?characteristic=attributed-to&characteristic-reference=<Practitioner FHIR id>
{
"resourceType": "Group",
"id": "goodhealthroster"
"characteristic" [{
"code": {
"coding": [{
"code": "attributed-to"
}]
},
"valueReference": {
"reference": "Organization/goodhealth-7xtebfkae"
}
}]
}
Using a Group.id
from the matching group, a client can kick off an export.
Step 3: Client exports data for the Group
/Group/goodhealthroster/$export?_since=2018-07-01T00:00:00Z
Per the bulk data api spec, the $export
operation returns the supported and authorized resources. For example if the client issues a request with &_type=Patient,Coverage,ExplanationOfBenefit
, the returned results would include:
Patient
A file of Patient resources containing the attributed patients' demographics and any known mrns.
Coverage
A file of Coverage resources containing the attributed patients' payer member identifiers, dates of coverage, etc.
This operation returns a Group with enumerated members in Group.member[]
, as described above.
TODO: which properties of Coverage
to use? At least include Coverage.class.value
which is where the plan number goes.
ExplanationOfBenefit
A file of ExplanationOfBenefit resources containing the attributed patients' claim request and adjudication information.