Il Suo Template Dati Percorso del Paziente
Il Suo Template Dati Percorso del Paziente
- `Attributi` raccomandati per il contesto clinico
- Tappe fondamentali del processo per il tracciamento
- Linee guida specifiche per l'estrazione per `Epic EHR`
Attributi del Percorso del Paziente
| Nome | Descrizione | ||
|---|---|---|---|
| Episodio del Paziente PatientEpisodeId | L'`identificatore` unico per lo specifico `episodio del paziente` o `episodio di cura`. | ||
| Descrizione L' L'analisi di questo Perché è importante Rappresenta la chiave fondamentale per collegare eventi distinti in un singolo caso di processo. Dove trovare Tabella Epic Clarity: PAT_ENC, Colonna: PAT_ENC_CSN_ID Esempi 200459112200459113200459114200459115 | |||
| Nome attività ActivityName | L'azione clinica o amministrativa specifica eseguita. | ||
| Descrizione Questo Nell'analisi, questo campo forma i nodi della Perché è importante Definisce i passaggi del processo e consente la visualizzazione del Dove trovare Derivato dalle tabelle CLARITY_ADT, ORDER_PROC e ORDER_MED. Esempi Triage CompletatoTest Diagnostico OrdinatoPaziente DimessoFarmaco Somministrato | |||
| Timestamp Evento EventTimestamp | La data e l'ora esatte in cui si è verificata l'attività. | ||
| Descrizione Questo La precisione in questo campo è fondamentale per identificare i Perché è importante Consente il calcolo dei tempi di ciclo, dei tempi di consegna e dell'ordinamento dei processi. Dove trovare Varie colonne Esempi 2023-10-15T08:30:00Z2023-10-15T09:15:22Z2023-10-16T14:20:00Z | |||
| Sistema di Origine SourceSystem | Il sistema di registrazione per i `dati`, solitamente `Epic EHR`. | ||
| Descrizione Questo Nell'analisi, garantisce la Perché è importante Fornisce tracciabilità e contesto per l'origine dei Dove trovare Hardcoded o derivato dalla configurazione della stringa di connessione. Esempi Epic EHREpic ClarityEpic Caboodle | |||
| Ultimo `Data Update` LastDataUpdate | Il `timestamp` di quando i `dati` sono stati estratti o aggiornati l'ultima volta. | ||
| Descrizione Questo Gli Perché è importante Aiuta a valutare l'aggiornamento e l'affidabilità dei dati di Process Mining. Dove trovare
Esempi 2023-10-27T23:59:59Z2023-10-28T06:00:00Z | |||
| Codice Diagnosi Principale PrimaryDiagnosisCode | Il codice `ICD-10` o interno che rappresenta la diagnosi principale. | ||
| Descrizione Questo È utilizzato per raggruppare i casi per condizione clinica per la Perché è importante Raggruppa i Dove trovare Tabella Epic Clarity: PAT_ENC_DX, Colonna: DX_ID Esempi J18.9I21.9E11.9 | |||
| Disposizione Dimissione DischargeDisposition | La destinazione del paziente al momento della dimissione (Domicilio, `SNF`, Deceduto). | ||
| Descrizione Questo Questo è cruciale per la Perché è importante Contestualizza l'esito del processo di cura. Dove trovare Tabella Epic Clarity: PAT_ENC, Colonna: DISCH_DISP_C Esempi CasaStruttura di Cura SpecializzataAssistenza Domiciliare | |||
| Flag di `Ricovero` ReadmissionFlag | Indica se il paziente è tornato inaspettatamente entro 30 giorni. | ||
| Descrizione Questo Nell'analisi, questo funge da Perché è importante Identifica i processi di dimissione falliti e i problemi di qualità dell'assistenza. Dove trovare Calcolato tramite SQL cercando in anticipo gli incontri futuri per lo stesso MRN. Esempi truefalse | |||
| ID `Provider` ProviderId | L'identificatore dell'utente o del clinico che ha eseguito l'attività. | ||
| Descrizione Questo È mappato all' Perché è importante Permette l'analisi della variazione nelle prestazioni e nel carico di lavoro del personale. Dove trovare Tabella Epic Clarity: CLARITY_EMP, Colonna: USER_ID Esempi EMP10023DOC5592SYSTEM | |||
| Livello di Acuità del `Triage` TriageAcuityLevel | Il `punteggio di gravità` assegnato al paziente durante il `triage`. | ||
| Descrizione Questo Consente la segmentazione nella Perché è importante Segmenta il processo in base all'urgenza e al consumo previsto di risorse. Dove trovare Consultare la documentazione Epic EHR per il campo Acuity nei log del PS. Esempi 1 - Rianimazione2 - Emergenza3 - Urgente | |||
| MRN del Paziente PatientMrn | Il `Medical Record Number` che identifica il paziente. | ||
| Descrizione L' Questo Perché è importante È essenziale per identificare le visite ripetute e analizzare la storia del paziente. Dove trovare Tabella Epic Clarity: PATIENT, Colonna: PAT_ID o PAT_MRN_ID Esempi MRN-882910MRN-112003MRN-554211 | |||
| Nome Reparto DepartmentName | L'unità ospedaliera o il reparto dove si è svolta l'attività. | ||
| Descrizione Questo I Perché è importante Consente il filtraggio organizzativo e l'analisi dei passaggi di consegne. Dove trovare Tabella Epic Clarity: CLARITY_DEP, Colonna: DEPARTMENT_NAME Esempi Pronto SoccorsoRadiologiaICUPediatria | |||
| Ora Fine Evento EventEndTime | Il `timestamp` di quando l'attività è stata completata. | ||
| Descrizione Mentre molti Consente il calcolo del Perché è importante Consente il calcolo della durata delle attività e dell'utilizzo delle risorse. Dove trovare Consultare la documentazione Epic EHR per specifiche colonne di ora di fine in ORDER_PROC. Esempi 2023-10-15T09:45:00Z2023-10-16T15:00:00Z | |||
| Tipo di Incontro EncounterType | La classificazione della visita del paziente (ad es. `Ricovero`, `Emergenza`). | ||
| Descrizione Questo Mappato a ' Perché è importante Fornisce il contesto di alto livello per l'istanza del processo. Dove trovare Tabella Epic Clarity: PAT_ENC, Colonna: ENC_TYPE_C Esempi EmergenzaAmbulatorio OspedalieroRicoverato | |||
| Costo Ordine Diagnostico DiagnosticOrderCost | Il costo interno associato a un test diagnostico o a una procedura. | ||
| Descrizione Questo Sebbene non sia una metrica clinica primaria, aiuta l'amministrazione a comprendere il peso finanziario delle diverse Perché è importante Aggiunge una dimensione finanziaria all'analisi dell'efficienza del processo. Dove trovare Tabelle di fatturazione o contabilità dei costi collegate alla procedura. Esempi 150.001200.0045.00 | |||
| Durata Attesa Trasferimento TransferWaitDuration | Tempo trascorso tra un ordine di trasferimento e il trasferimento effettivo. | ||
| Descrizione Questa Valori elevati qui indicano ' Perché è importante Evidenzia i Dove trovare Differenza di Esempi 2h 30m45m12h | |||
| È Programmazione Automatica IsAutomatedScheduling | Flag che indica se la programmazione è stata eseguita senza intervento del personale. | ||
| Descrizione Questo Supporta direttamente il Perché è importante Misura il successo dell'automazione dei processi. Dove trovare Derivato da SchedulingMethod. Esempi truefalse | |||
| Metodo di Pianificazione SchedulingMethod | Indica come è stato prenotato l'appuntamento di follow-up. | ||
| Descrizione Questo Se il valore indica un Perché è importante Traccia l'adozione di strumenti automatizzati o Dove trovare Consultare la documentazione Epic EHR per la fonte di creazione dell'appuntamento. Esempi MyChartCadenceTelefonoDi Persona | |||
| Nome Regione RegionName | La regione geografica o il `campus` ospedaliero. | ||
| Descrizione Per i sistemi sanitari con più sedi, questo La mappatura a 'Regione' abilita il benchmarking multi-sito per vedere se un ospedale gestisce il Throughput del Triage meglio di un altro. Perché è importante Permette il benchmarking tra diverse strutture di una rete sanitaria. Dove trovare Derivato dai Esempi Campus NordCentro CittàAla Ovest | |||
| Ritardo Somministrazione Farmaci MedicationAdminDelay | Differenza di tempo tra la somministrazione programmata e quella effettiva del farmaco. | ||
| Descrizione Questo Valori positivi indicano somministrazioni in ritardo. Questa Perché è importante È una misura diretta dell'aderenza al Dove trovare Calcolato dai Esempi 15m-5m1h 20m | |||
| Specialità del Medico Prescrittore OrderingProviderSpecialty | La specialità medica del medico che richiede una consulenza o un test. | ||
| Descrizione Questo Aiuta ad analizzare se determinate specialità affrontano tempi di attesa più lunghi per i servizi interni rispetto ad altre, rivelando potenziali Perché è importante Segmenta la domanda di servizi diagnostici e di consultazione. Dove trovare Consultare la documentazione Epic EHR per i Esempi CardiologiaMedicina InternaOrtopedia | |||
| Stato di Aderenza al Protocollo ProtocolAdherenceStatus | Stato che indica se il caso ha seguito il `percorso clinico standard`. | ||
| Descrizione Questo I valori potrebbero includere ' Perché è importante Identifica rapidamente le deviazioni dagli standard di cura basati sull'evidenza. Dove trovare Calcolato all'interno dello strumento di Process Mining o pre-elaborato in SQL. Esempi ConformeDevianteIncompleto | |||
Attività del Percorso del Paziente
| Activity | Descrizione | ||
|---|---|---|---|
| Diagnosi Confermata | L'inserimento di una diagnosi confermata nell'elenco dei problemi del paziente o nel campo diagnosi dell'episodio. Rappresenta la conclusione della fase investigativa. | ||
| Perché è importante Richiesto per il Dove trovare Tabella PAT_ENC_DX o aggiornamento PROBLEM_LIST collegato all'episodio. Acquisisci Registrato quando il clinico aggiunge una voce all'attività Diagnosi dell'Incontro Tipo di evento explicit | |||
| Paziente Dimesso | La chiusura ufficiale dell'`episodio di ricovero`. Registrata quando il paziente viene virtualmente dimesso dal censimento. | ||
| Perché è importante La fine formale dell'episodio per i calcoli della 'Durata della Degenza'. Essenziale per la ' Dove trovare Flusso ADT ( Acquisisci Registrato quando il personale amministrativo completa il Tipo di evento explicit | |||
| Paziente Registrato | La creazione iniziale della registrazione dell'episodio del paziente nel sistema, che segna l'inizio dell'`episodio di cura`. Questo viene esplicitamente registrato quando un paziente arriva al `desk di registrazione` o al pronto soccorso e viene ammesso in `Epic`. | ||
| Perché è importante Stabilisce il punto di ancoraggio per l'intero percorso paziente e consente il calcolo della durata totale della degenza. Essenziale per la Dove trovare Flusso ADT ( Acquisisci Registrato quando la transazione 'Check In' o 'Ricovero' viene eseguita Tipo di evento explicit | |||
| Triage Completato | Il completamento della valutazione infermieristica iniziale o della valutazione di `triage`. Questo viene tipicamente registrato quando il `flowsheet del triage` viene archiviato o lo stato del `triage` cambia in 'Completato'. | ||
| Perché è importante Critico per la Dove trovare PAT_ENC_HSP.TRIAGE_END_TIME o Acquisisci Registrato quando la documentazione del triage è firmata o il campo di stato si aggiorna Tipo di evento explicit | |||
| Appuntamento di Follow-up Programmato | La prenotazione di una futura visita ambulatoriale per il paziente. Registrata nel `modulo di pianificazione Cadence` collegato alla cartella clinica del paziente. | ||
| Perché è importante Supporta il 'Tasso di Automazione della Pianificazione dei Dove trovare PAT_ENC_APPT collegato all'ID del paziente, creato in prossimità dell'orario di dimissione. Acquisisci Registrato quando lo slot dell'appuntamento è confermato in Cadence Tipo di evento explicit | |||
| Consultazione Completata | Il completamento della valutazione specialistica, tipicamente contrassegnato dalla firma di una `Nota di Consulenza` o dalla chiusura dell'ordine di consulenza. | ||
| Perché è importante Punto finale per il 'Tempo di Consegna della Consultazione Specialistica'. Indica che è stata fornita la consulenza di esperti e il piano di cura può procedere. Dove trovare HNO_NOTE_TEXT (Nota archiviata con tipo Consulto) o modifica dello stato ORDER_PROC a Completato. Acquisisci Inferito dall'ora di creazione della Nota di Consulto o dall'aggiornamento dello stato dell'Ordine Tipo di evento inferred | |||
| Consultazione Richiesta | Un ordine per uno specialista per valutare il paziente. Registrato come tipo di ordine di procedura specifico 'Consulto' all'interno di Epic. | ||
| Perché è importante Punto di partenza per il Dove trovare ORDER_PROC dove ORDER_CLASS = 'Consult' o ordini di riferimento specifici. Acquisisci Registrato quando l'ordine di consulto è firmato Tipo di evento explicit | |||
| Farmaco Somministrato | L'atto di un infermiere o `provider` che somministra farmaci al paziente. Registrato nel `Medication Administration Record` (MAR). | ||
| Perché è importante
Dove trovare Tabella MAR_ADMIN_INFO, specificamente Acquisisci Registrato quando l'infermiere scansiona il braccialetto del paziente e il farmaco (BCMA) Tipo di evento explicit | |||
| Ordine di Dimissione Firmato | L'autorizzazione formale del medico al paziente per lasciare l'ospedale. Si tratta di un'inserzione d'ordine specifica in `Epic`. | ||
| Perché è importante Una pietra miliare critica nella 'Pianificazione ed Esecuzione delle Dimissioni'. Il divario tra questa e la partenza effettiva rappresenta un ritardo amministrativo. Dove trovare ORDER_PROC dove il tipo è 'Dimissione Paziente'. Acquisisci Registrato quando il medico firma l'ordine di dimissione Tipo di evento explicit | |||
| Paziente Trasferito | Il movimento fisico del paziente verso un nuovo reparto o corsia. Registrato tramite `eventi di trasferimento ADT`. | ||
| Perché è importante Punto finale per 'Tempo Medio di Trasferimento Inter-Reparto'. Supporta l''Analisi dei Trasferimenti Interni di Reparto' per trovare i Dove trovare Flusso ADT ( Acquisisci Registrato quando l'impiegato di unità aggiorna la posizione del paziente nel Censimento Tipo di evento explicit | |||
| Pianificazione Dimissione Avviata | L'inizio delle attività per preparare la dimissione del paziente. Registrato tramite la documentazione del `Case Management` o specifici tipi di ordine di 'Dimissione'. | ||
| Perché è importante Chiave per la Dove trovare Creazione di HSP_DISCH_PLAN o prima nota del Acquisisci Inferito dalla prima interazione con il Navigatore di Dimissione o dalla nota di Tipo di evento inferred | |||
| Piano di Cura Avviato | L'assegnazione di un `percorso clinico` o protocollo specifico al paziente. Questo viene registrato quando un `Order Set` standard o un `Piano di Cura` viene applicato al contesto dell'episodio. | ||
| Perché è importante Supporta la 'Visione della Dove trovare ORDER_SET_BKG o tabelle del piano di cura che indicano un protocollo collegato all'episodio. Acquisisci Registrato quando il clinico seleziona e firma un set di ordini Tipo di evento explicit | |||
| Test Diagnostico Eseguito | L'esecuzione effettiva del test diagnostico o l'archiviazione del risultato. Per i laboratori, questo è quando il campione viene processato; per l'`imaging`, quando la scansione è completata. | ||
| Perché è importante Punto finale per il KPI 'Tempo Medio di Ciclo del Test Diagnostico'. Vitale per comprendere i ritardi nei servizi di supporto alle decisioni cliniche. Dove trovare ORDER_PROC.PROC_END_TIME o ORDER_STAT_HISTORY quando lo stato cambia in 'Completato' o 'Refertato'. Acquisisci Registrato quando il tecnico completa l'attività o l'interfaccia dei risultati riceve Tipo di evento explicit | |||
| Test Diagnostico Ordinato | L'inserimento di un ordine per `imaging` (Radiologia) o servizi di laboratorio. Registrato quando un medico inserisce e firma un ordine nel sistema `CPOE`. | ||
| Perché è importante Il punto di partenza per la Dove trovare Tabella ORDER_PROC dove ORDER_TYPE è Laboratorio o Imaging/Radiologia. Acquisisci Registrato quando lo stato dell'ordine diventa 'Firmato' o 'Attivo' Tipo di evento explicit | |||
| Trasferimento Ordinato | Una richiesta di spostamento del paziente a un'unità o a un livello di assistenza diverso. Registrata come 'Richiesta di posto letto' o 'Ordine di trasferimento' nel sistema. | ||
| Perché è importante Punto di partenza per il 'Tempo Medio di Trasferimento Inter-Reparto'. Differenzia tra la decisione clinica di trasferire e la disponibilità logistica di un letto. Dove trovare ADT_TRANSFER_ORDER o ORDER_PROC (Richiesta letto). Acquisisci Registrato quando il medico inserisce l'ordine di trasferimento Tipo di evento explicit | |||
Guide all'Estrazione
Fasi
- Accedere a Epic Hyperspace e avviare il Reporting Workbench (RWB) tramite l'attività Analytics o My Reports.
- Creare un Nuovo Report selezionando la scheda Library e cercando il
template"Encounter Search" o "Patient Encounters". Questotemplateconsente il recupero dei dettagli a livello di contatto identificati dal CSN (Contact Serial Number). - Configurare i Criteri (Scheda Impostazioni):
- Impostare l'Intervallo di Date (ad esempio, Data di Dimissione = Ultimi 90 Giorni) per catturare gli episodi completati.
- Filtrare per Tipo di Incontro (ad esempio, 'Incontro Ospedaliero', 'Emergenza') per escludere visite ambulatoriali irrilevanti.
- Filtrare per Reparto o Struttura se è richiesto un ambito specifico.
- Configurare le Colonne di Visualizzazione (Scheda Visualizzazione):
- Questo è il passaggio critico di estrazione. È necessario cercare e aggiungere colonne specifiche che corrispondono ai
timestampdelle attività richieste. - Aggiungere Identificatori Paziente:
CSN(Episodio Paziente),MRN(ID Paziente). - Aggiungere Dati Demografici/Attributi:
Reparto,Disposizione di Dimissione,Codice Diagnosi Principale,Fornitore. - Aggiungere Colonne
Timestamp: Cercare colonne comeAdmission Time,Triage End Time,Discharge Time,Discharge Order Time,First Med Admin Time, ecc. (Vedere la sezione Query/Configurazione per la mappatura esatta).
- Questo è il passaggio critico di estrazione. È necessario cercare e aggiungere colonne specifiche che corrispondono ai
- Eseguire il Report e verificare i risultati nella finestra di anteprima.
- Esportare i dati:
- Cliccare su Barra degli strumenti > Esporta.
- Selezionare il formato CSV o Testo (delimitato da tabulazioni).
- Assicurarsi che 'Includi intestazioni di colonna' sia selezionato.
- Salvare il file come
Raw_Epic_Extract.csv.
- Trasformazione dei dati (Cruciale):
- L'esportazione RWB produce un set di
dati"Ampio" (una riga per episodio paziente con più colonnetimestamp). - È necessario Unpivot (rimodellare) questi
datiin modo che ogni colonnatimestampdiventi una riga distinta nell'Event Log. - Creare un file finale con le colonne:
PatientEpisodeId,ActivityName,EventTimestampe gli Attributi mappati.
- L'esportazione RWB produce un set di
- Formattare le Date: Assicurarsi che
EventTimestampsia in formato ISO (YYYY-MM-DD HH:MM:SS) compatibile con ProcessMind. - Convalida Finale: Verificare che il file abbia le intestazioni
PatientEpisodeId,ActivityName,EventTimestampe caricarlo su ProcessMind.
Configurazione
- Template: Utilizzare "Encounter Search" (LBF) o "Find Patients" a seconda della versione di Epic.
- Intervallo di date: Limitare inizialmente a 3-6 mesi per evitare errori di timeout (RWB non è ottimizzato per estrazioni di massa).
- Limite di righe: Epic RWB ha spesso un limite di righe (ad esempio, 25.000 o 50.000 righe). Assicurarsi che l'intervallo di date non superi questo limite, oppure eseguire più batch.
- Permessi: Richiede i punti di sicurezza 'Crea' ed 'Esporta' di Reporting Workbench.
- Prestazioni: Eseguire durante le ore non di punta se si cercano ampi intervalli storici.
- Granularità: Questo metodo fornisce timestamp riassuntivi a livello di Encounter (ad esempio, 'Prima somministrazione farmaco'). Non estrae ogni ciclo (ad esempio, ogni singola pillola somministrata) a meno che non vengano utilizzati specifici template di "Audit", rari per questo caso d'uso.
a Query di Esempio config
[REPORT CONFIGURATION SPECIFICATION]
# GENERAL SETTINGS
Application: Epic Reporting Workbench
Template_ID: Encounter_Search_LBF
Time_Horizon: Discharge Date between [Start Date] and [End Date]
Filters: Encounter Type IN ('Hospital Encounter', 'Emergency')
# COLUMN SELECTION MAPPING
# Map the following Epic RWB Columns (Display Names) to the Output Activities.
# Note: Column names may vary slightly by Epic customized build.
[MANDATORY ATTRIBUTES]
Column: Contact Serial Number (CSN) -> Target: PatientEpisodeId
Column: Patient MRN -> Target: PatientMrn
Column: Department at Discharge -> Target: DepartmentName
Column: Discharge Disposition -> Target: DischargeDisposition
Column: Primary Diagnosis ICD-10 -> Target: PrimaryDiagnosisCode
Column: Attending Provider -> Target: ProviderId
Column: Current Date -> Target: LastDataUpdate
Column: System Name (Fixed 'Epic') -> Target: SourceSystem
[ACTIVITY TIMESTAMP MAPPING]
# These columns represent the 'EventTimestamp' for the specific 'ActivityName'
1. Activity: Patient Registered
Epic_Column: Hospital Admission Time OR Check-In Time
2. Activity: Triage Completed
Epic_Column: Triage End Time OR Triage Acuity Time
3. Activity: Care Plan Initiated
Epic_Column: Care Plan Start Date
4. Activity: Diagnostic Test Ordered
Epic_Column: First Lab Order Time OR First Imaging Order Time
(Note: Select 'Earliest' if multiple columns exist)
5. Activity: Diagnostic Test Performed
Epic_Column: First Lab Result Time OR First Imaging End Time
6. Activity: Diagnosis Confirmed
Epic_Column: Principal Diagnosis Problem List Date
7. Activity: Consultation Requested
Epic_Column: Consult Order Create Time
8. Activity: Consultation Completed
Epic_Column: Consult Complete Time
9. Activity: Medication Administered
Epic_Column: First Medication Administration Time
10. Activity: Transfer Ordered
Epic_Column: Transfer Order Time
11. Activity: Patient Transferred
Epic_Column: Last Transfer In Time OR ADT Event Time
12. Activity: Discharge Planning Initiated
Epic_Column: Case Management Start Date
13. Activity: Discharge Order Signed
Epic_Column: Discharge Order Time
14. Activity: Patient Discharged
Epic_Column: Hospital Discharge Time
15. Activity: Follow-up Appointment Scheduled
Epic_Column: Discharge Follow-Up Appointment Made Date
# TRANSFORMATION LOGIC (PSEUDO-CODE)
# The export will be 'Wide'. Apply this logic to create the Event Log:
FOR EACH Row IN Exported_CSV:
EpisodeID = Row['Contact Serial Number']
FUNCTION CreateEvent(ActivityName, TimestampColumn):
IF Row[TimestampColumn] IS NOT NULL:
OUTPUT_ROW = {
'PatientEpisodeId': EpisodeID,
'ActivityName': ActivityName,
'EventTimestamp': Row[TimestampColumn],
'PatientMrn': Row['Patient MRN'],
'DepartmentName': Row['Department at Discharge'],
... [All Attributes]
}
APPEND OUTPUT_ROW TO Event_Log
# Execute for all 15 mappings defined above
CreateEvent('Patient Registered', 'Hospital Admission Time')
CreateEvent('Triage Completed', 'Triage End Time')
... [Repeat for all mapped columns]
END LOOP Fasi
Richiedere l'accesso al database: Assicurarsi di avere accesso in lettura alla console Epic Clarity o a un client SQL connesso al database di produzione o di reporting di Clarity. Saranno necessarie le autorizzazioni per
PAT_ENC,ORDER_PROC,CLARITY_ADT,MAR_ADMIN_INFOe le tabelle di riferimento correlate.Identificare ambito e ID filtro: Prima di eseguire lo script completo, eseguire piccole query di scoperta per identificare i valori specifici di
ORDER_TYPE_Cper Laboratori, Radiologia, Consulenze e Trasferimenti nella Sua specifica istanza Epic, poiché questi elenchi personalizzati (elenchi di categorie) variano per ospedale.Configurare la finestra temporale: Individuare le clausole
WHEREnello script SQL fornito che filtrano suCONTACT_DATEoHOSP_ADMSN_TIME. Regolarle in base alla finestra di estrazione desiderata (ad esempio, ultimi 6 mesi).Mappare Flowsheet personalizzati (Opzionale): Se ha bisogno di
timestampprecisi per Triage o Pianificazione delle dimissioni che non sono nella tabella principale degli incontri, identificare lo specificoFLO_MEAS_ID(ID Misura Flowsheet) per questi campi e aggiornare le sezioni placeholder dello script.Eseguire la Query: Eseguire lo script SQL completo nel Suo client SQL (ad esempio, SQL Server Management Studio, Oracle SQL Developer). Lo script utilizza
UNION ALLper combinare diversieventclinici in un'unica struttura standardizzata di Event Log.Post-elaborazione: La query restituisce un elenco piatto. Verificare che
EventTimestampnon sia nullo. Convertire eventuali formati di data/ora specifici del database in ISO 8601 (AAAA-MM-GGTHH:MM:SS) se il Suo middleware lo richiede.Esportare i
dati: Salvare il set di risultati come file CSV. Assicurarsi che le intestazioni corrispondano agliAttributispecifici definiti (PatientEpisodeId, ActivityName, ecc.).Caricare su ProcessMind: Importare il CSV in ProcessMind. Mappare
PatientEpisodeIdcome IDCase,ActivityNamecome Attività eEventTimestampcomeTimestamp.
Configurazione
- Connessione al database: Epic Clarity (solitamente back-end MSSQL o Oracle).
- Filtro per data: Filtrare su
PAT_ENC.HOSP_ADMSN_TIMEoPAT_ENC.CONTACT_DATE. L'intervallo consigliato è di 3-6 mesi per l'analisi iniziale per gestire le prestazioni della query. - Tipi di incontro: Lo script filtra gli incontri ospedalieri e di emergenza (valori di
ENC_TYPE_Ccomunemente 3 e 50, ma verificare rispetto aZC_ENC_TYPE). - Tipi di ordine: richiede la personalizzazione dei valori
ORDER_TYPE_Cper Laboratori, Imaging e Consulenze in base alla configurazione locale di ZC_ORDER_TYPE. - Prestazioni: Lo script scansiona tabelle ad alto volume (
ORDER_PROC,CLARITY_ADT). Assicurarsi che venga utilizzata un'indicizzazione appropriata o eseguire durante le ore non di punta.
a Query di Esempio sql
WITH Cohort AS (
SELECT
pe.PAT_ENC_CSN_ID,
pe.PAT_ID,
pe.HOSP_ADMSN_TIME,
pe.HOSP_DISCH_TIME,
pe.DEPARTMENT_ID,
dep.DEPARTMENT_NAME,
emp.NAME AS ProviderName,
pat.PAT_MRN_ID,
pe.ACUITY_LEVEL_C,
disch.NAME AS DischargeDisposition,
pe.ENC_TYPE_C
FROM PAT_ENC pe
LEFT JOIN CLARITY_DEP dep ON pe.DEPARTMENT_ID = dep.DEPARTMENT_ID
LEFT JOIN CLARITY_EMP emp ON pe.VISIT_PROV_ID = emp.PROV_ID
LEFT JOIN PATIENT pat ON pe.PAT_ID = pat.PAT_ID
LEFT JOIN ZC_DISCH_DISP disch ON pe.DISCH_DISP_C = disch.DISCH_DISP_C
WHERE pe.HOSP_ADMSN_TIME >= DATEADD(month, -6, GETDATE())
AND pe.ENC_TYPE_C IN (3, 50) -- 3=Inpatient, 50=Emergency (Verify local codes)
)
-- 1. Patient Registered
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)) AS PatientEpisodeId,
'Patient Registered' AS ActivityName,
c.HOSP_ADMSN_TIME AS EventTimestamp,
c.DepartmentName,
c.ProviderName AS ProviderId,
c.PAT_MRN_ID AS PatientMrn,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)) AS TriageAcuityLevel,
CAST(c.ENC_TYPE_C AS VARCHAR(50)) AS EncounterType,
NULL AS PrimaryDiagnosisCode,
NULL AS ReadmissionFlag,
c.DischargeDisposition,
'Epic EHR' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM Cohort c
WHERE c.HOSP_ADMSN_TIME IS NOT NULL
UNION ALL
-- 2. Triage Completed (Using Flowsheet or Triage Time)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Triage Completed',
ISNULL(pe.TRIAGE_END_INSTANT, c.HOSP_ADMSN_TIME), -- Fallback if specific column unused
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN PAT_ENC pe ON c.PAT_ENC_CSN_ID = pe.PAT_ENC_CSN_ID
WHERE pe.TRIAGE_END_INSTANT IS NOT NULL
UNION ALL
-- 3. Care Plan Initiated (Based on Order Type)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Care Plan Initiated',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 100 -- Placeholder: Replace with ID for Care Plan/Protocol
UNION ALL
-- 4. Diagnostic Test Ordered (Lab/Radiology)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Diagnostic Test Ordered',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C IN (1, 2) -- Placeholder: 1=Lab, 2=Radiology (Verify local codes)
UNION ALL
-- 5. Diagnostic Test Performed (Result Time or Procedure Start)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Diagnostic Test Performed',
COALESCE(ord2.PROC_START_TIME, ord2.PROC_ENDING_TIME, ord.ORDER_INST),
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
JOIN ORDER_PROC_2 ord2 ON ord.ORDER_PROC_ID = ord2.ORDER_PROC_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C IN (1, 2)
AND ord2.PROC_START_TIME IS NOT NULL
UNION ALL
-- 6. Diagnosis Confirmed
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Diagnosis Confirmed',
dx.NOTED_DATE,
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
edg.DX_NAME,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN PAT_ENC_DX dx ON c.PAT_ENC_CSN_ID = dx.PAT_ENC_CSN_ID
JOIN CLARITY_EDG edg ON dx.DX_ID = edg.DX_ID
WHERE dx.NOTED_DATE IS NOT NULL
UNION ALL
-- 7. Consultation Requested
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Consultation Requested',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 35 -- Placeholder: Replace with ID for Consult
UNION ALL
-- 8. Consultation Completed
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Consultation Completed',
ord.ORDER_END_TIME,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 35 -- Placeholder: Replace with ID for Consult
AND ord.ORDER_STATUS_C = 5 -- Placeholder: 5=Completed
AND ord.ORDER_END_TIME IS NOT NULL
UNION ALL
-- 9. Medication Administered
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Medication Administered',
mar.TAKEN_TIME,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_MED med ON c.PAT_ENC_CSN_ID = med.PAT_ENC_CSN_ID
JOIN MAR_ADMIN_INFO mar ON med.ORDER_MED_ID = mar.ORDER_MED_ID
LEFT JOIN CLARITY_EMP emp ON mar.TAKEN_USER_ID = emp.USER_ID
WHERE mar.TAKEN_TIME IS NOT NULL
AND mar.MAR_ACTION_C = 1 -- Placeholder: 1=Given
UNION ALL
-- 10. Transfer Ordered
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Transfer Ordered',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 60 -- Placeholder: Replace with ID for Transfer/Bed Request
UNION ALL
-- 11. Patient Transferred
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Patient Transferred',
adt.EFFECTIVE_TIME,
dep.DEPARTMENT_NAME,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN CLARITY_ADT adt ON c.PAT_ENC_CSN_ID = adt.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_DEP dep ON adt.DEPARTMENT_ID = dep.DEPARTMENT_ID
WHERE adt.EVENT_TYPE_C = 3 -- 3=Transfer In
UNION ALL
-- 12. Discharge Planning Initiated
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Discharge Planning Initiated',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 70 -- Placeholder: Case Management/Discharge Order Type
UNION ALL
-- 13. Discharge Order Signed
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Discharge Order Signed',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.PROC_CODE = 'DISCHARGE' -- Placeholder: Filter by specific discharge procedure code
UNION ALL
-- 14. Patient Discharged
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Patient Discharged',
c.HOSP_DISCH_TIME,
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
WHERE c.HOSP_DISCH_TIME IS NOT NULL
UNION ALL
-- 15. Follow-up Appointment Scheduled
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Follow-up Appointment Scheduled',
next_pe.APPT_MADE_DATE,
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN PAT_ENC next_pe ON c.PAT_ID = next_pe.PAT_ID
WHERE next_pe.APPT_MADE_DATE BETWEEN c.HOSP_ADMSN_TIME AND ISNULL(c.HOSP_DISCH_TIME, GETDATE())
AND next_pe.CONTACT_DATE > c.HOSP_ADMSN_TIME -- The appointment is for a future date relative to admission