# 워크플로 최종 결과 — CTX 태그 126종 검증 완료 오케스트레이션 2회(에이전트 12개 완료, 오류 0). 레거시 본문을 병렬로 읽고 각 매핑을 다른 에이전트가 반박하게 했다. | 판정 | 수 | | --- | --- | | ok | 118 | | wrong | 6 | | unsure | 2 | 고유 태그 105종. ## 통합 전에 반드시 확인할 것 이번 배치는 대부분 `ETC_` 계열(시각·로그인 사용자)로 환자 태그가 아니다. 상당수는 `SessionTagResolver`/`TagPreviewCatalog` 가 이미 처리한다 — 그대로 넣으면 같은 태그를 두 곳에서 처리하게 된다. 대조가 먼저다. ## 검증이 기존 SheetMe 코드의 차이를 셋 잡았다 매핑이 아니라 이미 들어가 있는 코드가 레거시와 다른 경우다. 1. `ETC_로그인_사용자ID_사용자명` — 레거시(17930)는 항상 `UidCod + "." + UidNam` 을 만든다. SheetMe `TagPreviewCatalog.cs:197` 은 둘 다 비어 있지 않을 때만 만들고 아니면 빈 값이다. 2. `ETC_로그인_사용자명` — SheetMe 조회(`UserContextStore.cs:62`)가 `NVL(UidNam,' ')` 로 공백 한 칸을 채운다. `UidNam` 이 NULL 인 사용자에서 레거시("")와 값이 갈린다. 3. 로그인 사용자 유효기간 기준일 — 레거시는 `GetAdpDtm` 앞 8자(`clsCommonLib.vb:10622-10624`), SheetMe 는 `SYSDATE`. 같은 행이라도 기준일이 다르다. ## 되살릴 때 걸리는 것 - `ETC_건강보험증번호_Refer` 는 죽은 코드(`Return ""` 하나)지만, 주석 속 원래 구현은 `ComInfDR_Refer`(참조 내원행)를 읽는다 — 다섯 문맥 표의 `ComInf` 로 그냥 치환하면 안 된다. - `ETC_현재일시_MaskBox` 는 마스크 `9999-99-9999:99` 라 일과 시가 붙는다(`2026-08-1914:30`). - `ETC_로그인_원내연락처` 컬럼은 `UIDOFFTEL` 대문자. - `ETC_로그인사용자_서명` 은 서버에서 이미지를 내려받는다(경로 조립·재시도 루프·예외 분기). `needs-lookup` 으로 격리했다. ## 판정 표 | 판정 | 태그 | kind | row | column | | --- | --- | --- | --- | --- | | ok | `ETC_건강보험증번호_Refer` | - | - | - | | ok | `ETC_건강보험증번호_Refer` | computed | - | - | | ok | `ETC_로그인_사용자ID_사용자명` | - | - | - | | ok | `ETC_로그인_사용자ID_사용자명` | computed | - | UidCod,UidNam | | ok | `ETC_로그인_사용자ID` | - | - | - | | ok | `ETC_로그인_사용자ID` | context-scalar | - | UidCod | | ok | `ETC_로그인_사용자명` | - | - | - | | ok | `ETC_로그인_사용자명` | context-scalar | - | UidNam | | ok | `ETC_로그인_사용자연락처` | - | - | - | | ok | `ETC_로그인_사용자연락처` | context-scalar | - | UidMblPhn | | ok | `ETC_로그인_원내연락처` | - | - | - | | ok | `ETC_로그인_원내연락처` | context-scalar | - | UIDOFFTEL | | ok | `ETC_로그인사용자_서명` | - | - | - | | ok | `ETC_로그인사용자_서명` | needs-lookup | - | UidImgPth | | ok | `ETC_현재년도` | - | - | - | | ok | `ETC_현재년도` | formatted | - | - | | ok | `ETC_현재시간` | - | - | - | | ok | `ETC_현재시간` | formatted | - | - | | ok | `ETC_현재일시_1_년` | - | - | - | | ok | `ETC_현재일시_1_년` | formatted | - | - | | ok | `ETC_현재일시_2_월` | - | - | - | | ok | `ETC_현재일시_2_월` | formatted | - | - | | ok | `ETC_현재일시_3_일` | - | - | - | | ok | `ETC_현재일시_3_일` | formatted | - | - | | ok | `ETC_현재일시_4_몇시` | - | - | - | | ok | `ETC_현재일시_4_몇시` | formatted | - | - | | ok | `ETC_현재일시_5_몇분` | - | - | - | | ok | `ETC_현재일시_5_몇분` | formatted | - | - | | ok | `ETC_현재일시_MaskBox` | - | - | - | | ok | `ETC_현재일시_MaskBox` | formatted | - | - | | ok | `ETC_현재일시` | - | - | - | | ok | `ETC_현재일시` | formatted | - | - | | ok | `ETC_현재일자_영문` | - | - | - | | ok | `ETC_현재일자_영문` | formatted | - | - | | ok | `ETC_현재일자` | - | - | - | | ok | `ETC_현재일자` | formatted | - | - | | ok | `OCM_OPNAME` | - | - | - | | ok | `OCM_OPNAME` | needs-lookup | - | OPNAME | | ok | `OCM_STFDTR` | needs-lookup | - | - | | ok | `OCM_User진료과_Refer` | needs-lookup | - | - | | ok | `OCM_User진료과_한글명칭` | needs-lookup | - | - | | ok | `OCM_User진료과` | needs-lookup | - | - | | ok | `OCM_User진료의사명_Refer` | needs-lookup | - | - | | ok | `OCM_User진료의사명` | needs-lookup | - | - | | ok | `OCM_내원유형` | computed | ComInf | ComPatTyp, ComEmgYon | | ok | `OCM_담당의사_Refer` | needs-lookup | - | - | | ok | `OCM_담당의사_영문_Refer` | needs-lookup | - | - | | ok | `OCM_담당의사_영문` | needs-lookup | - | - | | ok | `OCM_담당의사면허번호_Refer` | needs-lookup | - | - | | ok | `OCM_담당의사면허번호` | needs-lookup | - | - | | ok | `OCM_담당의사싸인_Refer` | needs-lookup | - | - | | ok | `OCM_담당의사싸인` | needs-lookup | - | - | | ok | `OCM_담당의사전문의번호_Refer` | needs-lookup | - | - | | ok | `OCM_담당의사전문의번호` | needs-lookup | - | - | | ok | `OCM_로그인_사용자싸인` | needs-lookup | - | - | | ok | `OCM_병동_Refer` | needs-lookup | CowInf | CowWadCod | | ok | `OCM_병동_병실_베드` | needs-lookup | CowInf | CowWadCod + CowRomCod + CowBedCod | | ok | `OCM_병동_병실` | needs-lookup | CowInf | CowWadCod, CowRomCod | | ok | `OCM_병동` | needs-lookup | CowInf | CowWadCod | | ok | `OCM_병실베드` | needs-lookup | CowInf | CowBedCod | | ok | `OCM_부상병POA_Refer` | needs-lookup | - | OkdPoaTyp | | ok | `OCM_부상병POA` | needs-lookup | - | OkdPoaTyp | | ok | `OCM_부상병명_Refer` | needs-lookup | - | KcdKorNam | | ok | `OCM_부상병코드_Refer` | needs-lookup | - | KcdElcCod | | ok | `OCM_부상병코드` | needs-lookup | - | KcdElcCod | | ok | `OCM_상병명_가로_Refer` | needs-lookup | - | KcdKorNam + OkdCfmSus | | ok | `OCM_상병명_가로` | needs-lookup | - | KcdKorNam + OkdCfmSus | | ok | `OCM_상병명_영어_가로_Refer` | needs-lookup | - | KcdEngNam | | ok | `OCM_상병명_영어_가로` | needs-lookup | - | KcdEngNam | | ok | `OCM_상병명_영어_세로_Refer` | needs-lookup | - | KcdEngNam | | ok | `OCM_상병명_영어_세로` | needs-lookup | - | KcdEngNam | | ok | `OCM_상병코드_가로_Refer` | needs-lookup | - | KcdElcCod | | ok | `OCM_상병코드_가로` | needs-lookup | - | KcdElcCod | | ok | `OCM_상병코드_세로_Refer` | needs-lookup | - | KcdElcCod | | ok | `OCM_상병코드_세로` | needs-lookup | - | KcdElcCod | | ok | `OCM_수술_OprPatETC` | needs-lookup | - | OprPatEtc | | ok | `OCM_수술부위` | needs-lookup | - | OprRegionName | | ok | `OCM_수술상병` | needs-lookup | - | OkdNam | | ok | `OCM_수술일자_Refer` | computed | - | - | | ok | `OCM_수술주상병` | needs-lookup | - | - | | ok | `OCM_심사_부상병명` | needs-lookup | - | - | | ok | `OCM_심사_부상병코드` | needs-lookup | - | - | | ok | `OCM_심사_주상병명` | needs-lookup | - | - | | ok | `OCM_심사_주상병코드` | needs-lookup | - | - | | ok | `OCM_외래내원일시_Refer` | formatted | ComInf | ComAcpDtm | | ok | `OCM_외래내원일시` | formatted | ComInf | ComAcpDtm | | ok | `OCM_외래내원일자_Refer` | formatted | ComInf | ComAcpDtm | | ok | `OCM_외래내원일자_영문` | formatted | ComInf | ComAcpDtm | | ok | `OCM_의사퇴원예고일시` | computed | ComInf | ComSchLev | | ok | `OCM_입실시간` | formatted | ComInf | ComTrsDtm | | ok | `OCM_입원내원일시_Refer` | formatted | ComInf | ComAcpDtm | | ok | `OCM_입원시간_Refer` | computed | ComInf | ComAcpDtm | | ok | `OCM_입원일시_Refer` | computed | ComInf | ComAcpDtm | | ok | `OCM_입원전환일시_Refer` | formatted | ComInf | ComTrsDtm | | ok | `OCM_입원전환일자_Refer` | formatted | ComInf | ComTrsDtm | | ok | `OCM_입통원구분_입원_Refer` | computed | ComInf | ComPatTyp | | ok | `OCM_입통원구분_입원` | computed | ComInf | ComPatTyp | | ok | `OCM_입통원구분_통원_Refer` | computed | ComInf | ComPatTyp | | ok | `OCM_입통원구분_통원` | computed | ComInf | ComPatTyp | | ok | `OCM_적용진료의사` | needs-lookup | CodInf | CodDtrCod | | ok | `OCM_전과` | needs-lookup | CodInf | CodDepCod, CodDepCod_Nam, CodStrDtm, CodEndDtm | | ok | `OCM_주상병POA_Refer` | needs-lookup | - | OkdPoaTyp | | ok | `OCM_주상병POA` | needs-lookup | - | OkdPoaTyp | | ok | `OCM_주상병명_Refer` | needs-lookup | - | KcdKorNam | | ok | `OCM_주상병명_영어_Refer` | needs-lookup | - | KcdEngNam | | ok | `OCM_주상병명_영어` | needs-lookup | - | KcdEngNam | | ok | `OCM_주상병일자_Refer` | needs-lookup | - | OkdEntDtf | | ok | `OCM_주상병일자` | needs-lookup | - | OkdEntDtf | | ok | `OCM_주상병코드_Refer` | needs-lookup | - | KcdElcCod | | ok | `OCM_주상병특정기호_Refer` | needs-lookup | - | OkdVeeCod | | ok | `OCM_주상병특정기호` | needs-lookup | - | OkdVeeCod | | ok | `OCM_진단구분_상병명` | needs-lookup | - | OkdDspSeq, OkdCfmSus, KcdKorNam | | ok | `OCM_진단구분_상병코드_상병명_Refer` | needs-lookup | - | OkdDspSeq, OkdCfmSus, KcdElcCod, KcdKorNam | | ok | `OCM_진단구분_상병코드_상병명` | needs-lookup | - | OkdDspSeq, OkdCfmSus, KcdElcCod, KcdKorNam | | ok | `OCM_진단서의사_영문_Refer` | needs-lookup | ComInf | ComPatTyp, ComPrgStt, ComLevDtm, ComAcpDtm | | ok | `OCM_진단서의사_영문` | needs-lookup | ComInf | ComPatTyp, ComPrgStt, ComLevDtm, ComAcpDtm | | ok | `OCM_진단서의사면허번호_Refer` | needs-lookup | ComInf | ComPatTyp, ComPrgStt, ComLevDtm, ComAcpDtm | | ok | `OCM_진단서의사면허번호` | needs-lookup | ComInf | ComPatTyp, ComPrgStt, ComLevDtm, ComAcpDtm | | unsure | `OCM_전과일시` | needs-lookup(정책상) / formatted(실질) | CodInf | CodStrDtm | | unsure | `OCM_전과일자` | needs-lookup(정책상) / formatted(실질) | CodInf | CodStrDtm | | wrong | `OCM_DX` | needs-lookup | - | DX | | wrong | `OCM_OPRCODNAM` | needs-lookup | - | OPRCODNAM | | wrong | `OCM_간호정보조사지_과거력` | needs-lookup | - | - | | wrong | `OCM_수술집도의` | needs-lookup | - | - |