HL7 for public health reporting

Public health HL7 covers several different worlds: electronic laboratory reporting, syndromic surveillance, immunization, cancer registry reporting, newborn screening, and local reportable-condition feeds. The message names may be familiar, especially ORU_R01, ADT events, and VXU_V04, but the implementation guide is the real contract.

CDC public pages for immunization and syndromic surveillance are useful examples: they point implementers to specific HL7 v2.5.1 guides and profiles. Do not submit generic HL7 and expect the public-health receiver to guess your local code meanings.

MSH|^~\&|LIS|CITYLAB|PH|STATE|20260715170000||ORU^R01^ORU_R01|PH000501|P|2.5.1 PID|1||123456^^^CITYHOSP^MR||Smith^Jane^Anne^^Ms^^L||19800314|F|||12 High Street^^Auckland^^1010^NZ^H ORC|RE|ORD4488^EHR|FILL7788^LIS OBR|1|ORD4488^EHR|FILL7788^LIS|94500-6^SARS-CoV-2 RNA Resp Ql NAA+probe^LN|||20260715103000|||||||||12345^Careful^Clara^^^^^^NPI||||||20260715165000|||F SPM|1|SPEC7788^LIS||NPS^Nasopharyngeal swab^HL70487|||||||P||||||20260715103500 OBX|1|CE|94500-6^SARS-CoV-2 RNA Resp Ql NAA+probe^LN||260373001^Detected^SCT||||||F|||20260715163000

This is synthetic sample data for learning and testing. Open it in HL7 Soup Web before mapping it so the segment groups, repeated fields, and coded values are visible.

The Profile Is The Contract

A public-health receiver will usually constrain message structure, required fields, value sets, code systems, patient demographics, provider details, facility identifiers, specimen details, and acknowledgement behavior. If your local EHR can produce a generic ORU, expect a mapping layer before it becomes a valid ELR message.

Use the receiver's onboarding test deck. Public-health feeds often have certification or validation gates, and the failure may be a missing component, an outdated code, or an unsupported optional segment rather than a parse error.

  • Keep LOINC, SNOMED CT, CVX, MVX, ICD, and local code system labels distinct.
  • Preserve specimen fields in SPM when required.
  • Do not invent acknowledgement behavior; follow the guide.

Validate Components And Value Sets

Do not stop at "the field is present." A public-health implementation guide may require a field such as PID-5, while the real conformance question depends on a component, subcomponent, usage note, or value set. A populated field can still fail if the required component is empty, the wrong component carries the value, or the code is outside the receiver's allowed table.

In Integration Soup, make validation failures field-specific enough for staff to fix the source data. Capture the inbound message, transformed outbound message, public-health ACK, and the exact segment/field/component location from ERR when the receiver provides it. HL7 Soup Web is useful for quickly checking whether the failing value is actually where the implementation guide expects it.

Different Public Health Feeds Use Different Message Families

ELR commonly uses ORU_R01. Syndromic surveillance may use ADT messages and optional lab data. Immunization uses VXU and query/response patterns. Cancer pathology often uses constrained pathology reporting guidance. Treat each as a separate interface even when they share patient and observation segments.

A Practical Integration Soup Workflow

In Integration Soup, build public-health workflows around validation, routing, ACK capture, and support visibility. Use transformers for required code conversion, but keep the original inbound message and the public-health outbound message available for audit.

Use HL7 Soup Web to inspect a failed message quickly, then use Integration Soup logs to trace the source values, transformed values, outbound control ID, and public-health ACK.

The Test Pack I Would Ask For

Ask for accepted, warning, and rejected messages; missing required demographics; invalid code; corrected result; duplicate resend; local facility routing; and one sample for every reportable condition or scenario required by the onboarding guide.