[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -2,69 +2,167 @@
|
||||
id: wiki-2026-0508-remote-rehabilitation
|
||||
title: Remote Rehabilitation
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-RMRE-001]
|
||||
aliases: [telerehabilitation, telerehab, digital rehabilitation]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.94
|
||||
tags: [auto-reinforced, rehabilitation, telemedicine, digital-health, physical-therapy]
|
||||
confidence_score: 0.9
|
||||
verification_status: applied
|
||||
tags: [rehabilitation, telehealth, devops, monitoring, healthtech]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: typescript
|
||||
framework: nextjs-supabase-webrtc
|
||||
---
|
||||
|
||||
# [[Remote-Rehabilitation|Remote-Rehabilitation]]
|
||||
# Remote Rehabilitation
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "시공간을 넘는 치유의 손길: ICT 기술을 활용하여 병원 밖 일상 공간에서도 전문적인 재활 훈련을 지속하게 함으로써, 골든타임을 놓치지 않고 회복으로 이끄는 미래형 의료 시스템."
|
||||
## 매 한 줄
|
||||
> **"매 clinic 의 walls 의 dissolving — 매 patient 의 home 의 becoming 의 PT studio"**. Remote rehabilitation (telerehab) 의 PT/OT/cognitive therapy 의 delivering 의 video, sensors, gamified exercises 의 via. 2026 의 standard care 의 stroke recovery, post-op orthopedics, chronic pain — 매 reimbursement (CPT 98975-98981) 의 mainstream 의 making.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
원격 재활(Remote-Rehabilitation 또는 Telerehabilitation)은 통신 기술을 이용해 멀리 떨어진 환자에게 재활 서비스를 제공하고 모니터링하는 기술입니다.
|
||||
## 매 핵심
|
||||
|
||||
1. **적용 기술**:
|
||||
* **Synchronous**: 화상 통화를 통한 실시간 코칭.
|
||||
* **Asynchronous**: 저장된 운동 영상을 보고 수행한 뒤 데이터를 전송하는 방식.
|
||||
* **Wearable/IoT**: 환자의 움직임, 가동 범위(ROM), 근전도(EMG) 데이터를 실시간으로 수집하여 정확도 분석.
|
||||
2. **주요 수혜 분야**:
|
||||
* **Neurorehabilitation**: 뇌졸중 후 마비 환자의 지속적 운동 유도.
|
||||
* **Cardiac/Pulmonary**: 심폐 기능 회복 모니터링.
|
||||
* **Musculoskeletal**: 근골격계 부상 후 재활 운동 처방.
|
||||
3. **장점**:
|
||||
* 병원 방문 비용 및 시간 절감, 환자의 훈련 순응도(Compliance) 향상, 의료 격차 해소.
|
||||
### 매 modalities
|
||||
- **Synchronous**: 매 live video PT session — 매 therapist 의 form correction 의 real-time.
|
||||
- **Asynchronous**: 매 patient 의 records exercise 의 video 의, 매 therapist 의 reviews 의 later.
|
||||
- **RPM (Remote Patient Monitoring)**: 매 wearables 의 ROM, gait, HR 의 streaming 의 dashboard 의.
|
||||
- **DTx (Digital Therapeutics)**: 매 prescription apps — 매 Akili EndeavorRx, 매 Pear reSET (deprecated).
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌**: 이전에는 대면 치료의 효과를 따라갈 수 없다는 회의론이 컸으나, VR 기기와 정밀 센서를 결합한 현대 원격 재활은 환자에게 '게임화(Gamification)' 요소를 제공하여 오히려 대면 치료보다 높은 몰입도와 회복률을 보이기도 함.
|
||||
- **정책 변화(RL Update)**: 팬데믹 이후 원격 의료에 대한 법적 규제가 완화되면서, 국가 차원의 '디지털 헬스케어 표준 가이드라인' 수립 정책이 추진되고 있으며, 원격 재활 기기를 의료기기로 공식 승인하여 보험 수가를 적용하려는 움직임이 가속화됨.
|
||||
### 매 tech stack 의 typical
|
||||
- **Video**: WebRTC (Daily, Twilio Video, Zoom SDK) — 매 HIPAA BAA 의 require.
|
||||
- **Pose estimation**: MediaPipe Pose, 매 Apple Vision Pro Body Tracking, 매 Google ML Kit.
|
||||
- **Wearables**: Apple Watch, Whoop, IMU patches (BioStamp).
|
||||
- **Backend**: FHIR R5 의 EHR integration 의, 매 HL7 Bulk Data API.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- [[Neurorehabilitation after Stroke|Neurorehabilitation after Stroke]], [[Perceptual-Motor-Skills|Perceptual-Motor-Skills]], Human-Computer Interaction (HCI), Health-[[Behavior|Behavior]]-Theories
|
||||
- **Modern Tech/Tools**: Microsoft Azure Kinect (시선/동작 추적), VR-based rehab software.
|
||||
---
|
||||
### 매 응용
|
||||
1. 매 stroke recovery — 매 mirror therapy 의 VR 의.
|
||||
2. 매 post-ACL 의 ROM tracking 의 IMU 의.
|
||||
3. 매 chronic low back pain 의 Hinge Health-style 의 daily exercises.
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
## 💻 패턴
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
### Pose-based form scoring (MediaPipe + TS)
|
||||
```typescript
|
||||
import { PoseLandmarker, FilesetResolver } from '@mediapipe/tasks-vision';
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
const vision = await FilesetResolver.forVisionTasks(
|
||||
'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10/wasm'
|
||||
);
|
||||
const pose = await PoseLandmarker.createFromOptions(vision, {
|
||||
baseOptions: { modelAssetPath: '/pose_landmarker_full.task' },
|
||||
runningMode: 'VIDEO',
|
||||
numPoses: 1,
|
||||
});
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
function squatDepthScore(landmarks: any[]): number {
|
||||
const hip = landmarks[24], knee = landmarks[26], ankle = landmarks[28];
|
||||
const angle = Math.atan2(hip.y - knee.y, hip.x - knee.x) -
|
||||
Math.atan2(ankle.y - knee.y, ankle.x - knee.x);
|
||||
const deg = Math.abs((angle * 180) / Math.PI);
|
||||
return deg < 90 ? 1.0 : Math.max(0, 1 - (deg - 90) / 30);
|
||||
}
|
||||
```
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
### WebRTC 의 HIPAA-compliant session 의
|
||||
```typescript
|
||||
import Daily from '@daily-co/daily-js';
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
const call = Daily.createCallObject({
|
||||
audioSource: true,
|
||||
videoSource: true,
|
||||
dailyConfig: { useDevicePreferenceCookies: true },
|
||||
});
|
||||
await call.join({
|
||||
url: signedRoomUrl, // server-issued, BAA-covered
|
||||
token: patientJWT,
|
||||
});
|
||||
call.on('recording-started', (e) => logToFHIR(e.recordingId, encounterId));
|
||||
```
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
### IMU streaming 의 ROM tracking
|
||||
```typescript
|
||||
const device = await navigator.bluetooth.requestDevice({
|
||||
filters: [{ services: ['battery_service', 'heart_rate'] }],
|
||||
optionalServices: ['0000fff0-0000-1000-8000-00805f9b34fb'],
|
||||
});
|
||||
const server = await device.gatt!.connect();
|
||||
const svc = await server.getPrimaryService('0000fff0-0000-1000-8000-00805f9b34fb');
|
||||
const ch = await svc.getCharacteristic('0000fff1-0000-1000-8000-00805f9b34fb');
|
||||
await ch.startNotifications();
|
||||
ch.addEventListener('characteristicvaluechanged', (e: any) => {
|
||||
const dv = e.target.value as DataView;
|
||||
const quat = [dv.getFloat32(0), dv.getFloat32(4), dv.getFloat32(8), dv.getFloat32(12)];
|
||||
pushROM(quaternionToEulerDeg(quat));
|
||||
});
|
||||
```
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
### FHIR Observation 의 exercise log
|
||||
```typescript
|
||||
const obs = {
|
||||
resourceType: 'Observation',
|
||||
status: 'final',
|
||||
category: [{ coding: [{ system: 'http://terminology.hl7.org/CodeSystem/observation-category', code: 'activity' }] }],
|
||||
code: { coding: [{ system: 'http://loinc.org', code: '82290-8', display: 'ROM knee flexion' }] },
|
||||
subject: { reference: `Patient/${patientId}` },
|
||||
effectiveDateTime: new Date().toISOString(),
|
||||
valueQuantity: { value: maxFlexionDeg, unit: 'deg', system: 'http://unitsofmeasure.org' },
|
||||
};
|
||||
await fetch(`${FHIR_BASE}/Observation`, { method: 'POST', headers, body: JSON.stringify(obs) });
|
||||
```
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
### Adherence nudging (server cron)
|
||||
```typescript
|
||||
export default async (req: Request) => {
|
||||
const { data: due } = await sb
|
||||
.from('patients')
|
||||
.select('id, phone, plan_id')
|
||||
.lt('last_session_at', new Date(Date.now() - 86400_000).toISOString());
|
||||
await Promise.all(
|
||||
due!.map((p) => twilio.messages.create({
|
||||
to: p.phone,
|
||||
from: TWILIO_FROM,
|
||||
body: '오늘 의 5분 의 PT routine 의 done?',
|
||||
}))
|
||||
);
|
||||
return new Response('ok');
|
||||
};
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Approach |
|
||||
|---|---|
|
||||
| post-acute stroke | hybrid (sync video 2x/wk + async daily) |
|
||||
| chronic pain (>3mo) | async-first DTx (Hinge, Sword) |
|
||||
| post-op week 1-2 | sync-heavy + RPM continuous |
|
||||
| medicare reimbursement 의 target | RTM/RPM (CPT 98975-77 + 98980-81) |
|
||||
|
||||
**기본값**: hybrid sync+async + IMU/wearable RPM, FHIR-backed.
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[Digital Therapeutics]] · [[Telehealth]]
|
||||
- 변형: [[VR Exergaming]] · [[Pose Estimation]]
|
||||
- 응용: [[Stroke Recovery]] · [[Post-op Orthopedics]]
|
||||
- Adjacent: [[HIPAA]] · [[FHIR]] · [[WebRTC]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: exercise plan generation, session note summarization, patient-facing Q&A (with guardrails).
|
||||
**언제 X**: clinical diagnosis, dosage decisions, medical advice 의 unsupervised 의.
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **Consumer Zoom 사용**: BAA 없음 — HIPAA violation.
|
||||
- **PHI 의 client-side log**: console.log 의 patient name — 매 audit fail.
|
||||
- **Pose model 의 cloud-only**: latency >200ms — 매 form correction 의 useless.
|
||||
- **Adherence ignore**: 매 70%+ patients drop off by week 3 — nudging 없으면 ROI zero.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (CMS RTM/RPM 2025 final rule, Hinge Health 의 BMJ 2024 RCT, MediaPipe Pose docs).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — telerehab tech stack + FHIR/WebRTC/pose patterns |
|
||||
|
||||
Reference in New Issue
Block a user