As you noted, fromDao is in the HS.FHIRModel classes, but in the code you pasted you're actually using a class under HS.FHIR:

Set cls = $CLASSMETHOD("HS.FHIR.DTL.vR4.Model.Resource.Patient","fromDao",dao)

I think you want to do this instead:

Set cls = $CLASSMETHOD("HS.FHIRModel.R4.Patient","fromDao",dao)

https://docs.intersystems.com/irisforhealth20241/csp/documatic/%25CSP.Do...

Good question. In OAuth the response will include the expiration time, so that's what I was expecting here.

If the response doesn't include an expiration time does the vendor's documentation say anything about if tokens can be used for more than 1 request and if so how long it's valid for? If you know it's supposed to be valid for 60 minutes then you could just log the time when you requested the token and use that to track it.

How confident are you that nothing has changed in the NACKs being returned by the remote system? Is it possible that the value in MSA:1 used to be something other than AE? Is it possible that previous NACKs didn't have an MSA segment?

In the HL7 code table for MSA:1, "AE" indicates an error, so IRIS considers that an error and triggers the rule "E=F".

https://docs.intersystems.com/irisforhealth20241/csp/docbook/DocBook.UI....

https://docs.intersystems.com/irisforhealth20241/csp/docbook/DocBook.UI....

I found this in the docs:

  • From the server, users can:
    • Run, filter and modify reports.
    • Export to a variety of formats.
    • Schedule reports to be distributed via email or FTP.

https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls...

And docs on the API:
https://reportkbase.logianalytics.com/v23.1/api/index.html

Hi Rochdi,

You don't need to use %File and then copy it to a file stream. You can just use %Stream.FileCharacter to directly open and read the file:

  Set stream=##class(%Stream.FileCharacter).%New()
  Set sc=stream.LinkToFile("c:\myfile.txt")
  While 'stream.AtEnd {
  Set line=stream.Read()
  ; Process the chunk here
  }

And I can confirm that I've also seen %Stream.FileCharacter significantly outperform %File for reads.

-Marc

I suspect the problem is that you're using a %DynamicObject. BPLs should use persistent/persistable objects because business process execution can in some cases be suspended temporarily and then resumed. Before execution is suspended, context objects are saved into the DB.

%DynamicObjects are not persistent objects, so their values are lost when execution is suspended. You can overcome this by using %ToJSON to serialize the %DynamicObject into a stream property of the context object. Streams are persistable.

The life cycle of a business process requires it to have certain state information saved to disk and restored from disk, whenever the business process suspends or resumes execution. This feature is especially important for long-running business processes, which may take days or weeks to complete.

I've seen Zen reports used extensively for Chinese content, so they can definitely handle the far reaches of the Unicode realm.

What happens if you do this?

write !,"<PostInfo>My GE: "_$c(8805)_"</PostInfo>"

or this?

write !,"<PostInfo>My GE: "_$zcvt($c(8805),"O","UTF8")_"</PostInfo>"

Some other things to check:

It would be great to have a cheat-sheet for all of these keyboard shortcuts and other tricks, especially in terms of "if you used to do X in Studio, here's how to do that in VS Code".

A few months ago I happened across the incantation for the VS Code equivalent of Studio's "Find in Files" (free text search of server-side classes) but forgot the key combination and haven't had the time to try to figure out which docs to check and guess at whether it's a standard feature of VS Code or of the ObjectScript plug-in.