Enrico Parisi · Sep 2, 2025 go to post

Just to check, how did you "build index on both EnsLib.HL7.SearchTable and OSU.HL7.SearchTable."?

Enrico Parisi · Sep 8, 2025 go to post

How is configure the "Stay Connected" setting in the BO that use the EnsLib.SQL.OutboundAdapter?

How many/how often you have messages sent to this BO?

Enrico Parisi · Sep 8, 2025 go to post

What puzzle me is the "EnsLib.NullAdapter"!

EnsLib is a "system" package mapped to a read only database.

There is no such a "EnsLib.NullAdapter" class in the ENSLIB database.

Does this class even compile?!

Enrico Parisi · Sep 10, 2025 go to post

The last message/error is pretty clear:
Unable to allocate shared memory minimum of 146MB

Although it seems strange to me that a modern system is not able to allocate 146MB of memory!

Can you try to reboot the system?

Enrico Parisi · Sep 10, 2025 go to post

I advise to use:

TROLLBACK 1

Instead of

TROLLBACK

This way you rollback "your stuff", not EVERYTHING...god knows what! 😉

Enrico Parisi · Sep 11, 2025 go to post

What is reported in the WIndows Event log?

In addition, check the cconsole.log in the installation mgr directory.

Enrico Parisi · Sep 12, 2025 go to post

Is this on Windows or Linux?

Are you using 32 or 64 bit Cachè/Ensemble?

If Windows, did you configure the DSN named "DSN" in windows? 32 bits or 64 bits?

Enrico Parisi · Sep 15, 2025 go to post

What do your refer to with "Iris Health dashboard"?

What web server are you using? Apache?
Is the web server installed on the same system where IRIS is running?

Did you install IRIS after installing the web server?

During IRIS installation, was the web server configured?

You mentioned a "VM", is this a "normal" or a container installation?

Enrico Parisi · Sep 16, 2025 go to post

I'm not familiar with ODBC on Linux, however it seems that Caché is unable to use the configured DNS named "DSN".

Is that DSN properly configured and successfully tested in Linux?

For configuring ODBC, have a look to this "Ask AI" answer.

If you still have issues, I suggest to open a new question and provide detailed information on what you have configured/done and the results/errors you had.

Enrico Parisi · Sep 17, 2025 go to post

I think you are mixing hosts (production component) and jobs.

A host can be enabled or disabled, when a host is enabled there are a number (PoolSize) of jobs and each job has a status.

You can view/list the status/details of production jobs in the Management portal Interoperability -> Monitor -> Jobs.

You already know how to get if an host is enabled/disabled, to get the status of all jobs you can use the query Enumerate in the Ens.Job class, to test it:

Set rs=##class(Ens.Job).EnumerateFunc()

Do rs.%Display()

Enrico Parisi · Sep 23, 2025 go to post

I strongly discourage the use of embedded sql, it has many disadvantages.

Sorry Theo but I don't agree at all.

The differences (disadvantageous or not) between Embedded SQL and Dynamic Queries have evaporated since few years now, please have a look to this article from @Benjamin De Boe :

New in 2020.1: the Universal Query Cache

In general, I advice to use the query type (Embedded vs. Dynamic) that best fit in given code pattern, for example Embedded SQL is very convenient for query that returns 1 row.

Or maybe you have other issues with Embedded SQL?

Enrico Parisi · Oct 1, 2025 go to post

If the header is called "AUTHORIZATION", then use:

Set authHeader = %request.GetCgiEnv("AUTHORIZATION")

Enrico Parisi · Oct 6, 2025 go to post

In the very first line at the top of your class insert the line:

Include %syLDAP.INC

Edit to correct, as pointed out below, sorry!

Include %syLDAP

Enrico Parisi · Oct 13, 2025 go to post

To can get a base64 encoded value from JSON DynamicObject into a stream you don't need to write any conversion code using:

Set stream = jsonObject.%Get("data", , "stream<base64")

Bonus: this works with any data length, is not limited to the IRIS max string size as in the above article.

Enrico Parisi · Oct 14, 2025 go to post

Just a little trick, instead of:

set file="/ext/Stream.html"set stream=##class(%Stream.FileCharacter).%New()
 set sc=stream.LinkToFile(file)

You can use:

set file="/ext/Stream.html"set stream=##class(%Stream.FileCharacter).%OpenId(file)

😉

Enrico Parisi · Oct 21, 2025 go to post

It really seems that there is no java executable in the (supposed?) java home directory you specified.

Can you check if the following file exists:

C:\Program Filey\Java\jdk-11\bin\java.exe

Then there may be issues with the java version, maybe not.

Enrico Parisi · Oct 29, 2025 go to post

I think you need to "HTML escape" your output.

If your json is (relatively) small (<~3.5MB) then change:

Write formatter.Format(json)

With:

Set sc=FormatToString(json,.fsonFormatted)
If$$$ISERR(sc) {
    Write$zconvert(sc,"O","HTML")
} Else {
    Write$zconvert(fsonFormatted,"O","HTML")
}

If your json is potentially big (>~3.5MB), the you have to use FormatToStream() instead of FormatToString() and $zconvert in chunks, see $zconvert documentation.

Enrico Parisi · Nov 8, 2025 go to post

Can you please provide some context on how/where you are using try/catch within DTL?

What exactly you want to happen when an error occur?

Depending on your requirements, maybe writing a custom function is easier to handle this situation?

Enrico Parisi · Nov 10, 2025 go to post

I don't think Try/Catch is the solution, but I don't know what you want to happen when an error occur.

Maybe an option could be using the "erropt" parameter in $ZDTH, like:

Set dateH=$ZDTH(whatevervalue,,,,,,,,,"invalid")
If dateH="invalid" ....

Enrico Parisi · Nov 12, 2025 go to post

Hi @Ariel Glikman, thank you for the tip regarding the HSSYS Mirroring Utility.

Is there any reason why that utility is mentioned in the "Upgrade reference" part of the documentation and not in the "Healthcare Mirroring" (installation) documentation?

This gives the impression that the utility is (only?) for upgrading IRIS for Health.

Enrico Parisi · Nov 12, 2025 go to post

Are you sure that the tool (browser? does not look like Postman) you use in the first picture is using a POST andf not a GET method?

The "405 Method Not Allowed" error means that POST (as used in your code) is not allowed.