Ens.MessageHeader has a Status column. You may need to select on the name or its corresponding number depending on select mode. For example, status "Suspended" is 5. If selecting in display mode, use Status='Suspended' and in raw mode use Status=5 in your where clause.
The number for each status is defined in macros in EnsConstants.inc - the ones that start with eMessageStatus
I was able to find APIs for the tasks being performed in Sebastian's custom code. It is preferrable that APIs are used rather than direct global access. I also discovered another method of finding the PatientID, rather than having to extract it from the RowID. This code should be equivalent to Sebastian's code:
{
set patientid = %request.Data("PatientID",1)
set streamletID = ##class(web.SDA3.Loader).GetStreamletId(,patientid,"ALG",id)
set tSC = ##class(HS.SDA3.Container).LoadSDAObject(streamletID,.allergySDA3)
set sneeziness = allergySDA3.sneeziness
quit sneeziness
}
The reason this is happening is because your message specifies UTF-8 in MSH:18. If you remove that from your test message, it will look correct.
When using the 'test' button to test a DTL, it will always try to use the encoding defined in MSH:18 to read the message.
When using a business service to read the message, it will try to use the encoding defined in MSH:18 if it is defined. If it is not defined, then the 'Default Char Encoding' setting determines which encoding will be used. You can force the 'Default Char Encoding' to override MSH:18 by putting a ! before it.
http://docs.intersystems.com/ens20161/csp/docbook/DocBook.UI.Page.cls?KE...