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.

La réponse originale de @Marc Mundt  :

Si vous prévoyez d'effectuer des recherches fréquentes sur un segment/champ HL7 spécifique, vous pouvez accélérer considérablement les recherches en utilisant le mécanisme de "tableaux de recherche" d'Ensemble pour ajouter un index pour ce champ.

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...

Les champs indexés dans le tableau de recherche sont répertoriés dans la liste déroulante de la recherche du visualiseur de messages, ou peuvent être interrogés à l'aide de SQL en joignant EnsLib_HL7.SearchTable :

select msg.ID,msg.TimeCreated,
       msg.DocType,
       msgHdr.SourceConfigName,
       msgHdr.TargetConfigName,
       msg.RawContent 
from EnsLib_HL7.SearchTable srchTbl
join enslib_hl7.message msg on msg.id=srchTbl.docid 
join Ens.MessageHeader msgHdr on msgHdr.MessageBodyId=srchTbl.docid
where  (srchTbl.propid=(select propid from Ens_Config.SearchTableProp where classextent='EnsLib.HL7.SearchTable' and name='PatientSSN')
       and srchTbl.propvalue = '123-25-4612')
       and msgHdr.SourceConfigName='HL7.File.In'