헬스케어 산업 데이터 분석
개요
헬스케어 분석은 환자 결과 개선, 비용 효율화, 운영 최적화를 목표로 한다. 개인정보 보호(HIPAA, 개인정보보호법)와 의료 윤리가 핵심 제약조건이다.
데이터 유형
┌─────────────────────────────────────────────────────────────┐
│ Healthcare Data Types │
│ │
│ Clinical Data: │
│ ├─ EMR/EHR (전자의무기록) │
│ ├─ Lab Results (검사 결과) │
│ ├─ Imaging (영상 데이터) │
│ └─ Prescriptions (처방 기록) │
│ │
│ Administrative Data: │
│ ├─ Claims (보험 청구) │
│ ├─ Scheduling (예약/일정) │
│ └─ Billing (수납) │
│ │
│ Patient-Generated: │
│ ├─ Wearables (웨어러블 기기) │
│ ├─ Patient Surveys (설문) │
│ └─ PROs (Patient-Reported Outcomes) │
│ │
│ External: │
│ ├─ Social Determinants (사회적 요인) │
│ └─ Environmental (환경 데이터) │
└─────────────────────────────────────────────────────────────┘
주요 분석 영역
1. 환자 결과 예측
재입원 예측 (Readmission)
┌─────────────────────────────────────────────────────────────┐
│ 30-day Readmission Prediction │
│ │
│ Target: 퇴원 후 30일 내 재입원 여부 │
│ │
│ Features: │
│ ├─ Demographics: 나이, 성별, 보험 유형 │
│ ├─ Clinical: 진단 코드, 입원 기간, Charlson Index │
│ ├─ Utilization: 이전 입원 횟수, 응급실 방문 │
│ └─ Social: 거주 형태, 가족 지원 │
│ │
│ Model Performance (LACE+ 대비): │
│ ├─ AUC: 0.72 → 0.78 │
│ └─ 고위험군 PPV: 25% → 35% │
└─────────────────────────────────────────────────────────────┘
| 예측 모델 |
장점 |
단점 |
| LACE Score |
간단, 표준화 |
정확도 낮음 |
| Logistic Regression |
해석 가능 |
비선형 관계 한계 |
| XGBoost |
높은 정확도 |
블랙박스 |
| Deep Learning |
복잡한 패턴 |
데이터 많이 필요 |
사망 위험 예측
# APACHE-like Severity Score 예측
features = [
'age', 'heart_rate', 'blood_pressure', 'temperature',
'respiratory_rate', 'oxygen_saturation', 'gcs_score',
'lab_creatinine', 'lab_bilirubin', 'lab_wbc'
]
# 24시간 내 ICU 사망 위험
mortality_risk = model.predict_proba(patient_data[features])[:, 1]
2. 운영 최적화
병상 점유율 예측
┌─────────────────────────────────────────────────────────────┐
│ Bed Occupancy Forecasting │
│ │
│ Inputs: │
│ ├─ 현재 재원 환자 수 │
│ ├─ 예정된 입원 (수술, 전원) │
│ ├─ 예상 퇴원 (주치의 계획) │
│ ├─ 응급실 입원 예측 │
│ └─ 계절성, 요일 패턴 │
│ │
│ Outputs: │
│ ├─ 향후 24/48/72시간 병상 점유율 │
│ ├─ 병동별 가용 병상 수 │
│ └─ 병상 부족 경보 │
│ │
│ Time Series: │
│ ├─ ARIMA (단기) │
│ ├─ Prophet (계절성) │
│ └─ LSTM (복잡 패턴) │
└─────────────────────────────────────────────────────────────┘
수술실 일정 최적화
# 수술 시간 예측
def predict_surgery_duration(surgery_info):
features = {
'procedure_code': surgery_info['cpt_code'],
'surgeon_id': surgery_info['surgeon'],
'patient_age': surgery_info['age'],
'patient_bmi': surgery_info['bmi'],
'asa_class': surgery_info['asa_classification'],
'prior_surgeries': surgery_info['surgery_history_count']
}
predicted_minutes = model.predict(features)
# 버퍼 추가 (실제 > 예측의 20% 사례 커버)
with_buffer = predicted_minutes * 1.2
return with_buffer
| 최적화 목표 |
지표 |
목표값 |
| 활용률 |
첫 수술 시작 ~ 마지막 종료 / 가용 시간 |
> 80% |
| 턴오버 |
수술 간 정리/준비 시간 |
< 30분 |
| 초과 근무 |
정규 시간 초과 수술 비율 |
< 5% |
3. 비용 분석
고비용 환자 예측
┌─────────────────────────────────────────────────────────────┐
│ High-Cost Patient Prediction │
│ │
│ 정의: 상위 5% 의료비 사용 환자 │
│ │
│ 특징: │
│ ├─ 다중 만성질환 (Comorbidity) │
│ ├─ 잦은 응급실 방문 │
│ ├─ 복잡한 약물 요법 │
│ └─ 사회적 취약성 │
│ │
│ 활용: │
│ ├─ Care Management 프로그램 대상 선정 │
│ ├─ 예방적 개입 우선순위 │
│ └─ 보험 리스크 관리 │
└─────────────────────────────────────────────────────────────┘
Total Cost of Care
# PMPM (Per Member Per Month) 분석
def calculate_pmpm(claims_df, member_months):
total_allowed = claims_df['allowed_amount'].sum()
pmpm = total_allowed / member_months
# 카테고리별
pmpm_by_category = claims_df.groupby('service_category')['allowed_amount'].sum() / member_months
return {
'total_pmpm': pmpm,
'inpatient_pmpm': pmpm_by_category.get('inpatient', 0),
'outpatient_pmpm': pmpm_by_category.get('outpatient', 0),
'pharmacy_pmpm': pmpm_by_category.get('pharmacy', 0),
'professional_pmpm': pmpm_by_category.get('professional', 0)
}
4. 품질 지표
핵심 품질 메트릭
| 지표 |
정의 |
벤치마크 |
| Mortality Rate |
사망률 (위험 보정) |
AHRQ 기준 |
| HAI Rate |
병원 획득 감염률 |
CDC NHSN |
| Readmission |
30일 재입원율 |
CMS 기준 |
| Patient Satisfaction |
HCAHPS 점수 |
전국 상위 10% |
| Length of Stay |
평균 재원 일수 |
질환별 기준 |
위험 보정 (Risk Adjustment)
# O/E Ratio (Observed/Expected)
def calculate_oe_ratio(observed_outcomes, patient_data, model):
# 예상 결과 (환자 위험도 기반)
expected = model.predict_proba(patient_data)[:, 1].sum()
# 실제 결과
observed = observed_outcomes.sum()
# O/E < 1: 예상보다 좋음
# O/E > 1: 예상보다 나쁨
return observed / expected
# 예: 사망 O/E = 0.85 → 예상 대비 15% 낮은 사망률
분석 도구
진단 코드 체계
| 코드 체계 |
용도 |
예시 |
| ICD-10-CM |
진단 |
E11.9 (당뇨병) |
| ICD-10-PCS |
시술 |
0HB0XZZ (유방 절제) |
| CPT |
수가 청구 |
99213 (외래 진료) |
| SNOMED-CT |
임상 개념 |
73211009 (당뇨) |
| LOINC |
검사 결과 |
2345-7 (혈당) |
Comorbidity Index
# Charlson Comorbidity Index
charlson_weights = {
'myocardial_infarction': 1,
'congestive_heart_failure': 1,
'peripheral_vascular': 1,
'cerebrovascular': 1,
'dementia': 1,
'copd': 1,
'rheumatic': 1,
'peptic_ulcer': 1,
'liver_mild': 1,
'diabetes': 1,
'diabetes_complications': 2,
'paralysis': 2,
'renal': 2,
'cancer': 2,
'liver_severe': 3,
'metastatic_cancer': 6,
'aids': 6
}
def calculate_charlson(diagnoses):
score = sum(charlson_weights.get(dx, 0) for dx in diagnoses)
return score
개인정보 보호
비식별화 기법
┌─────────────────────────────────────────────────────────────┐
│ De-identification Methods │
│ │
│ HIPAA Safe Harbor: │
│ ├─ 18가지 식별자 제거 │
│ ├─ 이름, 주소, 날짜, 전화번호 등 │
│ └─ 89세 이상 → "90+"로 표시 │
│ │
│ Expert Determination: │
│ ├─ 통계 전문가가 재식별 위험 평가 │
│ └─ k-anonymity, l-diversity 적용 │
│ │
│ 기술적 방법: │
│ ├─ 가명화 (Pseudonymization) │
│ ├─ 일반화 (Generalization) │
│ ├─ 데이터 마스킹 │
│ └─ Differential Privacy │
└─────────────────────────────────────────────────────────────┘
분석 환경
| 방식 |
설명 |
적합 상황 |
| De-identified Dataset |
완전 비식별 데이터 추출 |
일반 분석 |
| Limited Dataset |
일부 식별자 유지 (연구 목적) |
IRB 승인 연구 |
| Secure Enclave |
데이터 반출 불가 환경에서 분석 |
민감 분석 |
| Federated Learning |
데이터 이동 없이 모델 학습 |
다기관 연구 |
사례 연구
당뇨병 관리 프로그램
목표: 당뇨 환자의 HbA1c 개선 및 합병증 예방
분석:
1. 고위험 환자 식별 (HbA1c > 9%, 미복약)
2. 개입 효과 예측 (Uplift Modeling)
3. 자원 배분 최적화
결과:
- 타겟 환자 2,000명 선정
- 6개월 후 HbA1c 평균 0.8% 감소
- 응급실 방문 25% 감소
- ROI: 1:3.2
체크리스트
□ 데이터 준비
□ IRB/개인정보 승인
□ 데이터 품질 검증 (진단 코드 정확성)
□ 비식별화 적용
□ 분석 설계
□ 명확한 비즈니스 질문 정의
□ 적절한 outcome 정의
□ 위험 보정 모델 선택
□ 모델 개발
□ 임상 전문가 검토 (feature 타당성)
□ 시간적 누수 방지 (data leakage)
□ 외부 검증 (다른 기관/기간)
□ 배포
□ 임상 워크플로우 통합
□ 설명 가능성 (SHAP, LIME)
□ 모니터링 및 재학습 계획
참고 자료
- Rajkomar et al., "Machine Learning in Medicine", NEJM 2019
- Healthcare Cost and Utilization Project (HCUP)
- CMS Quality Measures Documentation