Skip to content

HBAD230_병동 관리 ​

(Hereby) 관리자 패널 > 인사 관리 > 병동 관리

메타앱: 관리자 패널 (포트 4001)대상 사용자: 조건1 [최고 관리자] / 조건2 [병동 페이지 관리자] (권한 ward:manage "병동 페이지 관리" / ward:read "병동 페이지 조회" — 마이그 1927)프로토타입: TBU관련 정책: [[POL_권한(RBAC)]] · [[POL_병동 관리]]Status: reviewOwner: 카나

개요 ​

병동 관리는 병동 마스터(wards)와 병동 인력 배정을 관리하는 전용 화면이다. 2026-09-28 #833(v0.14.0)로 전면 재구축 — 단일 목록에서 좌측 병동 트리 + 우측 전체 병동 뷰/병동 상세(탭 3종) 구조로 전환됐고, 직원의 병동 배정(다중·겸임/이동/예약)이 이 화면의 「직원 배정」 팝업으로 일원화됐다. 병동은 **간호 스케줄러(HBNS)의 원천(SoT)**이며, 팀과의 연결(병동 하나 ↔ 팀 하나)은 유지되나 팀 관리(HBAD210)의 조직도에서 병동 노드는 제거됐다(현장 피드백 9/21 — "병동은 병동 탭에서"). 전용 권한 리소스 ward(read/manage)가 신설됐다(구 "부서 관리" 추정 폐기).

문서 히스토리 ​

  • 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
  • 2026-09-14 팀 관리 병동 정보 개선 반영 - Claude/dev
  • 2026-09-14 병동 추가·수정 모달 「연결 팀」(선택) 추가, 병동 삭제 시 팀 연결 해제를 코드에 반영 - Claude/dev
  • 2026-09-14 목록 9열(코드·병상 수·순서 추가) + 표 안 수정, 추가 모달 코드·병상 수·순서, 코드 중복 안내, 병동 설정 팝업 「병동 관리」 탭 제거 - Claude/dev
  • 2026-09-26 개발측 직접 보강(9/14 목록 9열·표 안 수정·연결 팀 ㄴ10b) 미러·컨플 부본에 역수용 — 정본(docs/spec) 우선 - 카나/PM
  • 2026-09-29 화면 전면 재구축 반영(#833/#912, v0.14.0 운영) — 좌측 병동 트리 + 전체 병동 뷰 + 병동 상세 탭 3종(인력/병동 정보/스케줄러)·직원 배정 팝업(다중·겸임/이동/예약·미리보기)·행 ⋯ 메뉴·ward.read/ward.manage 권한(마이그 1927) — 라이브 실사(okbest.dev, 조회만) 기준 재작성. 구 단일 목록 사양은 폐기 - 카나/PM
  • 2026-09-30 이월 실사 소진 — 열 구성 원문 반영: 병동 현황표 9열·「병동 목록 · 설정」 10열·인력 탭 11열·스케줄러 탭 7열 + 직원 배정 팝업 초기 화면 원문(제목·설명·검색·필터·후보 표 5열·카운트) — 라이브 실사(okbest.dev, 조회·모달만) - 카나/PM
  • 2026-10-01 이월 실사 잔여 소진 — 인력 탭 병동 요약 카드 4종(ㄴ40-1 신설)·배정 팝업 배정 상태 4옵션·행 ⋯ 메뉴 4종 원문·병동 정보 탭 안내+DL 9항목 원문, OQ 3행 해소·권한 locale OQ 해소 표기(#945) — okbest.dev 조회만(live-1001-ward-*.png, 저장·배정 0건) - 카나/PM

Data I/O ​

Server → Client

변수

메타${ward_tree} (병동 트리 + 병동별 인원)
메타${ward_summary} (전체 병동 현황표·합계)
메타${ward_detail} (상세 헤더·탭 데이터: 인력/정보/스케줄러)

Client → Server

액션전달 값tRPC procedure권한 토큰
병동 추가/수정병동 폼 값(코드·병동명·연결 팀·설명·종류·병상 수·순서·상태)nurseScheduler.ward.create / ward.updateward:manage (라벨 "병동 페이지 관리", 마이그 1927)
병동 삭제wardIdsdk.ward.delete() (추정)ward:manage
직원 배정employeeId[] · wardId · 교대 형태 · 겸임/이동/예약(적용 시점)TBU (직원 배정 팝업)ward:manage
배정 해제/이동행 단위 (5초 되돌리기 지원)TBUward:manage

외부 통합 (cross-app)

외부 시스템데이터방향비고
간호 스케줄러 (HBNS)병동 원천 소비 — 병동별 근무표·환자수·인력 배치 기준. 배정 시 스케줄러 등록·교대 형태 지정Admin(원천) → HBNS(소비)상세 스케줄러 탭·「병동 목록 · 설정」 스케줄러 열 신설
팀 관리 (HBAD210)팀 ↔ 병동 연결(teams.wardId, 병동 하나 ↔ 팀 하나)양방향 표시HBAD210 조직도의 병동 노드는 제거 — 「병동 현황」 접힘 섹션만 존치
직원 관리 (HBAD200/201)신규 직원 추가 시 병동 프리필병동 관리 → 등록 위저드#833 신설

메인 화면 사양표 (병동 관리 — #833 재구축) ​

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-• 조건1 [ward:manage 병동 페이지 관리] / 조건2 [ward:read 병동 페이지 조회] 보유 시 사이드바 인사 관리 > "병동 관리" 노출(#wards/all). 미보유 시 hide[[HBAD100_App Shell·사이드바]] · [[HBAD220_역할·권한 관리]]전용 권한 신설(마이그 1927) — 구 "부서 관리" 추정 폐기
01초기 상태Output• 좌측 병동 트리(「전체 병동」 선택) + 우측 전체 병동 뷰
10병동 트리 (좌측)Tree• 병동 네비 — 「전체 병동 N」 + 병동 노드(병동별 인원 표기) + 검색 + 「병동 추가」
• 노드 클릭 시: 우측 패널 전환
 - CASE01 [전체 병동]: 전체 병동 뷰
 - CASE02 [병동 노드]: 병동 상세
wards신규(#833) · 실측 2026-09-29
ㄴ11트리 검색Search• placeholder 원문 "병동명 / 코드"
• 입력 → 트리 필터링
wards.name · wards.code실측
ㄴ12병동 추가Button• 새 병동 생성 진입 버튼. 원문 "병동 추가"
• 클릭 → 병동 폼(하단 병동 추가·수정 사양표) 노출
wards
10-E트리 EmptyState• 병동 0건 시 표기 = TBUTBU: Empty 원문
20전체 병동 뷰View• 「전체 병동」 선택 시 우측 구성: 요약줄 + 병동 현황표(9열·합계 행·안내문) + 「병동 목록 · 설정」 표(10열 — 스케줄러 열 신설)
• 현황표 9열 원문: "병동" / "전체" / "재직" / "휴직" / "퇴직" / "미입력" / "야간전담" / "수간호사(책임자)" / "병상 수"
• 목록 표 10열 원문: "코드" / "병동명" / "연결 팀" / "스케줄러" / "설명" / "종류" / "병상 수" / "순서" / "상태" / "관리"
wards · ${ward_summary}신규(#833) · 열 원문 실측 2026-09-29
30병동 상세 헤더Header• 병동명 + 코드 + 인원 + 연결 팀 링크
• 연결 팀 클릭 → [[HBAD210_팀 관리]] 해당 팀 화면 전환
teams.wardId실측
31상세 탭Tab• 탭 3종: 「인력 N」 / 「병동 정보」 / 「스케줄러 N」 (N = 인원수)
• 클릭 → 해당 탭 전환
실측
40인력 탭View• 「병동 요약」(부제 "병동 배정 기준 · 전체(재직+휴직)") 카드 4개 + 「배정 인원」 표(11열) + 필터("상태 선택"·"직무 선택") + 검색 + 「신규 직원 추가」 + 「직원 배정」
• 배정 인원 표 11열 원문: ☐(선택) / "사번" / "이름" / "이메일" / "팀 · 역할" / "직무" / "교대 형태" / "다른 병동" / "입사일" / "상태" / "관리"
${ward_detail}11열 원문 실측 2026-09-29 · 카드 4종 실측 2026-10-01
ㄴ40-1병동 요약 카드Card• CASE01 "인원": "{N}명" + "재직 {n} · 휴직 {n} · 퇴직 {n}"
• CASE02 "직군 구성 · 직무 기준": 직무별 인원(직무 없음 = "미입력")
• CASE03 "교대 형태 · 스케줄러 기준": 교대 형태별 인원(예: "3교대 2")
• CASE04 "병동 정보": "병상 수" / "병동 종류" / "오늘 환자 수" / "스케줄러"(예: "기본 (1)") — 값 없음 "미입력". 「병동 정보 ›」 클릭 → 병동 정보 탭(50) 전환
${ward_detail} · wards실측 2026-10-01(live-1001-ward-staff.png)
ㄴ41신규 직원 추가Button• 클릭 → 직원 등록 위저드([[HBAD201_직원 추가·수정 모달]]) 오픈 — 현재 병동이 프리필된 상태[[HBAD201_직원 추가·수정 모달]]신규(#833)
ㄴ42직원 배정Button• 클릭 → "직원 배정" 팝업(하단 사양표) 노출신규(#833)
ㄴ43행 ⋯ 메뉴MenuItem• 배정 인원 행 「관리」(⋯) 클릭 → 메뉴 4종: "직원 정보 수정" / "팀 관리" / "다른 병동으로 이동" / "이 병동에서 해제"
 - "직원 정보 수정": 클릭 → [[HBAD201_직원 추가·수정 모달]]
 - "팀 관리": 클릭 → [[HBAD210_팀 관리]] 전환
 - "다른 병동으로 이동": 클릭 → 타 병동 이동
 - "이 병동에서 해제": 클릭 → 즉시 해제 + 5초 되돌리기(undo) 노출
배정 데이터4종 원문 실측 2026-10-01(live-1001-ward-rowmenu.png, 실행 0건)
40-E인력 탭 EmptyState• 배정 0명 시 표기 = TBUTBU
50병동 정보 탭View• 안내 "병동 종류는 인력 배치 기준 표(일반/재활)를 고르는 기준이에요" + 「수정」 버튼 + DL 9항목: "병동 코드" / "병동명" / "연결 팀" / "수간호사(책임자)" / "설명" / "병동 종류" / "병상 수" / "순서" / "상태"
 - 값 없음: 수간호사·병동 종류 "미지정", 병상 수 "미입력", 설명 "-"
• 수정 클릭 → 병동 폼(기존값 프리필)
wards9항목 원문 실측 2026-10-01(live-1001-ward-info.png)
60스케줄러 탭View• 표 7열 — 병동에 연결된 스케줄러 목록. 열 원문: "이름" / "코드" / "근무 장소" / "포함 직군" / "순서" / "활성" / "관리"[[HBNS210]]7열 원문 실측 2026-09-29
70직원 카드Popover• 인원 표에서 이름 클릭 → 직원 카드(병동 배정 줄·「스케줄러 보기」·「직원 정보 수정」) — #833 공통 카드 5곳 중 하나[[HBAD201_직원 추가·수정 모달]]실측(HBAD210과 동일 카드)

직원 배정 팝업 사양표 (#833 신설) ​

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-• 인력 탭 「직원 배정」 클릭 시 노출
• 제목 원문 "**{병동명}**에 직원 배정" + 설명 "이미 등록된 직원을 골라 이 병동에 배정해요. 퇴사한 직원은 빼고 보여요(휴직 포함)."
원문 실측 2026-09-29
10검색·필터Search• 검색(placeholder "이름 · 사번") + 배정 상태 드롭다운(옵션 4종: "배정 상태: 전체"(기본) / "미배정" / "다른 병동 배정" / "이미 이 병동") + 「직무 선택」 드롭다운
• 필터 아래 카운트 문구 "{N}명 고를 수 있어요"
employees옵션 4종 원문 실측 2026-10-01
20후보 표Grid• 5열 표 — 다중 선택(체크) 가능. 열 원문: ☐(선택) / "이름"(이름 + 사번 병기) / "직무" / "소속 팀" / "현재 배정"
• 현재 배정 셀: 기배정 시 "{배정처} · {교대 형태}"(예 "간호부 · 3교대") / 미배정 시 "미배정"(회색) · 직무 미입력 시 "미입력"(회색)
열 원문 실측 2026-09-29
30스케줄러·교대 형태Input• 배정과 함께 스케줄러 등록·「교대 형태」 지정[[HBNS210]]실측
40연결 팀 체크Checkbox• 병동의 연결 팀에도 함께 배정하는 옵션teams.wardId실측
50겸임 체크Checkbox• 타 병동 기배정 직원의 겸임 여부. 겸임 해제(이동) 시:
 - 「지금 옮기기」: 즉시 이동
 - 「예약」: 기본값 = 다음 근무 주기 시작일. 예약 시 연결 팀 옵션 잠금(안내 문구 노출 — 원문 TBU)
배정 데이터실측
60미리보기 문장Output• 하단에 배정 결과를 요약한 미리보기 문장 노출(무엇이 언제 어떻게 배정되는지)원문 = TBU
70N명 배정Button• 확정 버튼 — 초기(선택 0명) 라벨 "배정"·비활성, 선택 시 "{N}명 배정" 활성
• 클릭 → 배정 실행. 좌측에 「취소」
배정 데이터실측
80이탈 확인Dialog• 변경 있음 + 닫기 시 컨펌 원문 "변경된 내용을 저장하지 않고 나가시겠어요?"원문 실측

병동 추가·수정 폼 사양표 ​

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-• 트리 「병동 추가」(신규) 또는 병동 정보 탭 「수정」 클릭 시 노출#833 재구축 후 진입 경로 변경 — 필드 셋은 9/14 사양 유지 전제(재검증 TBU)
05병동 코드Input• 선택 항목. 라벨 "병동 코드", placeholder "비우면 자동으로 만들어요"
• 비우면 WARD_{숫자} 자동. 조직 안 중복 시 팝업 "「{코드}」 코드는 「{병동명}」 병동이 이미 쓰고 있어요."
wards.code신규(9/14)
10병동명 *Input• 필수 항목. 미입력이면 확정 버튼 비활성wards.name필수
20설명Input• 선택 항목wards.description (추정)
22연결 팀Dropdown• 이 병동에 연결할 팀 선택(선택 입력). 안내 "이 팀에 넣는 직원에게 병동이 자동 배정돼요". 옵션: "연결 안 함"(기본) / 팀 목록
 - CASE01 [다른 병동에 연결된 팀]: 비활성 "{팀명} — {병동명} 병동에 연결됨"
 - CASE02 [저장 시 충돌]: 팝업 "「{팀명}」 팀은 이미 「{병동명}」 병동에 연결돼 있어요."
 - CASE03 [부서(최상위+하위 팀 있음)]: 비활성 "{팀명} (부서 — 연결할 수 없음)", 서버 차단 문구 "「{팀명}」 부서에는 병동을 연결할 수 없어요. 부서 아래 팀을 골라 주세요."
teams.wardId · [[HBAD210_팀 관리]]신규(9/14)
25병동 종류Dropdown• 인력 배치 기준 표(일반/재활) 선택 키. 옵션 "미지정"(기본)/"일반병동"/"재활병동". notice "인력 배치 기준(일반/재활병동)을 고르는 기준입니다. 해당 없는 병동(중환자실 등)은 미지정으로 두세요 — 배치 기준을 적용하지 않습니다."wards.schedulingConfig.wardCareType · [[POL_간호인력·준수율]]신규(2c08e21)
27병상 수 · 순서Input(Number)• 선택 두 칸. 0 이상의 정수, 순서 비우면 0. 위반 시 "병상 수와 순서는 0 이상의 정수로 입력해 주세요."wards.schedulingConfig.bedCount · wards.displayOrder신규(9/14)
30상태Dropdown• 활성/비활성, 기본 "활성"wards.isActive
50생성/저장Button• 확정 버튼 "생성"(추가)/"저장"(수정). 활성화: 병동명 입력(수정은 변경 존재)
• 클릭 → 즉시 실행
wardsTBU: 저장 실패

병동 ↔ 간호 스케줄러 관계 ​

항목Admin(원천)HBNS(소비)
병동 마스터병동명/코드/설명/상태 정의 (SoT)근무표·환자수 관리 대상 병동 참조
병동 종류케어 타입(일반/재활) 정의 — 배치 기준 표 선택 키 (SoT)인력 배치 기준·간호등급 산정 분기
인력 배정직원 배정 팝업에서 스케줄러 등록·교대 형태 지정근무표 인력 풀
환자수 일괄 입력(스케줄러 병동 설정/환자수 팝업에서 입력)"일괄 입력" 팝업 (HBNS 소관)

비고: 간호관리료/입원료 차등제 등급표(A·1~6등급, 요양병원 별도 표)는 정본 상수로 내장돼 resolveNursingGrade가 산정하며, 등급 배지가 등급표를 소비한다 — 본 화면에는 등급 표시 위치 없음.

권한·상태 분기 요약 ​

시나리오트리거결과 화면비고
CASE01 [전체 병동]화면 진입 / 「전체 병동」 선택요약줄 + 병동 현황표 + 병동 목록 · 설정ward:read
CASE02 [병동 상세]병동 노드 선택헤더 + 탭 3종(인력/병동 정보/스케줄러)
CASE03 [병동 추가]트리 「병동 추가」 → 병동명* → "생성"wards 생성ward:manage
CASE04 [직원 배정]인력 탭 「직원 배정」 → 선택 → "{N}명 배정"배정 반영 (예약 시 다음 근무 주기 시작일)ward:manage
CASE05 [배정 해제]행 ⋯ → 배정 해제즉시 해제 + 5초 되돌리기
CASE06 [연결 팀 이동]상세 헤더 연결 팀 링크팀 관리 화면 전환

Open Question ​

구분미확인 항목
인력 탭Empty 문구(배정 0명 병동 없어 미실측)
배정 팝업미리보기 문장·예약 잠금 안내 원문
병동 폼#833 이후 필드 셋 재검증(9/14 사양 유지 전제) / 저장 실패 동작
권한ward 권한 라벨 locale 누락 → 9/30 #945로 해소("병동 페이지 관리/조회" 정상 노출 실측, [[HBAD220_역할·권한 관리]]) — 행 유지는 이력용
삭제#833 이후 병동 삭제 진입 경로·컨펌 원문 재확인