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

La réponse originale de @Brendan Batchelder :

Pour ce faire, dans le visualiseur de messages, ajoutez un critère étendu à vos paramètres de recherche. Type de critère = VDoc Property Path. Classe = EnsLib.HL7.Message. DocType = Schema:Nom du type de documents que vous recherchez (par exemple 2.3.1:ADT_A01). Route de la propriété = la route VDoc du champ sur lequel vous recherchez (par exemple MSH:SendingApplication).
Il convient de noter que le visualisateur de messages utilise le langage SQL pour obtenir une liste de messages basée sur les "critères de base", puis il boucle sur les résultats en appliquant chacun des "critères étendus" comme filtre. Cette opération peut être très lente. Si cela prend plus de 2 minutes, le visualiseur de messages se bloque et soit les critères de base doivent être affinés afin de renvoyer moins de résultats, soit la recherche de messages doit être effectuée avec du code.
Pour ce faire avec un code, utilisez le SQL intégré pour effectuer une recherche sur les en-têtes de message en fonction de critères de base, puis bouclez sur les résultats en vérifiant les routes VDoc. Voici un exemple qui recherche les messages d'un jour particulier qui ont une valeur particulière dans MSH:3, le champ de l'Application expéditrice :

&SQL(DECLARE C1 CURSOR FOR
      SELECT MessageBodyId INTO :id
        FROM Ens.MessageHeader 
       WHERE MessageBodyClassName='EnsLib.HL7.Message'
         AND TimeCreated BETWEEN '2016-07-15'
         AND '2016-07-16')
&SQL(OPEN C1)
&SQL(FETCH C1)
while (SQLCODE = 0) {
   set msg = ##class(EnsLib.HL7.Message).%OpenId(id)
   if (msg.GetValueAt("MSH:SendingApplication") = "Ensemble") {
      //do something with this message
   }
   &SQL(FETCH C1)
}
&SQL(CLOSE C1)

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'