Votre modèle de données du Parcours Patient
Votre modèle de données du Parcours Patient
- `Attributs` recommandés pour le contexte clinique
- Jalons clés du processus pour le suivi
- Guide d'extraction spécifique pour Epic EHR
Attributs du parcours patient
| Nom | Descriptionn | ||
|---|---|---|---|
| Épisode patient PatientEpisodeId | L'identifiant unique de la rencontre patient spécifique ou de l'épisode de soins. | ||
| Descriptionn L' L'analyse de cet Pourquoi est-ce important ? : C'est l'élément clé pour lier des événements disparates en un seul cas de processus. Source des données : Table Epic Clarity : PAT_ENC, Colonne : PAT_ENC_CSN_ID Exemples 200459112200459113200459114200459115 | |||
| Horodatage de l'événement EventTimestamp | La date et l'heure exactes de l'activité. | ||
| Descriptionn Cet La précision de ce champ est indispensable pour identifier les Pourquoi est-ce important ? : Il permet le calcul des temps de cycle, des délais et de l'ordonnancement des processus. Source des données : Diverses colonnes Exemples 2023-10-15T08:30:00Z2023-10-15T09:15:22Z2023-10-16T14:20:00Z | |||
| Nom de l'activité ActivityName | L'action clinique ou administrative spécifique effectuée. | ||
| Descriptionn Cet Dans l'analyse, ce champ forme les nœuds de la cartographie des processus. Il est dérivé de divers codes de transaction et statuts d'ordre dans l'EHR pour créer un Pourquoi est-ce important ? : Il définit les étapes du processus et facilite la visualisation du Source des données : Dérivé des tables CLARITY_ADT, ORDER_PROC et ORDER_MED. Exemples Triage terminéTest diagnostique commandéPatient sortiMédicament administré | |||
| Dernière mise à jour des données LastDataUpdate | L'horodatage de l'extraction ou de la dernière actualisation des données. | ||
| Descriptionn Cet Les analystes l'utilisent pour déterminer si le Pourquoi est-ce important ? : Il aide à évaluer l'actualité et la fiabilité des Source des données : Horodatage du système ETL. Exemples 2023-10-27T23:59:59Z2023-10-28T06:00:00Z | |||
| Système source SourceSystem | Le système d'enregistrement des `data`, généralement Epic EHR. | ||
| Descriptionn Cet En analyse, il assure la traçabilité des Pourquoi est-ce important ? : Il offre une traçabilité et un contexte pour l'origine des Source des données : Codé en dur ou dérivé de la configuration de la chaîne de connexion. Exemples Epic EHREpic ClarityEpic Caboodle | |||
| Code de diagnostic principal PrimaryDiagnosisCode | Le code ICD-10 ou interne représentant le diagnostic principal. | ||
| Descriptionn Cet Il est utilisé pour regrouper les Pourquoi est-ce important ? : Il regroupe les cas par similarité clinique pour l'analyse des protocoles. Source des données : Table Epic Clarity : PAT_ENC_DX, Colonne : DX_ID Exemples J18.9I21.9E11.9 | |||
| Heure de fin de l'événement EventEndTime | Le `horodatage` lorsque l'activité a été terminée. | ||
| Descriptionn Bien que de nombreux Il permet le calcul du temps de traitement actif par rapport au temps d'attente. Cela est particulièrement pertinent pour le Pourquoi est-ce important ? : Il permet le calcul de la durée de l'activité et de l'utilisation des ressources. Source des données : Consultez la documentation Epic EHR pour les colonnes d'heure de fin spécifiques dans ORDER_PROC. Exemples 2023-10-15T09:45:00Z2023-10-16T15:00:00Z | |||
| ID du fournisseur ProviderId | L'identifiant de l'utilisateur ou du collaborateur ayant effectué l'action.u clinicien qui a effectué l'activité. | ||
| Descriptionn Cet Il est associé à l' Pourquoi est-ce important ? : Il permet l'analyse de la variation de performance et de charge de travail parmi le personnel. Source des données : Table Epic Clarity : CLARITY_EMP, Colonne : USER_ID Exemples EMP10023DOC5592SYSTEM | |||
| Indicateur de réadmission ReadmissionFlag | Indique si le patient est revenu de manière inattendue dans les 30 jours. | ||
| Descriptionn Cet En analyse, cela sert de variable de résultat majeure. Les parcours de processus menant à un indicateur 'True' sont analysés pour trouver les causes profondes dans la phase de planification des sorties. Pourquoi est-ce important ? : Il identifie les processus de sortie échoués et les problèmes de qualité des soins. Source des données : Calculé via SQL en anticipant les futures rencontres pour le même MRN. Exemples truefaux | |||
| Modalité de sortie DischargeDisposition | La destination du patient à sa sortie (Domicile, Établissement de soins de suite et de réadaptation (SSR), Décédé). | ||
| Descriptionn Cet Ceci est impératif pour le Pourquoi est-ce important ? : Il contextualise le résultat du processus de soins. Source des données : Table Epic Clarity : PAT_ENC, Colonne : DISCH_DISP_C Exemples AccueilÉtablissement de soins de suite et de réadaptation (SSR)Soins à domicile | |||
| MRN du patient PatientMrn | Le numéro de dossier médical identifiant le patient. | ||
| Descriptionn Le MRN est l'identifiant unique du patient au sein du système de santé, distinct de l'ID d'épisode. Il permet de suivre l'historique d'un patient à travers plusieurs visites. Cet Pourquoi est-ce important ? : Il est indispensable pour identifier les visites répétées et analyser l'historique des patients. Source des données : Table Epic Clarity : PATIENT, Colonne : PAT_ID ou PAT_MRN_ID Exemples MRN-882910MRN-112003MRN-554211 | |||
| Niveau d'acuité du triage TriageAcuityLevel | Le score de gravité attribué au patient lors du triage. | ||
| Descriptionn Cet Il permet la segmentation dans le Pourquoi est-ce important ? : Il segmente le processus en fonction de l'urgence et de la consommation de ressources attendue. Source des données : Consultez la documentation Epic EHR pour le champ Acuity dans les journaux des urgences. Exemples 1 - Resuscitation2 - Emergent3 - Urgent | |||
| Nom du service DepartmentName | L'unité hospitalière ou le service où l'activité a eu lieu. | ||
| Descriptionn Cet Les Pourquoi est-ce important ? : Il permet un filtrage organisationnel et une analyse des transferts. Source des données : Table Epic Clarity : CLARITY_DEP, Colonne : DEPARTMENT_NAME Exemples Service des urgencesRadiologyUSIPédiatrie | |||
| Type d'épisode de soins EncounterType | La classification de la visite du patient (par exemple, Hospitalisation, Urgences). | ||
| Descriptionn Cet Mappé à 'CaseType', ce champ est indispensable pour filtrer l'analyse. Par exemple, le Pourquoi est-ce important ? : Il fournit le contexte de haut niveau pour l'instance de processus. Source des données : Table Epic Clarity : PAT_ENC, Colonne : ENC_TYPE_C Exemples UrgencePatient externe hospitalierPatient hospitalisé | |||
| Coût de l'ordre diagnostique DiagnosticOrderCost | Le coût interne associé à un test diagnostique ou une procédure. | ||
| Descriptionn Cet Bien que n'étant pas un indicateur clinique primaire, il aide l'administration à comprendre le poids financier des différentes variantes de processus, en particulier celles impliquant des scores de gravité à forte consommation de ressources. Pourquoi est-ce important ? : Il ajoute une dimension financière à l'analyse de l'efficacité des processus. Source des données : Tables de facturation ou de comptabilité analytique liées à la procédure. Exemples 150.001200.0045.00 | |||
| Durée d'attente du transfert TransferWaitDuration | Temps écoulé entre un ordre de transfert et le transfert réel. | ||
| Descriptionn Cette métrique mesure l'écart entre 'Transfert ordonné' et 'Patient transféré'. C'est le point de Des valeurs élevées ici indiquent l'encombrement (patients en attente de lits), ce qui bloque le flux en amont du service des urgences. Pourquoi est-ce important ? : Il met en évidence les Source des données : Différence d'horodatage calculée entre les événements d'ordre et de transfert. Exemples 2h 30m45m12h | |||
| Est-ce une planification automatisée IsAutomatedScheduling | Indicateur signalant si la planification a été effectuée sans intervention du personnel. | ||
| Descriptionn Cet Il contribue directement au le KPI Taux d'Automatisation de la Planification du Suivi. Cela aide les leaders opérationnels à comprendre la part de la charge administrative transférée à la technologie. Pourquoi est-ce important ? : Il mesure le succès de l'automatisation des processus. Source des données : Dérivé de SchedulingMethod. Exemples truefaux | |||
| Méthode de prise de rendez-vous SchedulingMethod | Indique comment le rendez-vous de suivi a été réservé. | ||
| Descriptionn Cet Si la valeur indique un système ou un canal numérique piloté par le patient, le drapeau 'IsAutomated' peut être défini sur vrai. Cela met en évidence le succès des initiatives de transformation numérique. Pourquoi est-ce important ? : Il suit l'adoption d'outils automatisés ou en Source des données : Consultez la documentation Epic EHR pour la source de création de rendez-vous. Exemples MyChartCadenceTéléphoneEn personne | |||
| Nom Région RegionName | La région géographique ou le campus hospitalier. | ||
| Descriptionn Pour les systèmes de santé avec plusieurs campus, cet Le mappage à la 'Région' permet le Pourquoi est-ce important ? : Il permet le Source des données : Dérivé des Exemples Campus NordCentre-villeAile ouest | |||
| Spécialité du prescripteur OrderingProviderSpecialty | La spécialité médicale du médecin demandant une consultation ou un test. | ||
| Descriptionn Cet Il aide à analyser si certaines spécialités sont confrontées à des temps d'attente plus longs pour les services internes que d'autres, révélant un biais potentiel ou des pénuries de ressources dans des lignes de service spécifiques. Pourquoi est-ce important ? : Il segmente la demande pour les services de diagnostic et de consultation. Source des données : Consultez la documentation Epic EHR pour les Exemples CardiologieMédecine interneOrthopédie | |||
| Statut de `Conformité` au protocole ProtocolAdherenceStatus | Statut indiquant si le cas a suivi le parcours clinique standard. | ||
| Descriptionn Cet Les valeurs peuvent inclure 'Conforme', 'Étape ignorée' ou 'Hors séquence'. Cela permet aux responsables cliniques de filtrer rapidement les Pourquoi est-ce important ? : Il identifie rapidement les écarts par rapport aux normes de soins basées sur des preuves. Source des données : Calculé dans l'outil de Exemples ConformeDéviantIncomplet | |||
Activités du parcours patient
| Activité | Descriptionn | ||
|---|---|---|---|
| Diagnostic confirmé | L'enregistrement d'un diagnostic confirmé dans la liste de problèmes du patient ou le champ de diagnostic de la rencontre. Représente la conclusion de la phase d'investigation. | ||
| Pourquoi est-ce important ? : Requis pour le KPI 'Temps avant le diagnostic définitif'. Marque la transition de l'évaluation au traitement ciblé. Source des données : Table PAT_ENC_DX ou mise à jour de PROBLEM_LIST liée à la rencontre. Capture Comptabilisé lorsqu'un clinicien ajoute une entrée à l'activité Diagnostic de rencontre Type d'événement explicit | |||
| Patient enregistré | La création initiale du dossier de rencontre patient dans le système, marquant le début de l'épisode de soins. Ceci est explicitement enregistré lorsqu'un patient arrive au guichet d'enregistrement ou au service d'urgence et est enregistré dans Epic. | ||
| Pourquoi est-ce important ? : Établit le point d'ancrage pour l'ensemble du parcours patient et permet le calcul de la durée totale du séjour. Primordial pour le Source des données : Flux ADT (Événement A04 ou A01) ou table Clarity PAT_ENC (création de l'ID de compte HSP). Capture Comptabilisé lorsque la transaction 'Check In' ou 'Admit' est exécutée Type d'événement explicit | |||
| Patient sorti | La clôture officielle de la rencontre en hospitalisation. Comptabilisée lorsque le patient est virtuellement sorti du recensement. | ||
| Pourquoi est-ce important ? : La fin formelle de l'épisode pour les calculs de 'Durée de Séjour'. Primordial pour la 'Découverte de variantes de flux patients'. Source des données : Flux ADT (Événement A03) ou PAT_ENC_HSP.DISCH_TIME. Capture Comptabilisé lorsque le personnel administratif termine le Type d'événement explicit | |||
| Triage terminé | L'achèvement de l'évaluation infirmière initiale ou de l'évaluation du triage. Ceci est généralement enregistré lorsque la feuille de flux de triage est classée ou que le statut de triage passe à 'Complet'. | ||
| Pourquoi est-ce important ? : Critique pour le Source des données : PAT_ENC_HSP.TRIAGE_END_TIME ou Capture Comptabilisé lorsque la documentation de triage est signée ou que le champ de statut est mis à jour. Type d'événement explicit | |||
| Consultation demandée | Un ordre est placé pour qu'un spécialiste évalue le patient. Comptabilisé comme un type d'ordre de procédure spécifique 'Consult' au sein d'Epic. | ||
| Pourquoi est-ce important ? : Point de départ pour le KPI 'Délai de consultation spécialiste'. Aide à identifier les pénuries dans des spécialités médicales spécifiques. Source des données : ORDER_PROC où ORDER_CLASS = 'Consultation' ou ordres de référence spécifiques. Capture Comptabilisé lorsque l'ordre de consultation est signé Type d'événement explicit | |||
| Consultation terminée | L'achèvement de l'évaluation spécialisée, généralement marqué par la signature d'une note de consultation ou la clôture de l'ordre de consultation. | ||
| Pourquoi est-ce important ? : Point final pour le 'Délai de consultation spécialiste'. Indique que l'avis d'expert a été fourni et que le plan de soins peut se poursuivre. Source des données : HNO_NOTE_TEXT (Note classée avec le type Consult) ou changement de statut ORDER_PROC à Terminé. Capture Déduit de l'heure de création de la note de consultation ou de la mise à jour du statut de la commande. Type d'événement inferred | |||
| Médicament administré | L'acte d'une infirmière ou d'un prestataire administrant des médicaments au patient. Comptabilisé dans le Dossier d'Administration des Médicaments (DAM). | ||
| Pourquoi est-ce important ? : Événement clé pour le Source des données : Table MAR_ADMIN_INFO, spécifiquement les événements avec l'action 'Donné' ou 'Nouvelle poche'. Capture Comptabilisé lorsque l'infirmière scanne le bracelet du patient et le médicament (BCMA) Type d'événement explicit | |||
| Ordonnance de sortie signée | L'autorisation formelle du médecin pour que le patient quitte l'hôpital. Il s'agit d'une entrée d'ordre spécifique dans Epic. | ||
| Pourquoi est-ce important ? : Un jalon critique dans la 'Planification et exécution de la sortie'. L'écart entre ce moment et le départ effectif représente un décalage administratif. Source des données : ORDER_PROC où le type est 'Sortie patient'. Capture Comptabilisé lorsque le médecin signe l'ordre de sortie Type d'événement explicit | |||
| Patient transféré | Le mouvement physique du patient vers un nouveau service ou une nouvelle unité. Capturé via les `event` de transfert ADT. | ||
| Pourquoi est-ce important ? : Point final pour le 'Temps moyen de transfert inter-service'. Soutient l''Analyse des transferts internes entre services' pour trouver les Source des données : Flux ADT (Événement A02) ou PAT_ENC_HSP_TRANSACTION (Transfert entrant). Capture Comptabilisé lorsque le commis d'unité met à jour l'emplacement du patient dans le recensement Type d'événement explicit | |||
| Plan de soins initié | L'attribution d'un parcours clinique ou d'un protocole spécifique au patient. Ceci est enregistré lorsqu'un jeu d'ordres standard ou un plan de soins est appliqué au contexte de la rencontre. | ||
| Pourquoi est-ce important ? : Soutient la 'Vue de Source des données : Tables ORDER_SET_BKG ou de plan de soins indiquant qu'un protocole a été lié à la rencontre. Capture Comptabilisé lorsqu'un clinicien sélectionne « what-if »gne un ensemble d'ordres Type d'événement explicit | |||
| Planification de la sortie initiée | Le début des activités de prélèvement.paration à la sortie du patient. Capturé via la documentation de gestion de cas ou des types d'ordres de 'sortie' spécifiques. | ||
| Pourquoi est-ce important ? : Clé pour le Source des données : Création de HSP_DISCH_PLAN ou première note par le gestionnaire de cas/travailleur social. Capture Déduit de la première interaction avec le navigateur de sortie ou de la note de gestion de cas. Type d'événement inferred | |||
| Rendez-vous de suivi planifié | La prise de rendez-vous pour une future visite ambulatoire du patient. Comptabilisée dans le module de planification Cadence lié au dossier patient. | ||
| Pourquoi est-ce important ? : Soutient le 'Taux d'automatisation de la planification du suivi'. Assure la continuité des soins et aide à prévenir les réadmissions. Source des données : PAT_ENC_APPT lié à l'identifiant du patient, créé à l'approche de l'heure de sortie. Capture Comptabilisé lorsque le créneau de rendez-vous est confirmé dans Cadence Type d'événement explicit | |||
| Test diagnostique commandé | L'entrée d'un ordre pour l'imagerie (Radiologie) ou les services de laboratoire. Capturé lorsqu'un médecin entre « what-if »gne un ordre dans le système CPOE. | ||
| Pourquoi est-ce important ? : Le point de départ du Source des données : Table ORDER_PROC où ORDER_TYPE est Labo ou Imagerie/Radiologie. Capture Comptabilisé lorsque le statut de la commande devient 'Signé' ou 'Actif' Type d'événement explicit | |||
| Test diagnostique effectué | L'exécution réelle du test diagnostique ou l'enregistrement du résultat. Pour les laboratoires, c'est lorsque l'échantillon est traité ; pour l'imagerie, lorsque le scan est terminé. | ||
| Pourquoi est-ce important ? : Point final pour le KPI 'Temps de cycle moyen des tests diagnostiques'. Vital pour comprendre les retards dans les services de support à la décision clinique. Source des données : ORDER_PROC.PROC_END_TIME ou ORDER_STAT_HISTORY lorsque le statut passe à 'Terminé' ou 'Résultat obtenu'. Capture Comptabilisé lorsque le technicien termine la tâche ou que l'interface de résultat reçoit les Type d'événement explicit | |||
| Transfert ordonné | Une demande de transfert du patient vers une autre unité ou un autre niveau de soins. Comptabilisée comme une 'Demande de lit' ou un 'Ordre de transfert' dans le système. | ||
| Pourquoi est-ce important ? : Point de départ pour le 'Temps moyen de transfert inter-services'. Différencie la décision clinique de transfert de la disponibilité logistique d'un lit. Source des données : ADT_TRANSFER_ORDER ou ORDER_PROC (Demande de lit). Capture Comptabilisé lorsque le médecin saisit l'ordre de transfert Type d'événement explicit | |||
Guides d'extraction
Étapes
- Connectez-vous à Epic Hyperspace et lancez le Reporting Workbench (RWB) via l'activité Analytics ou Mes Rapports.
- Créez un nouveau rapport en sélectionnant l'onglet Bibliothèque et en recherchant le modèle "Encounter Search" ou "Patient Encounters". Ce modèle permet de récupérer les détails au niveau du contact identifiés par le CSN (numéro de série de contact).
- Configurez les critères (onglet Paramètres) :
- Définissez la plage de dates (ex: Date de sortie = Derniers 90 jours) pour capturer les épisodes terminés.
- Filtrez par Type de rencontre (ex: 'Rencontre hospitalière', 'Urgence') pour exclure les visites ambulatoires non pertinentes.
- Filtrez par Service ou Établissement si une portée spécifique est requise.
- Configurez les colonnes d'affichage (onglet Affichage) :
- C'est l'étape d'extraction critique. Vous devez rechercher et ajouter des colonnes spécifiques qui correspondent aux horodatages des activités requises.
- Ajoutez les identifiants patient :
CSN(Épisode patient),MRN(ID patient). - Ajoutez les données démographiques/attributs :
Service,Motif de sortie,Code de diagnostic principal,Fournisseur de soins. - Ajoutez les colonnes d'horodatage : Recherchez des colonnes comme
Heure d'admission,Heure de fin de triage,Heure de sortie,Heure de l'ordre de sortie,Heure de la première administration de médicaments, etc. (Voir la section Requête/Configuration pour le mappage exact).
- Exécutez le rapport et vérifiez les résultats dans la fenêtre d'aperçu.
- Exportez les données :
- Cliquez sur Barre d'outils > Exporter.
- Sélectionnez le format CSV ou Texte (délimité par des tabulations).
- Assurez-vous que l'option 'Inclure les en-têtes de colonne' est cochée.
- Enregistrez le fichier sous le nom
Raw_Epic_Extract.csv.
- Transformation des données (Crucial) :
- L'exportation RWB produit un jeu de données "large" (une ligne par épisode patient avec plusieurs colonnes d'horodatage).
- Vous devez dépivoter (remodeler) ces données afin que chaque colonne d'horodatage devienne une ligne distincte dans le journal d'événements.
- Créez un fichier final avec les colonnes :
PatientEpisodeId,(ActivityName),EventHorodatage, et les attributs associés.
- Formatez les dates : Assurez-vous que le champ
EventHorodatageest au format ISO (YYYY-MM-DD HH:MM:SS) compatible avec ProcessMind. - Validation finale : Vérifiez que le fichier comporte les en-têtes
PatientEpisodeId,(ActivityName),EventHorodatageet téléchargez-le sur ProcessMind.
Configuration
- Modèle : Utilisez "Encounter Search" (LBF) ou "Find Patients" selon la version d'Epic.
- Plage de dates : Limitez à 3-6 mois initialement pour éviter les erreurs de délai d'attente (le RWB n'est pas optimisé pour l'extraction massive en vrac).
- Limite de lignes : Epic RWB a souvent une limite de lignes (par exemple, 25 000 ou 50 000 lignes). Assurez-vous que votre plage de dates ne dépasse pas cette limite, ou exécutez plusieurs lots.
- Autorisations : Nécessite les points de sécurité 'Créer' et 'Exporter' du Reporting Workbench.
- Performance : Exécutez pendant les heures creuses si vous recherchez de grandes plages historiques.
- Granularité : Cette méthode fournit des horodatages récapitulatifs au niveau de l'Encounter (rencontre patiente) (par exemple, 'First Med Admin'). Elle n'extrait pas chaque boucle (par exemple, chaque pilule administrée) à moins que des modèles d'"Audit" spécifiques ne soient utilisés, ce qui est rare pour ce cas d'utilisation.
a Exemple de requête config
[REPORT CONFIGURATION SPECIFICATION]
# GENERAL SETTINGS
Application: Epic Reporting Workbench
Template_ID: Encounter_Search_LBF
Time_Horizon: Discharge Date between [Start Date] and [End Date]
Filters: Encounter Type IN ('Hospital Encounter', 'Emergency')
# COLUMN SELECTION MAPPING
# Map the following Epic RWB Columns (Display Names) to the Output Activities.
# Note: Column names may vary slightly by Epic customized build.
[MANDATORY ATTRIBUTES]
Column: Contact Serial Number (CSN) -> Target: PatientEpisodeId
Column: Patient MRN -> Target: PatientMrn
Column: Department at Discharge -> Target: DepartmentName
Column: Discharge Disposition -> Target: DischargeDisposition
Column: Primary Diagnosis ICD-10 -> Target: PrimaryDiagnosisCode
Column: Attending Provider -> Target: ProviderId
Column: Current Date -> Target: LastDataUpdate
Column: System Name (Fixed 'Epic') -> Target: SourceSystem
[ACTIVITY TIMESTAMP MAPPING]
# These columns represent the 'EventTimestamp' for the specific 'ActivityName'
1. Activity: Patient Registered
Epic_Column: Hospital Admission Time OR Check-In Time
2. Activity: Triage Completed
Epic_Column: Triage End Time OR Triage Acuity Time
3. Activity: Care Plan Initiated
Epic_Column: Care Plan Start Date
4. Activity: Diagnostic Test Ordered
Epic_Column: First Lab Order Time OR First Imaging Order Time
(Note: Select 'Earliest' if multiple columns exist)
5. Activity: Diagnostic Test Performed
Epic_Column: First Lab Result Time OR First Imaging End Time
6. Activity: Diagnosis Confirmed
Epic_Column: Principal Diagnosis Problem List Date
7. Activity: Consultation Requested
Epic_Column: Consult Order Create Time
8. Activity: Consultation Completed
Epic_Column: Consult Complete Time
9. Activity: Medication Administered
Epic_Column: First Medication Administration Time
10. Activity: Transfer Ordered
Epic_Column: Transfer Order Time
11. Activity: Patient Transferred
Epic_Column: Last Transfer In Time OR ADT Event Time
12. Activity: Discharge Planning Initiated
Epic_Column: Case Management Start Date
13. Activity: Discharge Order Signed
Epic_Column: Discharge Order Time
14. Activity: Patient Discharged
Epic_Column: Hospital Discharge Time
15. Activity: Follow-up Appointment Scheduled
Epic_Column: Discharge Follow-Up Appointment Made Date
# TRANSFORMATION LOGIC (PSEUDO-CODE)
# The export will be 'Wide'. Apply this logic to create the Event Log:
FOR EACH Row IN Exported_CSV:
EpisodeID = Row['Contact Serial Number']
FUNCTION CreateEvent(ActivityName, TimestampColumn):
IF Row[TimestampColumn] IS NOT NULL:
OUTPUT_ROW = {
'PatientEpisodeId': EpisodeID,
'ActivityName': ActivityName,
'EventTimestamp': Row[TimestampColumn],
'PatientMrn': Row['Patient MRN'],
'DepartmentName': Row['Department at Discharge'],
... [All Attributes]
}
APPEND OUTPUT_ROW TO Event_Log
# Execute for all 15 mappings defined above
CreateEvent('Patient Registered', 'Hospital Admission Time')
CreateEvent('Triage Completed', 'Triage End Time')
... [Repeat for all mapped columns]
END LOOP Étapes
Demandez l'accès à la base de données : Assurez-vous d'avoir un accès en lecture à la console Epic Clarity ou à un client SQL connecté à la base de données de production ou de reporting de Clarity. Vous aurez besoin d'autorisations pour
PAT_ENC,ORDER_PROC,CLARITY_ADT,MAR_ADMIN_INFOet les tables de référence associées.Identifiez la portée et les ID de filtre : Avant d'exécuter le script complet, exécutez de petites requêtes de découverte pour identifier les valeurs
ORDER_TYPE_Cspécifiques pour les Labs, la Radiologie, les Consultations et les Transferts dans votre instance Epic spécifique, car ces listes personnalisées (listes de catégories) varient selon l'hôpital.Configurez la fenêtre temporelle : Localisez les clauses
WHEREdans le script SQL fourni filtrant surCONTACT_DATEouHOSP_ADMSN_TIME. Ajustez-les à votre fenêtre d'extraction souhaitée (par exemple, les 6 derniers mois).Mappez les feuilles de flux personnalisées (facultatif) : Si vous avez besoin d'horodatages précis pour le Triage ou la Planification de la sortie qui ne sont pas dans la table principale des rencontres, identifiez le
FLO_MEAS_ID(ID de mesure de feuille de flux) spécifique pour ces champs et mettez à jour les sections de remplacement du script.Exécutez la requête : Exécutez le script SQL complet dans votre client SQL (par exemple, SQL Server Management Studio, Oracle SQL Developer). Le script utilise
UNION ALLpour combiner différents événements cliniques en une structure de journal d'événements standardisée unique.Post-traitement : La requête renvoie une liste plate. Vérifiez que
EventHorodatagen'est pas nul. Convertissez les formats de date/heure spécifiques à la base de données au format ISO 8601 (YYYY-MM-DDTHH:MM:SS) si votre middleware l'exige.Exportez les données : Enregistrez le jeu de résultats sous forme de fichier CSV. Assurez-vous que les en-têtes correspondent aux
attributsspécifiques définis (PatientEpisodeId, (ActivityName), etc.).Téléchargez vers ProcessMind : Importez le CSV dans ProcessMind. Mappez
PatientEpisodeIdcomme ID de cas,(ActivityName)comme Activité etEventHorodatagecomme Horodatage.
Configuration
- Connexion à la base de données : Epic Clarity (généralement un back-end MSSQL ou Oracle).
- Filtrage par date : Filtrez sur
PAT_ENC.HOSP_ADMSN_TIMEouPAT_ENC.CONTACT_DATE. La plage recommandée est de 3 à 6 mois pour une analyse initiale afin de gérer les performances des requêtes. - Types de rencontre : Le script filtre les rencontres en hospitalisation et d'urgence (valeurs
ENC_TYPE_Cgénéralement 3 et 50, mais à vérifier par rapport àZC_ENC_TYPE). - Types de commande : Nécessite la personnalisation des valeurs
ORDER_TYPE_Cpour les laboratoires, l'imagerie et les consultations, en fonction de la configuration locale deZC_ORDER_TYPE. - Performance : Le script analyse des tables à volume élevé (
ORDER_PROC,CLARITY_ADT). Assurez-vous que l'indexation appropriée est utilisée ou exécutez le script en dehors des heures de pointe.
a Exemple de requête sql
WITH Cohort AS (
SELECT
pe.PAT_ENC_CSN_ID,
pe.PAT_ID,
pe.HOSP_ADMSN_TIME,
pe.HOSP_DISCH_TIME,
pe.DEPARTMENT_ID,
dep.DEPARTMENT_NAME,
emp.NAME AS ProviderName,
pat.PAT_MRN_ID,
pe.ACUITY_LEVEL_C,
disch.NAME AS DischargeDisposition,
pe.ENC_TYPE_C
FROM PAT_ENC pe
LEFT JOIN CLARITY_DEP dep ON pe.DEPARTMENT_ID = dep.DEPARTMENT_ID
LEFT JOIN CLARITY_EMP emp ON pe.VISIT_PROV_ID = emp.PROV_ID
LEFT JOIN PATIENT pat ON pe.PAT_ID = pat.PAT_ID
LEFT JOIN ZC_DISCH_DISP disch ON pe.DISCH_DISP_C = disch.DISCH_DISP_C
WHERE pe.HOSP_ADMSN_TIME >= DATEADD(month, -6, GETDATE())
AND pe.ENC_TYPE_C IN (3, 50) -- 3=Inpatient, 50=Emergency (Verify local codes)
)
-- 1. Patient Registered
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)) AS PatientEpisodeId,
'Patient Registered' AS ActivityName,
c.HOSP_ADMSN_TIME AS EventTimestamp,
c.DepartmentName,
c.ProviderName AS ProviderId,
c.PAT_MRN_ID AS PatientMrn,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)) AS TriageAcuityLevel,
CAST(c.ENC_TYPE_C AS VARCHAR(50)) AS EncounterType,
NULL AS PrimaryDiagnosisCode,
NULL AS ReadmissionFlag,
c.DischargeDisposition,
'Epic EHR' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM Cohort c
WHERE c.HOSP_ADMSN_TIME IS NOT NULL
UNION ALL
-- 2. Triage Completed (Using Flowsheet or Triage Time)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Triage Completed',
ISNULL(pe.TRIAGE_END_INSTANT, c.HOSP_ADMSN_TIME), -- Fallback if specific column unused
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN PAT_ENC pe ON c.PAT_ENC_CSN_ID = pe.PAT_ENC_CSN_ID
WHERE pe.TRIAGE_END_INSTANT IS NOT NULL
UNION ALL
-- 3. Care Plan Initiated (Based on Order Type)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Care Plan Initiated',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 100 -- Placeholder: Replace with ID for Care Plan/Protocol
UNION ALL
-- 4. Diagnostic Test Ordered (Lab/Radiology)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Diagnostic Test Ordered',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C IN (1, 2) -- Placeholder: 1=Lab, 2=Radiology (Verify local codes)
UNION ALL
-- 5. Diagnostic Test Performed (Result Time or Procedure Start)
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Diagnostic Test Performed',
COALESCE(ord2.PROC_START_TIME, ord2.PROC_ENDING_TIME, ord.ORDER_INST),
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
JOIN ORDER_PROC_2 ord2 ON ord.ORDER_PROC_ID = ord2.ORDER_PROC_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C IN (1, 2)
AND ord2.PROC_START_TIME IS NOT NULL
UNION ALL
-- 6. Diagnosis Confirmed
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Diagnosis Confirmed',
dx.NOTED_DATE,
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
edg.DX_NAME,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN PAT_ENC_DX dx ON c.PAT_ENC_CSN_ID = dx.PAT_ENC_CSN_ID
JOIN CLARITY_EDG edg ON dx.DX_ID = edg.DX_ID
WHERE dx.NOTED_DATE IS NOT NULL
UNION ALL
-- 7. Consultation Requested
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Consultation Requested',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 35 -- Placeholder: Replace with ID for Consult
UNION ALL
-- 8. Consultation Completed
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Consultation Completed',
ord.ORDER_END_TIME,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 35 -- Placeholder: Replace with ID for Consult
AND ord.ORDER_STATUS_C = 5 -- Placeholder: 5=Completed
AND ord.ORDER_END_TIME IS NOT NULL
UNION ALL
-- 9. Medication Administered
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Medication Administered',
mar.TAKEN_TIME,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_MED med ON c.PAT_ENC_CSN_ID = med.PAT_ENC_CSN_ID
JOIN MAR_ADMIN_INFO mar ON med.ORDER_MED_ID = mar.ORDER_MED_ID
LEFT JOIN CLARITY_EMP emp ON mar.TAKEN_USER_ID = emp.USER_ID
WHERE mar.TAKEN_TIME IS NOT NULL
AND mar.MAR_ACTION_C = 1 -- Placeholder: 1=Given
UNION ALL
-- 10. Transfer Ordered
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Transfer Ordered',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 60 -- Placeholder: Replace with ID for Transfer/Bed Request
UNION ALL
-- 11. Patient Transferred
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Patient Transferred',
adt.EFFECTIVE_TIME,
dep.DEPARTMENT_NAME,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN CLARITY_ADT adt ON c.PAT_ENC_CSN_ID = adt.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_DEP dep ON adt.DEPARTMENT_ID = dep.DEPARTMENT_ID
WHERE adt.EVENT_TYPE_C = 3 -- 3=Transfer In
UNION ALL
-- 12. Discharge Planning Initiated
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Discharge Planning Initiated',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.ORDER_TYPE_C = 70 -- Placeholder: Case Management/Discharge Order Type
UNION ALL
-- 13. Discharge Order Signed
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Discharge Order Signed',
ord.ORDER_INST,
c.DepartmentName,
emp.NAME,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN ORDER_PROC ord ON c.PAT_ENC_CSN_ID = ord.PAT_ENC_CSN_ID
LEFT JOIN CLARITY_EMP emp ON ord.ORDERING_PROV_ID = emp.PROV_ID
WHERE ord.PROC_CODE = 'DISCHARGE' -- Placeholder: Filter by specific discharge procedure code
UNION ALL
-- 14. Patient Discharged
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Patient Discharged',
c.HOSP_DISCH_TIME,
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
WHERE c.HOSP_DISCH_TIME IS NOT NULL
UNION ALL
-- 15. Follow-up Appointment Scheduled
SELECT
CAST(c.PAT_ENC_CSN_ID AS VARCHAR(50)),
'Follow-up Appointment Scheduled',
next_pe.APPT_MADE_DATE,
c.DepartmentName,
c.ProviderName,
c.PAT_MRN_ID,
CAST(c.ACUITY_LEVEL_C AS VARCHAR(50)),
CAST(c.ENC_TYPE_C AS VARCHAR(50)),
NULL,
NULL,
c.DischargeDisposition,
'Epic EHR',
GETDATE()
FROM Cohort c
JOIN PAT_ENC next_pe ON c.PAT_ID = next_pe.PAT_ID
WHERE next_pe.APPT_MADE_DATE BETWEEN c.HOSP_ADMSN_TIME AND ISNULL(c.HOSP_DISCH_TIME, GETDATE())
AND next_pe.CONTACT_DATE > c.HOSP_ADMSN_TIME -- The appointment is for a future date relative to admission