Hi Phillip,

In TrakCare, interoperability is controlled by TrakCare Health Messaging Framework (HMF). Each Interface has to go through HMF Gateway, which is an IRIS Production, and then all those are getting routed through HMF Router which is a separate IRIS production. Please have a look at HMF documentation for more details. A lot of this code is auto-generated so you need to understand what needs to be configured in TrakCare and what needs to be configured in Production.

Well first of all there is a first-class support for FHIR data in IRIS for Health and I would definitely recommend to use it instead of rolling out your own class-based solution. See documentation here https://docs.intersystems.com/irisforhealth20221/csp/docbook/Doc.View.cl...

If you want to work with projections, given that even basic data fields in FHIR are quite complex https://www.hl7.org/fhir/datatypes.html#primitive you'll need to define separate embedded classes for each data type; it doesn't have to be a separate class for each field.

There are few reasons superserver API is not publicly documented, one of them is to prevent an easy discoverability of outdated instances outside firewalls by hackers. You can use Atelier API with relatively recent Cache/IRIS, which answers on Web server port and has support for authentication and will return version of Cache/IRIS it's running on, for example:

You can also try to ask WRC privately if above option is not suitable for any reason.

You can try using DBF utility from my old Cache-based framework:

https://github.com/logist/p6/blob/master/classes/p6/Dbf.xml

It has ReadFile/ReadStream & WriteFile/WriteStream methods

Usage:

set sc=##class(p6.Dbf).WriteFile(file,array)
sc - execution status %Status
file-file name
array - string containing a name of global with data,
 
for example: ^asd("asdf"),
^CacheTemp($job,"dbf")
this array has to provide the following structure
...,"header")=<header>
format $list($list(var1,length1,type1,dec1),...,$list(varN,lengthN,typeN,decN)); type is D for date N for number anything else for string
...,"row",<row number>)=<data>

data format $list(var1,...,varN)