Il template dei dati del percorso del paziente
Il template dei dati del percorso del paziente
- Attributi clinici consigliati
- Tappe essenziali del processo
- Indicazioni per l’estrazione da MEDITECH
Attributi del percorso del paziente
| Nome | Descrizione | ||
|---|---|---|---|
| Episodio del paziente PatientEpisode | Identificativo univoco di uno specifico periodo di cura o di una visita del paziente. | ||
| Descrizione L’episodio del paziente è l’identificativo centrale del caso per l’analisi del processo. Riunisce in un unico percorso tutti gli eventi clinici, amministrativi e finanziari relativi a un ricovero o a una visita ambulatoriale. Nei sistemi MEDITECH, spesso corrisponde al numero di conto o all’ID della visita. Questo attributo è fondamentale per ricostruire il percorso del paziente dalla registrazione alla dimissione, calcolare la durata della degenza e analizzare i percorsi clinici. Perché è importante È la chiave obbligatoria del caso, necessaria per collegare eventi distinti a una singola istanza del processo. Dove reperirli Modulo MEDITECH Admissions o Registration; in genere, il campo Account Number. Esempi V100938475AC29384755E993847211O229384711 | |||
| Indicazione temporale dell’evento EventTimestamp | La data e l’ora esatte in cui si è svolta l’attività. | ||
| Descrizione Questo attributo registra il momento esatto in cui si è svolta un’attività. Serve a ordinare cronologicamente gli eventi e a calcolare i tempi tra le fasi del processo. Per analizzare con precisione i tempi di attesa sono necessarie indicazioni temporali accurate, ad esempio per misurare l’intervallo tra il triage e la valutazione o il tempo di esecuzione degli esami diagnostici. Perché è importante È necessario per ordinare gli eventi e calcolare i tempi di ciclo e il flusso dei pazienti. Dove reperirli Colonne di data e ora delle transazioni nelle tabelle di origine. Esempi 2023-10-15T08:30:00Z2023-10-15T09:15:22Z2023-10-16T14:45:00Z | |||
| Nome dell’attività ActivityName | L’azione clinica o amministrativa specifica svolta. | ||
| Descrizione Questo attributo indica il nome dell’evento o dell’attività che si verifica durante il percorso del paziente. Registra le singole fasi, come 'Paziente registrato', 'Farmaco somministrato' o 'Ordine di dimissione inserito'. Identificare correttamente le attività è fondamentale per mappare il flusso del processo. Questi valori derivano spesso dai codici delle transazioni, dagli stati degli ordini o dagli interventi documentati nella cartella clinica elettronica. Perché è importante Definisce le fasi del processo ed è necessario per visualizzare la mappa del processo. Dove reperirli Ricavato da diversi log delle transazioni (ordini OE, interventi NUR, eventi ADM). Esempi Paziente registratoTriage completatoFarmaco somministratoRisultato diagnostico verificato | |||
| Sistema di origine SourceSystem | Identificativo del sistema da cui provengono i dati. | ||
| Descrizione Identifica l’istanza MEDITECH o il modulo specifico da cui sono stati estratti i dati degli eventi. Negli ambienti con più ospedali, consente di distinguere i dati provenienti da strutture diverse o da versioni differenti del sistema. Questo attributo è statico quando l’estrazione proviene da un unico sistema, ma diventa fondamentale quando si uniscono dati per ottenere una vista unificata della rete ospedaliera. Perché è importante Garantisce la provenienza e la tracciabilità dei dati negli ambienti con più sistemi. Dove reperirli Impostato durante l’estrazione o la configurazione dell’ID di sistema. Esempi MEDITECH_ExpanseMEDITECH_6.1Hospital_A_Main | |||
| Ultimo aggiornamento dei dati LastDataUpdate | Data e ora dell’ultima estrazione o aggiornamento dei dati. | ||
| Descrizione Indica quando il record è stato elaborato o caricato per l’ultima volta nello strumento di Process Mining. Consente di verificare l’aggiornamento dei dati e di assicurarsi che l’analisi rifletta lo stato più recente del sistema. È diverso dall’ora dell’evento, perché indica il momento tecnico della pipeline dei dati e non quello dell’evento clinico. Perché è importante Fondamentale per la governance dei dati e per assicurarsi che l’analisi si basi su dati aggiornati. Dove reperirli Data di sistema al momento dell’esecuzione dell’ETL. Esempi 2023-11-01T00:00:00Z2023-11-02T12:00:00Z | |||
| Diagnosi principale PrimaryDiagnosis | Condizione medica principale identificata per l’episodio del paziente. | ||
| Descrizione Contiene il codice ICD-10 o la descrizione del motivo principale dell’accesso. È il punto di partenza per l’«Analisi delle varianti dei percorsi clinici». Raggruppando i casi per diagnosi principale, i responsabili clinici possono confrontare i percorsi terapeutici effettivi con il percorso clinico ideale per quella specifica condizione. Perché è importante Essenziale per raggruppare i casi e analizzare i percorsi clinici. Dove reperirli Modulo Medical Records o Abstracting. Esempi J18.9 - PolmoniteI21.9 - Infarto miocardico acutoS72.0 - Frattura del femore | |||
| È una riammissione IsReadmission | Indicatore che segnala se l’episodio si è verificato entro 30 giorni da una dimissione precedente. | ||
| Descrizione Attributo booleano che restituisce true se la data di registrazione attuale del paziente rientra nei 30 giorni successivi alla data di dimissione di un episodio precedente. Alimenta la Dashboard «Riammissioni e qualità dell’assistenza». Individuare le riammissioni consente agli analisti di risalire all’episodio precedente per rilevare eventuali carenze nella pianificazione delle dimissioni o nell’assistenza successiva. Perché è importante Indicatore di qualità fondamentale, con effetti sui rimborsi e sugli esiti per i pazienti. Dove reperirli Calcolato confrontando StartTime attuale con il precedente Case EndTime per lo stesso MedicalRecordNumber. Esempi truefalse | |||
| Esito della dimissione DischargeDisposition | Destinazione o stato del paziente al momento della dimissione. | ||
| Descrizione Indica dove è stato trasferito il paziente dopo l’episodio, ad esempio a domicilio, in una struttura di assistenza infermieristica specializzata, presso un servizio di assistenza domiciliare o in caso di decesso. È un indicatore chiave per la Dashboard «Ottimizzazione della pianificazione delle dimissioni». L’analisi consente di individuare se i ritardi nell’assegnazione di un’assistenza post-acuta contribuiscono a prolungare la degenza. Perché è importante Indicatore chiave per analizzare la durata della degenza e il rischio di riammissione. Dove reperirli Schermate di registrazione o riepilogo delle dimissioni. Esempi Dimesso a domicilioTrasferito in un ospedale generale per cure di breve durataDecedutoDimesso contro il parere medico | |||
| Livello di urgenza del triage TriageAcuityLevel | Livello di gravità assegnato al paziente durante il triage. | ||
| Descrizione Indica l’urgenza delle condizioni del paziente, in genere su una scala (ad esempio da 1 a 5, dove 1 indica una situazione critica). Questo attributo è centrale per l’«Analisi del flusso del pronto soccorso». Consente agli analisti di mettere in relazione i tempi di attesa con la gravità delle condizioni del paziente, verificando che i casi più critici ricevano la priorità adeguata. Perché è importante Fondamentale per analizzare le priorità assegnate nel pronto soccorso e la conformità agli standard di sicurezza. Dove reperirli Schermate di valutazione infermieristica del pronto soccorso o del triage. Esempi 1 - Rianimazione2 - Emergenza3 - Urgente4 - Meno urgente | |||
| Medico responsabile AttendingProvider | Medico o professionista sanitario responsabile dell’attività. | ||
| Descrizione Registra il nome o l’ID del medico, dell’infermiere o del tecnico che svolge l’attività o supervisiona l’assistenza. Questo attributo alimenta la Dashboard «Velocità di elaborazione del piano terapeutico», associando gli indicatori di rapidità ed efficienza a specifici membri del personale o ruoli. Consente di analizzare le risorse per bilanciare i carichi di lavoro e individuare le esigenze di formazione del personale clinico. Perché è importante Consente di analizzare le prestazioni delle risorse e bilanciare i carichi di lavoro. Dove reperirli Campi Provider o User nei registri delle attività. Esempi Dr. SmithRN JonesTech Adams | |||
| Numero di cartella clinica MedicalRecordNumber | Identificativo univoco del paziente per tutte le visite. | ||
| Descrizione Il numero di cartella clinica (MRN) identifica in modo univoco un paziente all’interno dell’organizzazione sanitaria ed è distinto dall’ID specifico dell’episodio. Consente agli analisti di collegare nel tempo più episodi relativi allo stesso paziente. Questo attributo è essenziale per la Dashboard «Riammissioni e qualità dell’assistenza», che permette di individuare i pazienti ricoverati nuovamente entro 30 giorni dalla dimissione. Perché è importante Consente di analizzare più episodi e di ottenere viste incentrate sul paziente. Dove reperirli Indice anagrafico dei pazienti o tabella di registrazione. Esempi MRN-100293MRN-55928388291002 | |||
| Reparto ospedaliero HospitalDepartment | Unità o reparto specifico in cui si è svolta l’attività. | ||
| Descrizione Identifica l’unità funzionale responsabile dell’attività, ad esempio «Pronto soccorso», «Radiologia», «Terapia intensiva» o «Reparto di degenza». Questo attributo è fondamentale per la Dashboard «Flusso delle risorse per reparto». Consente di suddividere gli indicatori di prestazione per unità e di individuare i colli di bottiglia nei trasferimenti interni e nell’utilizzo delle risorse. Perché è importante Essenziale per l’analisi organizzativa e per individuare i colli di bottiglia nelle singole unità. Dove reperirli Campi Location o Department nelle tabelle delle transazioni. Esempi Pronto soccorsoRadiologiaUnità di terapia intensivaReparto chirurgico 3 | |||
| Tipo di paziente PatientType | Classificazione della visita del paziente, ad esempio ricovero, visita ambulatoriale o accesso al pronto soccorso. | ||
| Descrizione Classifica la tipologia della visita ospedaliera. I valori più comuni sono «Ricovero», «Visita ambulatoriale», «Pronto soccorso» o «Osservazione». Questa classificazione è fondamentale per filtrare e confrontare i processi, poiché gli standard di assistenza e la durata prevista variano notevolmente in base alla tipologia. Questo campo consente di suddividere le aspettative sulla durata della degenza nella Dashboard «Ottimizzazione della pianificazione delle dimissioni». Perché è importante Segmentazione fondamentale per confrontare i processi (ricovero e visita ambulatoriale). Dove reperirli Tabelle Admission o Visit, ad esempio AdmVisits.Status. Esempi RicoveroPronto soccorsoChirurgia ambulatorialeOsservazione | |||
| Categoria dell’ordine OrderCategory | Classificazione degli ordini clinici, ad esempio laboratorio, radiologia o consulenza. | ||
| Descrizione Raggruppa gli ordini in categorie più ampie, come «Laboratorio», «Radiologia», «Dietetica» o «Consulenza». È essenziale per la Dashboard «Tempi di completamento dei servizi diagnostici». Consente di separare i flussi di lavoro e analizzare i tempi di ciclo specifici degli esami di diagnostica per immagini e delle analisi del sangue, che spesso presentano colli di bottiglia diversi. Perché è importante Suddivide i flussi di lavoro diagnostici e terapeutici. Dove reperirli Campi delle categorie nel modulo Order Entry (OE). Esempi LaboratorioRadiologiaAssistenza infermieristicaFarmacia | |||
| È una violazione dell’aderenza IsAdherenceViolation | Indicatore che segnala se il caso si è discostato dal percorso clinico standard. | ||
| Descrizione Indicatore booleano impostato su true se la sequenza delle attività non corrisponde al modello di riferimento definito per la diagnosi principale del paziente. Alimenta l’«Analisi delle varianti dei percorsi clinici». Consente di filtrare rapidamente i casi non conformi e verificare perché non sia stato seguito lo standard di assistenza. Perché è importante Individua rapidamente le deviazioni e le variazioni del processo. Dove reperirli Calcolato con algoritmi di controllo di conformità. Esempi truefalse | |||
| Importo addebitato ChargeAmount | Valore economico associato a una specifica attività o prestazione. | ||
| Descrizione Rappresenta il costo o l’importo addebitato per un evento specifico, ad esempio un esame o l’uso di una stanza. Pur essendo principalmente un dato economico, è correlato all’intensità di utilizzo delle risorse. Se aggregato, aiuta a comprendere l’impatto economico delle variazioni di processo, anche se la vista richiesta si concentra principalmente sui flussi clinici. Perché è importante Aggiunge una dimensione economica all’analisi dei processi. Dove reperirli Modulo Billing o BAR (Billing/Accounts Receivable). Esempi 150.001200.5045.00 | |||
| Nome del farmaco MedicationName | Nome del farmaco somministrato. | ||
| Descrizione Registra il farmaco specifico associato agli eventi «Farmaco somministrato». È necessario per la Dashboard «Conformità nella somministrazione dei farmaci». Consente ai responsabili infermieristici di verificare che i farmaci specifici ad alto rischio o da somministrare in tempi precisi, come gli antibiotici per la sepsi, vengano somministrati entro le finestre terapeutiche previste. Perché è importante Necessario per le analisi della conformità clinica e della sicurezza. Dove reperirli Moduli Pharmacy (PHA) o Bedside Verification (BMV). Esempi ParacetamoloVancomicinaEparinaInsulina | |||
| Provenienza del ricovero AdmitSource | Provenienza del paziente, ad esempio domicilio, trasferimento o invio. | ||
| Descrizione Descrive la provenienza del paziente al momento del ricovero, ad esempio «Invio del medico», «Pronto soccorso» o «Trasferimento da un altro ospedale». Fornisce informazioni sulle modalità di accesso dei pazienti al sistema. È utile per comprendere i flussi in entrata e il loro impatto sull’«Analisi del flusso del pronto soccorso» e sulla pianificazione delle risorse. Perché è importante Fornisce informazioni sui flussi in entrata dei pazienti e sui canali di accesso. Dove reperirli Dati di registrazione dei ricoveri. Esempi Pronto soccorsoInvio da una clinicaTrasferimento da una struttura di assistenza infermieristica specializzata | |||
| Tempo di attesa per il triage TriageWaitTime | Intervallo di tempo tra la registrazione e il completamento del triage. | ||
| Descrizione Durata calcolata tra l’evento «Paziente registrato» e l’evento «Triage completato». Alimenta direttamente il KPI «Tempo medio di gestione del triage». Monitorare questa durata aiuta i responsabili del pronto soccorso ad adeguare il personale nelle ore di punta e a rispettare gli standard di sicurezza per i pazienti. Perché è importante Indicatore operativo chiave per i pronto soccorso. Dove reperirli Differenza calcolata tra le date e le ore di specifiche attività. Esempi 15 minuti1 ora e 20 minuti | |||
Attività del percorso del paziente
| Attività | Descrizione | ||
|---|---|---|---|
| Diagnosi documentata | È il momento in cui un medico inserisce nella cartella del paziente una diagnosi codificata (ICD-10). Spesso questo passaggio avvia specifici percorsi clinici. | ||
| Perché è importante Consente l’analisi delle varianti dei percorsi clinici classificando il caso. È fondamentale per raggruppare i pazienti e confrontarli. Dove reperirli Modulo MEDITECH ABS (Abstracting) o Medical Records. Il dato viene registrato quando i codici diagnostici vengono associati alla posizione contabile. Acquisizione Registrato all’esecuzione della transazione Diagnosis Enter Tipo di evento explicit | |||
| Farmaco somministrato | Registra l’effettiva somministrazione del farmaco al paziente da parte del personale infermieristico. In genere, il dato viene acquisito tramite scansione del codice a barre al letto del paziente. | ||
| Perché è importante Supporta l’analisi della conformità nella somministrazione dei farmaci. Aiuta a individuare rischi per la sicurezza e interruzioni dei flussi di lavoro nei reparti infermieristici. Dove reperirli MEDITECH PHA (Pharmacy) o eMAR (Electronic Medication Administration Record). Il campo 'AdminDateTime' nella cronologia delle somministrazioni. Acquisizione Registrato all’esecuzione della transazione Med Admin Tipo di evento explicit | |||
| Ordine di dimissione inserito | L’indicazione temporale corrisponde al momento in cui il medico firma l’ordine che autorizza la dimissione del paziente. Segna l’inizio della fase di pianificazione della dimissione. | ||
| Perché è importante Definisce il valore iniziale del tempo di attraversamento della pianificazione della dimissione. L’intervallo tra questo momento e l’uscita effettiva rappresenta un’inefficienza operativa. Dove reperirli MEDITECH OE (Order Entry). Filtrare gli ordini per Category = Discharge. Acquisizione Registrato all’esecuzione della transazione Order Enter Tipo di evento explicit | |||
| Paziente dimesso | Indica la chiusura amministrativa della visita. Il paziente ha lasciato fisicamente la struttura e il posto letto è nuovamente disponibile. | ||
| Perché è importante Segna la conclusione formale del processo. Serve a calcolare la durata finale della degenza e a definire il periodo di 30 giorni per il monitoraggio dei rientri. Dove reperirli MEDITECH ADM (Admissions). Il campo 'DischargeDateTime' nella registrazione della visita. Acquisizione Registrato all’esecuzione della transazione Discharge Patient Tipo di evento explicit | |||
| Paziente registrato | Questo evento indica la creazione amministrativa nel sistema dell’episodio del paziente o della registrazione della visita. Corrisponde al primo accesso al modulo MEDITECH ADM (Admissions). | ||
| Perché è importante Definisce l’inizio del percorso del paziente e il punto di partenza per il calcolo del tempo di ciclo. È essenziale per calcolare la durata totale della degenza. Dove reperirli Modulo MEDITECH ADM. Il dato proviene dalla tabella 'Admissions', in particolare dal campo 'AdmitDateTime' o dall’indicazione temporale di creazione del log della transazione. Acquisizione Registrato all’esecuzione della transazione New Visit Tipo di evento explicit | |||
| Paziente trasferito | Indica lo spostamento fisico del paziente da una posizione (unità, stanza o letto) a un’altra e consente di monitorarne il percorso nell’ospedale. | ||
| Perché è importante È fondamentale per individuare i colli di bottiglia nei trasferimenti interni. Tempi di trasferimento elevati indicano una competizione per le risorse o ritardi nel trasporto dei pazienti. Dove reperirli MEDITECH ADM (Admissions). Il dato proviene dai log delle transazioni 'Location History' o 'RoomBed'. Acquisizione Registrato all’esecuzione della transazione Transfer Patient Tipo di evento explicit | |||
| Richiesta inserita | Registra la richiesta di un servizio, di un farmaco o di un esame diagnostico da parte di un medico. Questo evento avvia le successive attività cliniche. | ||
| Perché è importante Definisce il valore iniziale dell’indicatore 'Tempi di esecuzione dei servizi diagnostici'. Il confronto con il tempo di esecuzione effettivo permette di individuare ritardi nell’erogazione del servizio. Dove reperirli Modulo MEDITECH OE (Order Entry). Il dato proviene dalla tabella 'OeOrders', utilizzando il campo Order Date/Time. Acquisizione Registrato all’esecuzione della transazione Order Enter Tipo di evento explicit | |||
| Risultato diagnostico verificato | Indica che un esame diagnostico, di laboratorio o radiologico, è stato eseguito e che i risultati sono stati convalidati da un tecnico o da un radiologo. In questo modo si conclude il ciclo della richiesta diagnostica. | ||
| Perché è importante È il punto finale per misurare i tempi di esecuzione dei servizi diagnostici ed è essenziale per analizzare i colli di bottiglia nei reparti di supporto. Dove reperirli Moduli MEDITECH LAB o ITS (Imaging and Therapeutic Services). Il dato si ricava dalle modifiche dello stato del risultato a Verified o Signed. Acquisizione Registrato quando il campo di stato passa a Verified Tipo di evento explicit | |||
| Triage completato | Indica il completamento della valutazione infermieristica iniziale al pronto soccorso. Da questa valutazione derivano il livello di urgenza e il punteggio di gravità del paziente. | ||
| Perché è importante È fondamentale per la Dashboard di analisi del flusso del pronto soccorso, che misura il flusso dei pazienti e i tempi di attesa. Dove reperirli Modulo MEDITECH EDM (Emergency Department Management). Il dato si ricava dalle modifiche di stato nel tracker EDM o dall’indicazione temporale del documento di valutazione del triage. Acquisizione Registrato quando il campo di stato passa a Triaged Tipo di evento explicit | |||
| Campione prelevato | Indica il prelievo fisico di un campione biologico per le analisi di laboratorio. Questa attività collega la richiesta all’elaborazione del campione. | ||
| Perché è importante È un passaggio specifico che spesso causa ritardi nel percorso diagnostico. Aiuta a distinguere i ritardi infermieristici da quelli di laboratorio. Dove reperirli Modulo MEDITECH LAB. In genere, il dato viene registrato quando un addetto ai prelievi scansiona il codice a barre o aggiorna lo stato del campione a Collected. Acquisizione Registrato all’esecuzione della transazione Collect Specimen Tipo di evento explicit | |||
| Consulenza completata | Indica il completamento della valutazione specialistica. Spesso si deduce dall’archiviazione di un documento specifico, ad esempio 'Cardiology Consult Note'. | ||
| Perché è importante È il punto finale per misurare la tempestività della risposta dello specialista ed è fondamentale per garantire la continuità delle cure. Dove reperirli MEDITECH PCM (Provider Order Management) o EMR. Il dato si deduce dalle indicazioni temporali di creazione dei documenti con titoli specifici. Acquisizione Confrontare il campo di stato prima e dopo Tipo di evento inferred | |||
| Piano assistenziale avviato | Indica la creazione o l’assegnazione di uno specifico piano assistenziale infermieristico o interdisciplinare. Corrisponde al concetto di piano terapeutico definito. | ||
| Perché è importante Misura la rapidità di elaborazione del piano terapeutico. Eventuali ritardi possono indicare lacune nel processo decisionale clinico. Dove reperirli MEDITECH PCS (Patient Care System) o Care Manager. Indicazione temporale dell’applicazione al paziente di un piano assistenziale standard. Acquisizione Registrato all’esecuzione della transazione Care Plan Add Tipo di evento explicit | |||
| Richiesta di consulenza inviata | È una richiesta specifica per ottenere il parere di uno specialista. Avvia il conteggio dei tempi nella Dashboard di risposta alle consulenze specialistiche. | ||
| Perché è importante Permette di individuare i colli di bottiglia nel coordinamento dell’assistenza multidisciplinare. Tempi di attesa elevati in questa fase prolungano la degenza. Dove reperirli MEDITECH OE (Order Entry). Si individua filtrando 'OeOrders' per Category = Consult. Acquisizione Registrato all’esecuzione della transazione Order Enter Tipo di evento explicit | |||
| Visita di controllo prenotata | Indica la prenotazione di un appuntamento futuro per il paziente. Questa attività favorisce la continuità delle cure dopo la dimissione. | ||
| Perché è importante Supporta l’analisi della prenotazione degli appuntamenti di controllo ed è associata a una riduzione dei rientri in ospedale. Dove reperirli MEDITECH SCH (Scheduling). Il dato si deduce collegando al paziente un nuovo appuntamento creato in prossimità della data di dimissione. Acquisizione Ricavare il dato confrontando i campi Appointment Created Date e Discharge Date Tipo di evento inferred | |||
Guide all’estrazione
Passaggi
Individuare il server del Data Repository: individui l’istanza Microsoft SQL Server che ospita il MEDITECH Data Repository (DR). È distinta dal database transazionale M-AT o da quello basato su file. Le serviranno credenziali di sola lettura, in genere un account di servizio.
Determinare la versione dello schema: le strutture del MEDITECH DR variano leggermente tra Magic, Client/Server (6.x) ed Expanse. La query seguente utilizza convenzioni di denominazione standard, ad esempio AdmVisits e OeOrders. Verifichi i nomi delle tabelle in Object Explorer di SQL Server Management Studio (SSMS) nell’ambiente locale.
Definire l’ambito: individui la tabella principale delle visite dei pazienti. In base alla configurazione specifica del DR, di solito si chiama AdmVisits, RegAcct o AbstractData. La query utilizza AdmVisits come tabella di riferimento per l’episodio del paziente.
Preparare l’ambiente SQL: apra SSMS e si connetta al DR. Apra una nuova finestra di query e verifichi di aver selezionato il database corretto, spesso denominato livedb o con un nome simile.
Configurare i parametri: nello script SQL fornito, sostituisca i segnaposto degli intervalli di date, ad esempio '2023-01-01', e gli identificativi della struttura, se il DR ospita più sedi.
Eseguire l’estrazione: esegua lo script T-SQL completo. Lo script utilizza espressioni di tabella comuni (CTE) per definire prima la popolazione di interesse e poi unire più origini dati con UNION ALL, creando un Event Log standardizzato.
Gestire gli attributi NULL: la query include una logica per gestire eventuali valori NULL nei timestamp, utilizzando COALESCE quando opportuno, e verifica la presenza delle chiavi di join essenziali (SourceID/VisitID).
Verificare i dati di triage e di emergenza: MEDITECH archivia i dati del pronto soccorso in moduli specifici. Se analizza i flussi di lavoro del pronto soccorso, verifichi che le tabelle EdVisits o NurInterventions contengano dati.
Convalidare le categorie degli ordini: la query separa gli ordini generali, le consulenze e gli ordini di dimissione in base agli identificativi o ai mnemonici delle categorie. Potrebbe essere necessario modificare le clausole WHERE per adattarle al dizionario dei mnemonici specifico della struttura.
Esportare i dati: una volta visualizzati i risultati, faccia clic con il pulsante destro del mouse sulla griglia dei risultati in SSMS e selezioni Save Results As CSV. Verifichi che siano incluse le intestazioni.
Verificare la formattazione finale: apra il file CSV e controlli che le date rispettino il formato ISO 8601 (YYYY-MM-DD HH:MM:SS) prima di importarlo in ProcessMind.
Configurazione
- Accesso al database: sono necessarie le autorizzazioni db_datareader sul database SQL del MEDITECH DR.
- Intervallo di date: si consiglia di estrarre i dati relativi a un periodo da 3 a 6 mesi di pazienti dimessi, così da includere cicli completi.
- Filtro per struttura: se il DR contiene dati di più strutture, filtri la CTE BaseVisits per FacilityID o SourceSystemID.
- Definizione dell’episodio: lo script utilizza l’identificativo univoco VisitID, spesso chiamato Account Number o Episode Number, come ID del caso.
- Prestazioni: la query utilizza una CTE di riferimento per limitare l’intervallo di scansione. Per prestazioni ottimali, verifichi che nella tabella AdmVisits siano presenti indici su AdmitDate e DischargeDate.
- Latenza: a seconda della configurazione della struttura, i trasferimenti dal Data Repository possono avere una latenza compresa tra 15 minuti e 24 ore. Verifichi il timestamp LastDataUpdate.
Query di esempio 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'); È pronto a iniziare?
Inizi oggi a trasformare le attività cliniche applicando questo template ai dati MEDITECH. Il nostro team è a disposizione per aiutarLa a perfezionare l’estrazione dei dati e migliorare l’efficienza ospedaliera.
Ottimizzi subito il percorso del paziente e riduca i ritardi
Riduca del 30% i tempi di ciclo e migliori l’efficienza ospedaliera
Non è richiesta la carta di credito. Inizi in pochi minuti.