So I found that it is possible to save single messages using the "HL7 V2.x Message Viewer" which might not be suitable for you if you're looking to export loads of messages.

One option could be to add a new HL7 file out operation, search for your desired messages from the Router you wish to "export" from and then resend them to a new target which can be selected from the Resend messages page.

Hi all, I have answered my own question.

Per number, I will need to create a new HS.SDA3.PatientNumber and set the required information, and then insert each HS.SDA3.PatientNumber into the HS.SDA3.PatientNumbers list that exists within the HS.SDA3.Patient object.

For the benefit of anyone else that stumbles across this post (and myself when I forget this in a few weeks time and end up finding my own post): To achieve this in Terminal as a testing area, these are the steps I followed:

Set Patient  = ##class(HS.SDA3.Patient).%New()

Set PatNum1 = ##class(HS.SDA3.PatientNumber).%New()

Set PatNum2 = ##class(HS.SDA3.PatientNumber).%New()

Set PatNum1.Number = "123456"

Set PatNum1.NumberType = "MRN"

Set PatNum2.Number = "9999991234"

Set PatNum2.NumberType = "NHS"

Do Patient.PatientNumbers.Insert(PatNum1)

Do Patient.PatientNumbers.Insert(PatNum2)

You could run the compile command you would use in Terminal within Studio using the output window. However, the only "speed boost" would be time saved from not launching and logging in to Terminal.

If you're suffering from really slow compile times, it might just be that your namespace is huge, or a sign of a need to upgrade your hardware.

Get in touch with either WRC or your sales engineer, and they'll happily help out. 

The accepted answer would probably be your best shot.

Say for example you wanted a count of all messages that have come from a service called "TEST Inbound", you could use the SQL query option (System Explorer>SQL) to run the following:

SELECT count(*)
FROM Ens.MessageHeader WHERE SourceConfigName = 'TEST Inbound'

If you wanted to put a date range in as well (which is advisable if what you're searching is a high throughput system and your retention is large):

SELECT count(*) Total
FROM Ens.MessageHeader where SourceConfigName = 'TEST Inbound' AND TimeCreated >= '2018-04-30 00:00:00' AND TimeCreated <= '2018-04-30 23:59:59'

Hi Gadi.

Glad to hear you have something in place now.

I guess a task is better for specifying the exact time for the event to run rather than every x number of seconds, as the timing could go out of sync if the service was restarted at any point.

For the setup I have, because I want to check the status of the drive free space (and I also check a specific folders files to alert if any of them have existed for more than 5 minutes) it makes sense to just let the Call interval run every x seconds.

I use a similar approach to Edwards answer (using a BS that runs every x seconds), but for alerting when freespace on my drives fall below a specified value.

I'm not sure if my approach is the most efficient to your requirement, but I would do something like this in the Service:

  • Query the table and sort it so you get the most recent result at the top (I'm assuiming the dateTime field is suitable for this)
  • Take a Snapshot of the results, and and get the first datetime result.
  • Compare it to the system datetime
  • Send an alert to Ens.Alert if the difference is more than 24 hours

Thanks Joyce, I made contact with them instead of support, and after a webex the solution was found!

It turns out the performance issues I had been getting when adding the entire namespace was because I had included all of the system folders (ens, enslib, EnsPortal, etc). So on each launch, Eclipse was then reindexing the entirety of the core files in each namespace.