prior-auth-review-skill

$npx mdskill add anthropics/healthcare/prior-auth-review-skill

Automates payer review of prior authorization requests using clinical data and coverage policies

  • Reduces manual review time for prior authorization requests by automating medical necessity assessment
  • Processes clinical documentation and validates against coverage policies using internal data models
  • Generates authorization decisions based on policy compliance and clinical appropriateness
  • Delivers structured authorization decision packages with rationale and provider notifications

SKILL.md

.github/skills/prior-auth-review-skillView on GitHub ↗
---
name: prior-auth-review-skill
description: Automate payer review of prior authorization (PA) requests. This skill should be used when users say "Review this PA request", "Process prior authorization for [procedure]", "Assess medical necessity", "Generate PA decision", or when processing clinical documentation for coverage policy validation and authorization decisions.
---

# Prior Authorization Review Skill

## Overview

This skill automates the payer review process for prior authorization (PA) requests. It processes clinical documentation, validates medical necessity against coverage policies, and generates authorization decisions with supporting rationale.

**Target Users:** Health insurance payer organizations (Medicare Advantage, Commercial, Medicaid MCOs)

**Value Proposition:** Reduce PA review time from 30-60 minutes to under 5 minutes. Enable auto-approval for 40-60% of clear-cut cases.

---

## Architecture

This skill uses a **simplified 2-subskill workflow**:

```
Subskill 1: Intake & Assessment
  ↓ (validates data, extracts clinical info, assesses medical necessity)
Subskill 2: Decision & Notification
  ↓ (generates auth decision with provider notification)

ONLY REVIEW THE SUBSKILL FILES WHEN THEY ARE NEEDED, DONT PRE-READ THE WHOLE SKILL ON BOOTUP

Output: Authorization Decision Package
```

### Waypoint Files

```
waypoints/
├── assessment.json          # Subskill 1 output (consolidated)
└── decision.json           # Subskill 2 output (final decision)
```

---

## Prerequisites

### Required MCP Servers

This skill requires 3 healthcare MCP connectors:

1. **CMS Coverage MCP Connector** - Medicare coverage policies (NCDs, LCDs)
2. **ICD-10 MCP Connector** - Diagnosis code validation and lookup
3. **NPI MCP Connector** - Healthcare provider verification via NPPES

**For detailed tool usage, parameters, and CMS web resources, see [references/01-intake-assessment.md](references/01-intake-assessment.md#prerequisites).**

### MCP Invocation Notifications

During execution, the skill displays notifications before and after each MCP connector call:
- Before: "Verifying provider credentials via NPI MCP Connector..."
- After: "NPI MCP Connector completed successfully - Provider verified: Dr. [Name]"
- Before: "Validating diagnosis codes via ICD-10 MCP Connector..."
- After: "ICD-10 MCP Connector completed successfully - [N] codes validated"
- Before: "Searching coverage policies via CMS Coverage MCP Connector..."
- After: "CMS Coverage MCP Connector completed successfully - Found policy: [Policy ID]"
- Before: "Validating procedure codes via CMS Fee Schedule..."
- After: "CPT/HCPCS codes validated via CMS Fee Schedule - [N] codes checked"

### File Structure

See README.md File Organization section for complete directory structure and file descriptions.

---

## Decision Policy

This skill enforces a **decision policy rubric** that determines the outcome when validation checks fail. The policy balances regulatory compliance, patient safety, and operational efficiency.

**See [references/rubric.md](references/rubric.md) for:**
- Complete decision policy matrix (STRICT vs LENIENT enforcement)
- Detailed decision logic flow and pseudocode
- Override authority rules
- Customization examples (lenient mode, strict compliance mode, auto-approval mode)

**Quick Summary:**
- **STRICT policies** → Automatic DENY (provider verification, invalid codes, criteria NOT_MET)
- **LENIENT policies** → Automatic PEND (insufficient evidence, missing policy)
- **Default fallback** → PEND (when unclear)

To customize decision logic for your organization, edit [references/rubric.md](references/rubric.md).

---

## How to Use

### Process PA Request

Simply invoke the skill:

```
Use the prior-auth-review-skill
```

The skill will:
1. Check for incomplete requests (auto-resume if found)
2. Collect PA request details
3. Execute Subskill 1: Intake & Assessment
4. Execute Subskill 2: Decision & Notification
5. Output authorization decision package

---

## Execution Flow

When this skill is invoked:

### Startup: Check MCP Configuration

**Before proceeding, verify required MCP connectors are available.**

Check for the following MCP connectors:
1. **CMS Coverage MCP** - Required for coverage policy lookup
2. **ICD-10 MCP** - Required for diagnosis code validation
3. **NPI MCP** - Required for provider verification

**If any MCP connectors are not configured:**

Display error and exit:
> "Missing required MCP connectors: [list missing connectors]. This skill requires all three healthcare MCP connectors to function. Please configure the missing connectors and try again. See README Prerequisites for setup instructions."

Exit skill.

**If all MCP connectors are available:** Proceed silently to next step.

---

### Startup: Request Input Files

**Prompt the user to provide input files or use sample data.**

Display the following prompt:

```
Prior Authorization Review requires the following input files:

REQUIRED FILES:
1. Prior Authorization Request Form (PDF) - Contains member info, requested service, provider details
2. Clinical Notes / H&P (PDF) - History and physical examination documentation
3. Diagnostic Imaging Reports (PDF) - CT, MRI, X-ray, or other imaging results
4. Laboratory Results (PDF) - Relevant lab work supporting medical necessity
5. Additional Supporting Documentation (PDF, optional) - PFTs, specialist consults, etc.

OPTIONS:
(A) Upload your own files - Provide paths to each required document
(B) Use sample files - Load pre-configured sample case (CT-guided lung biopsy)

Enter your choice (A/B): ___
```

**If user selects (A) - Upload own files:**
- Prompt for path to each required file
- Validate files exist and are readable
- Store file paths for use in Subskill 1
- Set `using_sample_files = False`

**If user selects (B) - Use sample files:**
- Load sample files from `assets/sample/`:
  - `01_Prior_Auth_Request_Form.pdf`
  - `02_Clinical_Notes_H_and_P.pdf`
  - `03_CT_Chest_Report.pdf`
  - `04_Laboratory_Results.pdf`
  - `05_Pulmonary_Function_Tests.pdf`
- Display: "Loading sample case: CT-guided transbronchial lung biopsy for 1.2cm RUL nodule"
- Set `using_sample_files = True`
- **Demo mode note:** When sample files are used, the sample data contains demo NPI (`1234567890`) and sample member ID (`1EG4-TE5-MK72`). This combination triggers demo mode, which skips the NPI MCP lookup for this specific provider only. All other MCP calls (ICD-10 validation, CMS Coverage policy search) execute normally.

---

### Startup: Check for Existing Request

**Check if `waypoints/assessment.json` exists:**

- **If exists and incomplete:**
  ```
  Found incomplete PA request: [Request ID]
  Resume this request? (Y/N): ___
  ```
  - If **Y**: Load assessment and continue to Subskill 2
  - If **N**: Archive and start new

- **If does not exist:**
  - Start from Subskill 1

### Subskill 1: Intake & Assessment

**Execute:** Read and follow `references/01-intake-assessment.md`

**What it does:**
1. Collect PA request information
2. Validate provider credentials and codes (parallel MCP calls)
3. Search coverage policies
4. Extract clinical data
5. Assess medical necessity against policy criteria
6. Generate recommendation (APPROVE/DENY/PEND)

**Output:** `waypoints/assessment.json` (consolidated)

**Duration:** 3-4 minutes

**Ask user:**
```
Ready to proceed to Subskill 2? (Y/N): ___
```
- If **Y**: Continue to Subskill 2
- If **N**: Save and exit

### Subskill 2: Decision & Notification

**Execute:** Read and follow `references/02-decision-notification.md`

**What it does:**
1. Load assessment from Subskill 1
2. Confirm or override recommendation
3. Generate decision-specific content:
   - **Approval:** Auth number, validity dates, limitations
   - **Denial:** Specific reasons, policy references, appeal rights
   - **Pend:** Documentation requests, submission deadline
4. Create provider notification letter
5. Document audit trail

**Output:**
- `waypoints/decision.json` (final decision)
- `outputs/notification_letter.txt` (provider notification)

**Duration:** 1-2 minutes

### Final Summary

Display a concise completion message with:
- Request details (ID, member, service, decision outcome)
- Authorization number and validity dates (if approved)
- Files generated (waypoints and notification)
- Next steps based on decision type

Offer user options to:
1. View decision letter
2. Start new PA review
3. Exit

---

## Error Handling

**Missing MCP Servers:**
If required MCP connectors not available, display error listing missing connectors and Removefully.

**Missing Subskill Prerequisites:**
If Subskill 2 invoked without `waypoints/assessment.json`, notify user to complete Subskill 1 first.

**File Write Errors:**
If unable to write waypoint files, display error with file path, check permissions/disk space, and offer retry.

**Data Quality Issues:**
If clinical data extraction confidence <60%, warn user with confidence score and low-confidence areas. Offer options to: continue, request additional documentation, or abort.

For all errors, provide clear, actionable messages and user options for resolution.

---

## Quality Checks

Before completing workflow, verify:

- [ ] All required waypoint files created
- [ ] Decision has clear rationale documented
- [ ] All required fields populated
- [ ] Output files generated successfully

---

## Implementation Requirements

1. **Always read subskill files:** Don't execute from memory. Read the actual subskill markdown file and follow instructions.

2. **Auto-detect resume:** Check for existing `waypoints/assessment.json` on startup. If found and status is not "assessment_complete", offer to resume.

3. **Parallel MCP execution:** In Subskill 1, execute NPI, ICD-10, and Coverage MCP calls in parallel for optimal performance.

4. **Preserve user data:** Never overwrite waypoint files without asking confirmation or backing up.

5. **Clear progress indicators:** Show users what's happening during operations (MCP queries, data analysis).

6. **Graceful degradation:** If optional data missing, continue with available data and note limitations.

7. **Validate outputs:** Check that waypoint files have expected structure before proceeding.

### MCP Tool Call Transparency (REQUIRED)

**CRITICAL:** Every time you invoke an MCP tool or WebFetch for code validation:

**BEFORE the call:**
- Display a simple notification explaining which connector is being used and what data is being queried
- Example: "Verifying provider credentials via NPI MCP Connector..."

**AFTER receiving results:**
- Display a brief summary of findings
- Example: "NPI MCP Connector completed successfully - Provider verified: Dr. [Name] ([Specialty])"

**If there's an issue:**
- Explain what went wrong and what happens next
- Example: "NPI verification failed - Provider NPI not found in database. This will result in automatic DENY per policy."

**Benefits:**
- Provides audit trail of all data sources consulted
- Demonstrates thoroughness of review process
- Highlights MCP connector capabilities
- Makes AI decision-making transparent and explainable
- Helps users understand what information drives recommendations

**Requirements:**
- Display notification BEFORE and AFTER each MCP/WebFetch call
- Keep notifications concise and informative
- Always include brief summary of findings
- Apply to ALL data lookups: NPI, ICD-10, CMS Coverage, and CPT/HCPCS validation

### Common Mistakes to Avoid

- ❌ Don't generate fake data when MCP queries fail
- ❌ Don't skip prerequisite checks
- ❌ Don't overwrite existing files without checking
- ❌ Don't proceed if current subskill had errors
- ❌ Don't call ICD-10 MCP multiple times for same codes
- ✅ DO provide clear, actionable error messages
- ✅ DO give users options when things go wrong
- ✅ DO validate data quality at each step
- ✅ DO execute MCP calls in parallel where possible

---

## Subskill Descriptions

### Subskill 1: Intake & Assessment (3-4 minutes)
- Collects PA request details (member, service, provider, clinical docs)
- Validates provider credentials via **NPI MCP**
- Validates and retrieves ICD-10 code details via **ICD-10 MCP** (single batch call)
- Validates CPT/HCPCS codes via **WebFetch to CMS Fee Schedule**
- Searches coverage policies via **CMS Coverage MCP**
- Extracts structured clinical data from documentation
- Maps clinical evidence to policy criteria
- Performs medical necessity assessment
- Generates recommendation (APPROVE/DENY/PEND)
- **Output:** `waypoints/assessment.json` (consolidated)
- **Data Sources:** NPI MCP, ICD-10 MCP, CMS Coverage MCP (parallel), CMS Fee Schedule (web)

### Subskill 2: Decision & Notification (1-2 minutes)
- Loads assessment from Subskill 1
- Confirms or allows override of recommendation
- Generates authorization number (if approved) or denial rationale (if denied)
- Creates provider notification letter
- Documents complete audit trail
- **Output:** `waypoints/decision.json` and notification letter

More from anthropics/healthcare

SkillDescription
clinical-note-extract-skillExtract structured data from clinical notes with span-level provenance and null-safety. Use when users say "extract [variables] from this note", "abstract this chart", "pull structured data from these notes", "what does this note say about [field]", or when building a chart-abstraction, registry, or cohort dataset from unstructured clinical text.
clinical-trial-protocol-skillGenerate clinical trial protocols for medical devices or drugs. This skill should be used when users say "Create a clinical trial protocol", "Generate protocol for [device/drug]", "Help me design a clinical study", "Research similar trials for [intervention]", or when developing FDA submission documentation for investigational products.
contractsAnswer a question across a corpus of contract documents with verified citations. Use when the user asks what a contract says, which contracts have a clause, what changed between amendments, or any question that needs reading and citing across a set of contract files. The corpus must be on the local filesystem (see README).
doc-extractExtract plain text from a document file - PDF, DOCX, XLSX, PPTX, RTF, or plain text/markdown/HTML. Use when a binary document needs to be turned into text, for example a contract PDF or an EHR DocumentReference attachment. Other skills (fhir) invoke scripts/extract.ts directly; the contracts MCP server bundles its own copy (servers/documents/src/extract.mjs) so its bundle stays self-contained — port fixes to both.
fhirConnect to a hospital's FHIR R4 server (Epic, Oracle Health/Cerner, MEDITECH, athenahealth, or any SMART-on-FHIR endpoint), pull a patient's clinical data and notes, and extract structured findings. Use when users say "connect to the EHR", "connect to Epic/Cerner", "pull notes for patient X", "what do the last 6 months of notes say about Y", or any task that starts from a live EHR rather than pasted text.
fhir-developer-skill>
fraud-detectionScreen a Medicare/Medicaid claims corpus for fraud, waste, and abuse and produce ranked, fully-cited investigation referrals for an SIU / program-integrity team. Use when asked to run a fraud sweep, screen claims for FWA, find billing anomalies, or generate investigation referrals over a claims dataset.
icd10-cm-skillExtract billable ICD-10-CM diagnosis codes from a clinical note the way a professional coder builds the claim. Use when users say "code this encounter", "assign ICD-10 codes", "what diagnosis codes apply", "code this chart", or when turning clinical documentation into claim-ready diagnosis codes.
procedure-codingAssign CPT and HCPCS Level II procedure codes from clinical documentation the way a professional coder builds the claim. Use when users say "code this encounter for procedures", "what CPT codes apply", "assign HCPCS codes", "code this op note", or when turning visit notes or operative reports into claim-ready procedure codes.