CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

structuring-radiology-reports

Converts free-text radiology narratives into structured findings and impression — with measurements, laterality, anatomy, and follow-up recommendations — after OpenMed NER. Use when the user has a CT/MRI/X-ray/ultrasound/mammography report and needs the sections split (technique, comparison, findings, impression), lesion measurements and laterality captured, BI-RADS / Lung-RADS assessment categories pulled, or incidental findings and recommended follow-up tracked. Trigger keywords: radiology report, findings, impression, RadLex, DICOM-SR, BI-RADS, Lung-RADS, ACR, laterality, measurement, nodule, incidental finding, follow-up, structured reporting. Pairs after OpenMed: run openmed.analyze_text on the report (Anatomy/Disease/measurement entities), then assemble structured findings. De-identify the report first. Decision-support only — not a diagnostic medical device.

Quality

88%

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

75%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.

The body is a well-organized, mostly executable skill: concrete Quick start code, a clear sequenced workflow with a radiologist-verification checkpoint, and high-value edge-case guidance. The main gaps are the two undefined helper functions that keep the example from being copy-paste ready and the absence of an explicit validation/feedback loop in the workflow.

Suggestions

Define _split_findings and _extract_followup inline (or supply them as a scripts/ helper) so the Quick start example is fully copy-paste runnable — currently the reader must implement two unspecified functions.

Add an explicit validation checkpoint to the workflow, e.g. 'before emitting output, verify every finding has non-null source_offsets and laterality binds to an adjacent anatomy span; if not, re-inspect the source sentence' — a validate-and-retry loop rather than a single end-of-flow human review.

Trim the opening two paragraphs to just the target schema ({technique, comparison, findings[], impression} with anatomy/laterality/measurement), since Claude already knows the general structure of radiology reports.

DimensionReasoningScore

Conciseness

The body is dense and high-value (quick-start code, tight 7-step workflow, targeted edge cases, a references section) with no tutorial-style padding, but the opening two paragraphs partially explain what Claude already knows (that radiology reports contain findings, impressions, and categories), and a few workflow sentences could be trimmed. It is not a 5 because that framing does not earn its place, and not a 3 because over-explanation is isolated rather than pervasive.

4 / 5

Actionability

The Quick start uses real API calls ('openmed.deidentify(report, policy="hipaa_safe_harbor")', 'openmed.analyze_text(text, model_name="anatomy_detection_superclinical", ...)') with concrete regexes for sections, measurements, laterality, and RADS categories — mostly executable. It is not a 5 because '_split_findings' and '_extract_followup' are referenced but never defined, so the example is not copy-paste runnable; it is not a 3 because the gaps are two clearly-delegated helpers while the rest is concrete, working code.

4 / 5

Workflow Clarity

The 7-step workflow is clearly sequenced (de-identify → split sections → NER → build findings → pull assessment → flag incidentals → map/verify) and ends with an explicit checkpoint ('surface the whole structure to a radiologist for verification'), with the edge-cases section covering failure modes like negation and laterality binding. It is not a 5 because there is no explicit validate-and-retry feedback loop (e.g., verify every finding traces to source offsets before emitting output); it is not a 3 because a verification step and risk handling are present, not absent.

4 / 5

Progressive Disclosure

No bundle files (references/, scripts/, assets/) exist, and the ~150-line body is well-sectioned (When to use, Quick start, Workflow, Hand-off, Edge cases, Standards) with external standards appropriately deferred to a link list. It is not a 5 because the skill exceeds the 'under 50 lines' self-contained exception — the edge-case catalogue and standards list are candidates for one-level-deep reference files; it is not a 3 because structure is good and nothing is buried or inlined that badly needs extraction.

4 / 5

Total

16

/

20

Passed

Description

96%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 strong: it uses third-person voice, states concrete capabilities comprehensively, gives an explicit 'Use when' clause with modality coverage, and includes a rich keyword list. The only weakness is that several generic clinical trigger terms ('findings', 'follow-up', 'measurement') overlap with sibling OpenMed skills, introducing minor conflict risk.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions with comprehensive coverage: 'sections split (technique, comparison, findings, impression), lesion measurements and laterality captured, BI-RADS / Lung-RADS assessment categories pulled, or incidental findings and recommended follow-up tracked', plus 'De-identify the report first'. This matches the anchor for multiple specific concrete actions with comprehensive coverage; it is not the level below (4) because there are no meaningful gaps in capability coverage.

5 / 5

Completeness

Both 'what' ('Converts free-text radiology narratives into structured findings and impression — with measurements, laterality, anatomy, and follow-up recommendations') and 'when' ('Use when the user has a CT/MRI/X-ray/ultrasound/mammography report and needs...') are explicitly and concretely answered with trigger phrases. This exactly matches the anchor for clearly and explicitly answering both, and exceeds the level-4 anchor where 'when' could be more specific.

5 / 5

Trigger Term Quality

The explicit keyword list ('radiology report, findings, impression, RadLex, DICOM-SR, BI-RADS, Lung-RADS, ACR, laterality, measurement, nodule, incidental finding, follow-up, structured reporting') plus modality terms (CT/MRI/X-ray/ultrasound/mammography) covers the natural terms a user would say, including synonyms and category-system names. It is not a 4 because no commonly used natural phrasing is missing.

5 / 5

Distinctiveness Conflict Risk

The radiology niche is clear and terms like 'RadLex', 'BI-RADS', 'Lung-RADS', 'DICOM-SR' are unambiguous, but generic clinical keywords like 'findings', 'impression', 'measurement', 'follow-up', and 'laterality' overlap with closely related OpenMed skills such as extracting-clinical-entities and segmenting-clinical-sections, creating minor conflict risk. It is not a 5 because of that overlap with sibling clinical skills, and not a 3 because the radiology-specific triggers dominate and it explicitly positions itself ('Pairs after OpenMed: run openmed.analyze_text...').

4 / 5

Total

19

/

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/structuring-radiology-reports/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.