퇴원일시_영문·퇴원일자_낮병동 — 257종 → 259종, 값 태그 이식 완주

OCM_퇴원일시_영문(bzDataInterface.vb:7604 Case Else — 퇴원일시와 같은
분기 구조에 포맷만 MM-DD-YYYY. BSKOREA·YJRCH 등 병원 분기와
KBJY·JEGG MsgBox 분기 미이식), OCM_퇴원일자_낮병동(:7763 — 낮병동
구간의 종료일, 기존 구간 조회 재사용). ETC_수술간호사목록(:15414)은
이름이 "목록"으로 끝나 규칙에 안 걸리는 DataTable 반환 — Table 분류.

이로써 카탈로그 대조 기준 잔여는 싸인·서명·로고·직인 15종(파일서버
이미지 — Image 사유 완결), 콤보용 표 계열(Table 사유 완결),
대조군으로 남긴 ETC_수술실간호사 1종뿐이다. 한 줄 값이 되는 태그는
전부 이식 또는 사유 완결됐다.

- dotnet test 342/342 · --edit-smoke 실패 0 (이름 검사 259종)
- --db-patient ①~㊱ 전건 통과
- --db-render P062 md5 8d683835f5d81e7bb41c79071d6bf954 불변

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Msystech
2026-08-20 09:06:00 +09:00
co-authored by Claude Fable 5
parent 55c1a7fcf1
commit 86ecfff1a1
2 changed files with 30 additions and 2 deletions
@@ -1592,7 +1592,8 @@ public sealed class PatientTagResolver : ITagValueResolver
{
if (tag is not ("OCM_입원시간" or "OCM_입원일시" or "OCM_입원일시_영문" or "OCM_입실시간"
or "OCM_의사퇴원예고일시" or "OCM_퇴원예정일시" or "OCM_퇴원시간" or "OCM_퇴원일시"
or "OCM_퇴원예고일시" or "OCM_재원일수" or "OCM_퇴원예고재원일수" or "OCM_재원일수_단입법"))
or "OCM_퇴원예고일시" or "OCM_재원일수" or "OCM_퇴원예고재원일수" or "OCM_재원일수_단입법"
or "OCM_퇴원일시_영문"))
{
return null;
}
@@ -1639,6 +1640,15 @@ public sealed class PatientTagResolver : ITagValueResolver
? Ok(string.Empty) : Ask())
: NeedFacility() ?? Ok(string.CompareOrdinal(openDate, "20190501") < 0
? Hyphenate(today) : string.Empty);
case "OCM_퇴원일시_영문":
// 퇴원일시와 같은 구조에 포맷만 MM-DD-YYYY(:7604 — BSKOREA·YJRCH 등
// 병원 분기와 KBJY·JEGG 의 MsgBox 분기 미이식, Case Else 갈래)
return prg == "ILV" ? Ok(Reorder(Head(lev, 8), 4, 6, 0))
: inpatient
? NeedFacility() ?? (string.CompareOrdinal(openDate, "20200901") >= 0
? Ok(string.Empty) : Ask())
: NeedFacility() ?? Ok(string.CompareOrdinal(openDate, "20190501") < 0
? Reorder(today, 4, 6, 0) : string.Empty);
case "OCM_퇴원예고일시":
return prg == "ILV" ? Ok(Hyphenate(Head(lev, 8)))
: prg == "ILP" ? Ok(Hyphenate(Head(sch, 8)))
@@ -1737,7 +1747,7 @@ public sealed class PatientTagResolver : ITagValueResolver
"OCM_퇴원약_코드", "OCM_퇴원약_명칭", "OCM_퇴원약_용량", "OCM_퇴원약_횟수",
"OCM_퇴원약_일수", "OCM_퇴원약_용법", "OCM_퇴원약", "OCM_퇴원약_New",
"OCM_비급여처방", "OCM_진단서전문그룹과목", "OCM_청구진료과목", "OCM_임신주기",
"OCM_재원일수_낮병동", "ETC_로그인사용자_병동_수간호사",
"OCM_재원일수_낮병동", "ETC_로그인사용자_병동_수간호사", "OCM_퇴원일자_낮병동",
};
/// <summary>
@@ -2460,6 +2470,20 @@ public sealed class PatientTagResolver : ITagValueResolver
return Wrap(store.CodeName("BDPTBL", billCod),
"청구 코드표(BDPTBL)에 이름이 없습니다");
}
case "OCM_퇴원일자_낮병동":
{
// 낮병동 구간의 종료일(:7763) — 입원일자_낮병동과 같은 조회의 반대쪽 끝
var comNum = PatientContext.Value(context.ComInf, "ComNum");
if (!decimal.TryParse(comNum, out var m))
{
return new TagValue(false, "이 내원의 내원번호를 읽지 못했습니다");
}
var range = store.DayCareRange(m);
var end = PatientContext.Value(range, "DcpEndDte");
return end.Length >= 8
? new TagValue(true, Hyphenate(end[..8]))
: new TagValue(false, "낮병동 신청(P_DcpInf) 구간이 이 내원을 포함하지 않습니다");
}
case "OCM_재원일수_낮병동":
{
// 낮병동 신청 구간 일수 + 1(:8083) — 구간이 없으면 레거시도 빈 값
@@ -2848,6 +2872,7 @@ public sealed class PatientTagResolver : ITagValueResolver
"OCM_퇴원약_일수", "OCM_퇴원약_용법", "OCM_퇴원약", "OCM_퇴원약_New",
"OCM_비급여처방", "OCM_진단서전문그룹과목", "OCM_청구진료과목", "OCM_임신주기",
"OCM_재원일수_낮병동", "ETC_로그인사용자_병동_수간호사", "OCM_재원일수_단입법",
"OCM_퇴원일시_영문", "OCM_퇴원일자_낮병동",
"OCM_입원시간", "OCM_입원일시", "OCM_입원일시_영문", "OCM_입실시간",
"OCM_의사퇴원예고일시", "OCM_퇴원예정일시", "OCM_퇴원시간", "OCM_퇴원일시",
"OCM_퇴원예고일시", "OCM_재원일수", "OCM_퇴원예고재원일수", "OCM_입원일자_낮병동",