High-Performance Message Searching in Health Connect

The Problem

Have you ever tried to do a search in Message Viewer on a busy interface and had the query time out? This can become quite a problem as the amount of data increases. For context, the instance of Health Connect I am working with does roughly 155 million Message Headers per day with 21 day message retention. To try and help with search performance, we extended the built-in SearchTable with commonly used fields in hopes that indexing these fields would result in faster query times. Despite this, we still couldn't get some of these queries to finish at all.

17 0
6 112

If you work with interoperability productions of InterSystems IRIS or Ensemble, no doubt you are familiar with the Message Viewer page. The page supports filtering messages according to filter criteria you enter in the Basic and/or Extended Criteria sections. Extended Criteria conditions are specified as property-operator-value triples. Once you click Search button, such triples become WHERE clause conditions of a generated SQL query executed against message header/body tables.

4 0
2 611

Prefer not to read? Check out the demo video I created:

https://www.youtube.com/embed/-OwOAHC5b3s
[This is an embedded link, but you cannot view embedded content directly on the site because you have declined the cookies necessary to access it. To view embedded content, you would need to accept all cookies in your Cookies Settings]

2 3
1 147

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.

1 4
0 539

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

1 3
0 274

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

1 6
1 519

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

0 2
0 275

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

0 3
1 302

I would like to search for all messages where their body size is greater than 3MB.

I have searched through the common Header and body properties and I have not found a size property. I have looked at the extended properties but I am unsure if any of the extended classes allows me to find the Doc size.

I have stepped through most of the body property classes related to messages or documents that have an exposed property that filters by document or message size.

Is there a way to do this within the Message Viewer or Terminal?

Thank you in advance.

0 4
0 344

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!

0 2
0 433

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

0 2
1 135