Question
· Déc 15, 2022

Requête de segment HL7 à l'aide de SQL

J'essaie d'obtenir un compte de type de message spécifique avec une entrée spécifique et j'ai pensé que je pourrais construire la requête dans Message Viewer mais cela ne fournit pas de comptes (pour autant que je sache). Ainsi, lorsque je prends le SQL à partir de "Show Query", il omet les critères de segment comme le montre le code ci-dessous.

J'ai attaché les critères qui ont été exclus. Est-ce possible ?

Merci

SELECT head.ID AS ID, 
       {fn RIGHT(%EXTERNAL(head.TimeCreated),12)} AS TimeCreated,
       head.SessionId AS SESSION,
       head.Status AS Status,
       COUNT (*) AS messages,
       CASE head.IsError
           WHEN 1 THEN 'Error'
           ELSE 'OK'
       END AS Error,
       head.SourceConfigName AS SOURCE,
       head.TargetConfigName AS Target,
       head.SourceConfigName,
       head.TargetConfigName,
       head.MessageBodyClassName AS BodyClassname,
       head.MessageBodyId AS BodyId,
       EnsLib_HL7.Message.%ID AS Body_ID,
       NULL AS Body_OBR_SpecimenSource_specimensourcenameorcode_identifier
FROM Ens.MessageHeader head,
     EnsLib_HL7.Message
WHERE head.TargetConfigName = 'ReviewOrders Router'
  AND head.%ID >= 189143244
  AND head.%ID <= 189589516
  AND (((head.SourceConfigName = 'Review Pathology Inbound'
    OR head.TargetConfigName = 'Review Pathology Inbound'))
  AND head.MessageBodyClassName='EnsLib.HL7.Message'
  AND head.MessageBodyId=EnsLib_HL7.Message.%ID)
ORDER BY head.ID DESC

Discussion (1)1
Connectez-vous ou inscrivez-vous pour continuer

La réponse originale de @Jeff Morgan  :

Ewan,

Voici un exemple simple de la façon de compter les DocType dans le tableau EnsLib_HL7.Message :

SELECT Count(*) 
  FROM EnsLib_HL7.Message
 WHERE Name = 'ADT_A12'

Si vous avez besoin de comparer également les propriétés de Ens.MessageHeader, vous pouvez faire une jointure sur les deux tableaux :

select Count(*) 
  from EnsLib_HL7.Message As Body
LEFT JOIN Ens.MessageHeader As Header
       ON Body.ID = Header.MessageBodyId
 WHERE Header.ID > 1 
   AND Body.Name = 'ADT_A12'

J'espère que cela vous aidera.