협진과·입퇴원의사 4종 — 152종 → 156종

OCM_협진과(bzDataInterface.vb:6360 Case Else — 회신 완료 CstSttFlg='G'
협진의 회신 과, DISTINCT + 시작일 순 앞 2건을 ", " 결합. GNBEDRO 의
이중 DISTINCT 분기는 미이식), OCM_협진과_협진의(:6437 — M_UidMst 조인
+ 앞 3건을 "과[의사]" 결합), OCM_입원의사(:6499 — 접수 시점 담당의
코드 → 접수일자 기준 UidNam), OCM_퇴원의사(:6583 — 퇴원일시가 비면
바로 빈 값, ILV 면 퇴원 시점·아니면 현재 시점 담당의 → 퇴원일자
기준 이름. 원문의 "퇴원일시 빈 값" If 갈래는 위의 조기 반환 탓에
도달 불가한 데드코드라 옮기지 않았다).

CodInfAt(진료과+담당의 코드 행)·UserNameAt·Consults 를 신설.
이 시험 DB 에 O_CstInf 가 15,224행 있어 ㉞(회신 완료 협진이 있는
내원 → 협진과 실값)를 신설했다 — 2건 결합 확인.

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

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Msystech
2026-08-19 17:08:58 +09:00
co-authored by Claude Fable 5
parent c0ad782b6a
commit f2f4cf81d3
3 changed files with 129 additions and 12 deletions
@@ -2331,6 +2331,12 @@ public static class DbSmoke
+ " GROUP BY PatEtcChtNum)");
lines.Add($" [조사] P_pdsoInf 패딩 행={padded},"
+ $" P_PatEtcInf 차트당 최대 행수={multiEtc}");
// 협진(O_CstInf)은 O_ 계열이라 이 시험 DB 에 없을 수 있다 —
// 빈 값이면 ORA-00942(운영 DB 전용 검증 대상)라는 뜻이다
var cstCount = FirstText(conn, "SELECT COUNT(*) FROM O_CstInf");
lines.Add(cstCount.Length == 0
? " [조사] O_CstInf 없음 — 협진과 태그는 운영 DB 에서만 검증 가능"
: $" [조사] O_CstInf {cstCount}행 — 협진과 조회 검증 가능");
if (extraOwner.Length == 0)
{
lines.Add("SKIP ㉛ 부가정보 — P_PatEtcInf 가 비어 있어 확인 불가");
@@ -2389,6 +2395,25 @@ public static class DbSmoke
extra.FirstVisit(revisitOwner, "999912312359").Length >= 8,
"RPAD 매칭이나 P_CodInf 조인을 의심할 것");
}
// 협진도 같은 방식 — 회신 완료 협진이 있는 내원으로 물으면
// 과 이름이 반드시 나와야 한다(조인 회귀를 잡는다).
var consultOwner = FirstText(conn,
"SELECT CstComNum FROM (SELECT CstComNum FROM O_CstInf"
+ " INNER JOIN M_DepMst ON CstRplDep = DepCod"
+ " AND CstStrDte BETWEEN DepStrDte AND DepEndDte"
+ " WHERE CstSttFlg = 'G') WHERE ROWNUM = 1");
if (consultOwner.Length == 0 || !decimal.TryParse(consultOwner, out var cstCom))
{
lines.Add("SKIP ㉞ 협진과 값 — 회신 완료 협진이 없어 판정 불가");
}
else
{
var consults = new PatientContextStore(conn).Consults(cstCom, false);
lines.Add($" 협진: 내원 {cstCom:F0} → {consults.Count}건 (값은 기록하지 않는다)");
Check("㉞ 회신 완료 협진이 있는 내원에서는 협진과가 나온다",
consults.Count > 0, "O_CstInf 조인이나 CstSttFlg 를 의심할 것");
}
}
}
catch (Exception ex)