환자 여정 데이터 템플릿
환자 여정 데이터 템플릿
- 권장 임상 속성
- 필수 프로세스 주요 단계
- MEDITECH 데이터 추출 안내
환자 여정 속성
| 이름 | 설명 | ||
|---|---|---|---|
| Patient Episode PatientEpisode | 특정 기간의 환자 진료 또는 방문을 식별하는 고유 ID입니다. | ||
| 설명 Patient Episode는 프로세스 분석의 중심 케이스 ID입니다. 한 번의 입원이나 외래 방문과 관련된 모든 임상, 행정, 재무 이벤트를 하나의 환자 여정으로 묶습니다. MEDITECH 시스템에서는 보통 Account Number 또는 Visit ID에 해당합니다. 이 속성은 등록부터 퇴원까지 환자 여정을 재구성하는 데 필수이며, 재원 기간 계산과 임상 경로 분석에도 사용됩니다. 중요한 이유 서로 다른 이벤트를 하나의 프로세스 인스턴스로 연결하는 데 필요한 필수 케이스 키입니다. 확보 방법 MEDITECH Admissions 또는 Registration 모듈의 Account Number 필드가 일반적입니다. 예시 V100938475AC29384755E993847211O229384711 | |||
| 원본 시스템 SourceSystem | 데이터가 생성된 시스템의 식별자입니다. | ||
| 설명 이벤트 데이터를 추출한 MEDITECH 인스턴스 또는 특정 모듈을 식별합니다. 여러 병원을 운영하는 환경에서는 시설이나 시스템 버전별 데이터를 구분하는 데 도움이 됩니다. 단일 시스템에서 데이터를 추출할 때는 이 속성이 고정값이지만, 병원 네트워크 전체를 통합해 하나의 관점으로 데이터를 병합할 때는 중요합니다. 중요한 이유 여러 시스템을 사용하는 환경에서 데이터 계보와 추적 가능성을 보장합니다. 확보 방법 데이터 추출 시 또는 시스템 ID 설정 시 값을 지정합니다. 예시 MEDITECH_ExpanseMEDITECH_6.1Hospital_A_Main | |||
| 이벤트 타임스탬프 EventTimestamp | 활동이 발생한 정확한 날짜와 시각입니다. | ||
| 설명 활동이 발생한 정확한 시점을 기록하는 속성입니다. 이벤트를 시간순으로 정렬하고 프로세스 단계 간 소요 시간을 계산하는 데 사용합니다. 분류부터 평가까지의 시간이나 진단 결과 처리 시간처럼 대기 시간을 정확히 분석하려면 정밀한 타임스탬프가 필요합니다. 중요한 이유 이벤트 순서를 정하고 주기 시간과 처리량을 계산하는 데 필요합니다. 확보 방법 원본 테이블의 거래 날짜/시간 열. 예시 2023-10-15T08:30:00Z2023-10-15T09:15:22Z2023-10-16T14:45:00Z | |||
| 최종 데이터 업데이트 LastDataUpdate | 데이터를 마지막으로 추출하거나 새로 고친 시각입니다. | ||
| 설명 레코드가 마지막으로 처리되거나 process mining 도구에 적재된 시점을 나타냅니다. 데이터 최신성을 감사하고 분석이 시스템의 최신 상태를 반영하는지 확인하는 데 도움이 됩니다. 이 값은 이벤트 타임스탬프와 다릅니다. 임상 이벤트가 발생한 시점이 아니라 기술 데이터 파이프라인의 처리 시점을 나타냅니다. 중요한 이유 데이터 거버넌스를 위해 중요하며, 최신 데이터로 분석이 수행되도록 합니다. 확보 방법 ETL 실행 시점의 시스템 날짜입니다. 예시 2023-11-01T00:00:00Z2023-11-02T12:00:00Z | |||
| 활동명 ActivityName | 수행된 구체적인 임상 또는 행정 조치입니다. | ||
| 설명 환자 여정에서 발생한 이벤트 또는 작업의 이름을 나타내는 속성입니다. '환자 등록', '약물 투여', '퇴원 지시 작성'과 같은 개별 단계를 기록합니다. 프로세스 흐름을 매핑하려면 활동을 정확히 식별해야 합니다. 이 값은 전자의무기록 내 트랜잭션 코드, 지시 상태 또는 기록된 중재에서 가져오는 경우가 많습니다. 중요한 이유 프로세스의 단계를 정의하며 프로세스 맵을 시각화하는 데 필요합니다. 확보 방법 여러 트랜잭션 로그(OE 주문, NUR 중재, ADM 이벤트)에서 파생됩니다. 예시 환자 등록분류 완료약물 투여진단 결과 확인 | |||
| 담당 의료진 AttendingProvider | 활동을 담당하는 주 의료진 또는 진료 제공자입니다. | ||
| 설명 업무를 수행하거나 진료를 감독한 의사, 간호사 또는 기술자의 이름이나 ID를 기록합니다. 이 속성을 사용하면 '치료 계획 수립 속도' 대시보드에서 직원 또는 역할별 속도와 효율성 지표를 확인할 수 있습니다. 리소스 분석을 통해 업무량을 균형 있게 배분하고 임상 직원의 교육 필요성을 파악할 수 있습니다. 중요한 이유 리소스별 성과를 분석하고 업무량을 조정할 수 있습니다. 확보 방법 활동 로그의 Provider 또는 User 필드입니다. 예시 Smith 박사Jones 간호사Adams 기술자 | |||
| 병원 부서 HospitalDepartment | 활동이 발생한 구체적인 부서 또는 진료 단위입니다. | ||
| 설명 '응급실', '영상의학과', '중환자실', '일반 병동' 등 해당 활동을 담당한 부서를 식별합니다. 이 속성은 '부서별 리소스 처리량' 대시보드에 중요합니다. 부서별로 성과 지표를 나누어 살펴보고, 부서 간 이동과 리소스 활용에서 병목이 발생하는 지점을 찾을 수 있습니다. 중요한 이유 조직을 분석하고 특정 부서의 병목을 파악하는 데 중요합니다. 확보 방법 거래 테이블의 위치 또는 부서 필드입니다. 예시 응급실영상의학과중환자실외과 병동 3 | |||
| 의무기록번호 MedicalRecordNumber | 모든 방문에서 환자를 고유하게 식별하는 번호입니다. | ||
| 설명 의무기록번호(MRN)는 의료기관 내에서 환자를 고유하게 식별하며, 에피소드별 ID와는 구분됩니다. 분석가는 이 번호를 사용해 시간의 흐름에 따라 동일 환자에게 발생한 여러 에피소드를 연결할 수 있습니다. 이 속성은 '재입원 및 진료 품질' 대시보드에 필요합니다. 퇴원 후 30일 이내에 환자가 다시 입원했는지 확인할 수 있습니다. 중요한 이유 에피소드 간 분석과 환자 중심 관점을 지원합니다. 확보 방법 환자 마스터 색인 또는 등록 테이블입니다. 예시 MRN-100293MRN-55928388291002 | |||
| 재입원 여부 IsReadmission | 이 에피소드가 이전 퇴원 후 30일 이내에 발생했는지 나타내는 표시입니다. | ||
| 설명 환자의 현재 등록일이 이전 에피소드의 퇴원일로부터 30일 이내이면 true를 반환하는 불리언 속성입니다. '재입원 및 진료 품질' 대시보드에서 활용합니다. 재입원을 식별하면 이전 에피소드를 추적해 퇴원 계획이나 후속 진료에 공백이 있었는지 확인할 수 있습니다. 중요한 이유 환자 결과와 의료비 상환에 영향을 미치는 주요 품질 지표입니다. 확보 방법 동일한 MedicalRecordNumber의 현재 StartTime과 이전 Case EndTime을 비교해 계산합니다. 예시 truefalse | |||
| 주 진단 PrimaryDiagnosis | 환자 에피소드에서 확인된 주요 질환입니다. | ||
| 설명 내원 사유의 ICD-10 코드 또는 설명을 포함합니다. '임상 경로 변형 분석'의 기본 데이터입니다. 임상 관리자는 주 진단별로 사례를 묶어 실제 치료 경로를 해당 질환의 표준 임상 경로와 비교할 수 있습니다. 중요한 이유 임상 경로 분석을 위해 사례를 분류하는 데 필요합니다. 확보 방법 의무기록 또는 요약 입력 모듈입니다. 예시 J18.9 - 폐렴I21.9 - 급성 심근경색S72.0 - 대퇴골 골절 | |||
| 중증도 분류 단계 TriageAcuityLevel | 중증도 분류 시 환자에게 부여한 중증도 등급입니다. | ||
| 설명 환자 상태의 긴급도를 나타내며, 일반적으로 1~5 등급으로 표시합니다(1은 위중). 이 속성은 '응급실 흐름 분석'의 주요 기준입니다. 대기 시간과 환자 중증도의 관계를 분석해 위중한 환자가 우선적으로 진료받고 있는지 확인할 수 있습니다. 중요한 이유 응급실의 환자 우선순위 지정과 안전 규정 준수를 분석하는 데 중요합니다. 확보 방법 응급실 또는 중증도 분류 간호 평가 화면입니다. 예시 1 - 소생술2 - 긴급3 - 응급4 - 덜 긴급 | |||
| 퇴원 후 이동 경로 DischargeDisposition | 퇴원 시 환자가 이동한 곳 또는 환자의 상태입니다. | ||
| 설명 '자택', '전문 요양 시설', '가정 간호', '사망' 등 에피소드 종료 후 환자의 이동 경로를 나타냅니다. '퇴원 계획 최적화' 대시보드의 주요 결과 지표입니다. 이 데이터를 분석하면 급성기 이후 진료 기관을 확보하는 데 걸리는 지연이 재원 기간을 늘리는 원인인지 파악할 수 있습니다. 중요한 이유 재원 기간과 재입원 위험을 분석하는 주요 결과 지표입니다. 확보 방법 퇴원 요약 입력 또는 등록 화면입니다. 예시 자택으로 퇴원단기 종합병원으로 전원사망의료진의 권고에 반해 퇴원 | |||
| 환자 유형 PatientType | 환자 방문 유형입니다(예: 입원, 외래, 응급). | ||
| 설명 병원 방문의 유형을 분류합니다. 일반적인 값으로는 '입원', '외래', '응급', '관찰'이 있습니다. 유형에 따라 표준 진료와 예상 소요 시간이 크게 달라지므로, 프로세스를 필터링하고 비교할 때 이 분류가 중요합니다. '퇴원 계획 최적화' 대시보드에서 이 필드를 사용해 유형별 재원 기간 기대치를 구분할 수 있습니다. 중요한 이유 프로세스 비교를 위한 기본 분류 기준입니다(입원과 외래). 확보 방법 입원 또는 방문 테이블(예: AdmVisits.Status)입니다. 예시 입원응급외래 수술관찰 | |||
| 약품명 MedicationName | 투여한 의약품의 이름입니다. | ||
| 설명 '약물 투여' 이벤트에 해당하는 구체적인 약품을 기록합니다. '약물 투여 규정 준수' 대시보드에 필요한 정보입니다. 간호 관리자는 패혈증 항생제처럼 위험도가 높거나 투여 시점이 중요한 약물이 적절한 치료 시간 내에 투여되었는지 확인할 수 있습니다. 중요한 이유 임상 규정 준수와 안전성 분석에 필요합니다. 확보 방법 약제(PHA) 또는 침상 투약 확인(BMV) 모듈입니다. 예시 아세트아미노펜반코마이신헤파린인슐린 | |||
| 오더 유형 OrderCategory | 임상 오더의 분류입니다(예: 검사실, 영상의학, 협진). | ||
| 설명 '검사실', '영상의학', '식이', '협진' 등 오더를 상위 유형으로 분류합니다. '진단 서비스 처리 시간' 대시보드에 필요한 정보입니다. 영상 검사와 혈액 검사의 처리 시간을 각각 분석할 수 있도록 워크플로를 구분합니다. 두 업무는 병목이 서로 다를 수 있습니다. 중요한 이유 진단 및 치료 워크플로를 구분합니다. 확보 방법 오더 입력(OE) 모듈의 유형 필드입니다. 예시 검사실영상의학과간호약제 | |||
| 입원 경로 AdmitSource | 환자가 온 곳입니다(예: 자택, 전원, 의뢰). | ||
| 설명 '의사 의뢰', '응급실', '다른 병원에서 전원' 등 환자가 입원하게 된 경로를 설명합니다. 환자가 의료 시스템에 유입된 경위를 파악할 수 있습니다. 환자 유입 패턴과 이것이 '응급실 흐름 분석' 및 리소스 계획에 미치는 영향을 파악하는 데 유용합니다. 중요한 이유 환자 유입과 수요가 발생하는 경로를 파악할 수 있습니다. 확보 방법 입원 등록 데이터입니다. 예시 응급실의원 의뢰요양시설에서 전원 | |||
| 중증도 분류 대기 시간 TriageWaitTime | 등록부터 중증도 분류 완료까지 걸린 시간입니다. | ||
| 설명 '환자 등록' 이벤트와 '중증도 분류 완료' 이벤트 사이의 시간을 계산합니다. 이 값은 '평균 중증도 분류 처리 시간' KPI에 반영됩니다. 이 시간을 모니터링하면 응급실 관리자가 혼잡 시간대의 인력을 조정해 환자 안전 기준을 충족할 수 있습니다. 중요한 이유 응급실의 주요 운영 지표입니다. 확보 방법 특정 활동의 타임스탬프 간 차이를 계산합니다. 예시 15분1시간 20분 | |||
| 진료 경로 준수 위반 여부 IsAdherenceViolation | 사례가 표준 임상 경로에서 벗어났는지 나타내는 표시입니다. | ||
| 설명 활동 순서가 환자의 주 진단에 대해 정의된 참조 모델과 일치하지 않으면 true로 설정되는 불리언 표시입니다. '임상 경로 변형 분석'에 활용합니다. '규정 미준수' 사례를 빠르게 필터링해 표준 진료가 따르지 않은 이유를 조사할 수 있습니다. 중요한 이유 프로세스의 이탈과 편차를 빠르게 파악합니다. 확보 방법 적합성 검사 알고리즘으로 계산합니다. 예시 truefalse | |||
| 청구 금액 ChargeAmount | 특정 활동 또는 서비스와 관련된 금액입니다. | ||
| 설명 검사나 병실료 등 특정 이벤트에 부과된 비용 또는 청구 금액입니다. 주로 재무 정보이지만 리소스 사용량과도 관련이 있습니다. 합산하면 프로세스 변형이 재무에 미치는 영향을 파악할 수 있습니다. 다만 요청된 관점의 주된 초점은 임상 흐름입니다. 중요한 이유 프로세스 분석에 재무 관점을 더합니다. 확보 방법 청구 또는 BAR(청구/미수금) 모듈입니다. 예시 150.001200.5045.00 | |||
환자 여정 활동
| 활동 | 설명 | ||
|---|---|---|---|
| 검사 및 처치 지시 | 의료진이 서비스, 약물 또는 진단 검사를 요청한 기록입니다. 이후 임상 활동을 시작하는 이벤트입니다. | ||
| 중요한 이유 '진단 서비스 처리 시간' KPI의 기준 시점을 설정합니다. 실제 시행 시점과 비교하면 서비스 제공 지연을 파악할 수 있습니다. 확보 방법 MEDITECH OE(Order Entry) 모듈. 'OeOrders' 테이블의 Order Date/Time 필드에서 가져옵니다. 기록 Order Enter 트랜잭션이 실행될 때 기록됩니다. 이벤트 유형 explicit | |||
| 분류 완료 | 응급실에서 초기 간호 평가가 완료된 시점을 나타냅니다. 이 단계에서 환자의 중증도와 긴급도를 판정합니다. | ||
| 중요한 이유 응급실 흐름 분석 대시보드에서 처리량과 대기 시간을 측정하는 데 필요합니다. 확보 방법 MEDITECH EDM(Emergency Department Management) 모듈. EDM 추적기의 상태 변경이나 분류 평가 문서의 타임스탬프에서 확인합니다. 기록 상태 필드가 Triaged로 변경될 때 기록됩니다. 이벤트 유형 explicit | |||
| 약물 투여 | 간호 인력이 환자에게 약물을 실제로 투여한 기록입니다. 보통 병상에서 바코드를 스캔해 기록합니다. | ||
| 중요한 이유 '약물 투여 규정 준수' 분석에 활용됩니다. 간호 부서의 안전 위험과 워크플로 중단을 파악할 수 있습니다. 확보 방법 MEDITECH PHA(Pharmacy) 또는 eMAR(Electronic Medication Administration Record). 투약 이력의 'AdminDateTime' 필드입니다. 기록 Med Admin 트랜잭션이 실행될 때 기록됩니다. 이벤트 유형 explicit | |||
| 진단 결과 확인 | 검사실 또는 영상의학과 검사가 완료되고 기사나 영상의학과 전문의가 결과를 승인한 시점을 나타냅니다. 진단 검사 지시의 처리 과정이 완료된 것입니다. | ||
| 중요한 이유 '진단 서비스 처리 시간'의 종료 시점입니다. 지원 부서의 병목을 분석하는 데 필요합니다. 확보 방법 MEDITECH LAB 또는 ITS(Imaging and Therapeutic Services) 모듈. 결과 상태가 Verified 또는 Signed로 변경될 때 기록됩니다. 기록 상태 필드가 Verified로 변경될 때 기록됩니다. 이벤트 유형 explicit | |||
| 진단명 기록 | 의료진이 환자 기록에 진단 코드(ICD-10)를 입력하는 시점입니다. 이 기록을 바탕으로 특정 임상 경로가 시작될 수 있습니다. | ||
| 중요한 이유 '임상 경로 유형 분석'에서 케이스를 분류하는 데 사용됩니다. 비교를 위해 환자를 그룹화하는 데 필요합니다. 확보 방법 MEDITECH ABS(Abstracting) 또는 Medical Records. 진단 코드가 계정에 연결될 때 기록됩니다. 기록 Diagnosis Enter 트랜잭션이 실행될 때 기록됩니다. 이벤트 유형 explicit | |||
| 퇴원 지시 작성 | 의사가 환자 퇴원을 승인하는 지시에 서명한 시점입니다. '퇴원 계획' 단계가 시작됩니다. | ||
| 중요한 이유 '퇴원 계획 소요 시간'의 기준 시점을 설정합니다. 이 시점부터 실제 퇴원까지의 간격은 운영 비효율을 나타냅니다. 확보 방법 MEDITECH OE(Order Entry). Category = Discharge 조건으로 지시를 필터링합니다. 기록 Order Enter 트랜잭션이 실행될 때 기록됩니다. 이벤트 유형 explicit | |||
| 환자 등록 | 시스템에서 환자 진료 건 또는 방문 기록을 행정적으로 생성한 시점을 나타냅니다. MEDITECH ADM(Admissions) 모듈에 처음 등록된 시점을 기록합니다. | ||
| 중요한 이유 환자 여정의 시작점과 소요 시간 계산의 기준입니다. 총 재원 기간을 계산하는 데 필요합니다. 확보 방법 MEDITECH ADM 모듈. 'Admissions' 테이블의 'AdmitDateTime' 또는 트랜잭션 로그 생성 타임스탬프에서 가져옵니다. 기록 New Visit 트랜잭션이 실행될 때 기록됩니다. 이벤트 유형 explicit | |||
| 환자 전원 | 환자가 한 위치(병동, 병실, 병상)에서 다른 위치로 실제 이동한 시점을 나타냅니다. 병원 내 환자 흐름을 추적합니다. | ||
| 중요한 이유 '병원 내 전원 병목' 분석에 필요합니다. 전원 시간이 길면 리소스 경합이나 이송 지연을 나타낼 수 있습니다. 확보 방법 MEDITECH ADM(Admissions). 'Location History' 또는 'RoomBed' 트랜잭션 로그에서 가져옵니다. 기록 Transfer Patient 트랜잭션이 실행될 때 기록됩니다. 이벤트 유형 explicit | |||
| 환자 퇴원 | 방문 기록을 행정적으로 종료한 시점입니다. 환자가 병원을 떠나 병상이 비워집니다. | ||
| 중요한 이유 프로세스의 공식 종료 시점입니다. 최종 재원 기간을 계산하고 30일 재입원 기간을 설정하는 데 사용됩니다. 확보 방법 MEDITECH ADM(Admissions). 방문 기록의 'DischargeDateTime' 필드입니다. 기록 Discharge Patient 트랜잭션이 실행될 때 기록됩니다. 이벤트 유형 explicit | |||
| 검체 채취 | 검사실 분석을 위해 생체 검체를 실제로 채취한 시점을 나타냅니다. 검사 지시와 처리 사이의 단계를 기록합니다. | ||
| 중요한 이유 진단 과정에서 지연이 발생하는 세부 단계입니다. 간호 단계의 지연과 검사실 지연을 구분하는 데 도움이 됩니다. 확보 방법 MEDITECH LAB 모듈. 채혈 담당자가 바코드를 스캔하거나 검체 상태를 Collected로 변경할 때 기록되는 경우가 많습니다. 기록 Collect Specimen 트랜잭션이 실행될 때 기록됩니다. 이벤트 유형 explicit | |||
| 전문의 진료 완료 | 전문의 평가가 완료된 시점입니다. 보통 특정 문서 유형(예: 'Cardiology Consult Note')이 등록된 시점으로 추정합니다. | ||
| 중요한 이유 전문의 응답 시간을 측정하는 종료 시점입니다. 적시에 진료가 진행되도록 관리하는 데 필요합니다. 확보 방법 MEDITECH PCM(Provider Order Management) 또는 EMR. 특정 제목이 포함된 문서의 생성 타임스탬프로 추정합니다. 기록 변경 전후의 상태 필드를 비교합니다. 이벤트 유형 inferred | |||
| 전문의 진료 요청 | 전문의의 소견을 요청하는 지시입니다. '전문의 진료 응답 시간' 대시보드의 측정이 시작되는 시점입니다. | ||
| 중요한 이유 다학제 진료 조정 과정의 병목을 파악합니다. 대기 시간이 길면 재원 기간이 늘어납니다. 확보 방법 MEDITECH OE(Order Entry). 'OeOrders'에서 Category = Consult 조건으로 필터링해 확인합니다. 기록 Order Enter 트랜잭션이 실행될 때 기록됩니다. 이벤트 유형 explicit | |||
| 진료 계획 시작 | 특정 간호 계획 또는 다학제 진료 계획을 생성하거나 지정한 시점을 나타냅니다. '치료 계획 수립'에 해당합니다. | ||
| 중요한 이유 '치료 계획 수립 속도'를 측정합니다. 이 단계의 지연은 임상 의사 결정에 공백이 있음을 나타낼 수 있습니다. 확보 방법 MEDITECH PCS(Patient Care System) 또는 Care Manager. 표준 진료 계획이 환자에게 적용된 시점의 타임스탬프입니다. 기록 Care Plan Add 트랜잭션이 실행될 때 기록됩니다. 이벤트 유형 explicit | |||
| 후속 진료 예약 | 환자의 향후 진료를 예약한 시점입니다. 퇴원 후에도 진료가 이어지도록 지원합니다. | ||
| 중요한 이유 '후속 진료 예약' 분석에 활용됩니다. 예약 여부는 재입원율 감소와 관련이 있습니다. 확보 방법 MEDITECH SCH(Scheduling). 퇴원일 전후에 생성된 새 Appointment 기록을 환자 ID와 연결해 추정합니다. 기록 Appointment Created Date 필드와 Discharge Date를 비교해 산출합니다. 이벤트 유형 inferred | |||
데이터 추출 가이드
단계
Data Repository 서버 확인: MEDITECH Data Repository (DR)를 호스팅하는 Microsoft SQL Server 인스턴스를 찾습니다. 트랜잭션용 M-AT 또는 파일 기반 데이터베이스와는 별개입니다. 읽기 전용 자격 증명(일반적으로 서비스 계정)이 필요합니다.
스키마 버전 확인: MEDITECH DR 구조는 Magic, Client/Server (6.x), Expanse 간에 조금씩 다릅니다. 아래 쿼리는 일반적인 이름 규칙(예: AdmVisits, OeOrders)을 사용합니다. 로컬 SQL Server Management Studio (SSMS)의 Object Explorer에서 테이블 이름을 확인합니다.
범위 정의: 환자 방문 정보를 담은 기본 테이블을 찾습니다. DR 구성에 따라 보통 AdmVisits, RegAcct 또는 AbstractData라는 이름을 사용합니다. 아래 쿼리는 AdmVisits를 환자 진료 에피소드의 기준 테이블로 사용합니다.
SQL 환경 준비: SSMS를 열고 DR에 연결합니다. 새 쿼리 창을 열고 올바른 데이터베이스(대개 livedb 또는 유사한 이름)를 선택했는지 확인합니다.
매개변수 설정: 제공된 SQL 스크립트에서 날짜 범위(예: '2023-01-01')와 시설 식별자를 바꿉니다. DR에서 여러 시설을 관리하는 경우 해당 식별자를 지정합니다.
데이터 추출 실행: 전체 T-SQL 스크립트를 실행합니다. 스크립트는 Common Table Expressions (CTE)를 사용해 분석 대상 집단을 먼저 정의한 다음 여러 데이터 소스를 UNION ALL로 결합해 표준 이벤트 로그를 만듭니다.
NULL 속성 처리: 쿼리에는 타임스탬프의 NULL 값을 적절히 처리하는 로직(COALESCE 사용 등)이 포함되어 있으며, 주요 조인 키(SourceID/VisitID)가 있는지도 확인합니다.
분류 및 응급 데이터 확인: MEDITECH는 ED 데이터를 특정 모듈에 저장합니다. 응급실 워크플로를 분석하는 경우 EdVisits 또는 NurInterventions 테이블에 데이터가 있는지 확인합니다.
주문 범주 검증: 쿼리는 범주 urn 또는 약어를 기준으로 일반 주문, 협진, 퇴원 주문을 구분합니다. 시설에서 사용하는 약어 사전에 맞게 WHERE 절을 조정해야 할 수 있습니다.
데이터 내보내기: 쿼리 결과가 표시되면 SSMS의 결과 그리드를 마우스 오른쪽 버튼으로 클릭하고 Save Results As CSV를 선택합니다. 헤더가 포함되었는지 확인합니다.
최종 형식 확인: CSV를 열어 날짜가 ISO 8601 (YYYY-MM-DD HH:MM:SS) 형식인지 확인한 후 ProcessMind로 가져옵니다.
구성
- 데이터베이스 접근 권한: MEDITECH DR SQL 데이터베이스에 db_datareader 권한이 필요합니다.
- 날짜 범위: 완료된 프로세스 주기를 분석할 수 있도록 퇴원 환자의 최근 3~6개월 데이터를 추출하는 것이 좋습니다.
- 시설 필터링: DR에 여러 시설의 데이터가 있는 경우 BaseVisits CTE에서 FacilityID 또는 SourceSystemID를 기준으로 필터링합니다.
- 에피소드 정의: 스크립트는 고유한 VisitID(흔히 계정 번호 또는 에피소드 번호)를 Case ID로 사용합니다.
- 성능: 쿼리는 CTE 기준 테이블을 사용해 검색 범위를 제한합니다. 성능을 최적화하려면 AdmVisits 테이블의 AdmitDate 및 DischargeDate에 인덱스가 있는지 확인합니다.
- 데이터 지연: Data Repository의 데이터 전송은 사이트 구성에 따라 15분에서 24시간까지 지연될 수 있습니다. LastDataUpdate 타임스탬프를 확인합니다.
샘플 쿼리 sql
/* MEDITECH Data Repository T-SQL Extraction for ProcessMind */
/* Process: Patient Journey */
/* Dialect: T-SQL */
WITH BaseVisits AS (
/* Define the population: Discharged patients within a date range */
SELECT
V.VisitID,
V.PatientID,
V.AccountNumber AS MedicalRecordNumber,
V.AdmitDateTime,
V.DischargeDateTime,
V.FacilityID,
V.PatientType,
V.AttendingProviderID,
V.DischargeDisposition,
NULLIF(DATEDIFF(MINUTE, V.AdmitDateTime, V.DischargeDateTime), 0) / 1440.0 AS LengthOfStay,
/* Flag readmissions logic would go here, simplified as 0 for base script */
0 AS IsReadmission
FROM
[YourDatabaseName].[dbo].[AdmVisits] V
WHERE
V.DischargeDateTime >= '2023-01-01'
AND V.DischargeDateTime < '2023-04-01'
AND V.Status = 'DIS' /* Discharged Status */
),
PatientDiagnoses AS (
/* Helper CTE for Primary Diagnosis to avoid duplicates in joins */
SELECT
D.VisitID,
MAX(D.ICDCode) AS PrimaryDiagnosis
FROM
[YourDatabaseName].[dbo].[AbsDiagnoses] D
WHERE
D.Rank = 1 /* Primary Diagnosis Rank */
GROUP BY
D.VisitID
),
TriageData AS (
/* Helper CTE for Triage Acuity */
SELECT
T.VisitID,
MAX(T.AcuityLevel) AS TriageAcuityLevel
FROM
[YourDatabaseName].[dbo].[EdTriage] T
GROUP BY
T.VisitID
)
/* 1. Patient Registered */
SELECT
V.VisitID AS PatientEpisode,
'Patient Registered' AS ActivityName,
V.AdmitDateTime AS EventTimestamp,
'MEDITECH_ADM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
V.FacilityID AS HospitalDepartment,
V.AttendingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
BaseVisits V
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
V.AdmitDateTime IS NOT NULL
UNION ALL
/* 2. Triage Completed */
SELECT
V.VisitID AS PatientEpisode,
'Triage Completed' AS ActivityName,
ED.TriageDateTime AS EventTimestamp,
'MEDITECH_ED' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
'Emergency Department' AS HospitalDepartment,
ED.TriageNurseID AS AttendingProvider,
V.PatientType,
ED.AcuityLevel AS TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[EdTriage] ED
INNER JOIN BaseVisits V ON ED.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
WHERE
ED.TriageDateTime IS NOT NULL
UNION ALL
/* 3. Order Placed (General) */
SELECT
V.VisitID AS PatientEpisode,
'Order Placed' AS ActivityName,
O.OrderDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category NOT IN ('CONSULT', 'DISCHARGE') /* Exclude specific types handled elsewhere */
UNION ALL
/* 4. Specimen Collected */
SELECT
V.VisitID AS PatientEpisode,
'Specimen Collected' AS ActivityName,
L.CollectionDateTime AS EventTimestamp,
'MEDITECH_LAB' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
'Laboratory' AS HospitalDepartment,
L.CollectedBy AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[LabSpecimens] L
INNER JOIN BaseVisits V ON L.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
L.CollectionDateTime IS NOT NULL
UNION ALL
/* 5. Diagnostic Result Verified */
SELECT
V.VisitID AS PatientEpisode,
'Diagnostic Result Verified' AS ActivityName,
R.VerifiedDateTime AS EventTimestamp,
'MEDITECH_LAB' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
'Laboratory' AS HospitalDepartment,
R.VerifiedBy AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[LabResults] R
INNER JOIN BaseVisits V ON R.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
R.VerifiedDateTime IS NOT NULL
UNION ALL
/* 6. Diagnosis Documented */
SELECT
V.VisitID AS PatientEpisode,
'Diagnosis Documented' AS ActivityName,
DX.EntryDateTime AS EventTimestamp,
'MEDITECH_ABS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
V.FacilityID AS HospitalDepartment,
DX.ProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[AbsDiagnoses] DX
INNER JOIN BaseVisits V ON DX.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
DX.EntryDateTime IS NOT NULL
UNION ALL
/* 7. Care Plan Initiated */
SELECT
V.VisitID AS PatientEpisode,
'Care Plan Initiated' AS ActivityName,
N.CreateDateTime AS EventTimestamp,
'MEDITECH_NUR' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
N.NurseUnit AS HospitalDepartment,
N.NurseID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[NurPlan] N
INNER JOIN BaseVisits V ON N.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
N.CreateDateTime IS NOT NULL
UNION ALL
/* 8. Medication Administered */
SELECT
V.VisitID AS PatientEpisode,
'Medication Administered' AS ActivityName,
M.AdminDateTime AS EventTimestamp,
'MEDITECH_PHA' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
M.AdminLocation AS HospitalDepartment,
M.AdministeredBy AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[PhaMedAdmin] M
INNER JOIN BaseVisits V ON M.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
M.Status = 'ADMINISTERED'
UNION ALL
/* 9. Consult Request Sent */
SELECT
V.VisitID AS PatientEpisode,
'Consult Request Sent' AS ActivityName,
O.OrderDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category = 'CONSULT'
UNION ALL
/* 10. Consultation Completed */
SELECT
V.VisitID AS PatientEpisode,
'Consultation Completed' AS ActivityName,
O.CompletedDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category = 'CONSULT'
AND O.Status = 'COMPLETED'
AND O.CompletedDateTime IS NOT NULL
UNION ALL
/* 11. Patient Transferred */
SELECT
V.VisitID AS PatientEpisode,
'Patient Transferred' AS ActivityName,
TX.TransferDateTime AS EventTimestamp,
'MEDITECH_ADM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
TX.ToLocation AS HospitalDepartment,
NULL AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[AdmRoomTx] TX
INNER JOIN BaseVisits V ON TX.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
TX.TransferDateTime IS NOT NULL
UNION ALL
/* 12. Discharge Order Written */
SELECT
V.VisitID AS PatientEpisode,
'Discharge Order Written' AS ActivityName,
O.OrderDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category = 'DISCHARGE'
OR O.Mnemonic LIKE '%DISCHARGE%'
UNION ALL
/* 13. Patient Discharged */
SELECT
V.VisitID AS PatientEpisode,
'Patient Discharged' AS ActivityName,
V.DischargeDateTime AS EventTimestamp,
'MEDITECH_ADM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
V.FacilityID AS HospitalDepartment,
V.AttendingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
BaseVisits V
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
V.DischargeDateTime IS NOT NULL
UNION ALL
/* 14. Follow-up Booked */
SELECT
V.VisitID AS PatientEpisode,
'Follow-up Booked' AS ActivityName,
S.BookDateTime AS EventTimestamp,
'MEDITECH_SCH' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
S.ApptDepartment AS HospitalDepartment,
S.ProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[SchAppt] S
INNER JOIN BaseVisits V ON S.PatientID = V.PatientID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
S.BookDateTime > V.AdmitDateTime
AND S.BookDateTime <= DATEADD(day, 30, V.DischargeDateTime) /* Logic to link appt to episode */
AND S.Status NOT IN ('CANCELLED', 'NOSHOW'); 시작할 준비가 되셨나요?
이 템플릿을 MEDITECH 데이터에 적용해 임상 운영 개선을 시작하세요. 병원 효율성을 높일 수 있도록 데이터 추출 방식을 다듬는 과정에서 저희 팀이 지원해 드립니다.
환자 여정을 개선하고 지연을 줄이세요
처리 시간을 30% 단축하고 병원 효율성을 높이세요
신용카드가 필요하지 않습니다. 몇 분이면 시작할 수 있습니다.