CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

fetching-fhir-resources

Fetches and pages FHIR R4 resources (Patient, DocumentReference, DiagnosticReport, Observation, Condition) from a FHIR REST server, decodes base64 attachments, and extracts clinical narrative for OpenMed. Use before OpenMed processing when pulling charts from an EHR FHIR API (Epic, Cerner/Oracle, HAPI, or any US Core server) and you need the note text de-identified and analyzed, then results rejoined by patient. Hand narrative to openmed.deidentify and openmed.analyze_text; openmed.interop.fhir_operations implements a $de-identify operation over Bundles. Trigger keywords: FHIR, R4, US Core, DocumentReference, DiagnosticReport, Bundle, _revinclude, presentedForm, base64, EHR API.

69

Quality

87%

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

68%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 highly actionable — executable pagination/decoding code and concrete OpenMed hand-off snippets — with well-organized sections and a thoughtful gotcha catalog. Its weaknesses are re-explained FHIR fundamentals in the intro/overview sections and a batch paging workflow whose validation guidance (CapabilityStatement check, page caps, dedupe, Retry-After) lives in Edge cases rather than as explicit workflow checkpoints with retry loops.

Suggestions

Fold validation into the Workflow as explicit steps with retry loops — e.g., '3. Page via Bundle.link[next] until exhausted; cap page count and dedupe by resource id' and 'If a page returns 429, honor Retry-After and back off before retrying' — so the batch operation has real checkpoints instead of only prose in Edge cases.

Cut or compress 'FHIR REST in one minute' and the intro paragraph to just the non-obvious specifics (where narrative lives: DocumentReference.content.attachment and DiagnosticReport.presentedForm, base64-encoded); Claude already knows that FHIR search is GET [base]/Type?param=value.

Move the openmed.interop.fhir_operations API details and the gotcha catalog into a references/ file (e.g., references/fhir-operations.md, references/edge-cases.md) linked one level deep from SKILL.md, keeping the main file a lean overview plus quick start.

DimensionReasoningScore

Conciseness

The body is mostly efficient, but the intro ('FHIR R4 is the modern EHR API: a RESTful, JSON-or-XML interface over resources...') and the 'FHIR REST in one minute' section ('Search is GET [base]/[Type]?param=value', explaining Bundle.link[next] and _count) re-explain FHIR fundamentals Claude already knows. This matches the score-3 anchor (mostly efficient, some unnecessary explanation that could be tightened); it is not score-4 because two sections are padding rather than 'minor instances', and not score-2 because the bulk (quick start, hand-off, edge cases) is genuinely non-obvious, skill-specific content.

3 / 5

Actionability

The quick start is copy-paste-ready executable Python (iter_bundle paging helper, attachment_text decoder, full deidentify→analyze loop with a rejoin key), plus concrete GET examples and a runnable de_identify_bundle snippet. This matches the score-5 anchor (fully executable, common cases covered) and exceeds score-4, which permits gaps in concrete coverage.

5 / 5

Workflow Clarity

The six-step Workflow (Authenticate → Search narrowly → Page → Extract narrative → De-identify → Rejo) is clearly sequenced, but this is a batch operation (paging large result sets) and the sequence embeds no explicit validation checkpoints or error-recovery loops — checks like '/metadata CapabilityStatement' confirmation and 'cap page count and dedupe by resource id' sit in Edge cases, not the workflow, and there is no validate-and-retry pattern for error responses. Per the batch-operation cap, workflow clarity cannot exceed 3; it is above 2 because the sequence itself is well-defined and partially checkpointed via the edge-case guidance.

3 / 5

Progressive Disclosure

The single-file body is well-organized into clear sections (When to use, Quick start, Workflow, Hand-off, Edge cases, Standards & references) with only one-level-deep external spec links — matching the score-4 anchor (good structure, minor organization gaps). It falls short of score-5 because at ~144 lines with no bundle files, some material (e.g., the $de-identify operation API details or the gotcha catalog) is dense enough that a well-signaled reference file would improve navigation; and the under-50-line exception for scoring 5 on sections alone does not apply.

4 / 5

Total

15

/

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.

An exemplary description: third-person voice, concrete multi-action 'what', an explicit 'Use before...' trigger clause, vendor and protocol keywords a real user would say, and a dedicated trigger-keyword list. It is dense but every clause is informative rather than padded, and it cleanly delineates its scope from the sibling OpenMed skills it hands off to.

DimensionReasoningScore

Specificity

The description lists multiple concrete, specific actions — 'Fetches and pages FHIR R4 resources (Patient, DocumentReference, DiagnosticReport, Observation, Condition)', 'decodes base64 attachments', 'extracts clinical narrative', 'results rejoined by patient', and a '$de-identify operation over Bundles' — with comprehensive coverage of the skill's capability surface. It matches the score-5 anchor (multiple specific concrete actions, comprehensive) and exceeds the score-4 anchor, which allows coverage gaps; none are evident.

5 / 5

Completeness

It explicitly answers both 'what' (fetch, page, decode, extract, rejoin) and 'when' ('Use before OpenMed processing when pulling charts from an EHR FHIR API ... and you need the note text de-identified and analyzed') with concrete trigger phrases. This is a direct match for the score-5 anchor's example pattern, and strictly stronger than the score-4 anchor's 'when could be more explicit'.

5 / 5

Trigger Term Quality

An explicit keyword list ('FHIR, R4, US Core, DocumentReference, DiagnosticReport, Bundle, _revinclude, presentedForm, base64, EHR API') is supplemented by natural phrasing users would actually say — 'pulling charts from an EHR FHIR API', vendor names 'Epic, Cerner/Oracle, HAPI', and 'note text de-identified and analyzed'. Coverage is comprehensive with synonyms; it clearly beats the score-4 anchor ('a few natural terms missing').

5 / 5

Distinctiveness Conflict Risk

The niche is clear and narrow — client-side FHIR R4 fetching/paging/decoding feeding OpenMed — with distinct triggers (FHIR, _revinclude, presentedForm, EHR API) unlikely to fire for unrelated skills; server-side de-identify and analysis are explicitly scoped as hand-offs to other components. It fits the score-5 anchor (clear niche, distinct triggers, minimal conflict) better than the score-4 anchor's 'minor overlap risk with closely related skills'.

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/fetching-fhir-resources/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.