퇴원약 8종 — 242종 → 250종
공통 조회(퇴원약DT, bzDataInterface.vb:10482 — 퇴원의약 오더를
일시·코드·이름 순, 1회 투여량은 SQL 계산) 하나에 파생 6종
(코드/명칭/용량/횟수/일수/용법 — 열 하나를 줄단위로, 마지막 뒤에도
개행, 용법은 LEFT JOIN 미매칭이면 빈 줄) + 고정폭 조립 2종:
OCM_퇴원약(:10617) — PadRight 를 "채울 개수"로 오용한 원문 결함
그대로(실제 의미는 총폭이라 정렬이 어긋난다), 코드가 20바이트를
넘으면 음수 인자 예외 → 사유(레거시는 오류창+빈 값). SATCH 비고
괄호 분기 미이식. OCM_퇴원약_New(:10733) — 바이트 고정폭(코드 10·
명칭 37), 용량·횟수·일수 패딩이 잘라낸 값이 아닌 원본 전체 바이트로
계산되는 결함 보존(5자 이상이면 음수 예외 → 사유).
행이 없으면 SRCH 만 "해당없음." 을 찍는다(:10704/:10864) — 우리
병원 분기라 그대로 값이 된다. CP949 바이트 길이는 ASCII 1·그 외 2
근사(레거시 LenK 대응), 바이트 절단은 문자 경계라 레거시의 반각
깨짐("?") 재절단 분기가 필요 없다(폭 최대 1바이트 차이 — 주석 기록).
- dotnet test 342/342 · --edit-smoke 실패 0 (이름 검사 250종)
- --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
03fff0a3a4
commit
199a4142ee
@@ -741,6 +741,28 @@ public sealed class PatientExtraStore
|
||||
.Select(r => r.TryGetValue("OprCodNam", out var v) ? v : string.Empty)
|
||||
.ToArray();
|
||||
|
||||
/// <summary>
|
||||
/// 퇴원약 목록(퇴원약DT :10482 — 파생 6종·OCM_퇴원약·_New 의 공통 조회).
|
||||
/// 퇴원의약(OdrDscMed) 오더를 일시·코드·이름 순으로. 1회 투여량(QtyTmsQty)은
|
||||
/// SQL 계산 그대로(수량형 '*' 이면 원량, 아니면 총량/횟수 반올림 3자리).
|
||||
/// OdrRefCmt 는 OCM_퇴원약(SATCH 분기)용 컬럼 — 파생 6종은 쓰지 않는다.
|
||||
/// </summary>
|
||||
public IReadOnlyList<IReadOnlyDictionary<string, string>> DischargeMedications(decimal comNum)
|
||||
=> Rows(
|
||||
"SELECT OdrCod, OdrNam, OdrTms, OdrDay, UsgKorNam, OdrRefCmt,"
|
||||
+ " CASE WHEN OdrQtyTyp = '*' THEN OdrDtrQty ELSE ROUND(OdrDtrQty / OdrTms, 3) END AS QtyTmsQty"
|
||||
+ " FROM O_OdrInf"
|
||||
+ " LEFT JOIN M_UsgMst ON OdrUsgCod = UsgCod"
|
||||
+ " AND OdrDtm BETWEEN UsgStrDte || '0000' AND UsgEndDte || '2359'"
|
||||
+ " WHERE OdrComNum = :m AND OdrStt = 'OE'"
|
||||
+ " AND (OdrDscMed IS NOT NULL AND OdrDscMed <> ' ')"
|
||||
+ " AND (OdrHidden IS NULL OR OdrHidden <> 1)"
|
||||
+ " AND OdrGrpSub = 0"
|
||||
+ " AND (OdrAutCod IS NULL OR OdrAutCod = '-')"
|
||||
+ " AND (OdrSimEdt IS NULL OR OdrSimEdt NOT IN ('I','E'))"
|
||||
+ " ORDER BY OdrDtm, OdrCod, OdrNam",
|
||||
("m", comNum));
|
||||
|
||||
/// <summary>스칼라 1칸 — 0행이거나 NULL 이면 빈 문자열. 잔여 공백은 걷는다(문맥 행과 같은 규칙)</summary>
|
||||
private string Scalar(string sql, params (string Name, object Value)[] binds)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user