From 86ecfff1a1705376b77b076ab7570eace4af641b Mon Sep 17 00:00:00 2001 From: Msystech Date: Thu, 20 Aug 2026 09:06:00 +0900 Subject: [PATCH] =?UTF-8?q?=ED=87=B4=EC=9B=90=EC=9D=BC=EC=8B=9C=5F?= =?UTF-8?q?=EC=98=81=EB=AC=B8=C2=B7=ED=87=B4=EC=9B=90=EC=9D=BC=EC=9E=90=5F?= =?UTF-8?q?=EB=82=AE=EB=B3=91=EB=8F=99=20=E2=80=94=20257=EC=A2=85=20?= =?UTF-8?q?=E2=86=92=20259=EC=A2=85,=20=EA=B0=92=20=ED=83=9C=EA=B7=B8=20?= =?UTF-8?q?=EC=9D=B4=EC=8B=9D=20=EC=99=84=EC=A3=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/SheetMe.Core/Catalog/TagPreviewCatalog.cs | 3 ++ .../Services/PatientTagResolver.cs | 29 +++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/SheetMe.Core/Catalog/TagPreviewCatalog.cs b/src/SheetMe.Core/Catalog/TagPreviewCatalog.cs index a843f26..e0b2569 100644 --- a/src/SheetMe.Core/Catalog/TagPreviewCatalog.cs +++ b/src/SheetMe.Core/Catalog/TagPreviewCatalog.cs @@ -122,6 +122,9 @@ public static class TagPreviewCatalog ["ETC_전체진료과_영문명"] = TagPreviewKind.Table, ["ETC_의사List_이름순"] = TagPreviewKind.Table, ["ETC_진료과별의사List_이름순"] = TagPreviewKind.Table, + // 이름이 "목록"으로 끝나 규칙(List/Datatable 끝)에 안 걸리는 DataTable 반환 + // (bzDataInterface.vb:15414 — 수술실(OPR) 재직 간호사 이름 표, 콤보 채움용) + ["ETC_수술간호사목록"] = TagPreviewKind.Table, }; #endregion diff --git a/src/SheetMe.Designer/Services/PatientTagResolver.cs b/src/SheetMe.Designer/Services/PatientTagResolver.cs index 4dc1ad5..9748cfb 100644 --- a/src/SheetMe.Designer/Services/PatientTagResolver.cs +++ b/src/SheetMe.Designer/Services/PatientTagResolver.cs @@ -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_퇴원일자_낮병동", }; /// @@ -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_입원일자_낮병동",