영상촬영이력 — 213종 → 214종
OCM_영상촬영이력(bzDataInterface.vb:13968) — 영상의학(XRAY) 접수 완료 오더의 일자·이름(30자 절단). 원문 결합 그대로: 한 줄에 2건, 줄 안은 " / "(공백 5), 줄 사이 CRLF, 각 건은 날짜+공백7+이름. 원문 정렬이 8자 절단 별칭이라 같은 날 안 순서가 임의였다 — 원본 일시(OdrDtm)로 정렬해 고정(상위 순서 동일). - dotnet test 338/338 · --edit-smoke 실패 0 (이름 검사 214종) - --db-patient ①~㉟ 전건 통과 - --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
f06740ae51
commit
d988a347f4
@@ -670,6 +670,18 @@ public sealed class PatientExtraStore
|
||||
+ " 'txtMedHis' AS 병력기타내용))",
|
||||
("m", comNum));
|
||||
|
||||
/// <summary>
|
||||
/// 영상 촬영 이력(OCM_영상촬영이력, :13968) — 영상의학(XRAY) 접수 완료 오더의
|
||||
/// 일자·이름(30자 절단, 원문 SUBSTR). 원문 정렬은 8자 절단 별칭이라 같은 날 안 순서가
|
||||
/// 임의였다 — 원본 일시로 정렬해 고정한다(상위 순서는 동일).
|
||||
/// </summary>
|
||||
public IReadOnlyList<IReadOnlyDictionary<string, string>> RadiologyHistory(decimal comNum)
|
||||
=> Rows(
|
||||
"SELECT SUBSTR(OdrDtm, 1, 8) AS OdrDay, SUBSTR(OdrNam, 1, 30) AS OdrNam FROM O_OdrInf"
|
||||
+ " WHERE OdrComNum = :m AND OdrAcpDep = 'XRAY' AND OdrStkStt = 'OE'"
|
||||
+ " ORDER BY OdrDtm DESC",
|
||||
("m", comNum));
|
||||
|
||||
/// <summary>스칼라 1칸 — 0행이거나 NULL 이면 빈 문자열. 잔여 공백은 걷는다(문맥 행과 같은 규칙)</summary>
|
||||
private string Scalar(string sql, params (string Name, object Value)[] binds)
|
||||
{
|
||||
|
||||
@@ -1506,6 +1506,7 @@ public sealed class PatientTagResolver : ITagValueResolver
|
||||
"OCM_외래실진료일", "OCM_외래실진료일_과목별", "OCM_외래실진료일수",
|
||||
"ETC_승인의사", "OCM_수술소독간호사",
|
||||
"OCM_적용진료과", "OCM_적용진료의사", "OCM_전과", "OCM_간호정보조사지_과거력",
|
||||
"OCM_영상촬영이력",
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
@@ -2008,6 +2009,34 @@ public sealed class PatientTagResolver : ITagValueResolver
|
||||
? new TagValue(true, text.ToString())
|
||||
: new TagValue(false, "조립할 전과 줄이 없습니다(과명 또는 구간이 비어 있음)");
|
||||
}
|
||||
case "OCM_영상촬영이력":
|
||||
{
|
||||
var comNum = PatientContext.Value(context.ComInf, "ComNum");
|
||||
if (!decimal.TryParse(comNum, out var m))
|
||||
{
|
||||
return new TagValue(false, "이 내원의 내원번호를 읽지 못했습니다");
|
||||
}
|
||||
var shots = store.RadiologyHistory(m);
|
||||
if (shots.Count == 0)
|
||||
{
|
||||
return new TagValue(false, "영상의학(XRAY) 접수 완료 오더가 없습니다");
|
||||
}
|
||||
// 원문 결합(:13990-14012): 한 줄에 2건 — 줄 안은 " / "(공백5),
|
||||
// 줄 사이는 CRLF. 각 건은 "YYYY-MM-DD" + 공백 7 + 오더명(30자).
|
||||
var text = new System.Text.StringBuilder();
|
||||
for (var i = 0; i < shots.Count; i++)
|
||||
{
|
||||
if (i > 0)
|
||||
{
|
||||
text.Append(i % 2 == 1 ? " / " : "\r\n");
|
||||
}
|
||||
var day = PatientContext.Value(shots[i], "OdrDay");
|
||||
text.Append(day.Length >= 8 ? Hyphenate(day[..8]) : day)
|
||||
.Append(" ")
|
||||
.Append(PatientContext.Value(shots[i], "OdrNam"));
|
||||
}
|
||||
return new TagValue(true, text.ToString());
|
||||
}
|
||||
case "OCM_간호정보조사지_과거력":
|
||||
{
|
||||
var comNum = PatientContext.Value(context.ComInf, "ComNum");
|
||||
@@ -2249,6 +2278,7 @@ public sealed class PatientTagResolver : ITagValueResolver
|
||||
"OCM_외래실진료일", "OCM_외래실진료일_과목별", "OCM_외래실진료일수",
|
||||
"ETC_승인의사", "OCM_수술소독간호사",
|
||||
"OCM_적용진료과", "OCM_적용진료의사", "OCM_전과", "OCM_간호정보조사지_과거력",
|
||||
"OCM_영상촬영이력",
|
||||
"OCM_입원시간", "OCM_입원일시", "OCM_입원일시_영문", "OCM_입실시간",
|
||||
"OCM_의사퇴원예고일시", "OCM_퇴원예정일시", "OCM_퇴원시간", "OCM_퇴원일시",
|
||||
"OCM_퇴원예고일시", "OCM_재원일수", "OCM_퇴원예고재원일수", "OCM_입원일자_낮병동",
|
||||
|
||||
Reference in New Issue
Block a user