Labcorp API and Integration Guide: EHR, Epic Aura and Drug Testing (2026)
CTO & Co-Founder
CTO & Co-Founder at Nirmitee.io. Architects healthcare integrations across FHIR, SMART on FHIR, ABDM and NHCX, writing from production experience taking hospital software from sandbox to go-live.

Updated October 2026
Labcorp does not offer one public, self-serve API. Each Labcorp product has its own way in: HL7 interfaces for clinical lab orders and results, the Labcorp Link portal, Epic Aura for Epic customers, the Labcorp Patient portal for patient results, and web services for employer drug testing. You get access through the Labcorp team that owns that product, sign their agreements and pass their tests before going live.
This guide covers every Labcorp integration route a software company, practice, health system or screening platform can use. It explains how each one works, what Labcorp provides, the setup steps and the problems to plan for. It also shows how we built a production Labcorp drug testing connector, with the design choices that keep results from being lost or duplicated.
Key takeaways
- Pick the route by use case. Clinical orders and results use HL7 interfaces through Labcorp's connectivity team. Employer drug testing uses Labcorp's occupational testing web services. Patients get results through Labcorp Patient.
- Labcorp says it keeps bidirectional interfaces with more than 700 EMR, practice management and LIS systems. Check whether your system is already one of them before you build.
- Epic customers have a newer option: since May 2026, Labcorp's full test menu is planned to be orderable through Epic Aura, with results back as discrete data.
- The employer drug testing route is a SOAP web service: register the donor, send them to a collection site, then receive status, chain-of-custody and result updates.
- Pushed updates can be missed. A production connector stores every push before processing it and runs a reconciliation job that pulls anything the push did not deliver.
- Quest Diagnostics has the same split: clinical EHR interfaces and separate employer web services.
If you need a Labcorp connection built or fixed, our lab integration services team scopes it with you. For how lab integration works in general, see our A to Z lab integration guide.
Does Labcorp have an API?
Labcorp has APIs and web services, but there is no open developer portal where you sign up and get a key. Access is tied to a business relationship:
- Clinical lab orders and results run over interfaces that Labcorp's connectivity team sets up with your EHR, practice management system or LIS. These are mostly HL7 v2 messages.
- Employer drug and occupational testing has web services that let an employer's or screening company's software exchange data with Labcorp. You get access through Labcorp's employer services team, with an account number and credentials.
- Patient data reaches patients through the Labcorp Patient portal and app. Labcorp also lets Labcorp Patient users send results to Apple Health Records.
- Epic health systems can order and receive Labcorp results through Epic Aura, Epic's platform for connecting to outside labs.
Which of these you need depends on what you are building.
Every Labcorp product you can integrate with
| Labcorp product | Who uses it | How it connects | How you get access |
|---|---|---|---|
| EMR / EHR interfaces | Practices, health systems, EHR vendors | Bidirectional HL7 v2 orders and results | Labcorp connectivity team |
| Labcorp Link | Providers and their staff | Browser portal: ordering, results, trends, history | Labcorp client account |
| Labcorp Diagnostic Assistant | Providers inside their EHR | Embedded in the EHR: order status and result PDFs | Labcorp representative |
| Epic Aura | Epic health systems | Orders and discrete results through Epic's lab network | Your Epic and Labcorp teams |
| Labcorp Patient / MyLabcorp | Patients | Portal and app; results can go to Apple Health Records | Patient account |
| Labcorp OnDemand | Consumers buying their own tests | Online ordering; results in the Labcorp Patient account | Consumer purchase |
| Employer drug testing web services | Employers, screening companies, HR and applicant tracking systems | SOAP web services: donor registration, collection sites, status and results | Labcorp employer services team |
| Employer Web Tools | Employers and program administrators | Portal: register donors, view status and results, chain-of-custody form images | Employer account |
| Genetic tests (former Invitae) | Genetics clinics, oncology, health systems | Through Epic Aura and clinical interfaces | Labcorp genetics team |
How to choose your Labcorp integration route
| You are | Use | Why |
|---|---|---|
| An Epic health system | Epic Aura, or your existing Beaker or Bridges interface | Aura is built to avoid a separate interface per lab |
| A practice on a common EHR | The EHR's existing Labcorp interface | Labcorp likely already connects to your EHR |
| An EHR or health tech vendor | A new HL7 interface certified with Labcorp | Your customers will expect Labcorp in the order screen |
| A small or new practice | Labcorp Link first, interface later | No build needed; move to an interface as volume grows |
| A screening or HR platform | Employer drug testing web services | Built for donor registration and chain-of-custody results |
| A patient-facing app | Patient-mediated access (the patient connects their account or shares results) | The patient controls the data |
| Need many labs, not only Labcorp | A lab network API | One connection for many labs; see our lab integration guide |
Route 1: Labcorp EHR integration (clinical orders and results)
This is the classic Labcorp interface. Your EHR sends electronic orders to Labcorp and receives results back into the chart. Labcorp says it maintains bidirectional interfaces with more than 700 EMR, PMS and LIS systems, with a dedicated connectivity team.
What Labcorp gives you
- An interface specification for orders and results, usually HL7 v2. Orders go as ORM^O01 or OML^O21 messages and results come back as ORU^R01.
- The test compendium: Labcorp's directory of orderable tests, with codes, specimen rules and the result components each test returns.
- Ask-at-order-entry (AOE) questions that some tests require, such as fasting status or collection volume.
- Requisition and label formats, so the specimen label printed in the office matches the electronic order.
- Bill-to rules: client bill, patient bill or insurance, and the Medicare Advance Beneficiary Notice (ABN) process for tests Medicare may not cover.
- Certification tests that Labcorp runs before the interface goes live.
What a Labcorp order message carries
A clinical order is an HL7 v2 message with segments for the patient, the insurance, the diagnosis and the test. AOE answers usually travel as OBX segments under the test they belong to. Here is a simplified example with synthetic data; the exact segments and fields always come from Labcorp's specification for your account:
MSH|^~\&|YOUREHR|CLINIC01|LABCORP|LAB|20261021091500||ORM^O01|ORD000481|P|2.3
PID|1||100245^^^CLINIC01^MR||DOE^JANE||19800214|F|||12 MAIN ST^^AUSTIN^TX^78701
PV1|1|O
IN1|1|BCBS01|BCBSTX|BLUE CROSS TEXAS|||||||||||DOE^JANE|SEL|19800214
GT1|1||DOE^JANE
DG1|1||E11.9^Type 2 diabetes mellitus without complications^I10
ORC|NW|ORD5521||||||||||1234567890^SMITH^ANNA
OBR|1|ORD5521||005009^CBC With Differential/Platelet^L|||20261021090000
OBX|1|ST|FASTING^Fasting^L||N - ORC-1 = NW means a new order. Changes and cancels use other codes, and Labcorp's specification says which ones it accepts.
- ORC-2 is your order number. Labcorp returns it with every result, which is how you match results to orders.
- OBR-4 carries Labcorp's own test code from the compendium. Map it to LOINC for the result side.
- IN1, GT1 and DG1 carry insurance, guarantor and diagnosis, which decide who is billed and whether an ABN is needed.
Setup steps
- Open a Labcorp client account and ask your Labcorp representative for electronic ordering. Ask whether your EHR is already on Labcorp's interface list.
- If it is, the EHR vendor and Labcorp activate the existing interface. If not, you build to Labcorp's specification, directly or through an integration engine.
- Set up the connection, usually a secure network link for HL7 messages or secure file transfer.
- Load the compendium into the EHR's order catalogue and map result codes to LOINC, so trends and alerts work.
- Build order messages with the right patient, provider, diagnosis, AOE answers and bill-to data. Build result handling for preliminary, final and corrected results and the PDF report.
- Print requisitions and barcode labels in Labcorp's format.
- Pass Labcorp's certification tests, then run your own go-live checks with test patients.
- Go live at one location first. Reconcile orders against results every day.
What usually goes wrong
| Problem | Cause | Fix |
|---|---|---|
| Orders rejected | Missing AOE answers, retired test codes, wrong bill-to data | Validate before sending; sync the compendium on a schedule |
| Specimen and order do not match | Label printed from a different order or outside the EHR | Print labels only from the electronic order |
| Results on the wrong patient | Matching on name only | Match on the EHR's order number and patient ID returned in each result |
| Corrected result ignored | Receiver treats every result as new | Handle corrected status: replace, keep history, notify |
| Results missing | Message lost after acknowledgement, or specimen never received | Daily report of orders with no result past expected turnaround |
Our post on HL7 ORM and ORU to FHIR mapping covers the message fields in detail, and ORU routing in Mirth Connect shows result routing in an integration engine.
Route 2: Labcorp Link and Labcorp Diagnostic Assistant
Labcorp Link is Labcorp's browser-based portal for providers. Labcorp describes it as a companion to the EHR: electronic ordering across the full test menu, test search, results with trends and history, and searching results across accounts. Labcorp says orders placed in the EHR and in Link now appear in a single view for tracking.
Labcorp Diagnostic Assistant sits inside the EHR and adds order status tracking and access to result PDFs.
When Link is enough: low volume, a new practice, or a stopgap while an interface is built. When it is not: once staff spend real time ordering in two places or typing results into the chart. That is the point to move to Route 1.
Link is a portal for people. It is not an integration API for software, so do not plan to automate it.
Route 3: Labcorp through Epic Aura
Aura is Epic's platform for connecting Epic customers to outside labs and diagnostics companies without building a separate interface for each one. On 12 May 2026, Labcorp and Epic announced an expanded collaboration to make Labcorp's full test menu available through Aura, with discrete results returned into the Epic workflow. Labcorp's genetic tests, carried over from its purchase of Invitae's assets, were already on Aura. Quest Diagnostics is also on Aura.
For an Epic health system this can remove most of the custom interface work. Ask your Epic team about Aura before you start a new Labcorp interface. Timing for each health system depends on its Epic and Labcorp agreements.
Health systems that run Epic Beaker as their own lab still use interfaces for send-out tests to Labcorp. See our lab integration guide for how Beaker sites connect to reference labs.
Route 4: Patient access (Labcorp Patient, MyLabcorp and OnDemand)
Patients see Labcorp results in the Labcorp Patient portal and the MyLabcorp app. Labcorp OnDemand, which replaced Pixel by Labcorp, lets consumers buy some tests themselves. OnDemand results also appear in the Labcorp Patient account.
Labcorp has let Labcorp Patient users send results to Apple Health Records since 2018. For a patient-facing app, the practical routes are:
- The patient connects their records from their provider's EHR through patient access APIs (FHIR US Core), where Labcorp results already sit in the chart.
- The patient shares results through a health records app or uploads a report.
- Your service orders the tests itself through Route 1 or a lab network, with an authorized ordering provider, so results come to you directly.
Do not screen-scrape the patient portal. It breaks often and puts patient logins in your hands.
Route 5: Labcorp drug testing integration for employers and screening platforms
Employers, third-party administrators, background screening companies and HR or applicant tracking systems use a different side of Labcorp: occupational and drug testing. Labcorp offers web services so an employer's software can exchange data with Labcorp while staff keep using their own system, plus Web Tools for people: donor registration, specimen status, results, result retransmission and images of the chain-of-custody form.
How a Labcorp drug test works, step by step
- Order. The employer or screening platform orders a test for a candidate or employee (the donor), with the test panel and the reason for the test, such as pre-employment, random or post-accident.
- Register the donor. The platform registers the donor with Labcorp and gets a registration number back. In Labcorp's own Web Tools, registrations expire 14 days after entry by default, and employers can change that.
- Send the donor to a site. The platform looks up nearby collection sites by ZIP code and tells the donor where to go, with the registration number.
- Collect. The site collects the specimen and completes the custody and control form (CCF), on paper or electronically (eCCF).
- Test. Labcorp tests the specimen and sends status updates, the chain-of-custody record and the result.
- Review. For federally regulated tests, a medical review officer (MRO, a physician who reviews drug test results) reviews non-negative results before the employer gets a verified result.
- Report. The platform shows the result to the employer and keeps the record.
Mapping drug test outcomes in your product
Labcorp's specification defines the exact result codes. Whatever the codes, your product needs a small set of outcomes that an employer understands, and a rule for every code you can receive:
| Lab or MRO outcome | What it means | How we show it |
|---|---|---|
| Negative | No drugs detected above cutoffs | Clear |
| Negative, dilute | Negative, but the specimen was more watery than normal | Clear, with the dilute flag kept for the employer's policy |
| Positive | A drug detected above the cutoff | Needs attention; for DOT tests only after MRO verification |
| Positive, dilute | Positive on a dilute specimen | Needs attention |
| Adulterated, substituted or invalid | The specimen was tampered with or could not be tested | Needs attention; employer follows its policy |
| Cancelled or rejected | The test could not be completed, for example a flawed specimen | Cancelled, with the reason, and a path to re-order |
Store the raw code next to the mapped outcome. When an employer disputes a result, you need the original value.
DOT and non-DOT tests
Tests required by the US Department of Transportation follow 49 CFR Part 40. They use the federal CCF, an HHS-certified lab, MRO review and strict confidentiality. DOT agencies include FMCSA (trucking), FAA (aviation), FRA (rail), FTA (transit), PHMSA (pipelines) and the Coast Guard. Non-DOT tests are set by the employer's own policy and state law, and can use different panels and forms.
For an integration this matters in three places: the testing authority and reason codes sent with each registration, the result codes that come back (DOT results can include outcomes such as dilute, adulterated or substituted), and who may see what. Part 40 also says an employer using an electronic CCF must make sure the collection site, the labs and the MRO have compatible systems. DOT amended Part 40 again in 2026 (effective 10 June 2026), so check the current rule before you design a federal program.
Background screening rules (FCRA)
When a background screening company delivers drug test results to an employer as part of a consumer report, the Fair Credit Reporting Act applies. If the employer may act on a result, the employer must give the candidate a pre-adverse action notice with a copy of the report and a summary of rights, and wait before a final decision. Build the result workflow so these notices are possible to send from the platform.
How we built a production Labcorp drug testing connector
We built a Labcorp occupational testing connector for a background screening platform, and it runs in production. It registers donors, finds collection sites, receives Labcorp's status, chain-of-custody and result updates, and reports results to employers. Here is the design and what we learned. The client is not named, and details from Labcorp's confidential specifications are left out. Our healthcare staffing screening case study covers the wider platform.
The Labcorp web service calls we use
| Call | What it does | When we use it |
|---|---|---|
| registerDonor | Creates the donor registration and returns a registration number | After consent is signed and payment is taken |
| locateCollectionSites | Returns nearby sites for a ZIP code | Right after registration, to email the donor |
| specimenResult | Returns the result for a specimen | When reconciling a result the push did not deliver |
| specimenGetAll | Lists specimens in a time window | Every 30 minutes, to find anything missed |
| getRegistrationDetails | Returns the status of one registration | For screenings that have not moved in hours |
Labcorp also pushes three kinds of updates to our endpoint: status changes, chain-of-custody records and results, as SOAP XML messages.
Design choices that mattered
- Validate before sending. The connector checks required donor fields, the state code, the panel and the account before calling Labcorp. Bad data fails in our system with a clear message, instead of as a SOAP fault from Labcorp.
- Consent and payment first. Registration runs only after the donor has signed consent and the order is paid. A background job does the registration, so a slow Labcorp response never blocks the user.
- Collection sites that make sense. The lookup starts at 25 miles and widens to 50 if nothing is found. The donor gets an email with the registration number and the nearest sites. If none of the sites are in the donor's state, the system flags it for a person to check.
- Store every push before reading it. Each incoming message is saved raw in an inbox first. If parsing fails, nothing is lost and the message can be inspected.
- Never apply the same update twice. Duplicates are caught by a hash of the message and by a key built from the registration, the update type and the status or result. Status only moves forward, so a late, older update cannot undo a newer one.
- A safety net every 30 minutes. A reconciliation job lists specimens from the last 24 hours and pulls any result we have not recorded. A second pass checks screenings that have not changed in four hours. Push and pull both go through one function, so a result looks the same whichever way it arrived.
- Notify once. When a result arrives, the order creator and the employer's admins get one in-app alert and email. Positive and inconclusive results are flagged for review. A database check makes sure the alert is never sent twice.
- Fail safely when Labcorp is slow. Calls time out after 30 seconds and retry once on network errors. After five network failures in a row, a circuit breaker pauses calls for a minute, so the system does not pile up requests.
- Keep sensitive data out of logs. Social Security numbers and passwords are masked in every logged request. Each call has a correlation ID, so one request can be traced end to end without reading personal data. Result payloads are encrypted at field level, and credentials live in a key vault.
What we learned
- Confirm how pushes authenticate, early. We first required a username and password on our push endpoint, and Labcorp's deliveries were rejected. Labcorp confirmed in June 2026 that its web service deliveries identify themselves by source IP address. We changed the endpoint to an IP allow list that rejects everything in production if the list is empty.
- Use Labcorp's status list exactly. Status and result codes come from Labcorp's specification. Map every code in a tested table, and send unknown codes to review instead of guessing.
- Expect pushes to be missed. Network blips and deploys happen. The reconciliation job is what makes the system trustworthy, so build it on day one.
- Keep the raw messages. When Labcorp and the platform disagree about a result, the stored original message settles it.
The same platform also screens people against federal and state exclusion lists. Our exclusion screening integration guide covers OIG LEIE, SAM.gov and state Medicaid checks.
Quest Diagnostics integration: how it compares
Quest has the same two sides as Labcorp:
- Clinical. Quest says it interfaces with more than 900 EHR systems, and its Quanum tools cover ordering and results. Quest is also on Epic Aura.
- Employer. Quest's employer web services exchange drug test order and collection status, results and collection site data as XML, and the Employer Solutions Portal (ESP) is its portal for managing a testing program. Quest's project team issues the credentials and endpoint for each integration.
We also built a Quest occupational health connector, covering drug, alcohol and physical tests, on the same pattern: an inbox for pushed updates, duplicate checks and a scheduled check for orders that stop moving. One difference: in our build, Quest's order details call returns a document link, not a status, so the scheduled job flags stuck orders for a person instead of recovering them automatically.
Security and compliance for Labcorp integrations
| Area | Clinical route | Employer drug testing route |
|---|---|---|
| Main law | HIPAA: Labcorp and providers are covered entities; your company is usually a business associate and needs a BAA | DOT 49 CFR Part 40 for federal tests, state drug testing laws, FCRA for screening companies |
| Identifiers | Patient ID, order number, accession number | Donor SSN or ID, registration number, specimen ID |
| Who may see results | Ordering provider, care team, patient | MRO, designated employer representative, screening company per consent |
| Transport | Secure network link or SFTP for HL7 | HTTPS web services; inbound pushes from known Labcorp addresses |
| Must-haves | Audit logs, unique logins, encryption in transit and at rest | Masked SSNs in logs, field encryption, consent records, retention rules |
Testing checklist before go-live
- A new order, a change and a cancel reach Labcorp and are acknowledged; a rejected order reaches a person with the reason.
- Results file on the right patient or donor, with correct units, flags and status.
- Preliminary results are replaced by final, and corrected results replace final with history kept.
- A duplicate message does not create a second result.
- A push for an unknown registration or order is stored and flagged, never dropped.
- Reconciliation finds a result whose push was blocked on purpose during testing.
- Logs show no SSNs, passwords or full result payloads.
- For drug testing: each result outcome you can receive (negative, positive, dilute, cancelled, invalid) maps to the right status in your product.
- For clinical: labels and requisitions match Labcorp's format and pass their certification tests.
What to monitor once your Labcorp connection is live
| Signal | Why it matters |
|---|---|
| No pushes or results in the usual window | The connection or Labcorp's delivery has stopped |
| Orders or registrations with no result past the expected turnaround | Specimen not collected, rejected, or a lost message |
| Rejected orders and SOAP faults by type | A field or code problem after a change on either side |
| Pushes that match no order or registration | Identifiers stored wrongly or a different account's traffic |
| Results found by reconciliation instead of push | A rising number means pushes are being missed |
| Circuit breaker opening | Labcorp is slow or unreachable |
| Donors registered but not collected before expiry | An operations problem for the employer, worth a reminder |
What drives the effort
| Driver | Lower effort | Higher effort |
|---|---|---|
| Route | Existing EHR interface, Epic Aura, or Labcorp Link | New HL7 interface or new web services integration |
| Direction | Results only | Orders and results |
| Test menu | A few panels | Full compendium with AOE questions |
| Extras | None | Labels, requisitions, ABNs, consent, payment, FCRA notices |
| Labs | Labcorp only | Labcorp plus Quest and regional labs |
Labcorp's onboarding queue and certification testing usually set the calendar more than the build does, so start the conversation with Labcorp first.
How Nirmitee helps
We build and run Labcorp and Quest integrations for health tech companies, practices, health systems and screening platforms: clinical HL7 interfaces with compendium and LOINC mapping, employer drug testing web services with push handling and reconciliation, and FHIR feeds of Labcorp results into apps. Every connection ships with tests, monitoring and a daily check that every order has its result. See our lab integration services and tell us which Labcorp route you need.
Ready to scale?
Talk to our healthcare engineering team about building, integrating, and shipping faster.
Frequently Asked Questions
Does Labcorp have a public API?
How do I integrate my EHR with Labcorp?
Which HL7 messages does a Labcorp interface use?
What is Labcorp Link?
Can I order Labcorp tests through Epic?
How does Labcorp drug testing integration work?
What is a Labcorp donor registration number?
What is an eCCF?
How do I get Labcorp results into a patient app?
How long does a Labcorp integration take?
What is the difference between Labcorp and Quest integration?
Do I need a BAA for a Labcorp integration?


