Back to Guides
Care Coordination
50,000+ monthly searches

Care Management Guide

Complete guide to care management and care coordination systems. Learn patient stratification, care plan development, intervention tracking, and outcome measurement for population health.

Patient Risk Stratification

HIGH

High-Risk Patients (5-10%)

Complex chronic conditions, frequent hospitalizations

Criteria: 3+ chronic conditions, 2+ ER visits/year, recent hospitalization
Intervention: Intensive care management, weekly touchpoints, home visits
Care Team: Care manager, physician, pharmacist, social worker
MED

Medium-Risk Patients (15-20%)

Chronic conditions with some stability

Criteria: 1-2 chronic conditions, occasional ER use, medication adherence issues
Intervention: Targeted programs, monthly check-ins, medication management
Care Team: Care coordinator, primary care physician
LOW

Low-Risk Patients (70-80%)

Generally healthy, preventive care focus

Criteria: No chronic conditions or well-controlled single condition
Intervention: Self-management education, preventive screenings, wellness programs
Care Team: Primary care physician, automated outreach

Care Management Database Schema

-- Care Plan
CREATE TABLE care_plan (
  id                    UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  patient_id            UUID NOT NULL,
  
  -- Plan Details
  plan_name             VARCHAR(255),
  plan_type             VARCHAR(100),              -- chronic_care, transitional, behavioral
  status                VARCHAR(50),               -- active, completed, suspended
  
  -- Risk Stratification
  risk_level            VARCHAR(20),               -- high, medium, low
  risk_score            DECIMAL(5,2),
  stratification_date   DATE,
  
  -- Goals
  primary_goal          TEXT,
  secondary_goals       TEXT[],
  target_outcomes       JSONB,
  
  -- Care Team
  care_manager_id       UUID,
  primary_physician_id  UUID,
  care_team_members     JSONB,                     -- Array of team member details
  
  -- Dates
  start_date            DATE NOT NULL,
  end_date              DATE,
  next_review_date      DATE,
  
  -- Consent
  patient_consent       BOOLEAN DEFAULT FALSE,
  consent_date          DATE,
  
  created_at            TIMESTAMP DEFAULT NOW(),
  updated_at            TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_careplan_patient ON care_plan(patient_id);
CREATE INDEX idx_careplan_status ON care_plan(status);
CREATE INDEX idx_careplan_risk ON care_plan(risk_level);

-- Care Plan Interventions
CREATE TABLE care_intervention (
  id                    UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  care_plan_id          UUID NOT NULL REFERENCES care_plan(id),
  
  -- Intervention Details
  intervention_type     VARCHAR(100),              -- medication_review, education, referral
  intervention_name     VARCHAR(255),
  description           TEXT,
  
  -- Assignment
  assigned_to           UUID,
  assigned_role         VARCHAR(100),              -- care_manager, nurse, social_worker
  
  -- Scheduling
  frequency             VARCHAR(50),               -- weekly, monthly, as_needed
  scheduled_date        DATE,
  completed_date        DATE,
  
  -- Status
  status                VARCHAR(50),               -- planned, in_progress, completed, cancelled
  
  -- Outcomes
  outcome_notes         TEXT,
  barriers_identified   TEXT[],
  
  created_at            TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_intervention_plan ON care_intervention(care_plan_id);
CREATE INDEX idx_intervention_assigned ON care_intervention(assigned_to);

-- Patient Touchpoints
CREATE TABLE care_touchpoint (
  id                    UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  patient_id            UUID NOT NULL,
  care_plan_id          UUID REFERENCES care_plan(id),
  
  -- Contact Details
  contact_type          VARCHAR(50),               -- phone, video, home_visit, message
  contact_date          TIMESTAMP NOT NULL,
  duration_minutes      INTEGER,
  
  -- Staff
  staff_id              UUID,
  staff_role            VARCHAR(100),
  
  -- Content
  contact_reason        VARCHAR(255),
  clinical_notes        TEXT,
  patient_concerns      TEXT[],
  action_items          TEXT[],
  
  -- Follow-up
  follow_up_needed      BOOLEAN DEFAULT FALSE,
  follow_up_date        DATE,
  
  created_at            TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_touchpoint_patient ON care_touchpoint(patient_id);
CREATE INDEX idx_touchpoint_date ON care_touchpoint(contact_date);

-- Care Gaps
CREATE TABLE care_gap (
  id                    UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  patient_id            UUID NOT NULL,
  
  -- Gap Details
  gap_type              VARCHAR(100),              -- medication_adherence, screening_overdue, follow_up_missed
  gap_description       TEXT,
  measure_name          VARCHAR(255),              -- e.g., HbA1c screening, colonoscopy
  
  -- Clinical Context
  condition_related     VARCHAR(100),
  severity              VARCHAR(20),               -- high, medium, low
  
  -- Timeline
  identified_date       DATE NOT NULL,
  due_date              DATE,
  closed_date           DATE,
  
  -- Status
  status                VARCHAR(50),               -- open, in_progress, closed
  closure_reason        TEXT,
  
  created_at            TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_gap_patient ON care_gap(patient_id);
CREATE INDEX idx_gap_status ON care_gap(status);

-- Patient Stratification History
CREATE TABLE patient_stratification (
  id                    UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  patient_id            UUID NOT NULL,
  
  -- Risk Assessment
  risk_level            VARCHAR(20),               -- high, medium, low
  risk_score            DECIMAL(5,2),
  
  -- Contributing Factors
  chronic_conditions    TEXT[],
  recent_utilization    JSONB,                     -- ER visits, hospitalizations
  medication_count      INTEGER,
  social_determinants   TEXT[],
  
  -- Assessment Details
  assessment_date       DATE NOT NULL,
  assessed_by           UUID,
  model_version         VARCHAR(50),
  
  -- Next Review
  next_assessment_date  DATE,
  
  created_at            TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_strat_patient ON patient_stratification(patient_id);
CREATE INDEX idx_strat_date ON patient_stratification(assessment_date DESC);

Care Management Workflow

1

Patient Identification

Identify high-risk patients using predictive models and claims data

2

Risk Stratification

Segment patients into high/medium/low risk categories

3

Assessment

Comprehensive assessment: clinical, functional, social needs

4

Care Plan Development

Create personalized care plan with patient input and goals

5

Intervention

Execute interventions: education, medication review, referrals

6

Monitoring

Regular touchpoints, track adherence, identify barriers

7

Outcome Measurement

Measure clinical outcomes, quality metrics, cost impact

8

Plan Adjustment

Adjust care plan based on progress and changing needs

SQL Query Examples

Identify High-Risk Patients Needing Outreach

SELECT 
  p.id,
  p.first_name || ' ' || p.last_name as patient_name,
  cp.risk_level,
  cp.risk_score,
  MAX(ct.contact_date) as last_contact,
  CURRENT_DATE - MAX(ct.contact_date)::DATE as days_since_contact
FROM patient p
JOIN care_plan cp ON p.id = cp.patient_id
LEFT JOIN care_touchpoint ct ON p.id = ct.patient_id
WHERE cp.status = 'active'
  AND cp.risk_level = 'high'
GROUP BY p.id, p.first_name, p.last_name, cp.risk_level, cp.risk_score
HAVING MAX(ct.contact_date) IS NULL 
   OR CURRENT_DATE - MAX(ct.contact_date)::DATE > 7
ORDER BY cp.risk_score DESC;

Care Gap Report by Measure

SELECT 
  cg.measure_name,
  cg.gap_type,
  COUNT(*) as total_gaps,
  COUNT(CASE WHEN cg.status = 'open' THEN 1 END) as open_gaps,
  COUNT(CASE WHEN cg.status = 'closed' THEN 1 END) as closed_gaps,
  ROUND(100.0 * COUNT(CASE WHEN cg.status = 'closed' THEN 1 END) / COUNT(*), 2) as closure_rate
FROM care_gap cg
WHERE cg.identified_date >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY cg.measure_name, cg.gap_type
ORDER BY total_gaps DESC;

Chronic Care Management (CCM) Billing

Medicare CCM Requirements (CPT 99490)

Patient Eligibility:

2+ chronic conditions expected to last 12+ months, placing patient at significant risk

Time Requirement:

Minimum 20 minutes of non-face-to-face care management per calendar month

Required Elements:
  • Comprehensive care plan documented and shared with patient
  • 24/7 access to care team
  • Electronic health record system
  • Medication reconciliation and management
  • Patient consent obtained and documented
Reimbursement:

Approximately $42-62 per patient per month (varies by locality)

Related Healthcare Guides