Skip to content

HBNS230_환자수 관리

(Hereby) 팀 관리(team-manager) > 간호 스케줄러 > 환자수 관리

간호 스케줄러 (team-manager 내장, 포트 TBU)
대상 사용자조건1 [간호 관리자] · 조건2 [수간호사]
프로토타입TBU
관련 정책[[POL_간호스케줄 Lifecycle]] · [[POL_간호인력·준수율]]
Statusdraft
Owner카나

개요

  • 병동별 **일 환자수(census)**를 입력·관리하는 화면. 두 접점으로 나뉜다.
  • 헤더 인라인 입력: "오늘 환자 / 간호부 [0] / 합계 0명" — [[HBNS100]] Shell 헤더 연계, 병동별 spinbutton + 합계.
  • 📋 "월별 환자수 관리" 모달: 상단 병동 탭 + 대상 월 선택, 전월 참고 통계("전월 (n월) 참고 — 평균 n명 / 최소 n명 / 최대 n명 / 입력 n일"), 일별 달력 입력 그리드(날짜 셀마다 환자수 입력), 상태 범례(입력완료 / 미입력 / 수정됨 / 오늘), "미입력일 병상수로 채우기" 버튼, 하단 "닫기" / "저장".
  • 헤더 인라인과 월별 모달 모두 동일 ward_daily_records에 upsert한다.
  • 입력된 환자수는 준수율(인력 비율 충족도)·간호등급 계산의 입력 원천이다. 비율 충족도 = RatioRule 대비 값으로 산출되며, 환자수 누락 시 준수율 계산이 왜곡된다.
  • ERD ward_daily_records(wardId / date / patientCount / updatedById)에 병동×일자 단위로 저장. [[HBHR240]](HR 병동 일별 환자수 시트)와 원천을 공유하고, [[HBMD]](Medical 병동별 인력 현황, "스케줄러와 병동 관리로 계산")의 계산 인자로 소비된다.

문서 히스토리

날짜작성자변경 내용
2026-07-06카나PM최초 작성
2026-07-10카나PM라이브 기능 검토 반영
2026-07-13카나PM버튼 행동 명세 보강
2026-07-21카나PMGC700 깊이 재작성
2026-07-21카나PM셀 스타일 확정판 적용 (콸 승인)
2026-07-21카나PMTC 크로스체크 확정분 반영 (🟡 — nurseScheduler.dailyRecord.upsert/get 확정 등)
2026-08-18카나라이브 재검증 정정모달 헤더 제목 라이브 = "환자수 관리"(병동 탭 병기). 버튼 aria-label "월별 환자수 관리"는 유지. 전월 참고·상태 범례·"미입력일 병상수로 채우기"·닫기/저장 전부 라이브 일치 확인

Data I/O

Server → Client

변수DB 엔티티.컬럼값 없을 때비고
${jwt_session}인증 세션 (간호 관리자/수간호사)없으면 /nurse-scheduler/signin 리다이렉트[[HBNS100]]
${ward_tabs}wards[]병동 0건 → 탭 없음 처리 = TBU"간호부 (IMPORT-간호부-...)" / "1 (WARD_...)"
${today_census}ward_daily_records.patientCount (당일)당일 미입력 → "[0]" 기본 표기"오늘 환자 / 간호부 [0] / 합계 0명"
${monthly_census}ward_daily_records[] (병동×일자 그리드) (추정)미입력일 → 달력 셀 "미입력" 상태(-E)월별 모달 그리드
${prev_month_stat}ward_daily_records 전월 집계전월 데이터 없음 → 통계 값 없음 처리 = TBU"전월 (n월) 참고 — 평균/최소/최대/입력 n일"
${compliance}준수율 (환자수 × RatioRule 대비 충족도)환자수 누락 시 계산 왜곡"준수율 25%에서 100%"

Client → Server

액션전달 값tRPC/SDK권한 토큰
당일 환자수 입력wardId, date, patientCountnurseScheduler.dailyRecord.upsert() (TC 확정: 04:4.6)TBU
당일 환자수 조회wardId, datenurseScheduler.dailyRecord.get(wardId, date) (TC 확정: 04:4.6)TBU
월별 환자수 관리 저장wardId, date[], patientCount[]nurseScheduler.dailyRecord.upsert() (일자별) (TC 확정: 04:4.6)TBU
미입력일 병상수로 채우기wardId, 미입력 date[], 병상수(bedCount)클라이언트 채움 후 저장 시 nurseScheduler.dailyRecord.upsert() (TC 확정: 04:4.6)TBU

외부 통합 (cross-app)

외부 시스템데이터동기/비동기비고
HR ([[HBHR240]] 병동 일별 환자수 시트)환자수 원천 공유비동기(추정)원천 연계
Medical ([[HBMD]] 병동별 인력 현황)환자수를 계산 인자로 소비 ("스케줄러와 병동 관리로 계산")비동기(추정)인력 현황 소비
병동 병상수 ([[HBNS240]])"미입력일 병상수로 채우기" 원천동기병상수 원천

화면 플로우 (상태 머신 필수)

환자수는 준수율·간호등급 계산의 입력 원천 — 헤더 인라인과 월별 관리 모달 모두 동일 ward_daily_records에 upsert.

환자수 관리 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00화면 진입 조건-조건1 [간호 관리자]/조건2 [수간호사] 인증 시 노출
 - CASE01 [세션 없음]: /nurse-scheduler/signin 리다이렉트
인증 세션[[HBNS100]]
01데이터 원천-ward_daily_records(wardId / date / patientCount / updatedById) 병동×일자 단위 저장준수율 계산 입력
10헤더 인라인 입력Input• 병동 탭마다 당일 환자수를 spinbutton으로 입력하는 헤더 연계 필드
• 입력 → "오늘 환자 / 간호부 [0] / 합계 0명" 갱신, ward_daily_records upsert
 - CASE01 [미입력]: "[0]" 기본 표기
[[HBNS100]]_Shell·헤더준수율 당일 원천·TBU: 반영 실패 동작
ㄴ11합계 표시Output• 병동 입력 합산 "합계 0명" 표기(입력 0도 "합계 0명")
20월별 환자수 관리 모달 진입Button• 📋 클릭 → "월별 환자수 관리" 모달 오픈 (상세 아래 별도 표)아래 모달 표아이콘 = "월별 환자수 관리"(⚙="병동 관리 및 설정"과 구분)
30준수율 반영Output• 입력 환자수 → 비율 충족도(RatioRule 대비) 재계산 → 준수율/간호등급 지표 반영
 - CASE01 [환자수 누락일]: 계산 왜곡
[[HBNS200]] 지표 바 / [[POL_간호인력·준수율]]TBU: 0 vs 미입력 규칙·비율 규칙 위치
40HR 시트 연계-병동 일별 환자수가 HR 시트와 원천 공유[[HBHR240]]_병동 일별 환자수 시트
50인력 현황 소비-환자수는 Medical 병동별 인력 현황("스케줄러와 병동 관리로 계산")의 계산 인자로 소비[[HBMD]] 병동별 인력 현황

월별 환자수 관리 모달 사양표

📋 클릭 시 노출. 월 단위 병동×일자 환자수 관리. 하단 "닫기" / "저장".

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-📋 "월별 환자수 관리"(버튼 aria-label) 클릭 시 모달 오픈. ⚠ 2026-08-18 라이브: 모달 헤더 제목은 "환자수 관리"(+ 병동 탭 병기) — "월별" 접두 없음환자수 관리 표 202026-08-18: 모달 제목 "환자수 관리" 정정
10병동 탭Tab• 대상 병동을 선택하는 상단 탭
• 탭 전환 → 선택 병동으로 그리드 컨텍스트 전환
wards[]TBU: 병동 0건 탭 처리·기본값
20대상 월Select• 입력 대상 월을 고르는 선택 컨트롤
• select → 해당 월 그리드 로드
TBU: 기본값(당월 추정)
30전월 참고 통계Output• "전월 (n월) 참고 — 평균 n명 / 최소 n명 / 최대 n명 / 입력 n일" 표기ward_daily_records 전월참고값·TBU: 전월 데이터 없음 표기
40일별 달력 입력 그리드Input• 날짜 셀마다 해당 일 환자수를 입력하는 달력 그리드
• 날짜 셀 클릭 → 인라인 입력
 - CASE01 [미입력 셀]: "미입력" 상태(범례 참조, 아래 40-E)
ward_daily_records.patientCount병동×일자·TBU: 셀 검증 실패(음수·비수치) 동작
ㄴ40-E미입력일(Empty)-E• 미입력 날짜는 달력 셀 "미입력" 상태로 표시(범례 "미입력")Empty·TBU: 저장 제외/0 처리 규칙
50상태 범례Output• "입력완료" / "미입력" / "수정됨" / "오늘" 셀 상태 색 범례원문 카피
60미입력일 병상수로 채우기Button• 미입력 날짜에 병동 병상수를 일괄 채우는 버튼
• 클릭 → 즉시 실행(컨펌 없음), 미입력 날짜 일괄 채움
병동 병상수([[HBNS240]])원문 카피·TBU: 미입력일 0건·병상수 미설정 동작
70닫기Button• 클릭 → 모달 닫기TBU: 미저장 변경 폐기 여부
71저장Button• 병동×일자 환자수를 upsert하는 저장 버튼
• 클릭 → upsert 후 반영
ward_daily_recordsnurseScheduler.dailyRecord.upsert (TC 확정: 04:4.6)·TBU: 변경 없음/저장 실패 동작

권한·상태 분기 요약

시나리오트리거결과권한비고
CASE01 [당일 환자수 입력]헤더 "오늘 환자" 필드ward_daily_records upsert → 준수율 재계산조건1/조건2
CASE02 [월별 환자수 관리]📋 "월별 환자수 관리" → "저장"모달에서 병동×일자 환자수 입력 → upsert조건1/조건2일별 달력 그리드
CASE03 [미입력일 채우기]"미입력일 병상수로 채우기"미입력 날짜에 병동 병상수 일괄 입력조건1/조건2병상수([[HBNS240]])

Open Question

  • "전월 참고 통계"(평균/최소/최대) 산출 기간 정의(직전 월 vs 동월 전년) = TBU
  • 비율 규칙(1:5 / 1:7 / 1:10) 대비 준수율 계산식 및 RatioRule 위치 = TBU
  • 환자수 누락일 처리(0 vs 미입력) 및 간호등급 산출 규칙 = TBU
  • 달력 그리드 셀 입력 검증(음수·비수치·병상수 초과) = TBU
  • "저장" 실패 시 동작(에러 노출/롤백) = TBU
  • "닫기" 시 미저장 변경 폐기 여부·경고 = TBU