Votre modèle de données pour la gestion du cycle de revenus
Votre modèle de données pour la gestion du cycle de revenus
- Attributs recommandés à collecter
- Activités clés à suivre
- Guide d’extraction pour Oracle Health Revenue Cycle
Attributs de la gestion du cycle de revenus
| Nom | Description | ||
|---|---|---|---|
| Événement de facturation BillingEvent | Identifiant unique d’une prestation de service ou d’un produit livré donnant lieu à des frais. Il sert d’identifiant de cas pour le processus de gestion du cycle de revenus. | ||
| Description L’événement de facturation sert d’identifiant de cas principal. Il relie toutes les activités, de la saisie des frais à la clôture du compte, pour un article facturable donné. Chaque événement de facturation correspond à une instance unique du processus de gestion du cycle de revenus et permet d’en suivre toutes les étapes, notamment la transmission de la demande, la comptabilisation du paiement et les éventuels refus ou ajustements. Dans l’analyse par Process Mining, cet attribut est essentiel pour reconstituer le flux de processus de bout en bout. Il permet de visualiser les variantes du processus, de calculer les temps de cycle entre les activités et de repérer les goulots d’étranglement ou les écarts associés à certains événements de facturation. Pourquoi est-ce important ? Cette clé est indispensable pour suivre tout le cycle de vie d’une prestation facturable. Elle permet d’analyser les flux de processus et d’en mesurer les performances. Où trouver ces données Cet identifiant doit être une clé unique présente dans les tables principales de facturation ou de transactions de frais d’Oracle Health Revenue Cycle. Consultez la documentation du système pour repérer la clé primaire des événements de frais. Exemples BEVNT-987654321BEVNT-987654322BEVNT-987654323 | |||
| Horodatage de l’événement EventTimestamp | Date et heure précises auxquelles une activité a été enregistrée dans le système. | ||
| Description Cet attribut fournit l’horodatage de chaque activité et indique le moment exact où elle s’est produite. Il est essentiel pour comprendre le calendrier et l’ordre des événements associés à un événement de facturation donné. L’horodatage de l’événement sert à classer les activités par ordre chronologique, à calculer les durées et les temps de cycle entre les étapes, et à analyser les goulots d’étranglement. Il constitue la base de toutes les métriques temporelles du Process Mining, par exemple pour repérer les retards entre la « Demande transmise » et l’« Avis de paiement reçu ». Pourquoi est-ce important ? Cet horodatage est essentiel pour ordonner les événements, calculer les indicateurs de performance tels que les temps de cycle et les durées, et repérer les goulots d’étranglement du processus. Où trouver ces données Chaque table de transactions ou de journaux d’événements d’Oracle Health Revenue Cycle devrait comporter une colonne d’horodatage indiquant la création de l’enregistrement ou le moment où l’événement s’est produit. Exemples 2023-04-15T09:00:00Z2023-04-18T14:30:00Z2023-05-02T11:25:10Z | |||
| Nom de l’activité ActivityName | Nom de l’étape ou de l’événement qui s’est produit dans le processus de gestion du cycle de revenus. | ||
| Description Cet attribut indique le nom de chaque activité réalisée au cours du cycle de vie d’un événement de facturation. Il peut s’agir, par exemple, de « Frais saisis », de « Demande de remboursement transmise au payeur » ou de « Paiement comptabilisé ». Ces activités constituent les nœuds de la carte de processus découverte. L’analyse de leur séquence et de leur fréquence est au cœur du Process Mining. Cet attribut permet de repérer les parcours les plus fréquents, de détecter les écarts par rapport à la procédure standard et de comprendre le déroulement opérationnel du cycle de revenus. Pourquoi est-ce important ? Il définit les étapes du processus et permet de visualiser la carte de processus et d’analyser les schémas de flux de travail. Où trouver ces données Généralement extrait des journaux d’événements, des enregistrements de changements de statut ou des tables de transactions propres aux différentes étapes du cycle de revenus dans Oracle Health. Exemples Demande de remboursement généréeAvis de paiement reçuRefus contestéCompte clôturé | |||
| Catégorie de patient PatientClass | Classification de la rencontre avec le patient, par exemple hospitalisation ou consultation externe. | ||
| Description Cet attribut classe le type de visite ou de rencontre du patient à l’origine des frais. Les catégories courantes comprennent l’hospitalisation, la consultation externe, les urgences et les visites récurrentes. La catégorie du patient détermine souvent l’ensemble du processus de facturation et de transmission des demandes de remboursement. Les différentes catégories de patients suivent des parcours distincts et sont soumises à des exigences de conformité différentes. L’analyse de cet attribut permet de comprendre ces variations, d’adapter les initiatives d’amélioration et de vérifier que les procédures appropriées sont suivies pour chaque catégorie. Pourquoi est-ce important ? Distingue les flux de processus, par exemple l’hospitalisation et la consultation externe, qui présentent des niveaux de complexité, des délais et des exigences de facturation différents. Où trouver ces données Il s’agit d’un champ standard associé à une rencontre avec un patient ou à un dossier d’admission dans Oracle Health. Exemples HospitalisationConsultation externeUrgenceRécurrent | |||
| Code du motif de refus DenialReasonCode | Code normalisé indiquant le motif pour lequel l’organisme payeur a refusé une demande de remboursement. | ||
| Description Lorsqu’un organisme payeur refuse une demande de remboursement, il fournit un code de motif, par exemple « Service non couvert » ou « Demande en double ». Cet attribut enregistre ce code et sa description. L’analyse des motifs de refus est essentielle pour améliorer le cycle de revenus. Elle permet à l’organisation de repérer les problèmes récurrents, comme les erreurs de codage ou d’admissibilité du patient, puis de prendre des mesures correctives pour éviter de nouveaux refus. Elle a une incidence directe sur le taux de demandes acceptées sans erreur et réduit le coût des reprises. Pourquoi est-ce important ? Indique la cause profonde des refus de demandes de remboursement et permet de cibler les améliorations pour augmenter le taux de demandes acceptées sans erreur et accélérer le recouvrement des revenus. Où trouver ces données Ces informations sont transmises par l’organisme payeur dans l’avis de paiement électronique (fichier ANSI 835) et doivent être enregistrées dans les tables des demandes de remboursement ou des avis de paiement d’Oracle Health. Exemples CO-16 : des informations nécessaires au traitement de la demande de remboursement ou du service sont manquantes.PR-96 : frais non couverts.CO-18 : demande de remboursement ou service en double. | |||
| Montant de l’ajustement AdjustmentAmount | Valeur monétaire des ajustements apportés au solde du compte. | ||
| Description Cet attribut indique le montant de tout ajustement financier appliqué à l’opération de facturation, par exemple une réduction contractuelle, un abandon de créance ou une correction. Les ajustements diminuent directement les revenus attendus d’une facturation. Le Dashboard « Impact des ajustements de compte » s’appuie largement sur cet attribut. L’analyse des montants ajustés et des motifs associés permet de repérer les pertes de revenus, les problèmes de gestion des contrats ou les erreurs lors de la saisie initiale des frais. Il s’agit d’une métrique essentielle pour évaluer la santé financière. Pourquoi est-ce important ? Mesure les pertes de revenus liées aux abandons de créances ou aux corrections, afin d’en repérer les causes profondes et d’y remédier. Où trouver ces données Figure dans les tables de transactions financières qui enregistrent les ajustements ou les abandons de créances sur le compte d’un patient. Exemples -50.25-120.0025.00 | |||
| Nom du payeur PayerName | Nom de la compagnie d’assurance ou du tiers payeur responsable du paiement. | ||
| Description Cet attribut identifie l’entité à laquelle la prestation est facturée, par exemple une compagnie d’assurance ou un programme public comme Medicare. Les informations sur le payeur sont essentielles à l’analyse du cycle de revenus. L’analyse du processus par payeur peut révéler des écarts importants dans les délais de paiement, les taux de refus et les taux de réussite des recours. Elle aide à repérer les payeurs à l’origine de retards ou de pertes de revenus et contribue à la gestion des contrats et des relations avec les payeurs. Pourquoi est-ce important ? Permet de segmenter le processus par payeur et de comparer les comportements, les taux de refus et la rapidité des paiements, des éléments importants pour les résultats financiers. Où trouver ces données Ces informations sont stockées dans les dossiers de facturation ou d’assurance du patient dans Oracle Health Revenue Cycle. Exemples AetnaBlue Cross Blue ShieldUnitedHealthcareMedicareCigna | |||
| Service de facturation BillingDepartment | Service ou équipe fonctionnelle responsable de l’activité. | ||
| Description Cet attribut précise le service qui a réalisé l’activité, par exemple « Saisie des frais », « Codage » ou « Recouvrement ». Il situe le flux de processus dans son contexte organisationnel. L’analyse du processus par service est essentielle pour comprendre les transferts entre équipes et repérer les inefficacités transversales. Elle alimente le Dashboard « Charge de travail du service de facturation », qui permet d’agréger les activités et les indicateurs de performance par service. Pourquoi est-ce important ? Associe les activités aux unités organisationnelles, ce qui est essentiel pour analyser les transferts entre services, la charge de travail et les performances des équipes. Où trouver ces données Ces informations peuvent être stockées directement dans les données de profil utilisateur d’Oracle Health ou déduites de l’utilisateur ou du type d’activité. Exemples Accueil des patientsCodageFacturationRecouvrement | |||
| Solde impayé OutstandingBalance | Montant restant à payer pour l’opération de facturation à un moment donné. | ||
| Description Cet attribut indique le montant restant dû pour une opération de facturation après prise en compte de tous les paiements et ajustements. Il correspond aux créances clients encore ouvertes pour les frais concernés. Cet attribut est essentiel au Dashboard « Ancienneté des soldes impayés ». Son analyse dans le temps permet de suivre la vitesse d’encaissement, d’évaluer l’efficacité des démarches de recouvrement et de calculer des KPI financiers clés, comme le délai moyen de paiement client. Pourquoi est-ce important ? Suit les créances clients en cours pour chaque cas, une information essentielle à la gestion de la trésorerie et à l’analyse de l’efficacité du recouvrement. Où trouver ces données Cette valeur est généralement calculée en additionnant toutes les transactions financières (frais, paiements et ajustements) associées à une opération de facturation. Elle peut aussi figurer dans un champ d’une table récapitulative des comptes. Exemples 75.000.00550.80 | |||
| Utilisateur UserPerformingAction | Identifiant ou nom de l’utilisateur ayant réalisé l’activité. | ||
| Description Cet attribut identifie l’employé ou le compte système automatisé responsable d’une activité précise du processus. Il est essentiel pour comprendre la répartition de la charge de travail, évaluer la performance des ressources et repérer les besoins de formation. Il permet de filtrer la carte de processus par utilisateur ou par équipe, de comparer les performances des différentes ressources et d’analyser la charge de travail dans le Dashboard « Charge de travail du service de facturation ». Il peut aider à repérer les personnes les plus performantes ou celles qui ont besoin d’assistance ou de formation supplémentaire. Pourquoi est-ce important ? Relie les activités du processus à des utilisateurs ou à des équipes, ce qui permet d’analyser la charge de travail, de comparer les performances et de repérer les besoins de formation. Où trouver ces données Les champs d’identifiant utilisateur, tels que « CREATED_BY » et « USER_ID », figurent généralement dans les tables de transactions des différents modules Oracle Health. Exemples j.doeasmithBillingBot_AUTOk.williams | |||
| Correspond à une reprise IsRework | Indicateur signalant les activités qui correspondent à une reprise ou à un effort répété. | ||
| Description Cet attribut calculé signale les activités qui s’écartent du « parcours nominal » et correspondent à des reprises. Par exemple, « Demande de remboursement corrigée et soumise » ou « Refus contesté » sont des activités qui n’auraient pas lieu si le processus se déroulait correctement dès la première fois. Repérer et quantifier les reprises est un objectif important du Process Mining. Cet indicateur facilite le filtrage et l’analyse de toutes les boucles de reprise, afin d’en mesurer la fréquence, le coût et les causes. Il est essentiel pour comprendre le coût réel de la qualité dans le cycle de revenus. Pourquoi est-ce important ? Permet de mesurer la fréquence et l’incidence des boucles de reprise, et met en évidence les inefficacités du processus ainsi que le coût d’une qualité insuffisante. Où trouver ces données Il s’agit d’un attribut dérivé. Il est calculé lors de la transformation des données, à partir de règles métier qui signalent certains noms d’activité comme des reprises. Exemples truefalse | |||
| Dernière mise à jour des données LastDataUpdate | Horodatage de la dernière actualisation ou extraction des données associées à cet événement. | ||
| Description Cet attribut indique la date de la dernière mise à jour du jeu de données. Il précise l’actualité des données analysées, un élément important pour évaluer la pertinence temporelle des résultats de l’analyse par Process Mining. Vous pouvez consulter cet attribut pour vérifier que vous disposez des informations les plus récentes sur le processus. Il permet de savoir de quand datent les données et contribue à la gouvernance et à l’assurance qualité des données. Pourquoi est-ce important ? Indique l’actualité des données et permet de s’assurer que les analyses et les décisions reposent sur des informations à jour. Où trouver ces données Il s’agit d’un champ de métadonnées généralement généré et renseigné lors du processus ETL qui charge les données dans la plateforme de Process Mining. Exemples 2023-10-27T02:00:00Z2023-10-28T02:00:00Z | |||
| Est automatisé IsAutomated | Indicateur précisant si l’activité a été effectuée par un système automatisé ou par un utilisateur. | ||
| Description Cet attribut booléen distingue les activités exécutées automatiquement par un logiciel, comme un robot ou un traitement par lots du système, de celles effectuées manuellement par un utilisateur. Par exemple, « Génération de la demande de remboursement » peut être une étape automatisée, tandis que « Contestation du refus » est probablement effectuée manuellement. L’analyse de cet attribut permet de comprendre le degré d’automatisation du processus et son incidence sur l’efficacité et le taux d’erreur. Elle permet de comparer les parcours automatisés aux parcours manuels et de repérer d’autres possibilités d’automatisation. Pourquoi est-ce important ? Distingue les activités effectuées par une personne de celles prises en charge par le système, ce qui est essentiel pour évaluer l’efficacité de l’automatisation et repérer de nouvelles possibilités. Où trouver ces données Cet attribut est généralement déduit de l’attribut UserPerformingAction. Par exemple, les activités effectuées par des identifiants tels que « SYSTEM » ou « RPA_BOT » sont signalées comme automatisées. Exemples truefalse | |||
| Heure de fin de l’événement EventEndTime | Horodatage marquant la fin d’une activité, s’il est disponible. | ||
| Description Alors que StartTime indique le début d’une activité, EventEndTime en marque la fin. Toutes les activités n’ont pas d’heure de fin distincte, car beaucoup sont instantanées. Ce champ est toutefois très utile pour les activités qui durent, comme « Refus contesté », dont le traitement peut prendre du temps. Cet attribut permet de calculer plus précisément la durée de traitement de chaque activité. Il aide à distinguer le temps d’attente, c’est-à-dire le temps entre les activités, du temps de traitement, passé à réaliser une activité. Pourquoi est-ce important ? Permet de calculer directement la durée d’une activité et de distinguer le temps de traitement du temps d’attente. Où trouver ces données Certaines tables de transactions d’Oracle Health Revenue Cycle peuvent contenir les horodatages de début et de fin de tâches spécifiques de longue durée. Exemples 2023-04-15T09:05:14Z2023-04-18T16:00:00Z | |||
| Identifiant de la demande de remboursement ClaimId | Identifiant unique de la demande de remboursement transmise à un organisme payeur. | ||
| Description Cet attribut correspond à l’identifiant unique attribué à une demande de remboursement créée et envoyée à un organisme payeur. Une même opération de facturation peut donner lieu à une ou plusieurs demandes au cours de son cycle de vie, par exemple lorsqu’une correction est nécessaire. L’identifiant de la demande de remboursement permet de suivre un envoi précis à l’organisme payeur et de le relier directement à sa réponse, qu’il s’agisse d’un paiement ou d’un refus. Il offre un suivi plus détaillé que celui de l’opération de facturation dans son ensemble. Pourquoi est-ce important ? Fournit un identifiant précis pour suivre le traitement d’une demande de remboursement auprès d’un organisme payeur, avec un niveau de détail supérieur à celui de l’opération de facturation globale. Où trouver ces données Cet identifiant est généré par Oracle Health lors de la création de la demande et enregistré dans la table principale des demandes de remboursement. Exemples CLM-2023-55489CLM-2023-55490CLM-2023-55491-C1 | |||
| Identifiant du patient PatientId | Identifiant unique du patient associé à l’opération de facturation. | ||
| Description Cet attribut est l’identifiant unique du patient ayant reçu le service, souvent appelé numéro de dossier médical (MRN). Il relie la transaction financière à une personne précise. Même s’il ne s’agit pas de l’identifiant de cas du processus, l’identifiant du patient permet de regrouper toutes les opérations de facturation d’un même patient et de comprendre l’ensemble de son parcours financier. Il permet également de segmenter les données selon les caractéristiques démographiques ou les antécédents du patient, lorsqu’il est associé aux données de référence des patients. Pourquoi est-ce important ? Relie les événements financiers à un patient précis et permet d’analyser les données par patient et de regrouper l’ensemble de ses opérations de facturation. Où trouver ces données Cet identifiant est un élément central du dossier de référence du patient. Il figure dans toutes les tables de transactions associées, notamment celles des frais, des demandes de remboursement et des paiements. Exemples MRN-1002345MRN-1002346MRN-1002347 | |||
| Montant facturé ChargeAmount | Valeur monétaire brute du service ou du produit facturé. | ||
| Description Cet attribut représente le montant initial facturé pour un service, avant toute remise, réduction contractuelle ou tout paiement. Il constitue la valeur financière de départ de l’opération de facturation. Le suivi du montant facturé est essentiel à l’analyse financière. Il permet notamment de calculer la valeur totale des services rendus et de comprendre l’incidence financière des ajustements ou des abandons de créances ultérieurs. Il sert de référence pour mesurer les revenus effectivement perçus. Pourquoi est-ce important ? Détermine la valeur financière initiale du cas, indispensable à toutes les analyses financières et évaluations d’impact ultérieures. Où trouver ces données Se trouve dans les tables de détail des frais ou des transactions de facturation d’Oracle Health. Exemples 150.001250.7585.50 | |||
| Motif de contestation DisputeReason | Motif invoqué par le client ou le patient pour contester une facture ou des frais. | ||
| Description Cet attribut indique pourquoi un patient ou une autre partie responsable a contesté une facture. Les motifs peuvent être des frais incorrects, des services non rendus ou des problèmes de traitement par l’assurance. Ces informations sont essentielles au Dashboard « Indicateurs de résolution des contestations de factures ». Comprendre les motifs de contestation les plus fréquents permet de repérer les problèmes systémiques liés à la saisie des frais, au codage ou à la facturation. En corrigeant ces causes profondes, il est possible de réduire sensiblement le taux de contestation et la charge administrative nécessaire à leur résolution. Pourquoi est-ce important ? Explique pourquoi les factures sont contestées et met en évidence les problèmes de précision ou de clarté de la facturation à corriger. Où trouver ces données Ces informations sont probablement enregistrées dans un module de gestion des cas ou de service client d’Oracle Health, associé au compte du patient. Exemples Service facturé par erreurFrais facturés en doubleFacturation incorrecte à l’assuranceService non rendu | |||
| Système source SourceSystem | Système à partir duquel les données d’événement ont été extraites. | ||
| Description Cet attribut identifie l’application ou le module source des données. Pour ce processus, il s’agira généralement d’Oracle Health Revenue Cycle, mais il peut aussi désigner différents modules si les données proviennent de plusieurs sources du système. Cette information est utile pour la gouvernance des données et le dépannage. Elle permet de vérifier leur traçabilité et s’avère importante lorsque plusieurs systèmes contribuent à un même processus de bout en bout. Pourquoi est-ce important ? Cet attribut précise l’origine des données, ce qui est essentiel pour leur validation et leur gouvernance, ainsi que pour comprendre les variations du processus susceptibles de dépendre du système. Où trouver ces données Il s’agit souvent d’une valeur statique ajoutée lors du processus d’extraction, de transformation et de chargement des données (ETL) afin d’indiquer l’origine du jeu de données. Exemples OracleHealth-RCMOracleHealth-CernerOH-RevCycle-PROD | |||
Activités de gestion du cycle de revenus
| Activité | Description | ||
|---|---|---|---|
| Compte clôturé | Dernière activité, indiquant que le solde du compte est nul et qu’aucune autre opération n’est attendue. Elle est souvent déduite lorsque le solde du compte atteint zéro. | ||
| Pourquoi est-ce important ? Cette étape marque la fin du cycle de revenus. Le temps nécessaire pour y parvenir est un indicateur important de l’efficacité globale du processus. Où trouver ces données Cette étape est généralement déduite en repérant le premier moment où le solde restant dû du compte devient nul et le reste après la comptabilisation de tous les paiements et ajustements. Données à recueillir Calculé lorsque le solde du compte atteint zéro pour la première fois, après la comptabilisation de tous les frais et paiements. Type d’événement calculated | |||
| Demande de remboursement générée | Indique que les frais individuels ont été regroupés dans une demande de remboursement officielle, telle qu’un formulaire UB-04 ou CMS-1500. Cet événement généré par le système correspond à la création de la facture initiale. | ||
| Pourquoi est-ce important ? Cette étape importante indique que le dossier est prêt à être facturé à un payeur. Elle marque la fin du délai interne entre la saisie des frais et la facturation. Où trouver ces données Événement explicite enregistré dans les journaux ou les tables de génération des demandes de remboursement. Recherchez l’horodatage de création de la demande principale associée à la rencontre. Données à recueillir Événement enregistré lors de la création de la demande de remboursement. Type d’événement explicit | |||
| Demande de remboursement transmise au payeur | Correspond à la transmission électronique ou papier de la demande de remboursement générée à la compagnie d’assurance ou au payeur. Le système doit enregistrer la date et l’heure de cette transmission. | ||
| Pourquoi est-ce important ? Cette activité marque le début du cycle de paiement. L’analyse du délai entre la transmission et le paiement est essentielle pour évaluer les performances du payeur et le délai moyen de paiement client. Où trouver ces données Les données proviennent du module de gestion des demandes de remboursement, qui enregistre les transmissions. Recherchez l’horodatage de transmission ou le passage au statut « Submitted » dans l’historique de la demande. Données à recueillir Événement enregistré lorsque la demande de remboursement est transmise avec succès par l’intermédiaire de la chambre de compensation. Type d’événement explicit | |||
| Paiement comptabilisé | Correspond à l’affectation du paiement reçu du payeur aux frais correspondants dans le compte du patient. Il s’agit d’une transaction financière enregistrée par un utilisateur ou par un processus automatisé. | ||
| Pourquoi est-ce important ? L’efficacité de la comptabilisation des paiements influe sur l’exactitude des comptes clients. Les retards peuvent fausser la situation financière et retarder la facturation secondaire. Où trouver ces données Les données figurent dans les tables de transactions de paiement. Chaque comptabilisation de paiement possède un identifiant de transaction unique et un horodatage associé. Données à recueillir Une transaction financière est enregistrée lorsque le paiement est affecté au compte. Type d’événement explicit | |||
| Rencontre avec le patient créée | Indique la création d’un compte patient pour une visite ou une prestation donnée. Il s’agit généralement d’un événement explicite déclenché par le système d’inscription ou par un flux Admit/Discharge/Transfer (ADT). | ||
| Pourquoi est-ce important ? Cet événement marque le début du cycle de revenus associé à une opération de facturation. Il permet d’analyser la durée totale du processus et la précision de l’inscription. Où trouver ces données Les données proviennent des journaux du module d’inscription des patients ou du module ADT. Recherchez les événements de création d’une rencontre ou l’horodatage le plus ancien associé à la rencontre ou au numéro financier. Données à recueillir Événement enregistré lors de l’inscription ou de l’admission du patient. Type d’événement explicit | |||
| Avis de paiement reçu | Indique la réception d’un avis électronique de paiement (ERA) ou d’une explication des prestations (EOB) papier du payeur. Ce document précise quels frais ont été payés, refusés ou ajustés. | ||
| Pourquoi est-ce important ? Il s’agit de la première réponse du payeur. Elle est essentielle pour comprendre la rapidité des paiements et repérer rapidement les tendances en matière de refus. Où trouver ces données Enregistré dans le module de traitement des avis de paiement. Recherchez l’horodatage d’importation ou de création du fichier ERA, par exemple un fichier de transaction 835, associé à la demande. Données à recueillir Événement enregistré lors de l’importation et du traitement du fichier d’avis de paiement du payeur (par exemple, ANSI 835). Type d’événement explicit | |||
| Compte ajusté | Correspond à un ajustement financier du solde du compte, par exemple une remise contractuelle, une créance passée en perte ou une réduction. Chaque ajustement constitue une transaction financière distincte. | ||
| Pourquoi est-ce important ? Les ajustements ont une incidence directe sur les revenus. L’analyse de leur fréquence, de leur type et de leur montant permet de repérer les pertes de revenus et les erreurs de facturation. Où trouver ces données Les données figurent dans les tables de transactions financières. Chaque ajustement est enregistré sur une ligne distincte, avec un code de transaction et un horodatage spécifiques. Données à recueillir Une transaction financière est enregistrée avec un code d’ajustement spécifique. Type d’événement explicit | |||
| Demande de remboursement corrigée transmise | Correspond à la transmission au payeur d’une demande de remboursement révisée ou corrigée, souvent à la suite d’un refus ou d’une demande d’informations supplémentaires. Elle est repérée par une nouvelle transmission comportant un indicateur de correction. | ||
| Pourquoi est-ce important ? Cette activité constitue une étape importante de la boucle de reprise liée à la gestion des refus. Une fréquence élevée signale des problèmes d’exactitude des demandes initiales. Où trouver ces données Les données proviennent des journaux de transmission des demandes. Recherchez une nouvelle transmission pour une rencontre existante, souvent signalée par un code de retransmission ou un numéro d’itération supérieur. Données à recueillir Événement enregistré lors de la retransmission d’une demande, souvent repérable grâce à un code spécifique de type de fréquence de la demande. Type d’événement explicit | |||
| Frais codés | Correspond au codage des frais saisis par des codeurs médicaux, qui leur attribuent des codes normalisés tels que CPT ou ICD-10. Cette étape est souvent suivie au moyen d’un changement de statut des frais ou de la rencontre. | ||
| Pourquoi est-ce important ? Les retards de codage constituent un goulot d’étranglement fréquent. Le suivi de cette activité permet de repérer les inefficacités du flux de travail de codage et d’en mesurer l’incidence sur les délais de facturation. Où trouver ces données Souvent déduit d’un changement de statut de la rencontre avec le patient ou du lot de frais, par exemple de « Uncoded » à « Coded ». L’horodatage de ce changement est nécessaire. Données à recueillir Déduit du passage du statut de la rencontre ou des frais à « Coded » ou « Ready for Billing ». Type d’événement inferred | |||
| Frais saisis | Correspond à la saisie, dans le compte du patient, des prestations ou des articles facturables. Cette opération peut être effectuée automatiquement par les systèmes cliniques ou saisie manuellement par le personnel. | ||
| Pourquoi est-ce important ? Cette activité est essentielle pour mesurer le délai de saisie des frais, c’est-à-dire le temps écoulé entre la prestation de service et le début de la facturation. Ce délai a une incidence directe sur la trésorerie et l’exactitude des revenus. Où trouver ces données Les données proviennent des tables de transactions de frais. Chaque ligne de frais est repérée à partir de son horodatage de création. Dans Oracle Health, ces informations figurent souvent dans les tables liées aux frais. Données à recueillir Entrée de journal de transaction créée pour chaque nouveau frais. Type d’événement explicit | |||
| Recouvrement lancé | Indique que le compte du patient a été transféré au recouvrement en raison d’un défaut de paiement. Cette étape est généralement repérée par un changement de catégorie financière ou de statut du compte. | ||
| Pourquoi est-ce important ? Cette étape est importante pour gérer les créances irrécouvrables. Il est essentiel d’analyser les facteurs qui y conduisent et le taux de réussite du recouvrement. Où trouver ces données Déduit du passage du statut du compte à « Collections » ou « Bad Debt ». Ce changement de statut doit être associé à un horodatage. Données à recueillir Déduit du passage du statut du compte à « Collections » ou à un état similaire. Type d’événement inferred | |||
| Refus contesté | Action d’un utilisateur ou du système indiquant qu’un refus de demande de remboursement fait l’objet d’un recours. Cette action est généralement enregistrée sous la forme d’une mise à jour de statut ou d’une tâche créée dans une file de travail. | ||
| Pourquoi est-ce important ? Cette activité lance une boucle de reprise. L’analyse de la fréquence des recours et de leur taux de réussite est essentielle pour optimiser le recouvrement des revenus. Où trouver ces données Il peut s’agir d’un événement déclenché explicitement par un utilisateur ou déduit d’un changement de statut de la demande, par exemple « Appealed » ou « In Review ». Données à recueillir Changement de statut ou événement enregistré lorsqu’un utilisateur lance le recours contre le refus d’une demande. Type d’événement explicit | |||
| Refus reçu | Indique que le payeur a rejeté une demande de remboursement ou certaines lignes de frais, comme le précise l’avis de paiement. Cet événement est souvent déduit des codes de refus présents dans les données de paiement. | ||
| Pourquoi est-ce important ? Le suivi des refus est essentiel pour en identifier les causes profondes, comme les erreurs de codage ou les problèmes d’admissibilité, et améliorer le taux de demandes acceptées sans correction. Où trouver ces données Déduit des données de l’avis de paiement (ERA/835). Cet événement est déclenché lorsqu’un refus d’un montant non nul et un code de motif correspondant sont associés à une demande ou à une ligne de frais. Données à recueillir Déduit des données d’avis de paiement contenant des codes de motif de refus (CARC/RARC). Type d’événement inferred | |||
| Relevé envoyé au patient | Indique qu’une facture correspondant au solde restant à la charge du patient a été générée et envoyée. Cette action explicite est enregistrée par le module de facturation des patients. | ||
| Pourquoi est-ce important ? Cette étape lance la partie du cycle de revenus consacrée aux paiements des patients. Son suivi permet d’évaluer l’efficacité du recouvrement auprès des patients. Où trouver ces données Les données proviennent des journaux de facturation des patients ou de correspondance. Le système doit enregistrer la date de génération ou d’envoi de chaque relevé. Données à recueillir Événement enregistré lorsqu’un relevé patient est généré, puis imprimé ou envoyé par voie électronique. Type d’événement explicit | |||
Guides d’extraction
Étapes
- Demandez l’accès à la base de données : obtenez des identifiants en lecture seule pour la base de données Oracle Health Revenue Cycle. Vous devez pouvoir accéder aux schémas contenant les données sur les patients, les rencontres, la facturation et les transactions financières. L’accès nécessite généralement l’approbation des équipes de sécurité informatique et d’administration des bases de données.
- Repérez les noms des schémas et des tables : demandez à un administrateur de base de données ou à un analyste système de confirmer les noms exacts des schémas et des tables de votre instance Oracle Health. Les noms utilisés dans la requête sont des exemples courants et doivent être adaptés à votre environnement.
- Installez un client SQL : installez sur votre poste de travail un client SQL compatible, comme Oracle SQL Developer ou DBeaver. Il vous permettra de vous connecter à la base de données et d’exécuter le script d’extraction.
- Établissez la connexion à la base de données : configurez une nouvelle connexion dans votre client SQL à l’aide de l’hôte, du port, du nom de service et des identifiants fournis. Testez la connexion pour vérifier qu’elle fonctionne.
- Adaptez la requête SQL : copiez le script SQL fourni dans une nouvelle fenêtre de l’éditeur de requêtes. Repérez les valeurs de remplacement, comme
[START_DATE]et[END_DATE], puis indiquez la période souhaitée pour l’analyse, par exemple « 2023-01-01 ». Ajustez les conditions de filtrage selon vos besoins, par exemple pour sélectionner une catégorie de patients précise. - Exécutez le script d’extraction : lancez le script SQL adapté. La requête est conçue pour couvrir un large périmètre et son exécution peut prendre de quelques minutes à plusieurs heures, selon la période choisie et la taille de la base de données.
- Examinez les premiers résultats : une fois la requête terminée, vérifiez les premières centaines de lignes dans la grille de résultats de votre client SQL. Repérez les erreurs évidentes, comme des colonnes entièrement vides ou des formats de données incorrects, afin de confirmer que le script s’est exécuté correctement.
- Exportez les données au format CSV : exportez l’ensemble des résultats dans un fichier CSV. Utilisez l’encodage UTF-8 pour éviter les problèmes de caractères. Vérifiez que le fichier comporte une ligne d’en-tête avec les noms de colonnes définis dans les alias de la requête, par exemple « BillingEvent » et « ActivityName ».
- Préparez l’importation : avant d’importer le fichier dans un outil de Process Mining, ouvrez-le pour vérifier son intégrité. Assurez-vous que le format des horodatages est cohérent et que les en-têtes de colonnes correspondent exactement aux attributs requis. Le fichier est alors prêt à être importé.
Configuration
- Période : la requête utilise les paramètres
[START_DATE]et[END_DATE]. Définissez une période précise et raisonnable pour maîtriser le volume de données. Pour une première analyse, une période de trois à six mois est recommandée. - Filtrage : le jeu de données initial est filtré selon la date d’enregistrement de la rencontre (
reg_dt_tm) dans la sectionRelevantEncounters. Vous pouvez ajouter d’autres clausesWHEREà cette section pour restreindre le périmètre, par exemplee.patient_class_code IN ('INPATIENT', 'OUTPATIENT')afin de sélectionner certains types de rencontres. - Performances : les requêtes directes sur une base de données de production peuvent nuire aux performances. Il est fortement recommandé d’effectuer l’extraction en heures creuses ou, si possible, sur une réplique en lecture seule de la base de production.
- Prérequis : cette méthode nécessite un compte utilisateur de base de données disposant des privilèges
SELECTsur toutes les tables mentionnées dans la requête. Il s’agit notamment des tables relatives aux rencontres, à la facturation, aux frais, aux demandes de remboursement, aux relevés de paiement et aux transactions financières. - Correspondance des tables et des colonnes : le script fourni utilise des noms courants et représentatifs pour les tables et les colonnes. Vous devez les vérifier et les faire correspondre aux noms réels du schéma Oracle Health de votre organisation. Par exemple,
FINANCIAL_TRANSACTIONpeut s’appelerAR_TRANSACTIONSdans votre système.
Exemple de requête 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; Prêt à commencer ?
Appuyez-vous sur ce modèle pour préparer vos données. Commencez dès aujourd’hui à améliorer votre processus de gestion du cycle de revenus.
Optimisez votre cycle de revenus pour accélérer les paiements
Éliminez les goulots d’étranglement, réduisez le temps de cycle de 30 % et améliorez votre trésorerie.
Aucune carte bancaire requise. Configuration en quelques minutes.