Oliver Wilms · Apr 4, 2025 go to post

Here is the Namespace configuration in Installer class:

Class App.Installer
{

XData setup
{
<Manifest>
  <Default Name="SourceDir" Value="/opt/feeder/src"/>
  <Default Name="Namespace" Value="FEEDER"/>
  <Default Name="Resource" Value="%DB_DEFAULT"/>

  <Namespace Name="${Namespace}" Code="${Namespace}" Data="${Namespace}" Create="yes" Ensemble="1">
    <Configuration>
      <Database Name="${Namespace}" Dir="/voldata/irisdb/feeder" Create="yes" Resource="${Resource}"/>
    </Configuration>

I see the resource is %DB_DEFAUILT with all UPPERCASE.

Oliver Wilms · Mar 26, 2025 go to post

I would use an out of the box File Service and send a StreamContainer to a BPL process. The BPL can read one line at a time and call a process...

Oliver Wilms · Jan 19, 2025 go to post

Hi, Julius. Thank you for responding to my question.

I work for Department of Veterans Affairs. I believe the coding standard including prohibiting argumentless or exclusive NEW is not new.

Someone modified old code to become non-interactive. Unfortunately they did not follow coding standard and now it is up to me to fix it. I found where variables are killed.

I think a class method using procedure block should be equivalent to exclusive new. All variables are hidden except parameters or public list.

Oliver Wilms · Jan 19, 2025 go to post

I found the code responsible for Killing variables. I understand why I get <UNDEFINED> when I run the original legacy code WITHOUT the Exclusive NEW.

Oliver Wilms · Jan 11, 2025 go to post

I have installed ZPM into %SYS namespace on my IRIS instance running on my work laptop.

When I tried zpm "install git-source-control" in %SYS namespace, I see this:

ERROR! 'git-source-control' not found in any repository.

Oliver Wilms · Dec 16, 2024 go to post

I got this error, because I had the wrong value for Authentication signing algorithm. I changed it from ES512 to RS384.

Oliver Wilms · Dec 15, 2024 go to post

I think Code Quality is not working what I copy from iris-interoperability-contest. 

Oliver Wilms · Dec 13, 2024 go to post

I would try something like this:

Set tRequest.Https = 1

Set tRequest.SSLCheckServerIdentity = 0

Set tRequest.SSLConfiguration = "ISC.FeatureTracker.SSL.Config"

Oliver Wilms · Nov 20, 2024 go to post

I have updated flags to 1 to remove CR/LF.

I still see Invalid Signature warning in jwt.io

Oliver Wilms · Nov 20, 2024 go to post

I have updated my code as follows:

ClassMethod test2() As %Status

{

    #Dim sigJOSE As %DynamicObject

    #Dim encJOSE As %DynamicObject

    #Dim claims As %DynamicObject

    Set ts = $ZTIMESTAMP  // 67161,81327.6633447

    Set exp = ##class(%OAuth2.Utils).TimeInSeconds(ts,300)

    Set nbf = ##class(%OAuth2.Utils).TimeInSeconds(ts,0)

    Set iat = ##class(%OAuth2.Utils).TimeInSeconds(ts,0)

    Set sigJOSE = {}

    Set sigJOSE.alg = "RS384"

    Set sigJOSE.typ = "JWT"

    Set header = sigJOSE.%ToJSON()

    Set claims = {}

    Set claims.iss = "863e73c5-9839-4b54-8205-c9404d2bb762"

    Set claims.sub = claims.iss

    Set claims.aud = "https://fhir.epic.com/interconnect-fhir-oauth/oauth2/token"

    Set claims.jti = "f9eaafba-2e49-11ea-8880-5ce0c5aee679"

    Set claims.exp = exp

    Set claims.nbf = nbf

    Set claims.iat = iat

    Set payload = claims.%ToJSON()

    //Set sigJWKS = ..MyKeys()

    //Set encJWKS = ""

    //Set tSC = ##class(%Net.JSON.JWT).Create(sigJOSE,{},claims,sigJWKS,encJWKS,.JWT)

    //Do $System.Status.DisplayError(tSC)

    Set bitLength = 384

    Set flags = 0

    Set tData = ##class(%SYSTEM.Encryption).Base64Encode(header,flags)_"."_##class(%SYSTEM.Encryption).Base64Encode(payload,flags)

    Set key = ..PrivateKey()

    //Set privKeyPassword = ""

    Set signature = ##class(%SYSTEM.Encryption).RSASHA3Sign(bitLength, tData, key)

    Set jwt = tData_"."_##class(%SYSTEM.Encryption).Base64Encode(signature,flags)

    Set pad = "="

    Set jwt = $Translate(jwt,pad,"")

    Set delim = $Char(13,10)

    For ii = 1:1:$Length(jwt,delim) {

        Write $Piece(jwt,delim,ii),!

    }

    Quit jwt

}

Oliver Wilms · Nov 20, 2024 go to post

I had generated a signature in variable x. I forgot the next step:

The full JWT is constructed by combining the header, body and signature as follows:

base64urlEncoding(header) + '.' + base64urlEncoding(payload) + '.' + base64urlEncoding(signature)
Oliver Wilms · Nov 13, 2024 go to post

What scheduled tasks do you launch? How do they interact with the Production?

Oliver Wilms · Sep 28, 2024 go to post

I think the problem is that init.sh is not executed. I see it does not have execute permission.

Oliver Wilms · Sep 19, 2024 go to post

I wonder if I can use JOB to invoke a routine and specify a file as the input device. Does anybody know how to do this?

Oliver Wilms · Sep 3, 2024 go to post

Hello, Troy. I like the idea to have a router for files. Would the operations each have one specific directory that the router can route files to? How will the router determine the destination for each file?

Oliver Wilms · Aug 30, 2024 go to post

I realize that my HTML contains references to css files. I do not yet have the css files where pandoc is running.

Oliver Wilms · Aug 30, 2024 go to post

Maybe I have not installed enough for pandoc to work properly in my container. Are there other tools for programmatically creating pdf (from html)?

Oliver Wilms · Aug 30, 2024 go to post

The first file I tried to convert to PDF displays at the source system, but it does not look exactly as expected. I copy ther pdf to csp directory and display it there. I also tried a simple html file and it works correctly end-2-end.