FHIR에서 Bed Occupancy(병상 점유) 관리를 위한 표준 구현 FHIR에서 병상(Bed) 점유 관리는 **Location** 리소스를 중심으로 하며, `operationalStatus`가 핵심입니다. 별도의 전용 "Bed Occupancy IG"가 하나로 정해져 있지는 않지만, HL7 공식 스펙(Patient Administration 모듈)과 실제 구현 패턴이 명확합니다. ### 1. 핵심 리소스: Location 병상은 **Location** 리소스로 표현합니다. | 요소 | 설명 | 권장값 / 사용법 | |------|------|-----------------| | **mode** | 인스턴스 vs 종류 | `instance` (특정 병상) | | **physicalType** (R4) / **form** (R5+) | 물리적 형태 | `bd` (Bed) — `http://terminology.hl7.org/CodeSystem/location-physical-type` | | **partOf** | 상위 위치 계층 | Room → Ward → Building → Hospital | | **status** | Location 리소스 자체의 가용성 | `active` / `suspended` / `inactive` | | **operationalStatus** | **병상 점유 상태** (가장 중요) | v2 Table 0116 (아래 참조) | | **identifier** | 병상 고유 번호 (예: "ICU-301-01") | 필수 권장 | | **managingOrganization** | 관리 주체 (과/병동) | Organization 참조 | #### operationalStatus (병상 상태 코드) `Location.operationalStatus`는 **Preferred** 바인딩으로 `http://terminology.hl7.org/ValueSet/v2-0116` (HL7 v2 Table 0116 - Bed Status)를 사용합니다. **주요 코드**: | Code | Display | 의미 | 비고 | |------|------------------|--------------------------|------| | **O** | Occupied | 환자 점유 중 | 가장 중요 | | **U** | Unoccupied | 비어 있음 (사용 가능) | - | | **C** | Closed | 사용 불가 (폐쇄) | - | | **H** | Housekeeping | 청소/하우스키핑 중 | - | | **K** | Contaminated | 오염/소독 필요 | - | | **I** | Isolated | 격리 병상 | - | ### 2. 표준 구현 패턴 #### 패턴 A: Location만으로 관리 (가장 일반적) - ADT 시스템이나 Bed Management 시스템에서 `Location.operationalStatus`를 직접 업데이트 - 실시간 대시보드에서 `GET /Location?operationalStatus=O&physicalType=bd`로 조회 #### 패턴 B: Encounter와 연계 (더 정확하고 권장) 환자가 실제로 배정된 시점을 명확히 기록하려면 **Encounter**를 함께 사용합니다. ```json // Encounter 예시 (간략) { "resourceType": "Encounter", "status": "in-progress", "class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "IMP" }, "subject": { "reference": "Patient/123" }, "location": [{ "location": { "reference": "Location/bed-icu-301-01" }, "status": "active", "period": { "start": "2026-06-29T14:30:00Z" } }] } ``` 이 패턴을 사용하면: - `operationalStatus = O` + 활성 Encounter가 있으면 → 진짜 점유 - Encounter 종료 시 자동으로 `U`로 변경하는 로직 구현 가능 ### 3. 위치 계층 구조 예시 ```json // Hospital { "resourceType": "Location", "id": "hospital-main", "name": "서울대병원 본관", "mode": "instance" } // Ward { "resourceType": "Location", "id": "ward-icu", "name": "중환자실", "partOf": { "reference": "Location/hospital-main" }, "mode": "instance" } // Room { "resourceType": "Location", "id": "room-icu-301", "name": "301호", "partOf": { "reference": "Location/ward-icu" }, "mode": "instance" } // Bed (실제 점유 관리 대상) { "resourceType": "Location", "id": "bed-icu-301-01", "identifier": [{ "system": "http://hospital.example.com/bed", "value": "ICU-301-01" }], "name": "Bed 01", "mode": "instance", "physicalType": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "bd", "display": "Bed" }] }, "partOf": { "reference": "Location/room-icu-301" }, "status": "active", "operationalStatus": { "system": "http://terminology.hl7.org/CodeSystem/v2-0116", "code": "O", "display": "Occupied" } } ``` ### 4. 한국(KR Core)에서의 적용 - **KR Core** (HL7 Korea)에서는 별도의 Bed Occupancy 전용 프로파일은 아직 정의되어 있지 않습니다. - `KR Core Encounter Profile`에서 `Encounter.location`을 지원하므로, 위 패턴 B를 그대로 따르는 것이 가장 안전합니다. - 국내 병원 시스템(특히 대형병원)에서는 **Location + Encounter** 조합 + `operationalStatus` 업데이트가 가장 많이 사용되는 패턴입니다. ### 5. 고급 / 보고용 구현 (참고) - **실시간 용량 보고** (공공/재난 대응): - **HL7 FHIR UV SANER** IG (Situational Awareness for Novel Epidemic Response) - **US SAFR** IG (최근 미국에서 활발히 개발 중) - 이 IG들은 `Measure` + `MeasureReport` + CQL을 사용해 집계 보고를 표준화합니다. - **예약 관리**: `Appointment` 리소스에 Location을 연결하거나 Extension으로 확장. ### 6. 구현 시 권장 사항 1. **실시간 업데이트**는 FHIR REST (`PUT` / `PATCH`) 또는 Subscription으로 처리 2. `operationalStatus` 변경 시 **AuditEvent**나 내부 로그를 남겨 이력 관리 3. 대시보드/검색 성능을 위해 `Location.physicalType=bd` + `operationalStatus` 인덱싱 권장 4. 가능하면 **Encounter와 연계**하는 패턴 B를 우선 검토 (데이터 정확도 ↑) 5. 확장이 필요하면 `Location`에 Extension을 최소한으로 사용 (core를 최대한 따르기) ### 참고 문서 - 공식 스펙: [Location - FHIR R5](https://hl7.org/fhir/location.html) (R4도 거의 동일) - operationalStatus 바인딩: `http://terminology.hl7.org/ValueSet/v2-0116` - KR Core: [hl7korea/krcore](https://build.fhir.org/ig/hl7korea/krcore/) - SANER IG: 공공 보건 보고용으로 유용