CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

parsing-hl7v2-messages

Decodes pipe-delimited HL7 v2.x messages (ADT, ORU, MDM, ORM) into structured segments/fields/components and surfaces OBX-5 and NTE-3 free-text narrative for OpenMed. Use before OpenMed processing when ingesting HL7 v2 feeds from an interface engine, lab/results system, or ADT stream and you need the embedded clinical note text de-identified and analyzed. Flatten OBX/NTE text then call openmed.deidentify and openmed.analyze_text; segment-aware redaction is available via openmed.interop.hl7v2. Trigger keywords: HL7, HL7 v2, ADT, ORU, OBX, MSH, PID, pipe-delimited, interface engine, Mirth, lab results.

72

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

76%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

Strong, domain-expert content: executable code, correct HL7 subtleties, and a realistic edge-case catalog. The one real weakness is the absence of any validation/verification checkpoint in the workflow despite it being a batch ingestion and de-identification task — the rubric explicitly caps workflow clarity at 3 in that case. Everything else is at or near the top anchors.

Suggestions

Add an explicit validation step to the workflow (e.g., after redact_hl7v2/deidentify, scan the redacted output for residual PHI patterns such as MRNs, DOBs, and provider names, and confirm segment delimiters and order are preserved, before persisting anything).

Include a parse sanity checkpoint before narrative extraction — e.g., verify MSH is the first segment and check the message type in MSH-9 against the expected ADT/ORU/MDM/ORM types, bailing out with guidance on MLLP byte stripping if it fails.

For the redaction path, show a quick round-trip check (segment count and names via HL7Message.segment_names() before and after redaction) so Claude can detect framing corruption instead of silently shipping a malformed message.

DimensionReasoningScore

Conciseness

The body is dense with non-obvious domain specifics (MSH-1/MSH-2 positional subtlety, MLLP framing, escape sequences, OBX-2 value-type gating) and assumes Claude's competence, but the opening paragraph ('HL7 v2.x is the workhorse of hospital interfacing…') partially re-narrates the description and is mild scene-setting that could be trimmed — one notch below the lean-every-token-earns-its-place anchor.

4 / 5

Actionability

Two complete, copy-paste-ready Python blocks (parse → extract → deidentify → analyze_text, and redact_hl7v2 with field_map/date_shift_days options), plus a concrete field_map override example and a named adapter API surface (HL7Message, HL7Segment, HL7V2Encoding, HL7FieldRule, DEFAULT_FIELD_MAP). Fully executable with no pseudocode.

5 / 5

Workflow Clarity

The 5-step workflow (frame-split → read encoding from MSH → locate narrative → de-identify/analyze → rejoin by PID-3/PV1-19) is clearly sequenced, but it contains no explicit validation or verification checkpoint — no step to confirm the redacted output is free of residual PHI or that delimiters/segment order survived — and this is a batch feed-ingestion/persistence context, so the missing-validation cap applies. Per the rubric's anti-drift check, it is not a 4: 'most checkpoints present' would require at least one output-verification step.

3 / 5

Progressive Disclosure

A single well-sectioned file (When to use, structure, Quick start, redaction, Workflow, Edge cases, Standards) with clearly signaled external standards links, no nested references and no bundle files to misplace. It sits above anchor 3 (structure is good, nothing that clearly belongs in a separate file is inlined) but below 5: at ~135 lines it exceeds the under-50-line simple-skill exception, and the edge-case/catalog material (escape sequences, version differences, field maps) would naturally split into a reference file if the skill grows.

4 / 5

Total

16

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is exemplary: concrete multi-action capability statement, an explicit 'Use when' clause with named ingestion sources, comprehensive natural trigger terms including vendor names, and a distinct HL7 v2 niche. Third-person voice is maintained and there is no padding or over-claiming.

DimensionReasoningScore

Specificity

Multiple concrete actions are named — "Decodes pipe-delimited HL7 v2.x messages (ADT, ORU, MDM, ORM) into structured segments/fields/components", "surfaces OBX-5 and NTE-3 free-text narrative", "Flatten OBX/NTE text then call openmed.deidentify and openmed.analyze_text", plus segment-aware redaction via openmed.interop.hl7v2 — comprehensive coverage matching the top anchor.

5 / 5

Completeness

Explicitly answers both what (decodes into segments/fields/components, surfaces narrative, calls the two named OpenMed functions) and when ("Use before OpenMed processing when ingesting HL7 v2 feeds from an interface engine, lab/results system, or ADT stream") with concrete trigger phrases, in third-person voice.

5 / 5

Trigger Term Quality

Comprehensive natural-term coverage: "HL7, HL7 v2, ADT, ORU, OBX, MSH, PID, pipe-delimited, interface engine, Mirth, lab results" — includes message-type synonyms, field names, an encoding descriptor, a vendor product name, and plain-English phrases a user would actually say.

5 / 5

Distinctiveness Conflict Risk

A clear niche — HL7 v2 pipe-delimited parsing feeding OpenMed de-identification — with distinct HL7-specific triggers (ADT, ORU, OBX, MSH, PID, Mirth) that no generic de-id or document skill would match; minimal conflict risk.

5 / 5

Total

20

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

maziyarpanahi/openmed

Path

skills/parsing-hl7v2-messages/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.