HBNS240_병동 관리·설정
(Hereby) 팀 관리(team-manager) > 간호 스케줄러 > 병동 관리·설정
| 앱 | 간호 스케줄러 (team-manager 내장, 포트 4004) |
| 대상 사용자 | 조건1 [간호 관리자] · 조건2 [수간호사] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_간호스케줄 Lifecycle]] · [[POL_간호인력·준수율]] |
| Status | draft |
| Owner | 카나 |
개요
- 헤더 ⚙ = "병동 관리 및 설정" 모달 진입 화면을 정의한다.
- [2026-09-15 병동 관리 탭 제거·admin 단일화(63cba75)] 팝업의 「병동 관리」 탭과 쓰지 않던 병동 관리 모달을 제거했다. 병동 목록·편집(병동 CRUD)은 관리자 앱(admin)의 병동 관리 페이지([[HBAD230]]) 전용으로 단일화되고, 이 팝업은 인력 설정 탭으로 열린다. 팝업 안내 문구도 관리자 앱 병동 관리 페이지를 가리키도록 바뀌었다.
- 모달은 4탭 구성 — ①인력 설정 ②교대 매핑 ③교육 정책 ④주기 설정 (병동 관리 탭은 admin으로 이관되어 팝업에서 빠짐).
- 병동 CRUD는 이제 admin [[HBAD230]] 병동 관리 페이지에서만 한다. NS 자체 병동이라는 별도 개념은 admin 병동 관리로 흡수되었고, 스케줄러는 admin 병동을 참조·소비한다.
- ①인력 설정: 병원 전체 정책. 간호사/조무사/간병인 비율 + 배치 기준 3필드(간호조무사·병동지원인력·재활지원인력, 1인당 환자 수) — 간호등급·준수율 계산의 원천.
- ②교대 매핑: 배정(D/E/N) → 실제 근무시간(Shift) 대응. [[HBAD260]] 근무 유형을 소비하고 HBHR 급여와 연동하는 고리.
- ③교육 정책: "교육 근무 인정 (work_counted)" vs "교육 휴무 (off)" 2모드.
- ④주기 설정: 근무표 주기 "매월 1일 ~ 말일 (월력 기준)", 병원 전체 정책.
- ERD:
wards(code / name / schedulingConfig jsonb / displayOrder)가 병동 마스터. 병동 CRUD는 admin [[HBAD230]] 병동 관리 페이지 전용(이 팝업의 병동 관리 탭은 2026-09-15 제거). 근무 그룹·유형(shifts/shift_groups)은 [[HBAD260]] 근무 설정이 원천이다.
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 2026-07-06 | 카나 | PM | 최초 작성 |
| 2026-07-10 | 카나 | PM | 라이브 기능 검토 반영 |
| 2026-07-13 | 카나 | PM | 버튼 행동 명세 보강 |
| 2026-07-21 | 카나 | PM | GC700 깊이 재작성 |
| 2026-07-21 | 카나 | PM | 셀 스타일 확정판 적용 (콸 승인) |
| 2026-07-21 | 카나 | PM | TC 크로스체크 확정분 반영 (🟡 — nurseScheduler.ward.create·wardSettings.update 확정 등) |
| 2026-07-30 | Claude | dev | 병동 종류(배치 기준 키) 컬럼·선택 추가, ②인력 설정에 배치 기준 3필드 추가 — [[POL_간호인력·준수율]] 반영 |
| 2026-08-18 | 카나 | 라이브 재검증 정정 | okbest dev 라이브 실측: ①병동 테이블에 "종류" 컬럼 미노출(라이브 6컬럼 = 코드/병동명/병상수/순서/상태/작업), 병동 종류 선택 UI 부재. ②인력 설정에 "배치 기준 (1인당 환자 수)" 3필드 미노출(라이브는 간호사비율 D/E/N + 조무사(간호사대비) + 간병인(환자대비)만). 2026-07-30 추가분이 이 dev 환경에 미배포 상태 — 스펙은 의도 유지하되 라이브 미반영 명시 |
| 2026-09-15 | 카나 | 콸 | 병동 관리 탭 제거·admin 단일화(63cba75): 팝업 「병동 관리」 탭·병동 관리 모달 제거, 병동 CRUD는 admin [[HBAD230]] 전용. 모달 5탭→4탭(인력 설정/교대 매핑/교육 정책/주기 설정). 팝업은 인력 설정 탭으로 열림 |
| 2026-09-15 | 카나 | 콸 | 병동 코드 검증 규칙 반영(1e70fde): 코드 없이 병동 생성 시 WARD_ 코드 자동 부여·중복 상시 검사 (병동 CRUD 자체는 admin [[HBAD230]]로 이관) |
Data I/O
Server → Client
| 변수 | DB 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
${jwt_session} | (인증 세션 — 간호 관리자/수간호사) | /nurse-scheduler/signin 리다이렉트 | 미인증 시 모달 진입 불가 |
${wards} | wards[] (code / name / displayOrder) | 빈 테이블(-E) | "1 (WARD_...)" / "간호부 (IMPORT-간호부-...)" |
${scheduling_config} | wards.schedulingConfig (jsonb) | 기본값 적용 (구조 TBU) | 비율 규칙·교대 매핑·교육·주기 저장 구조 = TBU |
${shift_groups} | shift_groups / shifts | 빈 select 옵션 | [[HBAD260]] 원천 |
${staffing_ratio} | wards.schedulingConfig 내 비율 (D/E/N·조무사·간병인) — 추정 | 미설정 시 준수율 계산 불가 (TBU) | 간호등급·준수율 원천 |
Client → Server
| 액션 | 전달 값 | tRPC/SDK | 권한 토큰 |
|---|---|---|---|
| 병동 추가/수정/삭제 | (병동 마스터) | admin [[HBAD230]] 병동 관리 페이지로 이관(2026-09-15 63cba75) — 이 팝업에서는 병동 CRUD를 하지 않음. 코드 없이 생성 시 WARD_ 자동 부여·중복 상시 검사(1e70fde) | (admin 병동 관리 권한) |
| 인력 설정 저장 | { wardId, settings:{ bedCount, staffingRatios:{ day, evening, night } } } | nurseScheduler.wardSettings.update() (TC 확정: 04:4.2/4.6) | ward:write.org (TBU) |
| 교대 매핑 저장 | { slotType → shiftId }[] | (procedure TBU) | (TBU) |
| 교육 정책 저장 | { mode: work_counted | off } | (procedure TBU) | (TBU) |
| 주기 설정 저장 | { cycleType: monthly } | (procedure TBU) | (TBU) |
외부 통합 (cross-app)
| 외부 시스템 | 데이터 | 동기/비동기 | 비고 |
|---|---|---|---|
| Admin 병동 관리 [[HBAD230]] | Ward 마스터 (IMPORT- / WARD_ 접두) | 동기 | 병동 CRUD 전용 → 병동 탭 반영 (63cba75) |
| Admin 근무 설정 [[HBAD260]] | 근무 그룹·유형 (shifts / shift_groups) | 동기 | ②교대 매핑 select 옵션 원천 |
| HBHR 급여 | 교대 매핑(Shift) + 교육 정책(work_counted) | 비동기 | 급여·출퇴근 시간 산정 소비처 |
화면 플로우 (상태 머신)
⚙ = "병동 관리 및 설정" 4탭 모달(2026-09-15 병동 관리 탭 제거 후). 병동 CRUD는 admin [[HBAD230]] 병동 관리 페이지 전용, 인력 설정이 준수율 원천, 교대 매핑이 [[HBAD260]]→HBHR 급여 고리다.
병동 관리 및 설정 모달 (진입)
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 화면 진입 조건 | - | • 조건1 [간호 관리자] · 조건2 [수간호사] 인증 시 헤더 ⚙ 노출- CASE01 [ ${jwt_session} 없음]: /nurse-scheduler/signin 리다이렉트 | 인증 세션 | TBU: 조건3 [간호사] 진입 여부 |
| 10 | ⚙ 병동 관리 및 설정 | Button (Icon) | • 클릭 → "병동 관리 및 설정" 4탭 모달 오픈, 인력 설정 탭으로 열림(2026-09-15 63cba75) | [[HBNS100]] 헤더 | 병동 관리 탭은 admin [[HBAD230]]으로 이관·제거·TBU: 로드 실패 동작 |
| ㄴ11 | 4탭 헤더 | Tab | • ①인력 설정 ②교대 매핑 ③교육 정책 ④주기 설정 4탭 헤더(병동 관리 탭 제거 후) • 탭 전환 → 해당 탭 표시, 활성 탭 강조 | 5탭→4탭(63cba75)·TBU: 탭 전환 시 미저장 편집 유지 여부 | |
| 20 | 모달 닫기 | Button | • 클릭 → 모달 종료, 그리드 복귀 | TBU: 미저장 변경 존재 시 경고 여부 |
병동 관리 탭 (2026-09-15 제거 — admin 이관)
[2026-09-15 63cba75] 이 팝업의 「병동 관리」 탭과 병동 관리 모달은 제거되었다. 병동 목록·추가·수정·삭제(병동 CRUD)는 이제 관리자 앱(admin)의 병동 관리 페이지([[HBAD230]]) 전용이다. 팝업은 인력 설정 탭으로 열리고, 안내 문구는 admin 병동 관리 페이지를 가리킨다. 병동 마스터(코드/병동명/병상수/순서/상태/종류)의 화면 사양은 [[HBAD230]]을 참조한다. 병동 코드 검증(코드 없이 생성 시 WARD_ 자동 부여·중복 상시 검사, 1e70fde)도 서버 규칙으로 admin 병동 생성에 적용된다.
① 인력 설정 탭
안내: "병원 전체 정책 — 모든 병동에 동일하게 적용됩니다." (간호등급·준수율 계산 원천)
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 10 | 안내 문구 | Text | "병원 전체 정책 — 모든 병동에 동일하게 적용됩니다." 고정 표시 | 원문 카피 | |
| 20 | 간호사 1인당 환자 비율 | Input | • 주간 D / 저녁 E / 야간 N 3개 값을 입력하는 비율 필드 (간호등급·준수율 계산 원천). 안내 "예: 주간 5 = 환자 5명당 간호사 1명 필요" • 입력 → 준수율 계산 기준값 반영 | 준수율 계산 기준값 | 원문 카피·TBU: 미설정 시 산출 불가 처리·0/음수/비숫자 검증 |
| 30 | 조무사 비율 | Input | • 간호사 대비 비율을 입력하는 필드. 안내 "예: 0.5" • 입력 → 비율 반영 | 원문 카피·TBU: 미설정 처리 | |
| 40 | 간병인 비율 | Input | • 환자 대비 비율을 입력하는 필드. 안내 "예: 0.3" • 입력 → 비율 반영 | 원문 카피·TBU: 미설정 처리 | |
| 45 | 배치 기준 (1인당 환자 수) | Input | ⚠ 2026-08-18 라이브 미노출 — 이 dev 환경 ②인력 설정에는 간호사비율(D/E/N)·조무사(간호사대비)·간병인(환자대비)만 존재. (스펙 의도: 간호조무사/병동지원인력/재활지원인력 3필드 — 라이브 미반영) • 0/빈 값 = 미설정(null-unset). 50 「인력 설정 저장」에 포함 저장 | [[POL_간호인력·준수율]] | 2026-07-30 추가분이 라이브 미배포 |
| 50 | 인력 설정 저장 | Button | • 간호사/조무사/간병인 비율을 저장하는 버튼 (조건1 [간호 관리자] 실행)• 클릭 → 비율 저장(즉시 실행), 성공 시 준수율·간호등급 재계산 반영([[HBNS100]] 지표 바) | [[POL_간호인력·준수율]] · [[HBNS100]] | 병원 전체 정책·TBU: 저장 실패(토스트/롤백)·수간호사 권한 |
② 교대 매핑 탭
안내: "각 근무형태의 배정(D/E/N)에 대응하는 실제 근무시간(Shift)을 설정합니다. 급여 계산 및 출퇴근 시간 산정에 사용됩니다."
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 10 | 안내 문구 | Text | "각 근무형태의 배정(D/E/N)에 대응하는 실제 근무시간(Shift)을 설정합니다. 급여 계산 및 출퇴근 시간 산정에 사용됩니다." 고정 표시 | HBHR 급여 | 원문 카피 |
| 20 | 근무형태별 슬롯 매핑 | Select | • 슬롯(주간 / 주말 주간 / 초번(E) 등)에 Admin 근무 유형으로 실제 Shift를 대응시키는 매핑 • select → 슬롯별 Shift 대응 지정 - CASE01 [ ${shift_groups} 비어있음]: 옵션 없음 → [[HBAD260]] 선등록 필요 (아래 20-E) | [[HBAD260]] / HBHR 급여 | Admin 근무 유형 소비(일반근무/3교대 D·E·N/스포츠/스케줄 등)·TBU: 미매핑 슬롯 처리·저장 실패 |
| ㄴ20-E | 근무 유형 없음 (Empty) | - | • [[HBAD260]] 근무 유형 미등록 → select 옵션 0건 | [[HBAD260]] | Empty·TBU: 안내 문구 |
| 30 | 교대 매핑 저장 | Button | • 슬롯→Shift 매핑을 저장하는 버튼 (조건1 [간호 관리자] 실행)• 클릭 → 매핑 저장 | HBHR 급여 | NS→HR 급여 연동 고리·TBU: 즉시 실행 여부·저장 실패·수간호사 권한 |
③ 교육 정책 탭
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 10 | 교육 근무 인정 (work_counted) | Radio/Toggle | • 교육 근무를 급여에 포함하는 모드 선택 • 선택 → 급여 포함(예: 주간 교육 → D교육 → 주간 정규 Shift 급여 산정) | HBHR 급여 | 원문 카피 "교육 근무 인정 (work_counted)" |
| 20 | 교육 휴무 (off) | Radio/Toggle | • 교육 근무시간을 0 처리하는 모드 선택 • 선택 → 근무시간 0, 교육수당 별도 | HBHR 급여 | 원문 카피 "교육 휴무 (off)" |
| 30 | 교육 정책 저장 | Button | • 선택 모드(work_counted/off)를 저장하는 버튼 (조건1 [간호 관리자] 실행)• 클릭 → 정책 저장(즉시 실행) | HBHR 급여 | 2모드 택1·TBU: 모드 미선택 저장·저장 실패·수간호사 권한 |
④ 주기 설정 탭
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 10 | 근무표 주기 | Select/Text | • 근무표 주기를 고르는 컨트롤 "매월 1일 ~ 말일 (월력 기준)" • select → 주기 선택 | [[POL_간호스케줄 Lifecycle]] | 병원 전체 정책·원문 카피·TBU: 다른 주기 옵션 존재 여부 |
| 20 | 적용 안내 | Text | "변경 시 새로 생성되는 근무표에만 적용되며, 기존 근무표는 영향받지 않습니다." 고정 표시 | 원문 카피 | |
| 30 | 주기 설정 저장 | Button | • 근무표 주기를 저장하는 버튼 (조건1 [간호 관리자] 실행)• 클릭 → 주기 저장. 변경 시 신규 생성 근무표에만 적용, 기존 근무표 불변 | [[POL_간호스케줄 Lifecycle]] | TBU: 즉시 실행 여부·저장 실패·수간호사 권한 |
원천 참조
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 10 | 병동 마스터 원천 | - | 병동 CRUD는 admin [[HBAD230]] 병동 관리 페이지 전용(이 팝업의 병동 관리 탭은 2026-09-15 제거·admin 단일화). 코드 없이 생성 시 WARD_ 자동 부여·중복 상시 검사(1e70fde) | [[HBAD230]] | 병동 관리 탭 제거(63cba75) |
| 20 | 근무 유형 원천 | - | 근무 그룹·유형(shifts / shift_groups)은 Admin 근무 설정이 원천 — ②교대 매핑에서 소비 | [[HBAD260]] |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 권한 | 비고 |
|---|---|---|---|---|
CASE01 [설정 진입] | 헤더 ⚙ | "병동 관리 및 설정" 4탭 모달 진입(인력 설정 탭으로 열림) | 조건1 [간호 관리자] / 조건2 [수간호사] | 병동 관리 탭 제거·admin 이관 |
CASE02 [병동 CRUD] | admin 병동 관리 페이지 | 병동 생성/편집/삭제 (코드/병동명/병상수/순서/상태) | (admin 권한) | admin [[HBAD230]] 전용 |
CASE03 [인력 설정 저장] | ① "인력 설정 저장" | 간호사/조무사/간병인 비율 저장 → 준수율·간호등급 계산 기준값 | 조건1 [간호 관리자] | 병원 전체 정책 |
CASE04 [교대 매핑] | ② 근무형태 슬롯 select | 배정 D/E/N → 실제 Shift 대응 저장 | 조건1 [간호 관리자] | [[HBAD260]] 소비 / HBHR 급여 |
CASE05 [교육 정책] | ③ "교육 정책 저장" | work_counted / off 2모드 저장 | 조건1 [간호 관리자] | HBHR 급여 |
CASE06 [주기 설정] | ④ "주기 설정 저장" | 매월 1일~말일 주기 저장(신규 근무표부터 적용) | 조건1 [간호 관리자] | 기존 근무표 불변 |
Open Question
- 인력 설정 비율(간호사 D/E/N · 조무사 · 간병인)의 준수율·간호등급 산출식 = TBU
wards.schedulingConfigjsonb 스키마 상세(교대 매핑·교육 정책·주기 저장 구조) = TBU- 병동 관리 탭 제거(63cba75) 후 스케줄러 팝업과 admin [[HBAD230]] 병동 관리 페이지 간 편집 권한 경계·병동 종류/배치 기준 필드의 admin 화면 반영 여부 = TBU (라이브 미실사)
- 저장 procedure: 인력 설정
nurseScheduler.wardSettings.update확정 (TC 04:4.2/4.6); 교대 매핑·교육·주기 저장 procedure 및 각 즉시 실행 여부·에러 처리(토스트/롤백) = TBU - 모달 활성 기본 탭(현재 인력 설정으로 열림)·탭 전환 시 미저장 편집 유지·경고 여부 = TBU
조건2 [수간호사]의 설정 저장 권한 범위 = TBU