HBAD230_병동 관리
(Hereby) 관리자 패널 > 인사 관리 > 병동 관리
| 메타 | 앱: 관리자 패널 (포트 4001)대상 사용자: 조건1 [최고 관리자] / 조건2 [인사 관리자] (권한 "부서 관리" 추정)프로토타입: TBU관련 정책: [[POL_권한(RBAC)]] · [[POL_병동 관리]]Status: reviewOwner: 카나 |
개요
병동 관리는 병동 마스터(wards)를 관리하는 신규 모듈이다. 병동 목록 + 병동 추가/수정 모달로 구성된다. 병동은 **간호 스케줄러(HBNS)의 원천(SoT)**이며, 병동관리에서 등록된 병동 정보를 기반으로 스케줄러에 병동이 생성된다. 간호사 배치 비율(1:5 / 1:7 / 1:10 등, 추정)·병동별 환자수 관리의 기준이 된다. 병동은 팀(teams)과 별개로 관리한다([[POL_병동 관리]]). 현재 실데이터는 "간호부" 계열 소수 — Nurse Scheduler / 병동 KPI 연결 전 보강 필요.
문서 히스토리
- 2026-07-06 최초 작성 - 카나/콸
- 2026-07-13 버튼 행동 명세 보강 - 카나/콸
- 2026-07-21 GC700 깊이 재작성 (7/16 병동 추가 모달 필드 반영) - 카나/콸
- 2026-07-30 병동 종류(일반/재활, 배치 기준 키) 컬럼·필드 추가 — [[POL_간호인력·준수율]] 반영 - Claude/dev
- 2026-07-21 가독성 패스 (GUIDE §7) - 카나/PM
- 2026-07-21 셀 스타일 확정판 적용 (콸 승인) - 카나/PM
- 2026-07-31 코드 변경 반영(2c08e21·a6a6ff5) - 카나/PM
Data I/O
Server → Client
변수
| 메타 | ${ward_list} |
| 메타 | ${ward_status} |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 병동 추가/수정 | 병동명 / 설명 / 상태 | sdk.ward.upsert() (추정) | department:write (라벨 "부서 관리", 추정) |
| 병동 삭제 | wardId | sdk.ward.delete() (추정) | department:write (추정) |
| 상태 토글 | wardId · isActive | (인라인 토글) | department:write (추정) |
외부 통합 (cross-app)
| 외부 시스템 | 데이터 | 방향 | 비고 |
|---|---|---|---|
| 간호 스케줄러 (HBNS) | 병동 원천 소비 — 병동별 근무표·환자수·간호사 배치 비율 | Admin(원천) → HBNS(소비) | 병동관리 등록 시 스케줄러에 병동 생성 |
메인 화면 사양표 (병동 관리)
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | • 조건1 [부서 관리/조회 권한(추정)] 보유 시 사이드바 인사 관리 > "병동 관리" 노출. 미보유 시 hide | [[HBAD100_App Shell·사이드바]] | 신규 모듈 · 권한 매핑 추정 |
| 01 | 초기 상태 | Output | • "병동 목록" 표시 (필터 "전체") | ||
| 10 | 병동 목록 | Grid | • 병동을 나열하는 그리드. 컬럼: 병동명 / 설명 / 종류 / 상태 / 관리 + 활성 배지. 행 순서: 추가 병동은 최상단 정렬 | wards | 종류 컬럼 추가(2c08e21) |
| ㄴ10a | 종류 컬럼 | Output | • 병동 종류(케어 타입) 표시 열. 값: "일반병동" / "재활병동" / 미지정 시 "-" • 인력 배치 기준 표(일반/재활) 선택 키 ([[POL_간호인력·준수율]]) | wards.schedulingConfig.wardCareType | 신규(2c08e21) |
| 10-E | 목록 Empty | State | • ${ward_list} 0건 시 Empty. 원문 "등록된 병동이 없습니다. 상단에서 '병동 추가'를 클릭하세요."• 검색·필터 결과 0건 시: "검색 결과가 없어요." | wards 부재 | Empty 원문 확인(2c08e21) |
| ㄴ11 | 상태 배지/토글 | Toggle | • 병동 활성/비활성 배지 • 클릭 시: 상태 인라인 토글 - CASE01 [활성→비활성]: 회색 처리, 관리 화면 외 비노출(정책) - CASE02 [비활성→활성]: 정상 노출 | wards.isActive | 7/10 확인 |
| ㄴ12 | 편집 | Button | • 관리 열의 병동 수정 진입 버튼. 원문 "편집" • 클릭 시: "병동 수정" 모달 노출 (기존값 프리필) | wards | |
| ㄴ13 | 삭제 | Button | • 관리 열의 병동 삭제 버튼. 원문 "삭제" • 클릭 시: 컨펌 ""{병동명}" 병동을 삭제하시겠습니까?" → 실행 | wards | 삭제 컨펌 7/10 확인 |
| 20 | 검색 | Search | • 병동명·설명으로 목록을 거르는 검색. placeholder "병동명 / 설명" • 입력 시: 목록 재조회. CASE01 [결과 없음]: "검색 결과가 없어요." | 목록 재조회 | 결과 없음 원문 확인(2c08e21) |
| 30 | 병동 추가 | Button | • 새 병동을 생성하는 진입 버튼. 원문 "병동 추가" • 클릭 시: "병동 추가" 모달(병동 폼) 노출 | ||
| 35 | 병동 설정 | Button | • 스케줄러의 "병동 관리 및 설정" 팝업을 이 화면에서 여는 버튼. 원문 "병동 설정"(title "병동 관리 및 설정") • 클릭 시: 병동 설정 팝업 노출(스케줄러 모달 재사용). 팝업에서 병동 추가/수정/활성 전환 가능, 닫히면 목록 새로고침 | [[HBNS000_간호 스케줄러 (앱 개요)]] | 신규(a6a6ff5) · 스케줄러 모달 브리지 |
| 40 | HBNS 원천 관계 | - | • 병동은 간호 스케줄러 원천 — 근무표·환자수 관리·간호사 배치 비율 기준. 병동관리 등록 시 스케줄러 병동 생성 | [[HBNS000_간호 스케줄러 (앱 개요)]] | cross-app |
병동 추가·수정 모달 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | • "병동 추가"(신규) 또는 관리 열 "편집"(수정) 클릭 시 노출. 제목: "병동 추가" / "병동 수정" | 추가/편집 공용 | |
| 10 | 병동명 * | Input | • 병동 이름을 지정하는 필수 항목. 원문 "병동명 *", placeholder "병동명" • 입력 시: 미입력이면 확정 버튼 비활성 | wards.name | 필수 |
| 20 | 설명 | Input | • 병동 설명을 기록하는 선택 항목. 원문 "설명", placeholder "설명" • 입력 시: 설명 기록 | wards.description (추정) | |
| 25 | 병동 종류 | Dropdown | • 인력 배치 기준 표(일반/재활)를 고르는 선택 항목. 라벨 "병동 종류". 옵션: "미지정"(value 없음, 기본) / "일반병동" / "재활병동" • 필수 아님 — 미지정 = 배치 기준 미적용(중환자실 등). 미지정으로 되돌리기 가능 • 드롭다운 아래 notice(--info, 아이콘 off) 고정: "인력 배치 기준(일반/재활병동)을 고르는 기준입니다. 해당 없는 병동(중환자실 등)은 미지정으로 두세요 — 배치 기준을 적용하지 않습니다." | wards.schedulingConfig.wardCareType · [[POL_간호인력·준수율]] | 신규(2c08e21) · HBNS240 ①병동 관리와 동일 데이터 |
| 30 | 상태 | Dropdown | • 병동 활성/비활성 상태를 지정하는 드롭다운 • 선택 시: 상태 확정. 미선택 시 기본 "활성" | wards.isActive | |
| 40 | 취소 | Button | • 변경 없이 모달을 닫는 버튼. 원문 "취소" • 클릭 시: 모달 닫힘(미저장) | ds-btn (스타일 마이그레이션 7/16) | |
| 50 | 생성/저장 | Button | • 입력값으로 병동을 확정하는 버튼. 라이브 확정 버튼명 "생성"(추가) / "저장"(수정). 활성화 조건: 병동명 입력(수정은 수정 내역 존재) • 클릭 시: 즉시 실행( wards 생성/갱신)- CASE01 [추가 성공]: 목록 최상단 반영 - CASE02 [수정 모달]: 버튼명 "저장"으로 갱신 실행 | wards | 버튼명 "생성" 7/10 확인 · TBU: 저장 실패 · ds-btn |
병동 ↔ 간호 스케줄러 관계
| 항목 | Admin(원천) | HBNS(소비) |
|---|---|---|
| 병동 마스터 | 병동명/설명/상태 정의 (SoT) | 근무표·환자수 관리 대상 병동 참조 |
| 병동 종류 | 케어 타입(일반/재활) 정의 — 배치 기준 표 선택 키 (SoT) | 인력 배치 기준·간호등급 산정 분기 |
| 간호사 배치 비율 | 병동 속성 (1:5/1:7/1:10 추정) | AI 자동생성 근무표 제약 |
| 환자수 일괄 입력 | (스케줄러 병동 설정/환자수 팝업에서 입력) | "일괄 입력" 팝업 — 병동별 환자수 대량 입력, 출처(BULK) 기록 (HBNS 소관) |
비고: 간호관리료/입원료 차등제 등급표(A·1~6등급, 요양병원 별도 표)는 정본 상수로 내장돼
resolveNursingGrade가 산정하며(자료에 없는 종별은 일반병동 표 폴백), 등급 배지가 등급표를 소비한다 — 본 화면(병동 관리)에는 등급 표시 위치 없음. 환자수 일괄 입력 팝업·배치 기준 3필드(간호조무사·병동지원·재활지원) 상세는 스케줄러(HBNS) 소관.
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 화면 | 비고 |
|---|---|---|---|
CASE01 [병동 조회] | 화면 진입 | 병동 목록 표시 | 권한 "부서 조회" (추정) |
CASE02 [병동 추가] | 병동명* 입력 → "생성" | wards 생성 (활성), 목록 최상단 | 권한 "부서 관리" (추정) |
CASE03 [병동 수정] | "편집" → 수정 → "저장" | wards 갱신 | |
CASE04 [상태 토글] | 상태 배지 클릭 | 활성/비활성 인라인 전환 | 비활성 시 타 화면 비노출(정책) |
CASE05 [병동 삭제] | "삭제" | 컨펌 ""{병동명}" 병동을 삭제하시겠습니까?" → 삭제 | 7/10 확인 |
Open Question
| 구분 | 미확인 항목 |
|---|---|
| 스케줄러 연동 | 병동 ↔ 간호 스케줄러 배치 비율(1:5/1:7/1:10) 룰 연결 |
| 병동↔팀 | 병동 ↔ 팀(teams, 간호부 하위) 관계 정의 — 정책상 "팀과 별개 관리"이나 실제 매핑 |
| 권한 | 병동 권한 토큰 (부서 리소스 매핑 추정) |
| 목록 Empty | 병동 목록 Empty 원문 문구 |
| 검색 | 검색 결과 없음 원문 문구 |
| 모달 저장 | 병동 추가/수정 저장 실패 에러 동작 (라이브 프로브 없음) |
| KPI | 병동 KPI/환자수 원천 흐름 상세 |