#Interoperability

7 Followers · 569 Posts

In healthcare, interoperability is the ability of different information technology systems and software applications to communicate, exchange data, and use the information that has been exchanged.

Question Julian Matthews · Dec 5, 2025

Hey everyone.

As part of an ongoing mission to track down orphaned HL7 Messages in our integration engine, I have been digging into our environment to track down the causes.

Having looked at various posts here (including one of my own) there are a few scenarios that can create orphaned messages resulting in excessive disk space usage. These scenarios are generally:

  1. Purging an environment with the option "Bodies Too" deselected
  2. Code creating/saving a Message but then not sending it
  3. BPL errors similar to 2, or a scenario where the response to a Call component is not set.
2
0 90
Question Michael Davidovich · Nov 14, 2022
  • I have created a business service that uses an adaptor that I wrote by extending Ens.InboundAdapter (i.e. the ADAPTOR parameter is set to my custom adaptor  ).  
  • The OnTask() method of my adaptor polls our IRIS database to determine which records are ready to be sent out of our system to an external target system.
  • If the record is ready the OnTask() method creates an instance of the Business Service and then calls the OnProcess() method sending in the record as the input.
  • The Business Service is also a custom design that simple calls the business process using an async request.
2
0 524
Question Juan Mota Sanchez · May 3, 2025

Hi,

I've been working on a very basic Interoperability production in my computer. I followed one of the examples in the courses and created a TEST.FileRouterRoutingRule, but when trying to edit this rule, it takes me to the Rule Editor Login Page, where I can't get in (Not even with the _SYSTEM credentials) - Is this functionality unavailable in the community edition?

2
0 139
Question Harshitha · Mar 11, 2025

Hello everyone,

I'm looking for a practical project guide to help me gain hands-on experience with InterSystems Ensemble HL7. Ideally, this guide would walk through building a small project — something that covers key concepts like message routing, transformations, and interoperability.

If there's a resource that also includes step-by-step instructions and perhaps even offers a certification upon completion, that would be perfect.

Any recommendations or guidance would be greatly appreciated. Thanks in advance! 😊

2
0 179
Question Liam Wood · Feb 24, 2023

Hi,

I'm currently working on an IHE implementation, and we've hit some issues around categorising inbound CCD results (i.e. mapping lab and rad results to their relevant SDA types).

I know that this is handled by the \CSP\xslt\SDA3\CDA-Support-Files\Import\Section-Modules\DiagnosticResults.xsl out of the box which can be overridden to use different logic, but I was wondering whether there's a standard/best practice approach for handling different sets of logic depending on the supplier of the CCD?

2
1 412
Question Warren Baldock · Nov 24, 2022

Morning everyone, 

I would appreciate some advice please- hopefully there is plenty of experts out there.

We are setting up an sFTP share between hospital trusts here in the UK and I have set the outbound operation up using a custom extension of EnsLib.HL7.Operation.FTPOperation.

We are configuring a VPN tunnel to run between the sites also so there is a bit of firewall / network routing to take place to enable the connection but to add in a complication we are on a mirrored cluster and usually present on a Virtual IP address.

2
0 568
Question Evgeny Shvarov · Jun 23, 2023

Hi, Developers!

I wonder if it is possible to use class parameters in DTL XData?

E.g. in an example below of the DTL I'd prefer to setup ChatGPT prompts in parameters (GPTPrompt1) of DTL rather than quotes inside the XData XML:

If possible, how can I refer to a class parameter from XData?

Thanks in advance!

2
1 387
Question Minoru Horita · Jul 20, 2022

I am trying to use EnsLib.SQL.Operation.GenericOperation for retrieving (multiple) rows. But I am looking for a way to handing a StreamContainer returned by the operation, in my business process such as receiving it in the Context object and packing it to a request to call another business operation.

Does anyone have sample code to do this?

Thanks.

2
0 323
Question ala zaalouni · Jul 10, 2024

When registering the components: I used this command:
"Utils.migrate("/external/src/CoreModel/Python/settings.py)" ;
The error appears: "An error has occurred: iris.cls: error finding class",
I changed with these two lines:
result = subprocess.run(["iop", "-m", "/external/src/CoreModel/Python/settings.py"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True)
subprocess.run(["iop", "-m", "/external/src/CoreModel/Python/settings.py"], stdout=subprocess.DEVNULL, stderr=subprocess.

2
0 171
Question Menno Voerman · May 10, 2023

Hello everyone,

I am looking for a sort of REST interoperability adapter that can forward REST calls within HealthConnect. If necessary, we need to adjust the requests or responses.

For Fhir calls, we use the FHIR Interoperability Adapter. This works perfectly; a message comes in as HS.FHIRServer.Interop.Request, and a message HS.FHIRServer.Interop.Response goes out. I can make adjustments as needed to both the request and response. I am looking for the same functionality, but then for non-FHIR REST calls.

When I create a web application, the requests come in as %CSP.

2
0 266
Question Gary M Lusso · Apr 9, 2025

I need to add an extra blank OBX segment after a segment containing text, Total Cost:

I get the OBX segment but it is in incorrect location.

It should be after the line containing Total Cost:

It needs to contain:

OBX|1|TX|2000.02^REASON FOR REQUEST^AS4|

code:

    //Do pOutput.SetValueAt(tOBXText_"~~","ORCgrp(1).OBRuniongrp.OBXgrp("_i_").OBX:5","set") //
         If (tOBXText[ "Total Cost:") {
             Set tSegmentOBX = ##class(EnsLib.HL7.Segment).%New()
             Set tSegmentOBX.SegType = "2.3:OBX"
             Set tSC = tSegmentOBX.SetValueAt("OBX", 0, "set")
             Set tSC = pOutput.

2
0 171
Question Colin Brough · Oct 5, 2023

Is there a difference in outcome between the two screengrabs below?

In both cases, when  certain conditions are met, a transformation is called and the output sent on to two targets. In the first case we surmise the transformation is called twice, and the output of the first run sent to the first target, the output of the second run to the second target. In the second case we surmise the transformation is called once, and the output duplicated and sent to the two targets. 

  • Are there any cases where they would not be functionally the same (eg because of side-effects of the transformation?
2
0 308
Question David Underhill · Aug 23, 2022

Credentials for a Productions are stored as plain text in ^Ens.SecondaryData.Password and exposed as plain text via SQL table Ens_Config.Credentials which is not ideal as only admins should know the credentials.

I can create my own adapter etc... to store and use encrypted passwords but does anyone know if there is a standard way to do this in a Production?

Alternatively, am I missing how to secure this so the production can run and someone can monitor and operate a production without access to the SQL table or global?

2
2 736
Question Yone Moreno · Nov 4, 2024

Hello,
Please, we would need your help 🙂:

In a development environment, we have added quite a few presentation contexts to the DICOM configurations (the associations). We would need to find a way to export them from this environment to make it easier for us to import them in PRO (and avoid doing it by hand one by one).

We know that there is this method, the ImportAssociation(), that given a file, and the names of the local AET and the remote AET, creates it automatically:
    https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.U…?

2
0 164
Question Scott Roth · Oct 22, 2025

I am looking for a way to capture Data Quality issues with the Source data that is populating HealthShare Provider Directory. 1 way is to use Managed Alerts, but since it could be multiple Providers and different messages it seems silly to alert on every message that has the error. Instead, I was thinking of using the Workflow Engine so it could populate a Worklist for someone to review and work.

Looking over the Demo.Workflow Engine example, I am not comprehending on how to send a task to the Workflow manager to populate the worklist from a DTL.

2
0 79
Question Prasanth Annamreddy · Oct 24, 2023

We are running Batch job in scheduled task and the messages are picking in single session and it is not easy to trace the record.

I used the Set ..%SessionId= "" at before sending the message to BP but I see the session Id is '1' created for each message.

Is there anyother way to create new session for each message sending to BP?

Thanks,

2
0 487
Question Colin Brough · Dec 10, 2024

We are building a data transformation from HL7 to custom XML. We've got an XML schema, and are using virtual documents (EnsLib.EDI.XML.Document).

We can:

  • build our transform as a single transform
  • build our transform using subtransforms where the source data for the subtransform is all in a single HL7 segment and all the output data goes into a single (complex) element of the XML, so the input type on the subtransform is the segment from the HL7 schema and the output type on the subtransform is the relevant element picked out of the XML schema:
  • but we can't (so far!
2
0 155
Question Andy Khemraj · Dec 1, 2023

I am trying to replace OBX.2 value of ED to PDF

Here is what I have in the funcion wizard

..ReplaceStr(source.{OBRgrp().OBXgrp().OBX():ValueType},"ED","PDF")

Inbound Message

OBX|5|ED|PDFReport^PDFReport||PDF^Image^PDF^Base64^JVBERi0xLjMNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL1BhZ2VzIDQgMCBSDQovT3V0bGluZXMgMiAwIFI

Desired Outbound Message

OBX|5|PDF|PDFReport^PDFReport||PDF^Image^PDF^Base64^JVBERi0xLjMNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL1BhZ2VzIDQgMCBSDQovT3V0bGluZXMgMiAwIFI

1
0 322
Question Matt Shaughnessy · Mar 25, 2024

Anyone here know if the Implementation Partner program is still open, and if so, is there anyone we can contact to get more details? I've tried reaching out via the form on the website, I've called and left a message, and then I called and talked to someone a few weeks ago who said they would "forward my info over", but we still haven't heard back from anyone. We just want to get more info on what it entails, but can't seem to get in touch with anybody to talk about it. 

1
0 192
Question Jeffrey Drumm · May 5, 2023

I'm using the EnumerateJobStatus query of class Ens.Util.Statistics to obtain the LastActivity value of a Business Host.

I would expect that this would return the timestamp of the last message received by the BH, understanding that any connect/disconnect activity would reset that timer. However, the time returned appears to actually be the time at which Ens.MonitorService generated the alert and is not directly related to anything that happened in the BH itself.

1
0 240
Question Minoru Horita · Feb 13, 2024

I am trying to create a program to upload blob files from IRIS to Azure Blog Storage, but with no luck.

First, I am trying the APIs, but  ##class(%Net.Cloud.Storage.Client).CreateClient() fails with the message "Cannot establish connection". Following the documentation, the parameters are like: CreateClient(, 1, credfile, , .tSC) where credfile specifies a file containing:

DefaultEndpointsProtocol=https
AccountName=aihpocsadicom
AccountKey=RealAccountKeyHere
EndpointSuffix=core.windows.net

Am I missing something?

1
0 364