Yes, it's possible. Your input message is HL7, so you can just paste raw HL7 into the test tool.
- Log in to post comments
Yes, it's possible. Your input message is HL7, so you can just paste raw HL7 into the test tool.
You need to literally use %Ensemble("%Process")... Don't replace "%Process" with the name of your component.
Yep. It's a reference to the instantiated business process.
A reference to the business process (our message router) that the DTL is being run from is stored in %Ensemble.("%Process") and you can use that to do a SendRequestSync.
Be sure to add lots of error handling. DTLs throwing strange errors can be a pain to troubleshoot.
if '$D(%Ensemble("%Process")) {
write "This doesn't work in DTL test mode",!
quit $$$OK
} else {
#dim bp as Ens.BusinessProcess
set req = ##class(Ens.Request).%New()
set bp=%Ensemble("%Process")
set tSC=bp.SendRequestSync("My.Operation",req,.resp)
if $$$ISERR(tSC) {
// Oops... error!
}
quit tSC
}I didn't read your post carefully enough -- I see that you're passing the column name as a variable named "index". Embedded SQL doesn't allow using host variables (e.g. :myVar ) in place of an identifier:
A host variable cannot be used to specify an SQL identifier, such as a schema name, table name, field name, or cursor name. A host variable cannot be used to specify an SQL keyword.
The alternative would be to switch from embedded SQL to Dynamic SQL, which would allow you to manually construct your query string before executing it:
set myQuery="SELECT "_index_" FROM osuwmc_Tecsys.UnitReference WHERE "_index_" = ?"
"value" would then be passed as a parameter when executing the statement and you would use "%Get" in the result set to fetch the value for ValidUnitID.
If "index" is a column name in the table then it shouldn't have a colon at the front.
Also, it's best to check the SQLCODE in order to handle errors:
if SQLCODE < 0 {
// Do something about an error
} else {
quit myReturnValue
}Hi Yone,
I see two possible problems:
It seems like "Do ImagenMIMEPart.Body.Write(linea)" should be inside the while loop. No? In this case after the final read() linea may be empty and that is what is set as the content of the mime part.
While 'stream.AtEnd {
Set linea=stream.Read()
}
$$$LOGINFO("linea: "_linea)
//Escribir la imagen en el mensaje MIME
Do ImagenMIMEPart.Body.Write(linea)And here you are using a character stream to read the jpeg, but jpeg is a binary format. You'll want to use %Stream.FileBinary instead.
Set stream=##class(%Stream.FileCharacter).%New()
Set sc=stream.LinkToFile("C:\Users\ext-ymorjim\Pictures\miSCS.jpg")Here's a doc about creating multipart/form-data requests:
https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.U…
Yes, from system management portal System Explorer >> SQL you can enter a query and instead of executing it click "Show Plan".
.png)
%K(-5) wouldn't take care of DST automatically. $ZDATETIMEH(myUTCTime, -3) will convert a $HOROLOG format (actually $ZTIMESTAMP format) value of UTC time into a $HOROLOG value in local time. So you can first use ConvertDateTime with %q(4) to convert to $ZTIMESTAMP format, then use $ZDATETIMEH with -3 to convert to local time, then use ConvertDateTime (or $ZDATETIME) to convert the $HOROLOG format back into a formatted date/time string.
https://docs.intersystems.com/healthconnectlatest/csp/docbook/Doc.View…
https://docs.intersystems.com/healthconnectlatest/csp/docbook/Doc.View…
Yes, this can be done through configuration and is a standard feature of the HL7 HTTP business operation (EnsLib.HL7.Operation.HTTPOperation).
Details on settings for the HTTP operation. Look in particular at SSLConfiguration:
https://docs.intersystems.com/healthconnectlatest/csp/docbook/Doc.View…
Details on creating an SSL/TLS config (with or without cert) to be used by the operation:
https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.U…
A few people have suggested using web services, which seems like the most straightforward approach to me. Anna, is there a reason not to use a web service?
Seconding Putty
Just adding a quick note that there is also a FileService and a BatchFileService in addition to the FTP services Stefan mentioned.
Yes, it's possible by editing the chartbook. Each chart in the chartbook can be assigned a sequence number, charts are then displayed in numerical order of the sequence number.
Previous thread about this...
https://community.intersystems.com/post/objectscript-vs-code-icon-doesn…
Have a look at %Regex.Matcher. Since you always want the 2nd capitalized section you can just make that your regex capture group:
set matcher=##class(%Regex.Matcher).%New("^[A-Z][a-z]*([A-Z][a-z]*)")
set matcher.Text="ToVendornameORM"
if matcher.Locate() {
write "Found ",matcher.Group(1)," at position ",matcher.Start,!
}This gives me the output:
Found Vendorname at position 1
Interface Maps includes a config item search function that can search on partial name matches:
https://docs.intersystems.com/healthconnect20201/csp/docbook/DocBook.UI… Interface Maps
During a period when messages are processing slowly, can you check the queues page (Ensemble >> Monitor >> Queues) and see if there are messages waiting to be processed?
The next step would be to collect some pButtons data to see if there's a performance bottleneck on the system:
https://community.intersystems.com/post/intersystems-data-platforms-and…
Even before running the pButtons it would be worth doing a quick check in the OS to see which processes (Ensemble and non-Ensemble processes) are using the most CPU and RAM.
This may not mean that the rules are processing slowly. Is it possible that there were a large number of messages queued for HisEmrRouter?
This is the current link:
https://learning.intersystems.com/course/view.php?id=707
For any new application you'll want to select Unicode. 8-bit would be used for legacy applications that were designed for 8-bit character sets.
Yes, you can store the values in a multidimensional array. And the syntax you showed is correct:
for j=0:1:ref.NOK.%Size()-1
{
set MyNOKname(j)=NOK.%Get(j).NOKname
}
This is typically handled by data lookup tables. Lookup table entries can be maintained through a provided GUI, imported from files or through custom code:
https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.U…
DTL includes pre-built functions for looking up values in a lookup table:
https://docs.intersystems.com/healthconnectlatest/csp/docbook/Doc.View…
It's strange that with StayConnected set to 120 the service is not closing the connection. WRC could help figure out why we're not disconnecting.
You can use this method to programmatically disable/stop and re-enable the service:
s tSC=##class(Ens.Director).EnableConfigItem("Demo.HL7.TCPService",0)
Have you considered setting Stay Connected on the business service? This will cause the service to close the connection automatically after a specified amount of idle time since the last message arrived. The upstream system can then reconnect whenever it wants.
Hi Adam,
I'm not familiar with XLT, so I don't have any examples of converting XLT to DTL.
Here's some more information on executing XSLT transformations from a BPL:
https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.U…
Or you can execute an XSLT transformation directly from COS:
https://docs.intersystems.com/healthconnectlatest/csp/docbook/Doc.View…
Since both formats are XML-based, you could write an XSLT to do the conversion. To further automate the process you could create COS that calls the XSLT, creates a new DTL file and inserts the rules into the XData block, and compile the new DTL.
Yes. Instructions here.
Hi Luiz,
Here is the Caché documentation for building triggers.
-Marc