Tani Frankel · Jun 22, 2025 go to post

The related short videos have been uploaded and published, so updated the post accordingly.

Tani Frankel · Mar 2, 2025 go to post

You might also find this HL7 benchmark post by @Mark Bolinsky useful, specifically the section titled "Disk Configuration", and the related "Table 2" there.

For convenience I'm pasting this table here (but read the original post for the full context, for example your scenario sounds more like the "T2 Workload" described there, rather than the "T4" one) -

Table 2: Disk Requirement per inbound HL7 T4 Message  

Contributor Data Requirement
Segment Data 4.5 KB
HL7 Message Object 2 KB
Message Header 1.0 KB
Routing Rule Log 0.5 KB
Transaction Journals 42 KB
Total 50 KB
Tani Frankel · Jan 12, 2025 go to post

Congratulations, again, @Yuval Golan ! 🏆🥈

Well done for your year-after-year successes 📆:

2018 - 7th place

2019 - 5th place

2020 - 3rd place

2021 - 2nd place

2022 - 3rd place

2023 - 3rd place

2024 - 2nd place

2025 - ? 1st place?...

Tani Frankel · Dec 1, 2024 go to post

For the Mgmt. Portal side you can follow through @Yuri Marx's example (though it uses Google and not Keycloak but the principal is similar, you will need a ZAUTHENTICATE, you will find a sample there).

Re your question about accessing the Access Token, you can include in your ZAUTHENTICATE something like this:

set isAuthorized=##class(%SYS.OAuth2.AccessToken).IsAuthorized(applicationName,sessionId,,.accessToken,,,.error)
 if isAuthorized {
    set sc=##class(%SYS.OAuth2.AccessToken).GetIntrospection(applicationName,accessToken,.jsonObject)
    ...
 }    
 // then you can access the jsonObject for getting info, e.g. (and this is from a KeyCloak example):set Username="OAuth2_"_jsonObject.username
 // or:set iterator=jsonObject."realm_access".roles.%GetIterator()
 while iterator.%GetNext(.key,.val) { 
    ...
 }


For the FHIR API you can look at @Luis Angel Pérez Ramos's example (though it uses auth0, but again it should be similar).
In this case you don't have to worry about ZAUTHENTICATE because the FHIR Server infrastructure has you covered.

By the way, in v2024.3 which was just released, there's a new OAuth FHIR Client QuickStart you can use to set this up in an easier manner.

For other REST services this would depend on their nature and whether there is user interaction which allows for example the actions described in the two samples mentioned above.

Note, my colleague @Ariel Glikman and myself are in the midst of a project that includes interacting with KeyCloak, and possibly once it's complete we can share some insights, but this will take some time, so I wouldn't hold my breath waiting for this.

Another note, I believe that down the line (perhaps even with v2025.1) we will have more seamless out-of-the-box integration with these kinds of OAuth authentication flows, which will require less background work as you need to implement today with ZUATHENTICATE etc. Stay tuned...

Tani Frankel · Nov 20, 2024 go to post

I suggest turning on relevant logging which could provide you with more details as to what is happening behind the scenes and what might be the problem.

See an example in @Daniel Kutac post.

Tani Frankel · Nov 19, 2024 go to post

I believe you need to use PasswordHash, see for example from Docs:

[Actions]

CreateUser:Name=SQLAdmin,
  PasswordHash="cec6638a357e7586fddfb15c0e7dd5719a1964e774cd37466fb0c49c05,
  323cb89148c887166dd2be61c107710539af2c01b43f07dccc8d030ac2c1a8cf7c5ace4a00d57e3780f,10000,SHA512",
  Roles="%SQL,%DB_USER"

Re PasswordHash see more details in the related Docs. For example:

$ docker run --rm -it containers.intersystems.com/intersystems/passwordhash:1.1 -algorithm SHA512 -workfactor 10000
Enter password:
Enter password again:
PasswordHash=0fad6b1a565e04efb5fe9259da8457456883e0a3a42c1a34acec49cbbc1fb8c4c40f1846559ce180c103898db836,dd0874dc346d23679ed1b49dd9f48baae82b9062,10000,SHA512
Tani Frankel · Nov 18, 2024 go to post

When you say "always" (and you also mentioned "50%") what do you mean? - some cases the content is displayed and sometimes not? Any distinction as to when it's ok and when not? is it perhaps side-dependent? Any "special" characters that might influence this?

Tani Frankel · Nov 17, 2024 go to post

Hi Dmitrii,

Can you please elaborate as to the content of your stream, is it XML? something else?

Tani Frankel · Sep 30, 2024 go to post

Indeed missed it! Can't wait to see it!

I'm sure the team did a great job in rolling out the new Global Masters

Tani Frankel · Jul 15, 2024 go to post

For the machine you got the <WIDE CHAR> error for - did you install 8bit or Unicode?

Your $ZV without the 'U' after the build number, suggests 8bit. I would recommend you install Unicode (8bit support is there more for customers who have legacy 8bit databases).

For the machine you do see the web applications, but can't browse to the page - 

Did you enable the Web Applications?

(https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.U…)

Are you getting an error when you browse there? (you can check the Browser Debugger just in case)

Might it be an authentication/authorization issue? (you can check the IRIS Audit, making sure you have Login Failure and/or Protect events enabled)

Tani Frankel · Jul 15, 2024 go to post

Can you share the contents of the HS.Util.Installer.HSSYS-0.log file (it should be under the mgr directory of the IRIS installation).

For example if it includes a line such as:

2024-05-01 13:58:46.077 HS.HealthConnect.FHIRSQL.Upgrade.V2:InstallOnce-HSSYS-1 Configured FHIRSQL Application endpoints
 

Similarly also in ensinstall.log, with a line like this:

HS.HealthConnect.FHIRSQL.Upgrade.V2:InstallOnce-HSSYS-1 Configured FHIRSQL Application endpoints

Tani Frankel · Jul 14, 2024 go to post

Hi Ashok,

Sorry for the silly question, but just to double check - did you deploy IRIS or IRIS for Health?
 

Tani Frankel · May 22, 2024 go to post

Thank you Kari
I guess with a custom approach, you could also utilize for example the Vault REST API and use that when you want to access these kinds of credentials.