Il vostro template per i dati di Revenue Cycle Management
Il vostro template per i dati di Revenue Cycle Management
- Attributi consigliati da raccogliere
- Attività chiave da tracciare
- Guida all'estrazione per Oracle Health Revenue Cycle
Attributi di Revenue Cycle Management
| Nome | Descrizione | ||
|---|---|---|---|
| Evento di fatturazione BillingEvent | L'identificatore univoco per l'erogazione di un singolo servizio o prodotto che genera un addebito, fungendo da identificatore del caso per il processo del ciclo delle entrate. | ||
| Descrizione L'Evento di Fatturazione (Billing Event) funge da identificatore principale del caso, collegando tutte le attività, dall'acquisizione dei costi alla chiusura del conto, per una specifica voce fatturabile. Ogni Evento di Fatturazione rappresenta un'istanza univoca del processo del ciclo delle entrate, consentendo il tracciamento completo del suo percorso attraverso fasi quali l'invio della richiesta, la registrazione del pagamento e potenziali rifiuti o rettifiche. Nell'analisi di Process Mining, questo attributo è fondamentale per ricostruire il flusso di processo end-to-end. Consente la visualizzazione delle varianti di processo, il calcolo dei tempi di ciclo tra le attività e l'identificazione di bottleneck o deviazioni associate a specifici eventi fatturabili. Perché è importante Questa è la chiave essenziale per tracciare l'intero ciclo di vita di un servizio fatturabile, consentendo l'analisi del flusso di processo e la misurazione delle performance. Dove trovare Questo identificatore deve essere una chiave univoca presente nelle tabelle principali di fatturazione o delle transazioni di addebito in Oracle Health Revenue Cycle. Consultate la documentazione del sistema per identificare la chiave primaria per gli eventi di addebito. Esempi BEVNT-987654321BEVNT-987654322BEVNT-987654323 | |||
| Nome attività ActivityName | Il nome della fase specifica o dell'evento verificatosi all'interno del processo del ciclo delle entrate. | ||
| Descrizione Questo attributo registra il nome di ogni attività eseguita nel ciclo di vita di un evento di fatturazione. Gli esempi includono 'Costi Acquisiti', 'Sinistro Inviato al Pagatore' e 'Pagamento Registrato'. Queste attività formano i nodi della mappa di processo rilevata. L'analisi della sequenza e della frequenza delle attività è il cuore del process mining. Questo attributo aiuta a identificare i percorsi di processo più comuni, scoprire le deviazioni dalla procedura standard e comprendere il flusso operativo del ciclo delle entrate. Perché è importante Definisce i passaggi del processo, consentendo la visualizzazione della mappa del processo e l'analisi dei pattern di Workflow. Dove trovare In genere derivato da event log, record di cambio di stato o tabelle transazionali specifiche associate a diverse fasi del ciclo delle entrate in Oracle Health. Esempi Claim GeneratedRemittance ReceivedDenial AppealedAccount Closed | |||
| Timestamp Evento EventTimestamp | La data e l'ora esatte in cui un'attività è stata registrata nel sistema. | ||
| Descrizione Questo attributo fornisce il timestamp per ogni attività, segnando il momento esatto in cui si è verificata. È essenziale per comprendere la tempistica e la sequenza degli eventi all'interno del ciclo delle entrate per uno specifico evento di fatturazione. In fase di analisi, l'Event Timestamp viene utilizzato per ordinare cronologicamente le attività, calcolare le durate e i tempi di ciclo tra i diversi step ed eseguire l'analisi dei bottleneck. È la base per tutte le metriche di process mining basate sul tempo, come l'identificazione dei ritardi tra 'Sinistro Inviato' e 'Rimessa Ricevuta'. Perché è importante Questo timestamp è fondamentale per ordinare gli eventi, calcolare tutte le metriche di performance come i tempi di ciclo e le durate, e identificare i bottleneck del processo. Dove trovare Ogni tabella di transazione o di Event Log in Oracle Health Revenue Cycle dovrebbe avere una colonna timestamp che indica quando il record è stato creato o l'evento si è verificato. Esempi 2023-04-15T09:00:00Z2023-04-18T14:30:00Z2023-05-02T11:25:10Z | |||
| Classe del Paziente PatientClass | La classificazione dell'incontro con il paziente, ad esempio ricoverato (Inpatient) o ambulatoriale (Outpatient). | ||
| Descrizione Questo attributo categorizza il tipo di visita o incontro con il paziente che ha generato l'addebito. Le classificazioni comuni includono ricoverato, ambulatoriale, emergenza e paziente ricorrente. La classe del paziente spesso determina l'intero processo di fatturazione e invio dei sinistri. Diverse classi di pazienti seguono percorsi di processo distinti e hanno requisiti di conformità differenti. L'analisi del processo basata su questo attributo aiuta a comprendere queste variazioni, personalizzare le iniziative di miglioramento e garantire che vengano seguite le procedure corrette per ogni classe. Perché è importante Separa flussi di processo distinti (es. ricoverati vs. ambulatoriali) che presentano complessità, tempistiche e requisiti di fatturazione differenti. Dove trovare Si tratta di un campo standard associato a un incontro con il paziente o a un record di ricovero in Oracle Health. Esempi RicoveroPaziente AmbulatorialeEmergenzaRicorrente | |||
| Denial Reason Code DenialReasonCode | Un codice standardizzato che indica il motivo per cui una richiesta di rimborso è stata respinta dal pagatore. | ||
| Descrizione Quando un pagatore rifiuta una richiesta, fornisce un codice motivo che spiega il rifiuto, ad esempio 'Servizio non coperto' o 'Richiesta duplicata'. Questo attributo acquisisce tale codice e la relativa descrizione. Analizzare i motivi di rifiuto è fondamentale per migliorare il ciclo delle entrate. Consente all'organizzazione di identificare pattern comuni, come problemi di codifica o di idoneità del paziente, e di implementare azioni correttive per prevenire rifiuti futuri. Ciò influisce direttamente sul tasso di 'clean claim' e riduce i costi di rework. Perché è importante Fornisce la causa alla radice dei dinieghi delle pratiche, consentendo miglioramenti mirati per aumentare il tasso di approvazione al primo invio e accelerare la riscossione. Dove trovare Queste informazioni vengono ricevute nell'avviso di rimessa elettronico (file ANSI 835) dal pagatore e devono essere memorizzate nelle tabelle dei sinistri o delle rimesse in Oracle Health. Esempi CO-16: Alla richiesta/servizio mancano le informazioni necessarie per la liquidazione.PR-96: Addebito/i non coperto/i.CO-18: Richiesta/servizio duplicato. | |||
| Dipartimento Fatturazione BillingDepartment | Il dipartimento o team funzionale responsabile dell'attività. | ||
| Descrizione Questo attributo specifica il dipartimento, come 'Acquisizione Costi', 'Codifica' o 'Recupero Crediti', che ha eseguito l'attività. Fornisce un contesto organizzativo al flusso di processo. L'analisi del processo da una prospettiva dipartimentuale è essenziale per comprendere i passaggi di consegna tra i team e identificare le inefficienze interfunzionali. Supporta la dashboard 'Carico di lavoro dipartimento fatturazione' consentendo l'aggregazione delle attività e delle metriche di performance a livello di dipartimento. Perché è importante Assegna le attività alle unità organizzative, un aspetto chiave per analizzare i passaggi tra reparti, il carico di lavoro e le prestazioni del team. Dove trovare Queste informazioni potrebbero essere memorizzate direttamente con i dati del profilo utente in Oracle Health o derivate in base all'utente o al tipo di attività. Esempi Patient AccessCodificaFatturazioneRecupero Crediti | |||
| Importo della rettifica AdjustmentAmount | Il valore monetario di eventuali rettifiche apportate al saldo del conto. | ||
| Descrizione Questo attributo acquisisce l'importo di qualsiasi rettifica finanziaria, come sconti contrattuali, svalutazioni o correzioni, applicata all'evento di fatturazione. Le rettifiche riducono direttamente le entrate previste da un addebito. La dashboard 'Impatto Rettifiche Account' si basa fortemente su questo attributo. L'analisi degli importi delle rettifiche e dei relativi motivi aiuta a identificare le fonti di perdita di ricavi, i problemi nella gestione dei contratti o le criticità nel processo iniziale di acquisizione dei costi. È una metrica chiave per la salute finanziaria. Perché è importante Quantifica la perdita di ricavi dovuta a storni o correzioni, aiutando a identificare e risolvere le cause alla radice dell'erosione finanziaria. Dove trovare Si trova nelle tabelle delle transazioni finanziarie che registrano rettifiche o storni su un conto paziente. Esempi -50.25-120.0025.00 | |||
| Nome Pagatore PayerName | Il nome della compagnia assicurativa o del pagatore terzo responsabile del pagamento. | ||
| Descrizione Questo attributo identifica l'entità, come una compagnia assicurativa o un programma governativo, a cui viene fatturato il servizio. Le informazioni sul pagatore sono fondamentali per l'analisi del ciclo delle entrate. L'analisi del processo per pagatore può rivelare variazioni significative nei tempi di pagamento, nei tassi di rifiuto e nei tassi di successo dei ricorsi. Aiuta a identificare i pagatori problematici che causano ritardi o perdite di ricavi ed è essenziale per gestire efficacemente i contratti e le relazioni con i pagatori. Perché è importante Consente di segmentare il processo per pagatore, rivelando comportamenti diversi, tassi di diniego e velocità di pagamento, elementi cruciali per la performance finanziaria. Dove trovare Queste informazioni sono memorizzate nei record di fatturazione o assicurativi del paziente all'interno di Oracle Health Revenue Cycle. Esempi AetnaBlue Cross Blue ShieldUnitedHealthcareMedicareCigna | |||
| Saldo in sospeso OutstandingBalance | Il saldo residuo non pagato per l'evento di fatturazione in un determinato momento. | ||
| Descrizione Questo attributo mostra l'importo attualmente dovuto per un evento di fatturazione dopo che tutti i pagamenti e le rettifiche sono stati applicati. Rappresenta la contabilità clienti attiva per quello specifico addebito. Questo è un attributo critico per la dashboard 'Anzianità del saldo residuo'. L'analisi di questo valore nel tempo aiuta a monitorare la velocità del cash flow, a valutare l'efficacia delle attività di recupero crediti e a calcolare KPI finanziari chiave come il Days Sales Outstanding (DSO). Perché è importante Traccia la contabilità clienti corrente per ogni caso, il che è essenziale per gestire il cash flow e analizzare l'efficacia del recupero crediti. Dove trovare In genere questo valore viene calcolato dalla somma di tutte le transazioni finanziarie (addebiti, pagamenti, rettifiche) per un determinato evento di fatturazione. Potrebbe esistere come campo in una tabella di riepilogo del conto. Esempi 75.000.00550.80 | |||
| Utente UserPerformingAction | L'ID utente o il nome della persona che ha eseguito l'attività. | ||
| Descrizione Questo attributo identifica il dipendente o l'utente del sistema automatizzato responsabile dell'esecuzione di una specifica attività nel processo. È fondamentale per comprendere la distribuzione del carico di lavoro, le performance delle risorse e identificare le esigenze di formazione. In fase di analisi, questo attributo consente di filtrare la mappa del processo per utente o team, confrontare le performance tra diverse risorse e analizzare il carico di lavoro per la dashboard 'Carico di lavoro dipartimento fatturazione'. Può aiutare a identificare i top performer o le persone che potrebbero necessitare di ulteriore supporto o formazione. Perché è importante Collega le attività del processo a utenti o team specifici, consentendo l'analisi del carico di lavoro, il confronto delle prestazioni e l'identificazione di opportunità di formazione. Dove trovare I campi ID utente (es. 'CREATED_BY', 'USER_ID') sono solitamente presenti nelle tabelle transazionali dei vari moduli di Oracle Health. Esempi j.doeasmithBillingBot_AUTOk.williams | |||
| È Automatizzato IsAutomated | Un flag che indica se l'attività è stata eseguita da un sistema automatizzato o da un utente umano. | ||
| Descrizione Questo attributo booleano distingue tra le attività eseguite dall'automazione software, come bot o job di sistema batch, e quelle eseguite manualmente da un utente. Ad esempio, 'Sinistro Generato' potrebbe essere uno step automatizzato, mentre 'Ricorso Rifiuto' è probabilmente manuale. L'analisi di questo attributo aiuta a comprendere il livello di automazione nel processo e il suo impatto sull'efficienza e sui tassi di errore. Può essere utilizzato per confrontare le performance dei percorsi automatizzati rispetto a quelli manuali e identificare opportunità di ulteriore automazione. Perché è importante Distingue tra attività umane e di sistema, il che è fondamentale per analizzare l'efficacia dell'automazione e identificare nuove opportunità. Dove trovare In genere viene derivato in base all'attributo UserPerformingAction. Ad esempio, le attività eseguite da ID utente come 'SYSTEM' o 'RPA_BOT' sono contrassegnate come automatizzate. Esempi truefalse | |||
| È una Rilavorazione IsRework | Un indicatore che identifica le attività che rappresentano lavori di ripristino o sforzi ripetuti. | ||
| Descrizione Questo attributo calcolato contrassegna le attività che indicano una deviazione dal percorso ideale ('happy path') e che costituiscono un rework. Gli esempi includono 'Sinistro Corretto Inviato' o 'Ricorso Rifiuto', che non si verificherebbero se il processo procedesse perfettamente al primo tentativo. Identificare e quantificare il rework è un obiettivo chiave del process mining. Questo flag consente di filtrare e analizzare facilmente tutti i loop di rework, aiutando a misurare la frequenza, i costi e le cause delle inefficienze di processo. È essenziale per comprendere il vero costo della qualità nel ciclo delle entrate. Perché è importante Aiuta a quantificare la frequenza e l'impatto dei cicli di rielaborazione, evidenziando le inefficienze di processo e il costo della scarsa qualità. Dove trovare Si tratta di un attributo derivato. Viene calcolato durante la trasformazione dei dati applicando una logica di business che contrassegna specifici nomi di attività come rework. Esempi truefalse | |||
| ID Paziente PatientId | L'identificatore univoco per il paziente associato all'evento di fatturazione. | ||
| Descrizione Questo attributo è l'identificatore univoco del paziente che ha ricevuto il servizio, spesso noto come numero di cartella clinica (MRN). Collega la transazione finanziaria a un individuo specifico. Sebbene non sia l'ID del caso per il processo, l'ID Paziente è utile per aggregare tutti gli eventi di fatturazione per un singolo paziente e comprendere l'intero percorso finanziario. Consente inoltre la segmentazione in base ai dati demografici o alla storia del paziente, se unito ai dati anagrafici. Perché è importante Collega gli eventi finanziari a uno specifico paziente, consentendo analisi incentrate sul paziente e l'aggregazione di tutte le sue attività di fatturazione. Dove trovare Questo identificatore è un elemento centrale dell'anagrafica paziente e sarà presente in tutte le tabelle transazionali correlate come addebiti, richieste e pagamenti. Esempi MRN-1002345MRN-1002346MRN-1002347 | |||
| ID Sinistro ClaimId | L'identificatore univoco per la richiesta di rimborso assicurativo inviata a un pagatore. | ||
| Descrizione Questo attributo è l'ID univoco assegnato a un sinistro generato e inviato a un pagatore per il rimborso. Un singolo evento di fatturazione può dare origine a uno o più sinistri nel corso del suo ciclo di vita, ad esempio se è necessaria una correzione. L'utilizzo dell'ID Sinistro consente di tracciare un invio specifico a un pagatore e di collegarlo direttamente alla risposta, come un pagamento o un rifiuto. Fornisce un livello di tracciamento più granulare all'interno del più ampio processo del ciclo delle entrate. Perché è importante Fornisce un identificatore specifico per tracciare il percorso di una richiesta di rimborso presso un pagatore, con un dettaglio maggiore rispetto all'evento di fatturazione generale. Dove trovare Questo ID viene generato da Oracle Health al momento della creazione di una richiesta ed è memorizzato nella tabella principale dei sinistri. Esempi CLM-2023-55489CLM-2023-55490CLM-2023-55491-C1 | |||
| Importo dell'Addebito ChargeAmount | Il valore monetario lordo del servizio o del prodotto fatturato. | ||
| Descrizione Questo attributo rappresenta l'importo iniziale e non scontato addebitato per un servizio prima dell'applicazione di rettifiche, sconti contrattuali o pagamenti. È il valore finanziario di partenza per l'evento di fatturazione. Il monitoraggio dell'importo dell'addebito è fondamentale per l'analisi finanziaria, come il calcolo del valore totale dei servizi resi e la comprensione dell'impatto finanziario di successive rettifiche o svalutazioni. Funge da base per misurare la realizzazione dei ricavi. Perché è importante Stabilisce il valore finanziario iniziale del case, fondamentale per tutte le successive analisi finanziarie e valutazioni d'impatto. Dove trovare Situato nelle tabelle dei dettagli degli addebiti o delle transazioni di addebito in Oracle Health. Esempi 150.001250.7585.50 | |||
| Motivo della Contestazione DisputeReason | Il motivo fornito dal cliente o dal paziente per contestare una fattura o un addebito. | ||
| Descrizione Questo attributo cattura il motivo per cui un paziente o un'altra parte responsabile ha contestato una fattura. I motivi possono includere addebiti errati, servizi non prestati o problemi con l'elaborazione assicurativa. Queste informazioni sono essenziali per la dashboard 'Metriche Risoluzione Controversie Fatture'. Comprendere le cause più comuni delle controversie aiuta a identificare problemi sistemici nei processi di acquisizione dei costi, codifica o fatturazione. Risolvere queste cause profonde può ridurre significativamente il tasso di contestazione e l'onere amministrativo necessario per risolverle. Perché è importante Spiega perché le fatture vengono contestate, fornendo un'indicazione diretta su problemi di accuratezza o chiarezza della fatturazione da risolvere. Dove trovare Probabilmente è memorizzato in un modulo di gestione dei casi o del servizio clienti all'interno di Oracle Health, collegato al conto del paziente. Esempi Incorrect Service BilledDuplicate ChargeInsurance Billed IncorrectlyServizio Non Fornito | |||
| Ora Fine Evento EventEndTime | Il timestamp che segna il completamento di un'attività, se disponibile. | ||
| Descrizione Mentre lo StartTime segna l'inizio di un'attività, l'EventEndTime ne segna la conclusione. Non tutte le attività hanno un tempo di fine distinto, poiché molte sono eventi istantanei. Tuttavia, per le attività che hanno una durata, come 'Ricorso Rifiuto' che potrebbe richiedere tempo per l'elaborazione, questo campo è molto utile. Questo attributo consente un calcolo più preciso del tempo di elaborazione per le singole attività. Aiuta a differenziare tra il tempo di attesa (tempo tra le attività) e il tempo di elaborazione (tempo speso su un'attività). Perché è importante Consente il calcolo diretto del tempo necessario per completare un'attività, separando il tempo di elaborazione dal tempo di attesa. Dove trovare Alcune tabelle transazionali in Oracle Health Revenue Cycle possono contenere sia un timestamp di inizio che uno di fine per specifiche attività di lunga durata. Esempi 2023-04-15T09:05:14Z2023-04-18T16:00:00Z | |||
| Sistema di Origine SourceSystem | Il sistema da cui sono stati estratti i dati evento. | ||
| Descrizione Questo attributo identifica l'applicazione o il modulo sorgente da cui provengono i dati. Per questo processo, in genere sarà 'Oracle Health Revenue Cycle', ma potrebbe anche specificare diversi moduli all'interno del sistema se i dati sono integrati da più fonti. Queste informazioni sono preziose per la data governance e il troubleshooting. Aiutano a confermare la provenienza dei dati e sono importanti in ambienti in cui più sistemi contribuiscono a un unico processo end-to-end. Perché è importante Fornisce contesto sull'origine dei dati, fondamentale per la convalida dei dati, la governance e la comprensione delle variazioni di processo che potrebbero dipendere dal sistema. Dove trovare Spesso si tratta di un valore statico aggiunto durante il processo di estrazione, trasformazione e caricamento (ETL) per etichettare l'origine del set di dati. Esempi OracleHealth-RCMOracleHealth-CernerOH-RevCycle-PROD | |||
| Tempo di Elaborazione ProcessingTime | La durata del tempo trascorso lavorando attivamente su un'attività. | ||
| Descrizione Questo attributo misura il tempo di elaborazione attivo per un evento, calcolato come la differenza tra i timestamp di inizio e fine. Aiuta a distinguere tra il tempo trascorso lavorando attivamente su un'attività e il tempo trascorso in attesa della fase successiva. Si tratta di una metrica fondamentale per l'analisi delle performance, poiché isola l'efficienza della risorsa che esegue il compito dai ritardi sistemici. Aiuta a capire quanto tempo occorre per codificare un sinistro o registrare un pagamento, indipendentemente dal tempo in cui la pratica è rimasta in coda. Perché è importante Misura la durata effettiva del lavoro per un'attività, separandola dal tempo di inattività o di attesa per fornire una visione più chiara dell'efficienza delle risorse. Dove trovare Si tratta di una metrica calcolata, derivata sottraendo l'EventTimestamp dall'EventEndTime. Può essere calcolata solo quando entrambi i campi sono disponibili. Esempi 300120045 | |||
| Ultimo `Data Update` LastDataUpdate | Il timestamp che indica l'ultima volta che i dati per questo evento sono stati aggiornati o estratti. | ||
| Descrizione Questo attributo indica quando il set di dati è stato aggiornato l'ultima volta. Fornisce indicazioni sull'attualità dei dati analizzati, elemento importante per comprendere la tempestività degli insight derivanti dall'analisi di process mining. Gli utenti possono consultare questo attributo per confermare di visualizzare le informazioni più aggiornate sul processo. Aiuta a gestire le aspettative sull'attualità dei dati ed è un componente chiave della data governance e della qualità. Perché è importante Indica l'aggiornamento dei dati, assicurando che le analisi e le decisioni si basino su informazioni recenti. Dove trovare Si tratta di un campo di metadati tipicamente generato e popolato durante il processo ETL che carica i dati nella piattaforma di process mining. Esempi 2023-10-27T02:00:00Z2023-10-28T02:00:00Z | |||
Attività di Revenue Cycle Management
| Activity | Descrizione | ||
|---|---|---|---|
| Account Closed | L'attività finale, che indica che il saldo del conto è zero e non sono previste ulteriori attività. Questo dato viene spesso dedotto quando il saldo del conto raggiunge lo zero. | ||
| Perché è importante Segna il completamento con successo del ciclo dei ricavi. Il tempo necessario per raggiungere questo stato è una misura chiave dell'efficienza complessiva del processo. Dove trovare In genere viene dedotto identificando la prima volta che il saldo residuo del conto diventa zero e rimane tale dopo tutti i pagamenti e le rettifiche. Acquisisci Calcolato quando il saldo del conto è uguale a zero per la prima volta dopo la registrazione di tutti gli addebiti e pagamenti. Tipo di evento calculated | |||
| Claim Generated | Segna il momento in cui i singoli addebiti vengono compilati in una richiesta di fatturazione formale (es. UB-04). È un evento generato dal sistema che crea la fattura iniziale. | ||
| Perché è importante Si tratta di una pietra miliare importante che indica la prontezza a fatturare a un pagatore. È l'endpoint per misurare il divario interno tra addebito e fatturazione. Dove trovare Un evento esplicito registrato nei log o nelle tabelle di generazione delle pratiche. Cerca il timestamp di creazione del record della pratica principale associata al contatto. Acquisisci Evento registrato alla creazione del record della richiesta di rimborso. Tipo di evento explicit | |||
| Claim Submitted To Payer | Rappresenta l'invio elettronico o cartaceo della richiesta generata alla compagnia assicurativa o al pagatore. Il sistema deve registrare la data e l'ora di questa trasmissione. | ||
| Perché è importante Questa attività avvia il cronometro del ciclo di pagamento. Analizzare il tempo dall'invio al pagamento è fondamentale per comprendere le performance del pagatore e il Days Sales Outstanding (DSO). Dove trovare Proveniente dal modulo di gestione dei sinistri, che registra gli eventi di trasmissione. Cercate un timestamp di invio o un cambio di stato in 'Inviato' nella cronologia dei sinistri. Acquisisci Evento registrato quando la richiesta viene trasmessa con successo tramite la clearinghouse. Tipo di evento explicit | |||
| Pagamento Registrato | Rappresenta l'applicazione del pagamento ricevuto dal pagatore agli addebiti corrispondenti sul conto del paziente. Si tratta di una transazione finanziaria registrata da un utente o da un processo automatizzato. | ||
| Perché è importante L'efficienza della registrazione dei pagamenti influisce sull'accuratezza della contabilità clienti. Eventuali ritardi in questa fase possono alterare il quadro finanziario e rallentare la fatturazione secondaria. Dove trovare Si trova nelle tabelle delle transazioni di pagamento. Ogni registrazione di pagamento avrà un ID transazione unico e un timestamp associato. Acquisisci Viene registrata una transazione finanziaria quando il pagamento viene applicato all'account. Tipo di evento explicit | |||
| Patient Encounter Created | Contrassegna la creazione di un account paziente per una visita o un servizio specifico. È tipicamente un evento esplicito attivato dal sistema di registrazione o da un feed ADT (Admit/Discharge/Transfer). | ||
| Perché è importante Serve come punto di partenza dell'intero ciclo dei ricavi per un dato evento di fatturazione, consentendo l'analisi della durata totale del processo e dell'accuratezza della registrazione. Dove trovare Proveniente dai log del modulo di registrazione dei pazienti o ADT. Cercate gli eventi di creazione dell'incontro o il primo timestamp associato all'incontro o al numero finanziario. Acquisisci Evento registrato al momento della registrazione o del ricovero del paziente. Tipo di evento explicit | |||
| Charges Captured | Rappresenta l'inserimento di servizi o voci fatturabili nel conto del paziente. Può avvenire automaticamente dai sistemi clinici o tramite inserimento manuale da parte del personale. | ||
| Perché è importante Questa attività è fondamentale per misurare il 'charge lag', ovvero il tempo che intercorre tra l'erogazione del servizio e l'inizio della fatturazione, con un impatto diretto sul flusso di cassa e sull'integrità dei ricavi. Dove trovare Catturato dalle tabelle delle transazioni di addebito, identificato dal timestamp di creazione di ogni singola voce di spesa. In Oracle Health, si trova spesso in tabelle correlate agli addebiti. Acquisisci Voce del log delle transazioni creata per ogni nuovo addebito. Tipo di evento explicit | |||
| Charges Coded | Rappresenta il processo in cui i codificatori medici assegnano codici standardizzati (es. CPT o ICD-10) agli addebiti acquisiti. È spesso tracciato da un cambio di stato dell'addebito o del contatto. | ||
| Perché è importante I ritardi nella codifica sono un bottleneck comune. Il monitoraggio di questa attività aiuta a identificare le inefficienze nel Workflow di codifica e il loro impatto sui tempi di fatturazione. Dove trovare Spesso dedotto da un cambio di stato sul contatto del paziente o sul lotto di addebiti, ad esempio da 'Uncoded' a 'Coded'. È richiesto un timestamp per questo cambio di stato. Acquisisci Dedotto dal cambio di stato del contatto o dell'addebito in 'Coded' o 'Ready for Billing'. Tipo di evento inferred | |||
| Collection Activity Started | Indica che il conto del paziente è stato trasferito a un processo di recupero crediti per mancato pagamento. Viene solitamente rilevato da un cambio della classe finanziaria o dello stato del conto. | ||
| Perché è importante Si tratta di una fase critica per la gestione dei crediti inesigibili. Analizzare cosa porta a questa fase e il suo tasso di successo è vitale per la salute finanziaria. Dove trovare Dedotto da un cambiamento nel campo dello stato del conto in 'Collections' o 'Bad Debt'. Questo cambio di stato deve avere un timestamp associato. Acquisisci Dedotto da un cambio di stato dell'account in 'Collections' o uno stato simile. Tipo di evento inferred | |||
| Conto Rettificato | Rappresenta una rettifica finanziaria apportata al saldo del conto, come un abbuono contrattuale, uno storno o uno sconto. Ogni rettifica è una transazione finanziaria discreta. | ||
| Perché è importante Le rettifiche influiscono direttamente sui ricavi. Analizzarne la frequenza, il tipo e l'importo aiuta a identificare la perdita di ricavi e le imprecisioni di fatturazione. Dove trovare Si trova nelle tabelle delle transazioni finanziarie. Ogni rettifica è registrata come una voce separata con uno specifico codice transazione e timestamp. Acquisisci Viene registrata una transazione finanziaria con uno specifico codice di rettifica. Tipo di evento explicit | |||
| Corrected Claim Submitted | Rappresenta l'invio di una richiesta revisionata o corretta al pagatore, spesso a seguito di un diniego. È identificato da un nuovo invio della pratica con un indicatore di correzione. | ||
| Perché è importante Questa attività è una parte fondamentale del loop di rework per la gestione dei rifiuti. Una frequenza elevata indica problemi nell'accuratezza iniziale della richiesta. Dove trovare Catturato dai log di invio delle pratiche. Cerca un nuovo invio per un contatto esistente, spesso contrassegnato da un codice di rinvio o da un numero di iterazione superiore. Acquisisci Evento registrato per il rinvio di una pratica, spesso identificabile da uno specifico codice del tipo di frequenza della richiesta. Tipo di evento explicit | |||
| Denial Appealed | Un'azione dell'utente o del sistema che indica che una richiesta respinta è in fase di ricorso. Tipicamente viene catturata come un aggiornamento di stato o un'attività specifica creata in una coda di lavoro. | ||
| Perché è importante Questa attività avvia un loop di rework. Analizzare la frequenza e il tasso di successo dei ricorsi è fondamentale per ottimizzare gli sforzi di recupero crediti. Dove trovare Potrebbe trattarsi di un evento esplicito avviato dall'utente o dedotto da un cambio di stato della richiesta, come 'Ricorso presentato' o 'In revisione'. Acquisisci Un cambio di stato o un evento registrato quando un utente avvia il processo di ricorso per una richiesta respinta. Tipo di evento explicit | |||
| Denial Received | Contrassegna l'evento in cui il pagatore ha respinto una richiesta o singole voci, come indicato nell'avviso di rimessa. Questo evento è spesso dedotto dai codici di diniego presenti nei dati di rimessa. | ||
| Perché è importante Il monitoraggio dei rifiuti è essenziale per identificare le cause profonde, come errori di codifica o problemi di idoneità, e migliorare il tasso di 'clean claim'. Dove trovare Dedotto dai dati di rimessa (ERA/835). Quando una pratica o una voce presenta un importo di diniego diverso da zero e un corrispondente codice motivo, questo evento viene attivato. Acquisisci Dedotto dai dati di rimessa contenenti i codici del motivo del diniego (CARC/RARC). Tipo di evento inferred | |||
| Patient Statement Sent | Contrassegna l'evento in cui viene generata e inviata al paziente una fattura per la quota a suo carico. Si tratta di un'azione esplicita registrata dal modulo di fatturazione pazienti. | ||
| Perché è importante Questo avvia la parte del pagamento del paziente nel ciclo delle entrate. Il monitoraggio di questa fase aiuta ad analizzare l'efficacia del recupero crediti dei pazienti. Dove trovare Proveniente dalla fatturazione dei pazienti o dai log di corrispondenza. Il sistema deve registrare la data in cui ogni estratto conto è stato generato o inviato. Acquisisci Evento registrato quando viene generato un estratto conto del paziente e stampato o inviato elettronicamente. Tipo di evento explicit | |||
| Remittance Received | Indica la ricezione di un avviso di rimessa elettronico (ERA) o di una spiegazione dei benefici (EOB) cartacea dal pagatore. Il documento dettaglia quali addebiti sono stati pagati, negati o rettificati. | ||
| Perché è importante Questa è la prima risposta del pagatore ed è fondamentale per comprendere la velocità dei pagamenti e identificare precocemente i trend di rifiuto. Dove trovare Registrato nel modulo di elaborazione delle rimesse. Cerca il timestamp di importazione o creazione del file ERA, come un file di transazione 835, collegato alla pratica. Acquisisci Evento registrato all'importazione e all'elaborazione del file di rimessa del pagatore (ad es. ANSI 835). Tipo di evento explicit | |||
Guide all'Estrazione
Fasi
- Richiesta di accesso al database: ottenga le credenziali di sola lettura per il database Oracle Health Revenue Cycle. Avrà bisogno di accedere agli schemi contenenti i dati dei pazienti, dei contatti, della fatturazione e delle transazioni finanziarie. Questo richiede in genere l'approvazione dei team di sicurezza informatica e di amministrazione del database.
- Identificazione dei nomi degli schemi e delle tabelle: collabori con un amministratore di database o un analista di sistema per confermare i nomi esatti degli schemi e delle tabelle per la Sua istanza Oracle Health. I nomi forniti nella query sono segnaposto comuni e devono essere mappati sul Suo ambiente specifico.
- Installazione di un client SQL: installi un client SQL compatibile, come Oracle SQL Developer o DBeaver, sulla Sua workstation. Questo strumento verrà utilizzato per connettersi al database ed eseguire lo script di estrazione.
- Configurazione della connessione al database: configuri una nuova connessione al database nel Suo client SQL utilizzando l'host, la porta, il nome del servizio e le credenziali fornite. Testi la connessione per assicurarsi che vada a buon fine.
- Personalizzazione della query SQL: copi lo script SQL fornito in una nuova finestra dell'editor di query. Individui i valori segnaposto, come
[START_DATE]e[END_DATE], e li sostituisca con l'intervallo di date desiderato per l'analisi (ad es. '2023-01-01'). Regoli eventuali condizioni di filtro in base alle Sue specifiche esigenze analitiche, come il filtraggio per una determinata classe paziente. - Esecuzione dello script di estrazione: esegua lo script SQL personalizzato. La query è progettata per essere esaustiva e potrebbe richiedere da diversi minuti a alcune ore per essere completata, a seconda dell'intervallo di date e delle dimensioni del database.
- Revisione dei risultati iniziali: al termine della query, esamini le prime centinaia di righe nella griglia dei risultati del client SQL. Verifichi la presenza di errori evidenti, come colonne con soli valori null o formati di dati errati, per assicurarsi che lo script sia stato eseguito correttamente.
- Esportazione dei dati in CSV: esporti l'intero set di risultati in un file CSV. Utilizzi la codifica UTF-8 per evitare problemi con i caratteri speciali. Si assicuri che il file esportato includa una riga di intestazione con i nomi delle colonne specificati negli alias della query (ad es. "BillingEvent", "ActivityName").
- Preparazione per il caricamento: prima di caricare i dati in uno strumento di Process Mining, apra il file CSV per confermarne l'integrità. Verifichi che il formato del timestamp sia coerente e che le intestazioni delle colonne corrispondano esattamente agli attributi richiesti. Il file è ora pronto per il caricamento.
Configurazione
- Intervallo di date: la query utilizza i segnaposto
[START_DATE]e[END_DATE]. È fondamentale definire un intervallo di date specifico e ragionevole per controllare il volume dei dati. Per un'analisi iniziale, si consiglia un intervallo di 3-6 mesi. - Filtraggio: il set di dati iniziale è filtrato in base alla data di registrazione del contatto (
reg_dt_tm) nella sezioneRelevantEncounters. È possibile aggiungere altre clausoleWHEREa questa sezione per restringere l'ambito, ad esempioe.patient_class_code IN ('INPATIENT', 'OUTPATIENT')per concentrarsi su specifici tipi di contatto. - Prestazioni: l'esecuzione di query dirette sul database in un sistema di produzione può influire sulle performance. Si consiglia vivamente di eseguire l'estrazione durante le ore non di punta o su una replica di sola lettura del database di produzione, se disponibile.
- Prerequisiti: questo metodo richiede un account utente del database con privilegi
SELECTsu tutte le tabelle a cui fa riferimento la query. Tali tabelle includono quelle relative a contatti, fatturazione, addebiti, richieste di rimborso, rimesse e transazioni finanziarie. - Mappatura di tabelle e colonne: lo script fornito utilizza nomi comuni e rappresentativi per tabelle e colonne. È necessario convalidarli e mapparli con i nomi effettivi nello schema del database Oracle Health della propria organizzazione. Ad esempio,
FINANCIAL_TRANSACTIONpotrebbe chiamarsiAR_TRANSACTIONSnel Suo sistema.
a Query di Esempio sql
WITH RelevantEncounters AS (
SELECT
e.billing_event_id
FROM ENCOUNTER e
WHERE e.reg_dt_tm BETWEEN TO_DATE('[START_DATE]', 'YYYY-MM-DD') AND TO_DATE('[END_DATE]', 'YYYY-MM-DD')
)
SELECT
e.billing_event_id AS "BillingEvent",
'Patient Encounter Created' AS "ActivityName",
e.reg_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
pyr.payer_name AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
e.total_account_balance AS "OutstandingBalance",
NULL AS "DenialReasonCode"
FROM ENCOUNTER e
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON e.reg_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON e.reg_facility_org_id = org.organization_id
LEFT JOIN PAYER pyr ON e.primary_payer_id = pyr.payer_id
UNION ALL
SELECT
cd.billing_event_id AS "BillingEvent",
'Charges Captured' AS "ActivityName",
cd.charge_entry_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
pyr.payer_name AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
cd.charge_balance AS "OutstandingBalance",
NULL AS "DenialReasonCode"
FROM CHARGE_DETAIL cd
JOIN ENCOUNTER e ON cd.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON cd.entry_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON cd.performing_dept_org_id = org.organization_id
LEFT JOIN PAYER pyr ON e.primary_payer_id = pyr.payer_id
UNION ALL
SELECT
ch.billing_event_id AS "BillingEvent",
'Charges Coded' AS "ActivityName",
ch.coded_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
pyr.payer_name AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
e.total_account_balance AS "OutstandingBalance",
NULL AS "DenialReasonCode"
FROM CODING_HISTORY ch
JOIN ENCOUNTER e ON ch.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON ch.coder_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON p.default_org_id = org.organization_id
LEFT JOIN PAYER pyr ON e.primary_payer_id = pyr.payer_id
UNION ALL
SELECT
cl.billing_event_id AS "BillingEvent",
'Claim Generated' AS "ActivityName",
cl.create_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
pyr.payer_name AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
cl.claim_balance AS "OutstandingBalance",
NULL AS "DenialReasonCode"
FROM CLAIM cl
JOIN ENCOUNTER e ON cl.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON cl.create_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON cl.billing_entity_org_id = org.organization_id
LEFT JOIN PAYER pyr ON cl.payer_id = pyr.payer_id
UNION ALL
SELECT
csl.billing_event_id AS "BillingEvent",
'Claim Submitted To Payer' AS "ActivityName",
csl.submission_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
pyr.payer_name AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
cl.claim_balance AS "OutstandingBalance",
NULL AS "DenialReasonCode"
FROM CLAIM_SUBMISSION_LOG csl
JOIN CLAIM cl ON csl.claim_id = cl.claim_id
JOIN ENCOUNTER e ON cl.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON csl.submit_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON cl.billing_entity_org_id = org.organization_id
LEFT JOIN PAYER pyr ON cl.payer_id = pyr.payer_id
WHERE csl.submission_type = 'INITIAL'
UNION ALL
SELECT
ra.billing_event_id AS "BillingEvent",
'Remittance Received' AS "ActivityName",
ra.remit_received_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
pyr.payer_name AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
e.total_account_balance AS "OutstandingBalance",
NULL AS "DenialReasonCode"
FROM REMITTANCE_ADVICE ra
JOIN ENCOUNTER e ON ra.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON ra.processed_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON ra.processing_org_id = org.organization_id
LEFT JOIN PAYER pyr ON ra.payer_id = pyr.payer_id
UNION ALL
SELECT
ft.billing_event_id AS "BillingEvent",
'Payment Posted' AS "ActivityName",
ft.transaction_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
pyr.payer_name AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
ft.ending_balance AS "OutstandingBalance",
NULL AS "DenialReasonCode"
FROM FINANCIAL_TRANSACTION ft
JOIN ENCOUNTER e ON ft.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON ft.post_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON ft.post_dept_org_id = org.organization_id
LEFT JOIN PAYER pyr ON ft.payer_id = pyr.payer_id
WHERE ft.transaction_type_code = 'PAYMENT'
UNION ALL
SELECT
rd.billing_event_id AS "BillingEvent",
'Denial Received' AS "ActivityName",
ra.remit_received_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
pyr.payer_name AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
e.total_account_balance AS "OutstandingBalance",
rd.denial_reason_code AS "DenialReasonCode"
FROM REMITTANCE_DETAIL rd
JOIN REMITTANCE_ADVICE ra ON rd.remit_id = ra.remit_id
JOIN ENCOUNTER e ON ra.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON ra.processed_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON ra.processing_org_id = org.organization_id
LEFT JOIN PAYER pyr ON ra.payer_id = pyr.payer_id
WHERE rd.denial_reason_code IS NOT NULL
UNION ALL
SELECT
at.billing_event_id AS "BillingEvent",
'Denial Appealed' AS "ActivityName",
at.appeal_filed_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
pyr.payer_name AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
e.total_account_balance AS "OutstandingBalance",
at.related_denial_code AS "DenialReasonCode"
FROM APPEAL_TRACKING at
JOIN ENCOUNTER e ON at.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON at.appeal_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON p.default_org_id = org.organization_id
LEFT JOIN PAYER pyr ON at.payer_id = pyr.payer_id
UNION ALL
SELECT
csl.billing_event_id AS "BillingEvent",
'Corrected Claim Submitted' AS "ActivityName",
csl.submission_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
pyr.payer_name AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
cl.claim_balance AS "OutstandingBalance",
NULL AS "DenialReasonCode"
FROM CLAIM_SUBMISSION_LOG csl
JOIN CLAIM cl ON csl.claim_id = cl.claim_id
JOIN ENCOUNTER e ON cl.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON csl.submit_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON cl.billing_entity_org_id = org.organization_id
LEFT JOIN PAYER pyr ON cl.payer_id = pyr.payer_id
WHERE csl.submission_type = 'CORRECTED'
UNION ALL
SELECT
psl.billing_event_id AS "BillingEvent",
'Patient Statement Sent' AS "ActivityName",
psl.statement_sent_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
NULL AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
psl.statement_balance AS "OutstandingBalance",
NULL AS "DenialReasonCode"
FROM PATIENT_STATEMENT_LOG psl
JOIN ENCOUNTER e ON psl.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON psl.sent_by_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON p.default_org_id = org.organization_id
UNION ALL
SELECT
ash.billing_event_id AS "BillingEvent",
'Collection Activity Started' AS "ActivityName",
ash.status_change_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
NULL AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
ash.account_balance AS "OutstandingBalance",
NULL AS "DenialReasonCode"
FROM ACCOUNT_STATUS_HISTORY ash
JOIN ENCOUNTER e ON ash.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON ash.change_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON ash.responsible_org_id = org.organization_id
WHERE ash.new_status_code = 'COLLECTIONS'
UNION ALL
SELECT
ft.billing_event_id AS "BillingEvent",
'Account Adjusted' AS "ActivityName",
ft.transaction_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
pyr.payer_name AS "PayerName",
e.patient_class_code AS "PatientClass",
ft.transaction_amount AS "AdjustmentAmount",
ft.ending_balance AS "OutstandingBalance",
ft.adjustment_reason_code AS "DenialReasonCode"
FROM FINANCIAL_TRANSACTION ft
JOIN ENCOUNTER e ON ft.encntr_id = e.encntr_id
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON ft.post_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON ft.post_dept_org_id = org.organization_id
LEFT JOIN PAYER pyr ON ft.payer_id = pyr.payer_id
WHERE ft.transaction_type_code = 'ADJUSTMENT'
UNION ALL
SELECT
e.billing_event_id AS "BillingEvent",
'Account Closed' AS "ActivityName",
e.account_closed_dt_tm AS "EventTimestamp",
p.name_full_formatted AS "UserPerformingAction",
org.organization_name AS "BillingDepartment",
NULL AS "PayerName",
e.patient_class_code AS "PatientClass",
NULL AS "AdjustmentAmount",
0 AS "OutstandingBalance",
NULL AS "DenialReasonCode"
FROM ENCOUNTER e
JOIN RelevantEncounters re ON e.billing_event_id = re.billing_event_id
LEFT JOIN PERSONNEL p ON e.closed_by_prsnl_id = p.person_id
LEFT JOIN ORGANIZATION org ON e.reg_facility_org_id = org.organization_id
WHERE e.total_account_balance = 0 AND e.account_closed_dt_tm IS NOT NULL;