Patient-Facing Apps Using FHIR

Some FHIR APIs may return different data when the application is used in a patient-facing context. This typically occurs because data that should not be visible to a patient is filtered out of FHIR API responses in patient-facing applications. Some filtering criteria is configurable by the community member such that two community members could filter the same data in different ways. Below are some examples of possible differences in the results returned by a FHIR API in a patient context:

  • FHIR APIs will only return results relevant to the authenticated patient. If one patient, Susan, is logged in to the application, the Observation (Labs) API won’t return lab results for a patient other than Susan.
  • FHIR APIs may not return patient-entered data that has not yet been reviewed and reconciled by a clinician.
  • FHIR APIs may return patient friendly names for resources, such as medications. For example, a patient-facing app may return the medication name pseudoephedrine instead of PSEUDOPHEDRINE HCL 30 MG PO TABS.
  • FHIR APIs may be configured to exclude specific lab results to comply with state and local regulations

Community members may choose to disable this filtering functionality for their Epic instance, resulting in near identical behavior between patient-facing FHIR API responses and the response of apps with other audiences.

Epic recommends that you thoroughly test each API at each Community Member’s site prior to a go-live in production to ensure that you understand the behavior of each API for that community member’s Epic deployment.

Client IDs for USCDI apps will automatically download to a community member’s Epic instances when all of the following conditions are met:

  • The application:
    • Is created through Epic on FHIR
    • In Epic August 2024 and later:
      • Uses only USCDI v3 FHIR APIs, which are documented in the appendix below †
    • In Epic May 2024 and earlier:
      • Uses only USCDI v1 FHIR APIs, which are documented in the appendix below †
    • Only reads data from Epic
    • Is patient-facing
    • Does not use refresh tokens OR uses refresh tokens and has a client secret uploaded by the vendor for that community member
    • Is marked "Ready for Production" and was marked ready after Sept. 3rd, 2020
      • Apps can be marked "Ready for Sandbox Use" to test with our Epic on FHIR environment prior to marking the app "Ready for Production"
  • The Community Member:
    • Has signed the open.epic API Subscription Agreement
    • Has not disabled auto-download functionality

Client IDs for CCDS apps will automatically download to a community member’s Epic instances when all of the following conditions are met:

  • The application:
    • Is created through Epic on FHIR
    • Uses only DSTU2 FHIR APIs from the list in the appendix below ††
    • Only reads data from Epic
    • Is patient-facing
    • Does not use refresh tokens
    • Is marked "Ready for Production" and was marked ready after Dec. 17th, 2020
      • Apps can be marked "Ready for Sandbox Use" to test with our Epic on FHIR environment prior to marking the app "Ready for Production"
  • The Community Member:
    • Need not sign the open.epic API Subscription Agreement

Client IDs for apps meant to meet CMS payor requirements will automatically download to a community member's Epic instances when all of the following conditions are met:

  • The application:
    • Is created through Epic on FHIR
    • Uses only ExplanationOfBenefit (of any supported version) and/or any FHIR APIs (of any supported version) from the list in the appendix below †
    • Only reads data from Epic
    • Is patient-facing
    • Uses OAuth 2.0
    • Is marked "Ready for Production"
      • Apps can be marked "Ready for Sandbox Use" to test with our Epic on FHIR environment prior to marking the app "Ready for Production"
  • The Community Member:
    • Has signed the open.epic API Subscription Agreement
    • Has enabled this auto-download functionality

Client IDs for TEFCA IAS via FHIR apps will automatically download to a community member’s Epic instances when all of the following conditions are met:

  • The application:
    • Is patient-facing
    • Has completed registration with Epic Nexus
    • Has completed testing with Epic Nexus
    • Has an active entry in the Production RCE (TEFCA) Directory
  • The Community Member:
    • Is live on TEFCA and IAS via FHIR
    • Has not disabled auto-download functionality

For more information see Epic Nexus’s Approach to Individual Access Services in TEFCA via FHIR.

Any applications that do not meet all of the above criteria will need to be manually downloaded to the community member's Epic instances. Steps to do so can be found in the App Creation and Request Process guide.

† The following FHIR APIs qualify for USCDI v1 auto-distribution.

  • AllergyIntolerance.Read (DSTU2)
  • AllergyIntolerance.Read (R4)
  • AllergyIntolerance.Read (STU3)
  • AllergyIntolerance.Search (DSTU2)
  • AllergyIntolerance.Search (R4)
  • AllergyIntolerance.Search (STU3)
  • Binary.Read (Clinical Notes) (R4)
  • Binary.Read (Clinical Notes) (STU3)
  • Binary.Read (Generated CCDA) (DSTU2)
  • Binary.Read (Generated CCDA) (R4)
  • Binary.Read (Labs) (R4)
  • Binary.Search (Clinical Notes) (R4)
  • Binary.Search (Generated CCDA) (R4)
  • Binary.Search (Labs) (R4)
  • CarePlan.Read (Encounter-Level) (DSTU2)
  • CarePlan.Read (Encounter-Level) (R4)
  • CarePlan.Read (Longitudinal) (DSTU2)
  • CarePlan.Read (Longitudinal) (R4)
  • CarePlan.Search (Encounter-Level) (DSTU2)
  • CarePlan.Search (Encounter-Level) (R4)
  • CarePlan.Search (Longitudinal) (DSTU2)
  • CarePlan.Search (Longitudinal) (R4)
  • CareTeam.Read (Longitudinal) (R4)
  • CareTeam.Search (Longitudinal) (R4)
  • Condition.Read (Care Plan Problem) (R4)
  • Condition.Read (Encounter Diagnosis, Problems) (STU3)
  • Condition.Read (Health Concern) (R4)
  • Condition.Read (Problems) (DSTU2)
  • Condition.Read (Problems) (R4)
  • Condition.Search (Care Plan Problem) (R4)
  • Condition.Search (Encounter Diagnosis, Problems) (STU3)
  • Condition.Search (Health Concern) (R4)
  • Condition.Search (Problems) (DSTU2)
  • Condition.Search (Problems) (R4)
  • Device.Read (Implants and External Devices) (STU3)
  • Device.Read (Implants) (DSTU2)
  • Device.Read (Implants) (R4)
  • Device.Search (Implants and External Devices) (STU3)
  • Device.Search (Implants) (DSTU2)
  • Device.Search (Implants) (R4)
  • DiagnosticReport.Read (Results) (DSTU2)
  • DiagnosticReport.Read (Results) (R4)
  • DiagnosticReport.Read (Results) (STU3)
  • DiagnosticReport.Search (Results) (DSTU2)
  • DiagnosticReport.Search (Results) (R4)
  • DiagnosticReport.Search (Results) (STU3)
  • DocumentReference.Read (Clinical Notes) (R4)
  • DocumentReference.Read (Clinical Notes) (STU3)
  • DocumentReference.Read (Generated CCDA) (DSTU2)
  • DocumentReference.Read (Generated CCDA) (R4)
  • DocumentReference.Read (Labs) (R4)
  • DocumentReference.Search (Clinical Notes) (R4)
  • DocumentReference.Search (Clinical Notes) (STU3)
  • DocumentReference.Search (Generated CCDA) (DSTU2)
  • DocumentReference.Search (Generated CCDA) (R4)
  • DocumentReference.Search (Labs) (R4)
  • Encounter.Read (Patient Chart) (R4)
  • Encounter.Read (STU3)
  • Encounter.Search (Patient Chart) (R4)
  • Encounter.Search (STU3)
  • Goal.Read (Care Plan) (R4)
  • Goal.Read (Care Plan) (STU3)
  • Goal.Read (Patient) (DSTU2)
  • Goal.Read (Patient) (R4)
  • Goal.Read (Patient) (STU3)
  • Goal.Search (Care Plan) (R4)
  • Goal.Search (Care Plan) (STU3)
  • Goal.Search (Patient) (DSTU2)
  • Goal.Search (Patient) (R4)
  • Goal.Search (Patient) (STU3)
  • Immunization.Read (DSTU2)
  • Immunization.Read (R4)
  • Immunization.Read (STU3)
  • Immunization.Search (DSTU2)
  • Immunization.Search (R4)
  • Immunization.Search (STU3)
  • Introspect
  • Location.Read (R4)
  • Location.Read (STU3)
  • Location.Search (R4)
  • Medication.Read (DSTU2)
  • Medication.Read (R4)
  • Medication.Read (STU3)
  • Medication.Search (DSTU2)
  • Medication.Search (R4)
  • MedicationOrder.Read (DSTU2)
  • MedicationOrder.Search (DSTU2)
  • MedicationRequest.Read (Orders) (R4)
  • MedicationRequest.Read (Orders) (STU3)
  • MedicationRequest.Search (Orders) (R4)
  • MedicationRequest.Search (Orders) (STU3)
  • MedicationStatement.Read (DSTU2)
  • MedicationStatement.Read (STU3)
  • MedicationStatement.Search (DSTU2)
  • MedicationStatement.Search (STU3)
  • Observation.Read (Labs) (DSTU2)
  • Observation.Read (Labs) (R4)
  • Observation.Read (Labs) (STU3)
  • Observation.Read (Social History) (DSTU2)
  • Observation.Read (Social History) (R4)
  • Observation.Read (Social History) (STU3)
  • Observation.Read (Vitals) (DSTU2)
  • Observation.Read (Vitals) (R4)
  • Observation.Read (Vitals) (STU3)
  • Observation.Search (Labs) (DSTU2)
  • Observation.Search (Labs) (R4)
  • Observation.Search (Labs) (STU3)
  • Observation.Search (Social History) (DSTU2)
  • Observation.Search (Social History) (R4)
  • Observation.Search (Social History) (STU3)
  • Observation.Search (Vitals) (DSTU2)
  • Observation.Search (Vitals) (R4)
  • Observation.Search (Vitals) (STU3)
  • Organization.Read (R4)
  • Organization.Read (STU3)
  • Organization.Search (R4)
  • Patient.Read (DSTU2)
  • Patient.Read (R4)
  • Patient.Read (STU3)
  • Patient.Search (DSTU2)
  • Patient.Search (R4)
  • Patient.Search (STU3)
  • Practitioner.Read (DSTU2)
  • Practitioner.Read (R4)
  • Practitioner.Read (STU3)
  • Practitioner.Search
  • Practitioner.Search (DSTU2)
  • Practitioner.Search (R4)
  • Practitioner.Search (STU3)
  • PractitionerRole.Read (R4)
  • PractitionerRole.Read (STU3)
  • PractitionerRole.Search (R4)
  • PractitionerRole.Search (STU3)
  • Procedure.Read (Orders) (DSTU2)
  • Procedure.Read (Orders) (R4)
  • Procedure.Read (Orders, Surgeries) (STU3)
  • Procedure.Read (Surgeries) (R4)
  • Procedure.Search (Orders) (DSTU2)
  • Procedure.Search (Orders) (R4)
  • Procedure.Search (Orders, Surgeries) (STU3)
  • Procedure.Search (Surgeries) (R4)
  • Provenance.Read (R4)
  • RelatedPerson.Read (Proxy) (R4)
  • RelatedPerson.Search (Proxy) (R4)

In addition to the USCDI v1 FHIR APIs above, the following FHIR APIs qualify for USCDI v3 auto-distribution.

  • Binary.Read (Study) (R4)
  • Binary.Search (Study) (R4)
  • Condition.Read (Encounter Diagnosis) (R4)
  • Condition.Search (Encounter Diagnosis) (R4)
  • Coverage.Read (R4)
  • Coverage.Read (STU3)
  • Coverage.Search (R4)
  • Coverage.Search (STU3)
  • Media.Read (Study) (R4)
  • Media.Search (Study) (R4)
  • MedicationDispense.Read (Fill Status) (R4)
  • MedicationDispense.Search (Fill Status) (R4)
  • Observation.Read (Assessments) (R4)
  • Observation.Read (SDOH Assessments) (R4)
  • Observation.Read (SmartData Elements) (R4)
  • Observation.Read (Study Finding) (R4)
  • Observation.Search (Assessments) (R4)
  • Observation.Search (SDOH Assessments) (R4)
  • Observation.Search (SmartData Elements) (R4)
  • Observation.Search (Study Finding) (R4)
  • Procedure.Read (SDOH Intervention) (R4)
  • Procedure.Search (SDOH Intervention) (R4)
  • RelatedPerson.Read (Friends and Family) (R4)
  • RelatedPerson.Search (Friends and Family) (R4)
  • ServiceRequest.Read (Community Resource) (R4)
  • ServiceRequest.Read (Order Procedure) (R4)
  • ServiceRequest.Search (Community Resource) (R4)
  • ServiceRequest.Search (Order Procedure) (R4)
  • Specimen.Read (R4)
  • Specimen.Read (STU3)
  • Specimen.Search (R4)
  • Specimen.Search (STU3)


†† Only the following DSTU2 FHIR APIs qualify for MU3 auto-distribution.

  • AllergyIntolerance.Read
  • AllergyIntolerance.Search
  • Binary.Read
  • CarePlan.Read
  • CarePlan.Search
  • Condition.Read
  • Condition.Search
  • Device.Read
  • Device.Search
  • DiagnosticReport.Read
  • DiagnosticReport.Search
  • DocumentReference.Read
  • DocumentReference.Search
  • Goal.Read
  • Goal.Search
  • Immunization.Read
  • Immunization.Search
  • Medication.Read
  • Medication.Search
  • MedicationOrder.Read
  • MedicationOrder.Search
  • MedicationStatement.Read
  • MedicationStatement.Search
  • Observation.Read
  • Observation.Search
  • Patient.Read
  • Patient.Search
  • Practitioner.Read
  • Practitioner.Search
  • Procedure.Read
  • Procedure.Search

We use cookies to improve our website. By accepting, you will receive these cookies from Epic on FHIR. Decline if you wish to use Epic on FHIR without these cookies. Read our privacy policy here.