Prerequisites
- Pidgeon CLI installed (
dotnet tool install --global Pidgeon.CLI --version 0.1.0-beta.1) - A directory of real HL7 messages to de-identify
Basic de-identification
Process an entire directory of messages:- Reads every message file in
./real-messages - Replaces patient names, MRNs, SSNs, addresses, and phone numbers
- Shifts all dates forward by 30 days (preserving relative intervals)
- Writes clean messages to
./safe-messages
Date shifting
Date shifting moves all dates by a fixed offset while preserving the temporal relationships between events:Consistent hashing
For scenarios where you need the same input to produce the same output (e.g., matching patients across de-identified files), use a salt:Preserve identifiers
If you need to keep certain identifiers intact (e.g., for matching across systems):What gets de-identified
Workflow: real messages to test data
1
Collect real messages
Export messages from your integration engine (Mirth, Rhapsody, etc.) into a directory.
2
De-identify
3
Validate de-identified output
4
Use in testing
The de-identified messages retain the same structure, segment ordering, and field patterns as the originals — ideal for integration testing.
Next steps
- Analyze de-identified messages to create vendor profiles
- Generate additional synthetic data matching the same patterns
- Build test scenarios using de-identified messages as templates
