QDX

Setup guide

QDX in Epic: setup guide for your Epic team

QDX lets clinicians order lab tests from inside the patient's chart. Patients go to a patient service center for their visit (availability varies by state, patient and test). This guide lists everything your Epic analysts configure, and what QDX provides.

On this page

QDX has two Epic apps: an ordering app that opens in the chart, and a results app that files results back into the chart with no user signed in. You can turn on the ordering app alone.

1. What QDX provides

  • Client IDs for both apps, one non-production and one production ID each. The non-production ID is used in your POC and TST environments, and the production ID in PRD. QDX sends them when your organization is set up.
  • Your QDX organization ID, which is part of the launch URL.
  • Launch URL: https://qdx.systems/app/launch.html?org=<your QDX organization ID>
  • Redirect URL: https://qdx.systems/app/launch.html
  • Results app key sets (JWK Set URLs): non-production https://qdx.systems/portal/api/emr/jwks/nonprod.json, production https://qdx.systems/portal/api/emr/jwks/prod.json.

2. The ordering app

SettingValue
AudienceClinicians or administrative users
Launch typeEHR launch (SMART on FHIR, R4), from the patient's chart. Context needed: patient and encounter.
Client typePublic client with PKCE (S256). The authorization code is exchanged by QDX's server.
APIsPatient.Read (Demographics), Practitioner.Read (Organizational Directory), Encounter.Read (Patient Chart), Condition.Search (Problems), Condition.Search (Encounter Diagnosis)
DisplayEmbedded in the chart, as an activity or a menu button. Several charts can have QDX open at once; each gets its own session.
Browser allowlistqdx.systems. QDX runs JavaScript on this domain. It sets no cookies and uses no browser storage in the chart, so it works with third-party cookies blocked.
FramingQDX only lets the sites your organization lists show the app in a frame. Your QDX administrator enters your Hyperspace and Hyperdrive web origins under Settings > EMR connections. QDX does not need CLIENTHOSTSOURCE.

What the clinician sees:

  • The patient's QDX orders from this chart, with their status, and whether each result has been filed to the chart.
  • An order screen with the patient's demographics from the chart. The clinician fills in only what the chart lacks, such as a mobile phone or an address; the lab requires both.
  • The diagnoses already in the chart, from the encounter first and then the active problem list, as ICD-10 codes the clinician can add with one click.
  • The estimated cost of the order before it is placed.
  • The requisition, the patient's hold letter and the result report, opened in a viewer inside the app. The viewer can save or print them.

Clinicians and NPIs. Orders are placed under a clinician your organization has verified in QDX.

  • When Epic returns an NPI for the signed-in user, QDX uses it.
  • Otherwise, the first time each Epic user opens QDX, they choose which of your organization's clinicians they are. QDX remembers the choice.
  • Your QDX administrator can see and undo these links under Settings > EMR connections.

A launch is good for a few minutes. Epic's launch token expires between five and ten minutes after it is issued. A clinician who opens QDX later than that sees "This launch expired before it was used. Open QDX again from the patient's chart."

Sessions. A QDX session opened from the chart lasts eight hours. After that, the clinician opens QDX again from the chart. Epic's own access token is used only while QDX opens.

3. Results back into the chart (optional)

When an order placed from a patient's chart is resulted, QDX can file the result in that chart as a note on the encounter the order was placed from. The note lists each result with its units, reference range and flag, and links to the full report in QDX.

SettingValue
AudienceBackend systems. It runs with no user signed in, and your security team maps it to a background user.
AuthenticationOAuth 2.0 client credentials with a signed JWT (RS384), checked against QDX's JWK Set URL. Tokens last one hour and are renewed with a new signature.
APIsDocumentReference.Create (Clinical Notes), plus DocumentReference.Read and Binary.Read (Clinical Notes) to confirm what was filed
Note typeProgress Note (LOINC 11506-3) unless you choose another. Your QDX administrator can enter a LOINC code your organization maps to a note type, or a note type as urn:oid:<OID>|<code>.
Note statusPreliminary by default: the note files as incomplete, for the ordering clinician to review and sign. Final is available.
EncounterThe encounter the order was placed from. Epic files a note only on a clinical encounter that can hold one.

Epic's FHIR interface files a result from an outside app as a text note. It has no API for discrete lab results or for PDF documents. Discrete results in the chart's Results activity come through an HL7v2 Incoming Ancillary Results interface, which QDX does not offer today.

4. What your organization does in Epic

StepWho and where
Accept the open.epic API Subscription AgreementYour organization, once, if it has not already
Download each QDX client IDA user with the "Purchase Apps" security point, in your non-production environments first, then production
Build the launchYour Epic analysts: the integration (FDI) record with QDX's launch URL and client ID, and the activity or menu button that opens it embedded in the chart
SecurityGive the users who will order the security points for the APIs listed above, and access to the launch button
Browser allowlistAdd qdx.systems to your Epic browser allowlist
Results app (optional)Your Epic Client Systems Administrator maps QDX's results client ID to a background user and gives it the security points for DocumentReference.Create (Clinical Notes). The client cannot get a token until this is done. Your team registers or approves QDX's JWK Set URL and chooses the note type.
In QDXYour QDX administrator adds the connection under Settings > EMR connections (FHIR base URL, the ordering app's client ID, the sites allowed to frame QDX, test or live), and, for results, the results app's client ID, note type and status
TestOpen QDX from a test patient's chart in a non-production environment with the connection in test mode. Orders are simulated and never sent to the lab; a simulated result can be filed back to the chart as a note marked TEST MODE.
Go liveDownload the production client IDs in PRD, and switch the QDX connection to live

Epic charges API usage fees to health systems based on production use. Epic does not publish the amounts.

5. Results by fax, for any practice

Until results are filed into your chart (or alongside it), QDX can fax each result report to your EMR's fax inbox. See Results into any EMR by fax.

6. Questions

Write to ops@qdx.systems. Include your Epic environment (POC, TST or PRD) and the time of the launch.