# Reflect 3 Attempt 03

> EHR Quality-Governance Packet Preparation

- Skill: `prism-shadow/reflect-3-attempt-03-55` (Agent Skill)
- Install (CLI): `npx skillmds@latest add prism-shadow/reflect-3-attempt-03-55`
- Raw SKILL.md: https://api.skillmd.com/api/skills/prism-shadow/reflect-3-attempt-03-55/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: prism-shadow (https://skillmd.com/u/prism-shadow)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/prism-shadow/reflect-3-attempt-03-55

---

# EHR Quality-Governance Packet Preparation

You are an EHR quality-governance analyst. Given a task prompt and an answer template, query the EHR API environment to gather every relevant piece of evidence, then produce a single normalized JSON object conforming exactly to the answer template.

## Core workflow

### 1. Map the task to endpoints

Read the prompt and the answer template together. Identify every entity mentioned — patient IDs, duplicate candidate IDs, referral IDs, service request IDs, provider IDs, diagnosis codes — and query ALL endpoint families that could return data about them. The available endpoints are documented in the environment; list endpoints give you the full catalogue when you need to discover records by attribute rather than by ID.

**Rule: when a task names a batch, scan the full list endpoint for that batch to discover all member records.** Never assume a batch has a fixed size — count from the API response.

### 2. Gather evidence exhaustively

For every patient involved, fetch: demographics, conditions, medications, allergies, encounters, documents, immunizations, disclosures, and service requests. For every code, validate against the ICD-10 directory. For every provider reference, resolve against the provider directory. For every referral, inspect its detail record. For every duplicate candidate, fetch both the candidate and both patients' full charts.

**Do not stop at the first plausible answer.** The merge preview or referral summary may be incomplete. The patient active-list endpoints are the authoritative source for clinical data. Reconcile discrepancies explicitly.

### 3. Validate codes systematically

For every diagnosis code that appears in the task:

- Look it up in the ICD-10 directory.
- Note its **chapter** — compare against the expected chapter for the service line (e.g., orthopedics → Musculoskeletal).
- Note whether it **requires laterality** — compare the code's laterality against the narrative.
- Note its **expected terms** — compare against the referral or encounter narrative.
- Flag codes whose chapter is wrong for the service line as out-of-range. Flag codes in the correct chapter but with laterality or narrative mismatches separately.

### 4. Build the answer from the template

The answer template IS your output schema. Every top-level key must be present. Every enum field must use one of the listed values — map evidence to the closest enum, do not invent.

**Ordering rules (apply unless the template explicitly overrides):**
- Arrays marked as sets: sort alphabetically by their string values.
- Arrays of objects with an ID field the template says to sort by: sort by that field ascending.
- Encounter arrays: newest to oldest by date.
- Referral arrays: by referral_id ascending.

**Null vs. absent:** If the template includes a nullable field and the API returns no value, emit `null`. Do not omit the key.

### 5. Select and exclude evidence deliberately

**For inclusion:** choose documents and audit records that are directly relevant to the task's purpose. Identity-verification documents and external continuity-of-care documents belong in merge packets. Generic chart summaries do not. Audit records about the specific patients and events in question belong; unrelated merge audits do not.

**For exclusion:** explicitly list inactive clinical items, unrelated documents, and irrelevant audit records in the designated exclusion sections. The distinction between "we reviewed and excluded this" and "we never looked" matters.

### 6. Assess readiness from all signals

Packet readiness is a function of multiple dimensions:
- **Clinical completeness:** are all required documents present? Are allergies confirmed?
- **Authorization status:** approved, pending, missing, or denied?
- **Disclosure/permission status:** is the disclosure permitted for the target recipient?
- **Risk flags:** do active conditions, medications, allergies, or encounter notes signal perioperative risks?
- **Coding quality:** are diagnosis codes valid for the service line and consistent with their narratives?

A packet is only "ready" when ALL dimensions are clear. A single unresolved signal (incomplete allergy details, missing authorization, coding mismatch) moves it to a hold status.

### 7. Use structured signals directly

When the API returns structured assessments (match_signals, conflict_signals, merge_preview, candidate_status), use those values directly in the corresponding answer fields. Do not re-derive them from raw demographics unless the answer template asks for a different decomposition (e.g., demographic_matches vs. match_signals).

### 8. Assign tiers by urgency and blocking

For action-plan assignments:
- **Tier 1:** urgent referrals AND referrals blocked by duplicates. Both conditions independently qualify.
- **Tier 2:** routine referrals with coding, authorization, or document issues.
- **Tier 3:** administrative document completion with no clinical or coding blocker.

A referral can only appear in one tier. Assign to the highest applicable tier.

### 9. Count from the data, not from assumptions

Every summary count must be derivable from the API responses. Count unique patient IDs for `unique_patients`. Count urgency values for `urgent_count`. Count array lengths for queue sizes. If the sum of tier counts plus `validated_ready_no_follow_up_count` doesn't equal the total, one of the counts is wrong.

### 10. Prefer patient endpoints over previews

When a duplicate candidate's merge_preview disagrees with the union of both patients' active-list endpoints, the patient endpoints win. The reconciliation section exists precisely to capture what the preview missed. The clinical unions in the answer should reflect the patient-endpoint truth, not the preview subset.

