Votre Template de data du Parcours Patient
Votre Template de data 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 | Description | ||
|---|---|---|---|
| Épisode de soins du patient PatientEpisodeId | L'identifiant unique de la rencontre patient spécifique ou de l'épisode de soins. | ||
| Description L' L'analyse de cet Pourquoi c'est important C'est la clé fondamentale pour lier des événements disparates en un seul cas de processus. Où obtenir Table Epic Clarity : PAT_ENC, Colonne : PAT_ENC_CSN_ID Exemples 200459112200459113200459114200459115 | |||
| Nom de l'activité ActivityName | L'action clinique ou administrative spécifique effectuée. | ||
| Description 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 au sein de l'EHR pour créer un Pourquoi c'est important Il définit les étapes du processus et permet la visualisation du Où obtenir Dérivé des tables CLARITY_ADT, ORDER_PROC et ORDER_MED. Exemples Triage terminéTest diagnostique commandéPatient sortiMédicament administré | |||
| Timestamp de l'événement EventTimestamp | La date et l'heure exactes de l'activité. | ||
| Description Cet La précision de ce champ est critique pour identifier les Pourquoi c'est important Il permet le calcul des temps de cycle, des délais et de l'ordonnancement des processus. Où obtenir Diverses colonnes Exemples 2023-10-15T08:30:00Z2023-10-15T09:15:22Z2023-10-16T14:20:00Z | |||
| Dernière mise à jour des données LastDataUpdate | L'horodatage de l'extraction ou de la dernière actualisation des données. | ||
| Description Cet Les analystes l'utilisent pour déterminer si le Pourquoi c'est important Il aide à évaluer l'actualité et la fiabilité des Où obtenir 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. | ||
| Description Cet En analyse, il assure la traçabilité des Pourquoi c'est important Il offre une traçabilité et un contexte pour l'origine des Où obtenir 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. | ||
| Description Cet Il est utilisé pour regrouper les Pourquoi c'est important Il regroupe les cas par similarité clinique pour l'analyse des protocoles. Où obtenir Table Epic Clarity : PAT_ENC_DX, Colonne : DX_ID Exemples J18.9I21.9E11.9 | |||
| Heure de fin de l'événement EventEndTime | Le `timestamp` lorsque l'activité a été complétée. | ||
| Description 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 c'est important Il permet le calcul de la durée de l'activité et de l'utilisation des ressources. Où obtenir 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 prestataire ProviderId | L'identifiant de l'utilisateur ou du clinicien qui a effectué l'activité. | ||
| Description Cet Il est mappé à l' Pourquoi c'est important Il permet l'analyse de la variation de performance et de charge de travail parmi le personnel. Où obtenir 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. | ||
| Description 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 c'est important Il identifie les processus de sortie échoués et les problèmes de qualité des soins. Où obtenir Calculé via SQL en anticipant les futures rencontres pour le même MRN. Exemples truefaux | |||
| Motif de sortie DischargeDisposition | La destination du patient à sa sortie (Domicile, Établissement de soins infirmiers qualifiés, Décédé). | ||
| Description Cet Ceci est crucial pour le Pourquoi c'est important Il contextualise le résultat du processus de soins. Où obtenir Table Epic Clarity : PAT_ENC, Colonne : DISCH_DISP_C Exemples AccueilÉtablissement de soins infirmiers qualifiésSoins à domicile | |||
| Niveau d'acuité du triage TriageAcuityLevel | Le score de gravité attribué au patient lors du triage. | ||
| Description Cet Il permet la segmentation dans le Pourquoi c'est important Il segmente le processus en fonction de l'urgence et de la consommation de ressources attendue. Où obtenir Consultez la documentation Epic EHR pour le champ Acuity dans les journaux des urgences. Exemples 1 - Resuscitation2 - Emergent3 - Urgent | |||
| Nom du département DepartmentName | L'unité ou le service hospitalier où l'activité a eu lieu. | ||
| Description Cet Les Pourquoi c'est important Il permet un filtrage organisationnel et une analyse des transferts. Où obtenir Table Epic Clarity : CLARITY_DEP, Colonne : DEPARTMENT_NAME Exemples Service des urgencesRadiologieUSIPédiatrie | |||
| Numéro de dossier médical du patient PatientMrn | Le numéro de dossier médical identifiant le patient. | ||
| Description 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 c'est important Il est essentiel pour identifier les visites répétées et analyser l'historique des patients. Où obtenir Table Epic Clarity : PATIENT, Colonne : PAT_ID ou PAT_MRN_ID Exemples MRN-882910MRN-112003MRN-554211 | |||
| Type de rencontre EncounterType | La classification de la visite du patient (par exemple, Hospitalisation, Urgences). | ||
| Description Cet Mappé à 'CaseType', ce champ est fondamental pour filtrer l'analyse. Par exemple, le Pourquoi c'est important Il fournit le contexte de haut niveau pour l'instance de processus. Où obtenir Table Epic Clarity : PAT_ENC, Colonne : ENC_TYPE_C Exemples UrgencePatient externe hospitalierHospitalisé | |||
| Coût de l'ordre diagnostique DiagnosticOrderCost | Le coût interne associé à un test diagnostique ou une procédure. | ||
| Description 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 c'est important Il ajoute une dimension financière à l'analyse de l'efficacité des processus. Où obtenir Tables de facturation ou de comptabilité analytique liées à la procédure. Exemples 150.001200.0045.00 | |||
| Délai d'administration des médicaments MedicationAdminDelay | Différence de temps entre l'administration de médicaments prévue et réelle. | ||
| Description Cet Les valeurs positives indiquent une administration tardive. Cette métrique permet aux superviseurs infirmiers d'identifier les quarts de travail ou les unités où la charge de travail affecte la prestation de soins en temps voulu. Pourquoi c'est important C'est une mesure directe de l'adhésion au Où obtenir Calculé à partir des Exemples 15m-5m1h 20m | |||
| Durée d'attente du transfert TransferWaitDuration | Temps écoulé entre un ordre de transfert et le transfert réel. | ||
| Description 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 c'est important Il met en évidence les Où obtenir 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. | ||
| Description Cet Il soutient directement 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 c'est important Il mesure le succès de l'automatisation des processus. Où obtenir 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é. | ||
| Description 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 c'est important Il suit l'adoption d'outils automatisés ou en Où obtenir 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. | ||
| Description Pour les systèmes de santé avec plusieurs campus, cet Le mappage à la 'Région' permet le Pourquoi c'est important Il permet le Où obtenir 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. | ||
| Description 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 c'est important Il segmente la demande pour les services de diagnostic et de consultation. Où obtenir 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. | ||
| Description Cet Les valeurs peuvent inclure 'Conforme', 'Étape ignorée' ou 'Hors séquence'. Cela permet aux responsables cliniques de filtrer rapidement les Pourquoi c'est important Il identifie rapidement les écarts par rapport aux normes de soins basées sur des preuves. Où obtenir Calculé au sein de l'outil de Exemples ConformeDéviantIncomplet | |||
Activités du parcours patient
| Activité | Description | ||
|---|---|---|---|
| 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 c'est important Requis pour le KPI 'Temps avant le diagnostic définitif'. Marque la transition de l'évaluation au traitement ciblé. Où obtenir Table PAT_ENC_DX ou mise à jour de PROBLEM_LIST liée à la rencontre. Capture Enregistré 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 c'est important Établit le point d'ancrage pour l'ensemble du parcours patient et permet le calcul de la durée totale du séjour. Essentiel pour le Où obtenir Flux ADT (Événement A04 ou A01) ou table Clarity PAT_ENC (création de l'ID de compte HSP). Capture Enregistré 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. Enregistrée lorsque le patient est virtuellement sorti du recensement. | ||
| Pourquoi c'est important La fin formelle de l'épisode pour les calculs de 'Durée de Séjour'. Essentiel pour la 'Découverte de variantes de flux patients'. Où obtenir Flux ADT (Événement A03) ou PAT_ENC_HSP.DISCH_TIME. Capture Enregistré 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 c'est important Critique pour le Où obtenir PAT_ENC_HSP.TRIAGE_END_TIME ou Capture Enregistré 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. Enregistré comme un type d'ordre de procédure spécifique 'Consult' au sein d'Epic. | ||
| Pourquoi c'est 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. Où obtenir ORDER_PROC où ORDER_CLASS = 'Consultation' ou ordres de référence spécifiques. Capture Enregistré 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 c'est 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. Où obtenir 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. Enregistré dans le Dossier d'Administration des Médicaments (DAM). | ||
| Pourquoi c'est important Événement clé pour le Où obtenir Table MAR_ADMIN_INFO, spécifiquement les événements avec l'action 'Donné' ou 'Nouvelle poche'. Capture Enregistré lorsque l'infirmière scanne le bracelet du patient et le médicament (BCMA) Type d'événement explicit | |||
| Ordre de sortie signé | 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 c'est 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. Où obtenir ORDER_PROC où le type est 'Sortie patient'. Capture Enregistré 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 c'est important Point final pour le 'Temps moyen de transfert inter-service'. Soutient l''Analyse des transferts internes entre services' pour trouver les Où obtenir Flux ADT (Événement A02) ou PAT_ENC_HSP_TRANSACTION (Transfert entrant). Capture Enregistré 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 c'est important Soutient la 'Vue de Où obtenir Tables ORDER_SET_BKG ou de plan de soins indiquant qu'un protocole a été lié à la rencontre. Capture Enregistré lorsqu'un clinicien sélectionne et signe un ensemble d'ordres Type d'événement explicit | |||
| Planification de la sortie initiée | Le début des activités de préparation à la sortie du patient. Capturé via la documentation de gestion de cas ou des types d'ordres de 'sortie' spécifiques. | ||
| Pourquoi c'est important Clé pour le Où obtenir 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. Enregistrée dans le module de planification Cadence lié au dossier patient. | ||
| Pourquoi c'est important Soutient le 'Taux d'automatisation de la planification du suivi'. Assure la continuité des soins et aide à prévenir les réadmissions. Où obtenir PAT_ENC_APPT lié à l'identifiant du patient, créé à l'approche de l'heure de sortie. Capture Enregistré 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 et signe un ordre dans le système CPOE. | ||
| Pourquoi c'est important Le point de départ du Où obtenir Table ORDER_PROC où ORDER_TYPE est Labo ou Imagerie/Radiologie. Capture Enregistré 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 c'est 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. Où obtenir ORDER_PROC.PROC_END_TIME ou ORDER_STAT_HISTORY lorsque le statut passe à 'Terminé' ou 'Résultat obtenu'. Capture Enregistré 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. Enregistrée comme une 'Demande de lit' ou un 'Ordre de transfert' dans le système. | ||
| Pourquoi c'est 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. Où obtenir ADT_TRANSFER_ORDER ou ORDER_PROC (Demande de lit). Capture Enregistré 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,EventTimestamp, et les attributs mappés.
- Formatez les dates : Assurez-vous que le champ
EventTimestampest 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,EventTimestampet 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
EventTimestampn'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,ActivityNamecomme Activité etEventTimestampcomme 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