Initial Release
Example of using InterSystems IRIS or HealthShare Health Connect interoperability features for FHIR. Scenarios where forwarding requests and handling responses are required.
Main setup components are:
Build image
docker-compose build
Run container
docker-compose up -d
Modify your hosts file to resolve webserver hostname to 127.0.0.1
127.0.0.1 webserver
You can find your hosts file in:
| O.S. | File | 
|---|---|
| MacOS | /private/etc/hosts | 
| Windows | c:\Windows\System32\Drivers\etc\hosts | 
Access IRIS instance using superuser / SYS:
https://webserver/iris/csp/sys/UtilHome.csp
Open a WebTerminal session.
zn "HSLIB"
do ##class(HS.Util.Installer.Foundation).Install("FHIRINTEROP")
zn "FHIRINTEROP"
do $SYSTEM.OBJ.LoadDir("/app/src/", "ck", .errorlog, 1)
Create a FHIR server in InterSystems IRIS. You will be using this as an external FHIR server.
zn "HSLIB"
do ##class(HS.Util.Installer.Foundation).Install("FHIRREPO")
Create FHIR server in Health > FHIRREPO > FHIR Configuration > Server Configuration as:
/csp/healthshare/fhirrepo/fhir/r4hl7.fhir.r4.core@4.0.1zn "FHIRINTEROP"
do ##class(interop.util.Auth).CreateOAuth2Server()
Go to System Administration > Security > OAuth 2.0 > Client > Create Server Description
https://webserver/iris/oauth2sslGo to System Administration > Security > OAuth 2.0 > Client > Client Configurations > Create Client Configuration:
fhirserver-resserverfhirserver oauth resource serverResource serversslclient-appclient-appConfidentialsslyeswebserveririsClient credentialszn "FHIRINTEROP"
do ##class(interop.util.Auth).CreateOAuth2IssuerServiceRegistry()
Health > FHIRREPO > FHIR Configuration > Server Configuration > Edit FHIR Server endpoint:
fhirserver-resserverclient-confidential-symmetric,client-confidential-asymmetricLoad some simple sample FHIR data into repo.
zn "FHIRREPO"
set sc = ##class(HS.FHIRServer.Tools.DataLoader).SubmitResourceFiles("/app/install/simple-fhir-data/","FHIRServer","/csp/healthshare/fhirrepo/fhir/r4")
Scenario where you need to build or manipulate some FHIR request and send it to an external FHIR server.
Interoperability > FHIRINTEROP > Configure > Credentials > New
FHIRRepoBasicsuperuserSYSIn FHIRINTEROP namespace, go to Health > Service Registry and create a new service:
external-fhirserver-basicHTTPsslwebserverFHIRRepoBasic/iris/csp/healthshare/fhirrepo/fhir/r4In FHIRINTEROP namespace, go to Health > Service Registry and create a new service:
external-fhirserver-oauthHTTPsslwebserver/iris/csp/healthshare/fhirrepo/fhir/r4Have a look at the interop.Production production:
interop.bs.FHIRFileService - Business Service that reads a file and creates a HS.FHIRServer.Interop.Request message.interop.bp.FileToFHIRService - Business Process that prepare HS.FHIRServer.Interop.Request from service before sending to external FHIR server.HS.FHIRServer.Interop.HTTPOperation - built-in Business Operation that sends a FHIR request to an external FHIR server.Run some tests:
data/patient.json into data/fhir-input to process a sample file in your production.Scenario in which you need to receive FHIR requests and send them to an external server.
For example, in case you need to forward a FHIR request to an external server you can use simple FHIR Interoperability Adapter in InterSystems IRIS or HealthShare Health Connect.
You can find more information in FHIR Interoperability Adapter.
Let’s say that you need to forward FHIR requests to a FHIR server, including OAuth token:
You need to install the FHIR interoperability adapter before using it in a namespace.
During the adapter installation it will create:
InteropService and InteropOperation in your production.Install the adapter:
zn "FHIRINTEROP"
set status = ##class(HS.FHIRServer.Installer).InteropAdapterConfig("/myendpoint/r4")
Update your production as needed
Change InteropService Target Config Name so it will send messages to FHIRServer Operation OAuth which sends messages to external FHIR server.
Test your service using iris-fhir-interop.postman_collection.json Postman collection FHIR Interop (OAuth)
As a variation from the last scenario, let’s say that you need to send FHIR requests to a FHIR service, but you need to make handling on the requests or response:
In FHIRINTEROP namespace, go to Health > Service Registry and create a new service:
external-simple-serviceHTTPlocalhost/csp/external/ServiceRequestChange InteropService target so it will send requests to interop.bp.SimpleServiceFHIRHandler.
Now, test your service using iris-fhir-interop.postman_collection.json Postman collection FHIR Interop (Simple Service)