병리판독의·진단검사의 4종 — 106종 → 110종
ETC_병리판독의사명/전문의번호(bzDataInterface.vb:17318/:17515 — M_UidMst UidDtrYon='Y' AND UidDepCod='TLAB' + 유효기간), ETC_진단검사의사명/ 전문의번호(:17550/:17655 — M_DepMst DepGrpCod='LAB' 조인 + UidLicNum IS NOT NULL). 환자와 무관한 원내 의사 조회지만 레거시가 환자 태그로 노출하므로 PatientTagResolver 에 둔다(lazy 소스 + 캐시 — 이 태그가 없는 서식이 대부분이라 프리페치하지 않는다). 의도적 이탈 하나: 원문엔 ORDER BY 가 없어 TLAB 의사가 둘이면 이름과 전문의번호가 서로 다른 사람이 될 수 있었다(태그마다 따로 조회하므로). ORDER BY UidCod + 1행 고정으로 두 태그가 반드시 같은 사람을 가리키게 했다 — 담당의 때 정한 결정 규칙의 세 번째 적용. - dotnet test 338/338 · --edit-smoke 실패 0 (이름 검사 110종) - --db-patient ①~㉚ 전건 통과 — ㉚ 신설: 두 조회가 예외 없이 돈다 (이 시험 DB 는 TLAB·LAB 의사 0행 — 태그는 사유로 완결되는 정상 경로) - --db-render P062 md5 8d683835f5d81e7bb41c79071d6bf954 불변 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
4dad271e9c
commit
ba6da2252f
@@ -226,6 +226,38 @@ public sealed class PatientContextStore
|
||||
("d", code), ("y", date[..8]));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 병리판독의(TLAB) 한 명 — <c>ETC_병리판독의사명/전문의번호</c>(bzDataInterface.vb:17318, 17515).
|
||||
/// 원문에 ORDER BY 가 없어 TLAB 의사가 둘이면 이름과 번호가 <b>서로 다른 사람</b>이 될 수 있었다
|
||||
/// (태그마다 따로 조회했으므로). 한 행을 UidCod 순으로 고정해 두 태그가 같은 사람을 가리키게 한다.
|
||||
/// </summary>
|
||||
public IReadOnlyDictionary<string, string> PathologyDoctor()
|
||||
{
|
||||
using var connection = new OracleConnection(connectionString);
|
||||
connection.Open();
|
||||
return Row(connection,
|
||||
"SELECT * FROM (SELECT * FROM M_UidMst WHERE UidDtrYon = 'Y' AND TRIM(UidDepCod) = 'TLAB'"
|
||||
+ " AND TO_CHAR(SYSDATE,'YYYYMMDD') BETWEEN UidStrDte AND UidEndDte"
|
||||
+ " ORDER BY UidCod) WHERE ROWNUM = 1");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 진단검사의(부서그룹 LAB) 한 명 — <c>ETC_진단검사의사명/전문의번호</c>(:17550, 17655).
|
||||
/// 조건은 원문 그대로(의사 + 면허 보유 + 유효기간 + LAB 그룹 부서), 선택 규칙만 고정한다.
|
||||
/// </summary>
|
||||
public IReadOnlyDictionary<string, string> LabDoctor()
|
||||
{
|
||||
using var connection = new OracleConnection(connectionString);
|
||||
connection.Open();
|
||||
return Row(connection,
|
||||
"SELECT * FROM (SELECT u.* FROM M_UidMst u"
|
||||
+ " INNER JOIN M_DepMst d ON u.UidDepCod = d.DepCod AND d.DepGrpCod = 'LAB'"
|
||||
+ " AND TO_CHAR(SYSDATE,'YYYYMMDD') BETWEEN d.DepStrDte AND d.DepEndDte"
|
||||
+ " WHERE u.UidDtrYon = 'Y' AND u.UidLicNum IS NOT NULL"
|
||||
+ " AND TO_CHAR(SYSDATE,'YYYYMMDD') BETWEEN u.UidStrDte AND u.UidEndDte"
|
||||
+ " ORDER BY u.UidCod) WHERE ROWNUM = 1");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 수술 일정(S_OprInf) 한 행 — <c>OCM_수술일자</c>·<c>ETC_수술일자_*</c> 계열이 쓴다.
|
||||
/// <c>WHERE OprComNum = :c AND OprStt = 'E' ORDER BY OprKey</c> —
|
||||
|
||||
Reference in New Issue
Block a user