Skip to content

Know your healthcare interfaces will work, before and after go-live.

Build HL7 v2 and FHIR test messages, check C-CDA documents, seed staging from your own schema, and watch your live feeds, all on your machine.

  • Free during the public beta.
  • AI runs on your machine by default. You can use your own API key instead.
Validate · strict1 error · exit 1
MSH|^~\&|NORTHSTAR|ED|EPIC|HOSP|202609261315||ADT^A01|A004281|P|2.5.1EVN|A01|202609261315PID|1||00428165^^^MRN||ALVAREZ-GARCIA^MAYA||20261301|FPV1|1|E|ED^04^A||||18472^CHEN^PRIYAOBX|1|NM|8480-6^SYSTOLIC BP^LN||122|mm[Hg]

PID-7 birth date is not a valid date

"20261301" has month 13. HL7 v2.5.1 · strict mode

Example data. Post checks each field against the standard and names the one that fails.
What Pidgeon covers today
38
HL7 v2 message types across 8 versions, 2.3 to 2.8 (279 combinations)
137
FHIR R4 resource types
13
C-CDA document checks

Well-formed is not the same as right.

A structural validator will still pass a lab value no living patient could have. Pidgeon checks the standard, and its optional clinical checks flag values like that.

We publish what we catch.

Tracer hides one realistic error in half of 1,000 test messages and counts what our checks catch.

Read the benchmark →

Tracer, rules only

15 / 16

kinds of error caught by rules alone

False alarms on clean messages
1 of 501
Time per check
~0.7 ms

The 16th kind is a contradiction in free text, so it goes to the AI reviewer.

Tools your AI can run.

Your AI can call Pidgeon from a chat or a terminal, and it gets the same checks you do.

Use it from your AI chat

Connect Claude, Codex, or any AI tool that supports MCP, the Model Context Protocol.

Interface test · AI workspacePidgeon MCP connected
AgentChangesTerminal
Build 25 ADT^A01 messages with the Epic 2024+ profile for an emergency-admit test, then validate all of them strictly.
pidgeon.generate

type: ADT^A01 · version: 2.5.1 · count: 25 · seed: 428165

25 messages → /tmp/emergency-admit.hl7

pidgeon.validate

file: /tmp/emergency-admit.hl7 · mode: strict

25 / 25 valid · 0 errors · 1.8s

The 25 patients are generated and all 25 messages pass strict HL7 v2.5.1 validation. I kept the seed, so you can regenerate the same messages later.

Ask a follow-up or request another tool call…⌘ ↵
Example data. An AI chat calling Pidgeon tools.

Or from a terminal

Any AI that can run a terminal can use the CLI. The exit code tells it whether the messages passed.

bash~/interface-tests
Terminal 1Problems 0zsh · pid 18342

agent› I’ll generate 25 reproducible messages, validate them, then read the exit code.

$ pidgeon generate ADT^A01 --hl7-version 2.5.1 --count 25 --seed 428165 --output emergency.hl7

Generated 25 messages → emergency.hl7

$ pidgeon --output-format json validate emergency.hl7 --mode strict

✓ 25 of 25 valid · 0 errors · exit 0

$ mkdir -p fixtures && mv emergency.hl7 fixtures/

exit 0 · completed in 42 ms

agent› The fixture is reproducible, standards-valid, and ready for the integration test.

Example data. An AI agent running the CLI.

Works with the AI client you already use.

Explore the CLI and MCP
Pidgeon Health

Try it on your own interfaces.