#Message Search

4 Followers · 51 Posts

All communication within an InterSystems Ensemble production is accomplished with messages. InterSystems Ensemble provides many tools for viewing and working with messages.

Documentation

Question Kevin Furze · Nov 15, 2017

I searched fror "documenting classes" from the search button with no filtering. it naturally came back with 559 responses, but to me, the responses (and therefore the search)  came without context.

for instance,  one of the texts came back with:

Answer:

In first you should define ODBC DSN in your operation system, to your Oracle DB.  Then you can look at this page in the documentation and class %SQLGatewayConnection Vote up! Vote down! Rating: 0 .

3
0 368
Question Julian Samaroo · Mar 27, 2017

Hey all! I'd like to collect some feedback regarding searching for messages using the Message Viewer. I'd like to find out what things regarding the Message Viewer you all in the community have found difficult/confusing/poorly documented. This can of course include things that you don’t know how to do yet, but would like to learn about.

For an example, I’ve had issues searching through messages containing SDA for specific text fragments, because my searches always timeout or don’t return any matching messages.

4
0 628
Question Yone Moreno Jiménez · Feb 28, 2025

Good morning,

We need your help:

We wonder if there is a way to filter EnsLib.DICOM.Document, by using its DataSet properties on the Message Viewer.

For example, we would like to find the following DICOM.Document which DataSet.AccessionNumber is SR115985013100

By using the Message Viewer Filter we have tried the following:

FixedDataSet.AccessionNumber = SR115985013100

Because when we look fod a Body Property of the EnsLib.DICOM.Document it shows this drop down menu:

However, it replies with an error:

ERROR #5540: SQLCODE: Message -29: Field 'ENSLIB_DICOM.DOCUMENT.

3
0 209
Question Stefan Schick · Nov 8, 2022

Hello,

searching messages in our Message Bank is quite slow, often runs into timeout.

I wanted to perform a tune table on  Ens_Enterprise_MsgBank.MessageHeader because this apparently has not been done yet - the Tune Table utility shows no entries for selectivity, etc.

I tried

 w $SYSTEM.SQL.Stats.Table.GatherTableStats("""Ens_Enterprise_MsgBank"".MessageHeader")

and got this error message

  Table 'Ens_Enterprise_MsgBank.MessageHeader' is mapped to a readonly datababase. No tuning will be performed.0 ЉpTable 'Ens_Enterprise_MsgBank.MessageHeader' is mapped to a readonly datababase. No tuning will be performed. Q
6
1 627
Question Kevin Furze · Jul 31, 2017

suggestions to try to make the searching of the community better, more relevent

I've been searching within the community for an article about troubleshoting SQL's working out how efficient they are, and how to look inside the system for other SLQ's that we used but may be inefficient,  (still haven't found it, and getting frustrated)

In this instance, after many guesses, I tried

sql "how to" analyze plan tutorial efficiency inefficient troubleshooting highest

I know I've seen the article about this very subject, but it's getting darned hard to find things in the community.

3
0 323
Question Jimmy Christian · Dec 21, 2023

Hello community,

I am trying to see the complete HL7 message for the class  EnsLib.HL7.Message.

But it is showing the truncated version only.

I also tried to convert to stream

msg.OutputToLibraryStream(.streammsg)
newmsg=##class(EnsLib.HL7.Message).ImportFromLibraryStream(streammsg)

While (streammsg.AtEnd = 0) {
     Set len = 1000
        Set tPrintMessage=newstream.Read(.len)
     Write tPrintMessage
}

But when i print it, its not showing complete message.

Any idea or suggestions?

Thank you in advance.

Jimmy Christian.
 

2
1 389
Question Ewan Whyte · Feb 21, 2018

I'm trying to get a count of specific message type with a specific entry and thought I could build the query in Message Viewer but  this does not provide counts (as far as I am aware). So when I take the SQL from 'Show Query' it omits the segment criteria as the code shows below. 

 I have attached the criteria that has been excluded. Is this possible?

Thank you

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

2
0 1668
Question Mark OReilly · Apr 19, 2024

In message bank how do you search within XML? XML is imported on message bank so that side is ok as can see it like below

On source system message viewer finds message

On Message bank it doesn't 

More basic queries using the MessageHeader will work so the filters do work just must not be using the right one (if it is possible) to query the XML message 

1
0 248
Question marco calderon · Jun 18, 2018

Hello!,

I was wondering if some one have an example code of the MessageBank Helper Class? , im currently using the MessageBank ok to store all message/events, but i need to be able to search for messages using the bodyclass properties. 

I've read that using MessageBank Helper Class you can do that, but i just cant find anything , documentation only says use the OnBankMSG() method and thats it.

1
1 527
Question Mark OReilly · Jul 18, 2022

I'm not sure why on some message you cannot edit/resend and change the inforatmation in the message 

i.e. 

Property property1As Messages.MesaageType1;

Property property2 As Messages.MesaageType2;

Property property3 As list Of Messages.MesaageType3;

All extend  Extends (Ens.Request, %XML.Adaptor)

is there anything we are missing? 

1
0 322
Question Stuart Byrne · May 4, 2017

Hi,

I've built a custom HL7 searchtable, but wish to remove some of the items.

I've removed the items I no longer wish to index recompiled the custom searchtable, however the previous searchtable values are available when searching messages in the namespace.

Do I need to rebuild the index for this searchtable to purge searching the old values?

I have stop and started the production.

Regards

Stuart

2
0 469
Question Victor Castanon · Jul 9, 2025

I'm trying to gather more data for one of my namespaces so I can do some analysis. However when I run .BuildIndex() nothing populates in the resulting SQL table. I've tried deleting the class and reimporting and compiling and still nothing. I feel like I'm doing something OBVIOUS that's wrong but I can't quite figure out what it is. Here's what I'm doing (Customer name redacted)
 

ClassExtendsParameter4000000
3
0 112
Question Ahmad Bukhtiar · Sep 23, 2020

Any syntax help, i want to check different msg types and then reach out to the value in that particular segment. Here is example, i want to get SSNNumber from a method. Trying to use NOTIN, and Lookup

Class Training.RulesFunctionSet Extends Ens.Rule.FunctionSet

{

ClassMethod getEmiratesId(pHL7 As EnsLib.HL7.Message) As %String
{
SET msgType = pHL7.GetValueAt("MSH:MessageType.TriggerEvent")
 

IF msgType NotIn "A39,A40,O01,O11,O09,R01" {
return pHL7.GetValueAt("PID:SSNNumberPatient")}

IF msgType In "A39,A40" {
 return pHL7.GetValueAt("PIDgrp(1).

5
0 789
Question Larry Pinsky · Apr 23, 2024

We are upgrading to Iris for Healthshare 2024.1.  When resending HL7 (resend and edit), the new message displays with a blank line in between each line of text.  In order to resend the message successfully, these blank lines need to be deleted.  Is this a setting, a bug or new functionality?  Is there a way to remove this functionality?

1
1 263
Question Colin Brough · Oct 3, 2025

Is there any way of saving a representation of the results of a query created in the Message Viewer to a file - most obviously CSV.

We are reasonably adept at creating queries. We'd like to be able to send the output to a file, rather than resorting to cut'n'pasting from the message viewer window...

Is this possible? (on any version of Ensemble/Iris?)

Desired output to file something like:

ID,TimeCreated,Session,Status,Error,Source,Target,Body_MSH_MessageControlId,.....
1,8888888,2025-08-20 05:03:14.324,8438123,Completed,OK,ICE ADT Validator,ICE ADT TCP,1z123456,20220822......
13
0 225
Question Stella Ticker · Jun 11, 2024

We have an operation that sends a Rest request to an external endpoint. The request includes the secret, which shows up in the Message Viewer. While access to the Production is restricted to only those who need it, we have been asked to remove it from the Message Traces. Is there a way to hide certain information on the Message Viewer ?

Thanks for reading

2
1 194
Question Mark OReilly · Feb 3, 2023

Hi:

I don't understand how to use this open exchange item for auto creating deleting items. I think it assumes knowledge in the steps of how to use it which i don't get. 

Added the code into dev on  SRFT.Utility.DeleteHelper.OnDeleteSuper and  SRFT.Utility.DeleteHelper.AddHelper  

current class is 

Class Messages.XML.GenericWif.fileparameters Extends (%Persistent, %XML.Adaptor)
{

Property revisionnumber As %String;

Property primarylink As Messages.XML.GenericWif.primarylink;

Property additionalindexes As Messages.XML.GenericWif.

2
0 372
Question Colin Brough · May 1

We have a large, existing production taking a feed from a single up-stream system and sending to a wide-variety of downstream systems. One of the downstream systems has been decommissioned, and we have deleted the classes that implemented the routing/transformations from the namespace, and deleted the components from the production (Wardview and WV Out in the diagram below). We now want to delete the messages associated with those components without deleting the messages associated with any other components.

1
0 60
Question Craig Regester · Oct 13, 2021

Good morning -

As we're starting to create more custom message classes to represent out JSON-based integrations, I was pondering how to implicitly grant SELECT privileges to a specific Security Role so they can utilize Message Viewer to search through the message history.

So if all of our custom JSON message classes are under OurParentPkg.Messages.REST.* (e.g., OurParentPkg.Messages.REST.AddPatientRequest and OurParentPkg.Messages.REST.AddPatientResponse), is there a method to ensure that our analysts can be granted the SELECT permission to anything created under OurParentPkg.Messages.

6
1 533
Question Murillo Braga · Aug 3, 2016

Hello guys,

One thing keeps annoying me and I'm pretty sure it does many other people (my workmates as well, lol): every time I access the 'Message Viewer' screen, the 'Time Format' come with 'Time only' as a default. Can I make 'Complete' as the default value for it?

Thanks!

2
0 522
Question Mark OReilly · Aug 30, 2024

As part of fully decoupling code we send a snapshot from a business service (running a SQL statement). 

sql service                         Processor                                File Out

This is picked up by a processer and puts it into a file .txt. 

Issue is if you open it up via the SQL.snapshot message as this is 46,819 rows it'll take too long to respond to opening up the sql.snapshot in the message viewer when viewing the session if looking from the business service 

Is there any way to not have this xml open up in full in the portal? I.e. have a see more?

3
0 237
Question Sergio Vidal · Mar 21, 2019

Hi,

I want to create a messages statistics group by month and year using deepsee. To do that I'm creating a DeepSee data model based on Ens.MessageHeader.

I added both SourceConfigName and TargetConfigName as dimensions and now I'm trying to add TimeCreated but I get these messages 

ERROR #5001: Level in time dimension must have a timeFunction: TimeCreated.H1.TimeCreated
  > ERROR #5490: Error running generator for method '%GetModel:User.Mensajes' 
ERROR: %DeepSee.CubeDefinition.cls(%GetModel) of generated code compiling subclass 'User.Mensajes'
    > ERROR #5030: An error occurred while compiling class 'User.Mensajes'
Compiling routine User.Mensajes.1
3
1 449
Question Mark OReilly · Jul 3, 2023

In show Query messages in the message viewer the head.%Id is always used. How do you do this via your own sql/objectscript as fast as the portal does a search as using dates searching Ens.MessageHeader on portal is slow. 

For instance if you try do a search saying (TimeProcessed >='2023-06-01 00:00:00.000' and TimeProcessed <'2023-06-02 00:00:00.000') it is slow but using the portal the search would know this is head.%ID >= 5344549861 AND head.%ID <= 5347641372. How do you utilize this in your own queries as can't see the logic in EnsPortal.MsgFilter.Assistant 

3
1 397