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)

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

Hi Bob.

These will be picked up by either Purge running the all command, or by selecting "Messages" for TypesToPurge in either one.

The MessageBodyS should be purged when the "BodiesToo" tick box is selected in the task. The description for the BodiesToo  option is: "Delete message bodies whenever their message header is deleted. This is off by default because some Productions may use message objects that are part of a larger environment and not transitory." so it may be that your task was left with the defaults and this has built up.

Hi Lorraine.

I think the issue is that the Constraint is not set for the condition to be able to reference the filename. I see that you have added a comment to another post which explains how to do this, but it stops short in explaining fully. Fortunately, Joshua Goldman then links to another post where he goes in to more detail.

I'll copy and paste it here, and include the link.

https://community.intersystems.com/post/how-route-file-based-file-type

  1.  Define a business rule. Make it a General Message Routing Rule and have the assist class be EnsLib.MsgRouter.RuleAssist.
  2. Add a rule to the rule set and double-click Constraint. Specify the rule class Persistent > ENS > StreamContainer
    That's the message class used by the pass-through file service/operation. You can also specify the business service as the source.
  3. Double-click  condition, and in the expression editor specify Document.Type or Document.OriginalFilename, add an operation, and a  value.
  4. Send it to the correct operation.
  5. Define a router business process and specify the rule you just created.
  6. Connect the pass-through file service to the router.