Question
· Nov 22, 2022

Requête EnsLib.HL7.Message

Nous essayons de trouver la source des messages abandonnés et avons remarqué que nous sommes incapables d'interroger EnsLib.HL7.Message avec des clauses WHERE ou ORDER BY dans notre instruction SQL.

Je sais que EnsLib.HL7.Message est un tableau système, mais existe-t-il un moyen d'ajouter des index supplémentaires à ce tableau pour que la requête s'exécute mieux/plus rapidement sans affecter le système ?

Version du produit: Caché 2018.1
$ZV: Cache for UNIX (IBM AIX for System Power System-64) 2018.1.3 (Build 414U) Mon Oct 28 2019 11:24:02 EDT
Discussion (1)2
Connectez-vous ou inscrivez-vous pour continuer

Bonjour Scott,

Vous pouvez obtenir une liste des ID de corps de message (et de leurs types d'événements associés) qui n'ont pas d'enregistrement d'en-tête correspondant avec cette requête :

SELECT HL7.ID, HL7.Name 
  FROM EnsLib_HL7.Message HL7 
  LEFT JOIN Ens.MessageHeader hdr ON HL7.Id=hdr.MessageBodyId 
 WHERE hdr.MessageBodyId IS NULL 
   AND HL7.OriginalDocId IS NULL

Et oui, cette requête peut prendre beaucoup de temps à s'exécuter... suffisamment longtemps pour qu'elle s'arrête généralement dans l'interface utilisateur SQL de la console de gestion. Elle ne devrait pas être arrêtée si vous l'exécutez à partir du Caché (ou IRIS) SQL Shell. Que voudriez-vous utiliser pour les critères WHERE ou ORDER BY ? La liste des champs disponibles pour être référencés directement via SQL peut être consultée dans le panneau Body d'un message HL7 affiché dans le Message Viewer, mais leur utilité pour déterminer ce qui les a rendus abadonnés est limitée.

Le problème avec les messages abandonnés est qu'il est un peu difficile de savoir "d'où ils viennent". Les services/processus/opérations source et destination de la production sont stockés dans le tableau de l'en-tête du message et non dans le tableau du corps du message. La raison pour laquelle les messages sont abandonnés est qu'ils ne sont plus liés (par MessageBodyId) à aucun enregistrement du tableau de l'en-tête du message.

La raison la plus courante des messages abandonnés est la configuration de la tâche de purge des messages. Il existe une case à cocher "bodies too" qui, si elle n'est pas cochée, empêche la suppression des corps de messages. Les en-têtes sont quand même supprimés, ce qui rend les corps "abandonnés".