healthsim-rxmembersim

RxMemberSim generates realistic synthetic pharmacy data for testing PBM systems, claims adjudication, and drug utilization review. Use when user requests: (1) pharmacy claims or prescription data, (2) DUR alerts or drug interactions, (3) formulary or tier cohorts, (4) pharmacy prior authorization, (5) NCPDP formatted output.

$ Installer

git clone https://github.com/mark64oswald/healthsim-workspace /tmp/healthsim-workspace && cp -r /tmp/healthsim-workspace/skills/rxmembersim ~/.claude/skills/healthsim-workspace

// tip: Run this command in your terminal to install the skill


name: healthsim-rxmembersim description: "RxMemberSim generates realistic synthetic pharmacy data for testing PBM systems, claims adjudication, and drug utilization review. Use when user requests: (1) pharmacy claims or prescription data, (2) DUR alerts or drug interactions, (3) formulary or tier cohorts, (4) pharmacy prior authorization, (5) NCPDP formatted output."

RxMemberSim - Pharmacy and PBM Data Generation

For Claude

Use this skill when the user requests pharmacy data, prescription fills, or PBM (Pharmacy Benefit Management) cohorts. This is the primary skill for generating realistic synthetic pharmacy claims and drug utilization data.

When to apply this skill:

  • User mentions prescriptions, pharmacy claims, or medication fills
  • User requests DUR (Drug Utilization Review) alerts or drug interactions
  • User specifies formulary, tier, or coverage cohorts
  • User asks for NCPDP formatted output
  • User needs pharmacy prior authorization or step therapy data

Key capabilities:

  • Generate pharmacy members with BIN/PCN/Group identifiers
  • Create prescription fills (new and refill) with NDC codes
  • Model pharmacy claim adjudication and pricing
  • Generate DUR alerts (drug interactions, therapeutic duplications, early refills)
  • Handle formulary management and tier structures
  • Model manufacturer copay programs and patient assistance
  • Transform output to NCPDP D.0 format

For specific pharmacy cohorts, load the appropriate cohort skill from the table below.

Overview

RxMemberSim generates realistic synthetic pharmacy data for testing pharmacy benefit management (PBM) systems, claims adjudication, and drug utilization review. This includes:

  • Prescription fills (new and refill)
  • Pharmacy claims (NCPDP D.0)
  • Drug Utilization Review (DUR) alerts
  • Formulary and tier management
  • Prior authorization workflows
  • Manufacturer copay programs

Quick Start

Simple Pharmacy Claim

Request: "Generate a pharmacy claim for atorvastatin"

{
  "claim": {
    "claim_id": "RX20250115000001",
    "transaction_code": "B1",
    "service_date": "2025-01-15",
    "ndc": "00071015523",
    "drug_name": "Atorvastatin 20mg",
    "quantity": 30,
    "days_supply": 30,
    "pharmacy_npi": "1234567890"
  },
  "response": {
    "status": "paid",
    "ingredient_cost": 12.50,
    "dispensing_fee": 2.00,
    "copay": 10.00,
    "plan_paid": 4.50
  }
}

DUR Alert Cohort

Request: "Generate a pharmacy claim that triggers a drug interaction alert"

Claude loads dur-alerts.md and produces a claim with appropriate DUR response.

Cohort Skills

Load the appropriate cohort based on user request:

CohortTrigger PhrasesFile
Retail Pharmacyprescription, fill, refill, copay, retailretail-pharmacy.md
Specialty Pharmacyspecialty drug, biologics, limited distributionspecialty-pharmacy.md
DUR Alertsdrug interaction, DUR, therapeutic dup, early refilldur-alerts.md
Formulary Managementformulary, tier, coverage, preferredformulary-management.md
Rx Enrollmentrx enrollment, pharmacy member, BIN PCN, rx coveragerx-enrollment.md
Rx Prior Authrx prior auth, pharmacy PA, step therapy, formulary exceptionrx-prior-auth.md
Rx Accumulatorsrx accumulator, pharmacy deductible, rx OOP, TrOOP, Part D phaserx-accumulator.md
Manufacturer Programscopay card, PAP, patient assistance, copay assistance, hub programmanufacturer-programs.md

Generation Parameters

ParameterTypeDefaultDescription
fill_typestringnewnew, refill
drug_typestringgenericgeneric, brand, specialty
pharmacy_typestringretailretail, mail_order, specialty
claim_statusstringpaidpaid, rejected, reversed
dur_outcomestringnonenone, warning, reject

Output Entities

RxMember

Pharmacy member/cardholder information:

  • member_id, cardholder_id
  • bin, pcn, group_number, person_code
  • rx_plan_code, coverage_start/end
  • relationship_code, subscriber_id
  • mail_order_eligible, specialty_eligible

RxPlan

Pharmacy benefit plan configuration:

  • rx_plan_code, plan_name, plan_type
  • formulary_id, tier_structure
  • rx_deductible, rx_oop_max
  • specialty settings (coinsurance, per-fill max)
  • Part D phases (for Medicare plans)

RxAccumulator

Pharmacy benefit accumulators:

  • rx_deductible (applied, limit, remaining)
  • rx_oop_max (applied, limit, remaining)
  • specialty_oop, daw_brand_penalty
  • TrOOP (for Medicare Part D)
  • current_phase (for Part D)

Prescription

Written prescription details:

  • prescription_number, ndc, drug_name
  • quantity_prescribed, days_supply
  • refills_authorized, refills_remaining
  • prescriber_npi, prescriber_dea
  • written_date, expiration_date
  • daw_code, directions

PharmacyClaim

NCPDP-style claim transaction:

  • claim_id, transaction_code (B1/B2/B3)
  • bin, pcn, group_number, cardholder_id
  • pharmacy_npi, prescriber_npi
  • ndc, quantity_dispensed, days_supply
  • pricing fields (ingredient cost, dispensing fee)
  • DUR fields (reason, service, result codes)

ClaimResponse

Adjudication response:

  • transaction_response_status (A, R, P, D)
  • pricing (ingredient cost paid, dispensing fee, patient pay)
  • reject codes (if applicable)
  • DUR alerts (if applicable)
  • authorization number, accumulated amounts

PharmacyPriorAuth

Pharmacy PA request and decision:

  • pa_id, status, pa_type
  • request_date, decision_date
  • approval details (override_code, expiration)
  • denial details (reason, alternatives)
  • clinical information, urgency

DURAlert

Drug utilization review alert:

  • dur_code, dur_type, clinical_significance
  • interacting_drugs, severity_level
  • override_code, outcome_code
  • pharmacist_message, recommendation

FormularyDrug

Drug coverage information:

  • ndc, gpi, drug_name
  • tier, covered status
  • PA required, step therapy required
  • quantity limits, age/gender restrictions

CopayAssistance

Manufacturer copay programs:

  • program_id, program_type
  • ndc, program_name
  • annual_max_benefit, remaining_benefit
  • copay_covered, effective_dates

See ../../references/data-models.md for complete schemas.

NCPDP Transaction Codes

CodeDescriptionUse Case
B1BillingNew claim submission
B2ReversalCancel previous claim
B3RebillCorrect and resubmit
E1EligibilityCheck coverage
P1Prior Auth RequestSubmit PA
P2Prior Auth InquiryCheck PA status
P4Prior Auth CancelCancel PA request

Common Reject Codes

CodeDescriptionResolution
70Product/Service Not CoveredCheck formulary, PA
75Prior Authorization RequiredSubmit PA request
76Plan Limitations ExceededCheck quantity limits
79Refill Too SoonWait or override
80Prescriber Not FoundVerify NPI
83Duplicate Paid ClaimCheck claim history
88DUR RejectClinical review needed

DUR Alert Types

CodeTypeDescription
DDDrug-DrugInteraction between medications
TDTherapeutic DuplicationSame drug class
EREarly RefillBefore 80% supply used
HDHigh DoseExceeds recommended dose
LDLow DoseBelow therapeutic dose
DADrug-AgeAge precaution
DGDrug-GenderGender precaution
DCDrug-DiseaseContraindication

Output Formats

FormatRequestUse Case
JSONdefaultAPI testing
NCPDP D.0"as NCPDP", "pharmacy claim format"Real-time claims
CSV"as CSV"Analytics

See ../../formats/ncpdp-d0.md for transformation.

Examples

Example 1: Generic Fill - Paid

Request: "Generate a paid pharmacy claim for lisinopril"

{
  "member": {
    "member_id": "MEM001234",
    "cardholder_id": "001234001",
    "bin": "610014",
    "pcn": "RXGROUP",
    "group_number": "CORP001"
  },
  "prescription": {
    "prescription_number": "RX78901234",
    "ndc": "00093505601",
    "drug_name": "Lisinopril 10mg Tablet",
    "quantity_prescribed": 30,
    "days_supply": 30,
    "refills_authorized": 5,
    "prescriber_npi": "1234567890",
    "written_date": "2025-01-10"
  },
  "claim": {
    "claim_id": "RX20250115000001",
    "transaction_code": "B1",
    "service_date": "2025-01-15",
    "pharmacy_npi": "9876543210",
    "pharmacy_ncpdp": "1234567",
    "ndc": "00093505601",
    "quantity_dispensed": 30,
    "days_supply": 30,
    "fill_number": 0,
    "daw_code": "0",
    "ingredient_cost_submitted": 8.50,
    "dispensing_fee_submitted": 2.00,
    "usual_customary_charge": 15.00,
    "gross_amount_due": 10.50
  },
  "response": {
    "status": "paid",
    "message": "Claim accepted",
    "ingredient_cost_paid": 8.50,
    "dispensing_fee_paid": 1.75,
    "total_amount_paid": 0.25,
    "patient_pay_amount": 10.00,
    "copay_amount": 10.00,
    "authorization_number": "AUTH20250115001"
  }
}

Example 2: Brand Drug - Rejected (PA Required)

Request: "Generate a rejected claim for Eliquis requiring prior auth"

{
  "claim": {
    "claim_id": "RX20250115000002",
    "transaction_code": "B1",
    "service_date": "2025-01-15",
    "ndc": "00003089421",
    "drug_name": "Eliquis 5mg Tablet",
    "quantity_dispensed": 60,
    "days_supply": 30
  },
  "response": {
    "status": "rejected",
    "reject_code": "75",
    "reject_message": "Prior Authorization Required",
    "additional_message": "Submit PA with diagnosis and documentation of AFib or VTE",
    "help_desk_phone": "1-800-555-0123"
  }
}

Example 3: Early Refill Warning

Request: "Generate a claim with early refill DUR alert"

{
  "claim": {
    "claim_id": "RX20250115000003",
    "ndc": "00071015523",
    "drug_name": "Atorvastatin 20mg",
    "service_date": "2025-01-15",
    "quantity_dispensed": 30,
    "days_supply": 30
  },
  "response": {
    "status": "paid",
    "dur_response": {
      "alert_count": 1,
      "alerts": [
        {
          "type": "ER",
          "description": "Early Refill",
          "severity": "warning",
          "message": "Refill 8 days early (73% of supply used)",
          "previous_fill_date": "2024-12-27",
          "days_supply_previous": 30,
          "percent_used": 73,
          "professional_service_code": "M0",
          "result_of_service_code": "1A"
        }
      ]
    },
    "patient_pay_amount": 10.00
  }
}

Example 4: Specialty Drug with Copay Assistance

Request: "Generate a specialty pharmacy claim with manufacturer copay card"

{
  "claim": {
    "claim_id": "RX20250115000004",
    "ndc": "00074433906",
    "drug_name": "Humira 40mg/0.4mL Pen",
    "quantity_dispensed": 2,
    "days_supply": 28,
    "pharmacy_type": "specialty"
  },
  "response": {
    "status": "paid",
    "ingredient_cost_paid": 6500.00,
    "dispensing_fee_paid": 0.00,
    "patient_pay_amount": 500.00,
    "coinsurance_amount": 500.00,
    "tier": 5
  },
  "copay_assistance": {
    "program_name": "Humira Complete",
    "program_bin": "004682",
    "copay_card_applied": true,
    "assistance_amount": 495.00,
    "final_patient_pay": 5.00,
    "annual_max_benefit": 16000.00,
    "remaining_benefit": 15505.00
  }
}

Related Skills

RxMemberSim Cohorts

Cross-Product: PatientSim (Clinical)

RxMemberSim pharmacy claims correspond to PatientSim medication orders:

RxMemberSim SkillPatientSim CohortsIntegration
retail-pharmacy.mdChronic disease meds, discharge RxFill date +0-3 days from order/discharge
specialty-pharmacy.mdOncology, biologicsLimited distribution, PA often required
dur-alerts.mdMulti-drug regimensDDI based on patient's med list
rx-prior-auth.mdHigh-cost drugsClinical criteria from PatientSim

PatientSim Cohort Links:

Integration Pattern: Generate medication orders in PatientSim, then use RxMemberSim to model pharmacy fills. Match NDCs, use appropriate fill timing (retail: same day; specialty: +1-7 days), and apply formulary/PA rules.

Cross-Product: MemberSim (Claims)

Pharmacy and medical benefits are often coordinated:

RxMemberSim SkillMemberSim SkillIntegration
formulary-management.mdplan-benefits.mdCoordinated benefit design
rx-accumulator.mdaccumulator-tracking.mdCombined deductible/OOP
rx-prior-auth.mdprior-authorization.mdPharmacy vs. medical PA
rx-enrollment.mdenrollment-eligibility.mdSynchronized coverage

Integration Pattern: For integrated medical+Rx plans, pharmacy costs count toward combined OOP maximum. Ensure coverage dates and accumulator totals are synchronized.

Cross-Product: PopulationSim Integration

PopulationSim v2.0 provides embedded real-world data for realistic medication utilization modeling. When a geography is specified, RxMemberSim uses actual CDC PLACES, SVI, and ADI data to ground prescribing patterns, adherence behaviors, and formulary utilization.

Data-Driven Generation Pattern

Step 1: Look up real population data

# For rural Appalachian county - Pike County, KY (FIPS: 21195)
Read from: skills/populationsim/data/county/places_county_2024.csv
→ DIABETES_CrudePrev: 16.8%
→ BPMED_CrudePrev: 62.1% (on BP medication)
→ ACCESS2_CrudePrev: 9.1% (uninsured)

Read from: skills/populationsim/data/county/svi_county_2022.csv
→ RPL_THEMES (overall SVI): 0.91 (very high vulnerability)
→ EP_POV150: 38.2% (below 150% poverty)
→ EP_NOVEH: 8.4% (no vehicle - affects pharmacy access)

Step 2: Apply rates to pharmacy generation

{
  "cohort_parameters": {
    "geography": { "county_fips": "21195", "name": "Pike County, KY" },
    "expected_drug_classes": {
      "antidiabetics": 0.168,
      "antihypertensives": 0.621
    },
    "adherence_context": {
      "svi_overall": 0.91,
      "transportation_barrier": 0.084,
      "poverty_rate": 0.382
    },
    "data_provenance": {
      "source": "CDC_PLACES_2024",
      "data_year": 2022
    }
  }
}

Step 3: Generate pharmacy claims matching real patterns

  • ~17% of members on antidiabetics (not generic 10%)
  • High SVI → higher generic utilization (cost sensitivity)
  • Transportation barriers → more mail-order, 90-day fills
  • Lower adherence rates (MPR ~0.70 vs 0.80 baseline)

Embedded Data Sources for Rx Patterns

SourceFileUse in RxMemberSim
CDC PLACES Countypopulationsim/data/county/places_county_2024.csvMedication class utilization (BPMED, etc.)
CDC PLACES Tractpopulationsim/data/tract/places_tract_2024.csvNeighborhood prescribing patterns
SVI Countypopulationsim/data/county/svi_county_2022.csvAdherence modeling, generic preference
SVI Tractpopulationsim/data/tract/svi_tract_2022.csvPharmacy access patterns
ADI Block Grouppopulationsim/data/block_group/adi_blockgroup_2023.csvDeprivation → adherence correlation

SDOH Impact on Pharmacy Utilization

SDOH FactorPharmacy ImpactData Source
High SVI (>0.75)+15% generic utilization, -15% adherenceSVI RPL_THEMES
No vehicle (EP_NOVEH)+20% mail-order preferenceSVI tract data
High poverty (EP_POV150)Higher copay card utilizationSVI county data
High ADI (>75 percentile)More early refill rejectionsADI block group

Example: Data-Grounded Diabetic Pharmacy Claims

Request: "Generate pharmacy claims for a diabetic population in Pike County, KY"

Data Lookup:

From places_county_2024.csv (FIPS 21195):
  DIABETES_CrudePrev: 16.8%
  OBESITY_CrudePrev: 41.2%
  BPMED_CrudePrev: 62.1%

From svi_county_2022.csv (FIPS 21195):
  RPL_THEMES: 0.91 (very high vulnerability)
  EP_POV150: 38.2%
  EP_NOVEH: 8.4%

Applied to Generation:

  • Drug mix: 70% metformin (generic), 20% sulfonylureas, 10% GLP-1/SGLT2
  • Adherence: MPR ~0.68 (below national average due to high SVI)
  • Channel: 65% retail, 35% mail-order (transport barriers)
  • Copay programs: 25% utilizing manufacturer assistance

Output with Provenance:

{
  "pharmacy_claims": [ ... ],
  "generation_context": {
    "geography": "Pike County, KY (21195)",
    "data_sources": ["CDC_PLACES_2024", "CDC_SVI_2022"],
    "rates_applied": {
      "diabetes_prevalence": 0.168,
      "svi_adherence_modifier": -0.15
    }
  }
}

Key Principle: When geography is specified, ground pharmacy claims in real PopulationSim data. This enables realistic medication adherence modeling, generic utilization patterns, and SDOH-influenced pharmacy access behaviors.

Cross-Product: NetworkSim (Pharmacy Networks)

NetworkSim provides realistic pharmacy entities and benefit structures for prescription claims:

RxMemberSim NeedNetworkSim SkillGenerated Entity
Dispensing pharmacypharmacy-for-rx.mdPharmacy with NCPDP, NPI
Formulary contextformulary-for-rx.mdTier, PA requirements
Pharmacy benefitsynthetic-pharmacy-benefit.mdBenefit design
Specialty pharmacyspecialty-pharmacy.mdLimited distribution, hub model

Integration Pattern: Generate prescription claims in RxMemberSim first, then use NetworkSim to add realistic pharmacy entities with proper NCPDP IDs, network status, and formulary context.

Output Formats

Reference Data


Generative Framework Integration

RxMemberSim integrates with the Generative Framework for specification-driven generation at scale.

Profile-Driven Generation

Use profile specifications to generate pharmacy member populations:

"Use the Medicare diabetic profile to generate 200 pharmacy members"

The Profile Executor will:

  1. Sample demographics from profile distributions
  2. Generate pharmacy benefit coverage
  3. Create medication profiles based on conditions
  4. Link to formulary and pharmacy network

Journey-Driven Generation

Attach journey specifications to create prescription fills over time:

"Add the diabetic first-year journey with medication fills"

The Journey Executor will:

  1. Generate initial prescriptions
  2. Create refill events at appropriate intervals
  3. Apply DUR alerts when clinically appropriate
  4. Track accumulator impacts (TrOOP for Part D)

Cross-Domain Sync

When generating across products, RxMemberSim entities are automatically linked:

RxMemberSim EntityLinks To
RxMemberMemberSim Member (via member_id)
FillPatientSim Prescription
PharmacyNetworkSim Pharmacy
PrescriberNetworkSim Provider

See: ../generation/executors/cross-domain-sync.md