Nova postagem

Pesquisar

Pergunta
· Dez. 17, 2024

Production pooled component index

I have a business service which is responsible for some batch operations with an SQL table. The process is generally slow but it is possible to scale the performance using multithreading and/or parallel processing and logical partitioning (postgres):

6 Comments
Discussão (6)2
Entre ou crie uma conta para continuar
Pergunta
· Dez. 17, 2024

How To Give a Condition To Data Row based on First and Next Data?

Hello my Friends,

I have a question, I have a data like this

And I want to create a display like this, which I can put a status column beside the Item Column

The status become new, if there's no previous item, and if there's a same item after the first one, the status become Old

Does anyone could help me ?

I need to display it without subquery if possible

Thank You

Best Regards,

Steven Henry

9 Comments
Discussão (9)2
Entre ou crie uma conta para continuar
Pergunta
· Dez. 17, 2024

SSL Issues on Mac OS 15.2 when IRIS is running within a Docker container

Hi,

I recently had a company-enforced OS upgrade, and ever since going from mac OS 14.x to 15.x, I am currently having issues with SSL in IRIS.

An ARM (M3 pro) machine running OS 15.2, with the latest Docker Desktop (at the time of writing, 4.37.0). The Docker container runs IRIS for UNIX (Ubuntu Server LTS for x86-64 Containers) 2022.1.2 (Build 574_0_22161U). This container has not changed.

When attempting to run some local API tests of our software, I am hosting a Wiremock (https://github.com/wiremock/wiremock) server locally on the mac, in order to mock HTTP requests/responses. The IRIS server communicates with this wiremock server via `host.docker.internal` as a hostname, to talk from the container to the host machine. This was working before the OS upgrade without issue.

Ever since the OS upgrade, there seems to be some issue with SSL and I am unsure where the fault lies, hence asking for any advice or opinions here.

The basic structure of the tests which fail involve creating a simple http request, which will be pointed towards `host.docker.internal` and appropriate ports. Each individual test will add specific Wiremock mappings to the request, but as these all worked fine before the OS upgrade I don't think code for this needs to be included.

Method createHttpRequest() As %Net.HttpRequest [ Private ]
{
    set req = ##class(%Net.HttpRequest).%New()
    set req.Server = ..Host
    set req.Port = ..Port
    return req
}

Method IsHealthy() As %Boolean
{
    #dim req as %Net.HttpRequest = ..createHttpRequest()
    $$$ThrowOnError(req.Get("/__admin/health"))
    if ((req.HttpResponse.StatusCode = 200) && ($isobject(req.HttpResponse.Data)) && (req.HttpResponse.Data.Size > 0) ) {
        #dim json as %DynamicObject = {}.%FromJSON(req.HttpResponse.Data.Read())
        return (json.status = "healthy")
    }
    return 0
}

As mentioned, this all functioned without issue and contains nothing specific to our company. However now since the OS upgrade, IRIS errors out when running such tests with this message:

"ERROR <Ens>ErrGeneral: (RootCause "ERROR #6085: Unable to write to socket with SSL/TLS configuration 'ISC.FeatureTracker.SSL.Config', error reported 'SSL/TLS configuration 'ISC.FeatureTracker.SSL.Config' is not activated.'"

Looking at the management portal, this configuration is indeed enabled.

I have read online that other users have experienced SSL issues with various software since upgrading OS, so I am wondering if this is an IRIS issue, a Docker issue, or something else? I found a few discussions that seem to blame Microsoft Defender as the source of SSL issues. Our company does have Microsoft Defender enabled as policy, so I cannot disable this.

Has anyone else experienced similar? Is this an IRIS issue, or does the blame lie elsewhere (docker, microsoft defender, other)?

In the meantime, I am running Wiremock within the docker container and IRIS can communicate with that instance without issue. But, as every other team member has code pointing to `host.docker.internal`, it would be good to not require to patch our codebase only on my development machine.

I'm aware IRIS has not been yet released for mac os 15.x, but as the actual IRIS software is running within a unix docker container in my development environment, I figured I could ask for any insights here. Thanks in advance.

3 Comments
Discussão (3)2
Entre ou crie uma conta para continuar
Artigo
· Dez. 16, 2024 2min de leitura

Edit your Globals with VSCode and YAML

The best way to list, edit, save and delete globals is using an IDE. Now, it is possible if you use VSCode. It is also possible to save globals using yaml files. Perform the following steps:

1. Get an InterSystems IRIS instance and install the application iris-global-yaml: 

zpm:USER>install iris-global-yaml

2. If you just to want an InterSystems IRIS trial for tests git clone and run on docker:

git clone https://github.com/yurimarx/iris-global-yaml.git
docker-compose up -d --build

3. Go to https://openexchange.intersystems.com/package/IRIS-Global-VSCode-Editor, click GitHub button, look for iris-global-editor-0.0.1.vsix file, and save it in your local disk.

4. Now, open your VSCode IDE and click extensions:

 

5. Click the button ... and select Install from VSIX...:

 

6. Select the vsix file from your local disk to install (if installation fails, update your VSCode for the most recent VSCode binary and try again):

7. Go to View > Explorer:

8. Create or edit the file .vscode/settings.json with connections settings (edit with your host, port, namespace and credentials):

"conf.irisGlobalEditor.serverconfig": { 
      "host": "http://localhost:52773", 
      "namespace": "USER", 
      "username": "_SYSTEM", 
      "password": "SYS"
}

9. Go to the tab INTERSYSTEMS IRIS GLOBALS and click the button refresh:

10. The VSCode list all globals in the configured namespace:

11. On top of the tab, click the plus button to create a new global:

12. Write the global name and your value and press enter:

13. Click refresh button again and see your new global on bottom:

14. Now click the editor button (last button) to create a yaml file to edit your global:

15. A new yaml file is created with the global content:

16. Edit the yaml to insert subscripts into your global (it is very important use indentation with 4 spaces):

# IRIS-Global-YAML
USER:
 ^test:
     value: InterSystems IRIS
     subscripts:
        - ^test(1): 1
        - ^test(1,1): 1.1
        - ^test(1,2): 1.2
        - ^test(2,1): 2.1
        - ^test(2,2): 2.2
        - ^test(2,3): 2.3
        - ^test(2,4): 2.4

17. Save the file on any project folder and the global content will be saved on IRIS Server:

18. Try the delete buttom also and enjoy!

11 Comments
Discussão (11)2
Entre ou crie uma conta para continuar
Artigo
· Dez. 16, 2024 5min de leitura

IRIS-HL7v2Gen: Dynamic HL7 Test Message and Structure Generation for Healthcare Integration

image

Hi Community,

In this article, I will introduce my application iris-HL7v2Gen .

IRIS-HL7v2Gen is a CSP application that facilitates the dynamic generation of HL7 test messages. This process is essential for testing, debugging, and integrating healthcare data systems. The application allows users to generate a wide variety of HL7 message types, validate their structure against HL7 specifications, explore the message hierarchy, and transmit messages over TCP/IP to production systems. These features are particularly useful in settings where compliance with HL7 standards is mandatory for interoperability between different healthcare organizations or systems.


Application Features

  • Dynamic HL7 Message Generation: Instantly create HL7 messages for a range of message types, facilitating comprehensive testing.
  • Message Structure Exploration: Visualize the structure of generated messages based on HL7 specifications.
  • Value Set Visualization View predefined sets of allowable coded values for specific fields.
  • Message Validation: Validate messages against HL7 standards to ensure compliance.
  • TCP/IP Communication: Easily transmit messages to production using TCP/IP settings.
  • Broad Message Type Support: Supports 184 different HL7 message types, ensuring versatility for various healthcare integration needs.
  • ClassMethod: Generate a Test Message by Invoking a Class Method
  • Version Support: Currently Supports HL7 Version 2.5



Dynamic HL7 Message Generation

The core functionality of IRIS-HL7v2Gen is its ability to dynamically generate HL7 test messages. Users can select from a list of 184 message types, ranging from ADT (Admit, Discharge, Transfer) messages to ORM (Order Message) and ORU (Observation Result) messages. This dynamic message generation allows developers and testers to simulate a wide array of healthcare data exchanges and test their integrations.

The application’s interface is designed for simplicity, allowing users to select a message type from a dropdown list, click a button, and immediately generate a test message. This feature is valuable for quickly creating realistic data exchanges that can be used to test systems, troubleshoot errors, and ensure compliance with HL7 standards.

In order to generate the test message, select a message type from the dropdown list and click the 'Generate Test Message' button.

The application will generate a test message
image

 Exploring HL7 Message Structure

HL7 messages can be complex, containing multiple segments, fields, and components. Understanding the structure of these messages is key to ensuring that data is transmitted accurately. IRIS-HL7v2Gen provides an intuitive feature that allows users to explore the structure of the generated message. This feature visualizes the hierarchical structure of the HL7 message, making it easier to understand how different parts of the message relate to each other.

By providing this level of insight, the application helps users identify any structural issues within the message and make necessary adjustments before transmission.

Upon selecting the Message Type, the application will construct the message structure based on HL7 specifications.

Value Set Visualization

This feature enhances message profiling by displaying field value sets. It allows users to view predefined sets of allowable coded values for each field within the message profile, ensuring that data is consistent and standardized according to HL7 v2 specifications. By binding fields to specific value sets, the application helps users create precise, compliant message definitions, reducing optionality and improving interoperability between healthcare systems.
image

 

Message Validation

Once a test message has been generated, the application provides a built-in message validation feature. Validating HL7 messages is crucial to ensure they conform to the HL7 standards, preventing issues during real-world exchanges. The application checks the structure of the message, ensuring that it adheres to the required syntax and segment specifications.

Click the 'Validate Message' button to validate the generated message.


Transmission via TCP/IP

Once a test message is validated and structured correctly, the application enables users to transmit the message to production systems using TCP/IP. This feature is essential for real-world applications, where HL7 messages need to be sent to various systems, including electronic health records (EHR) systems, laboratory systems, and other healthcare applications.

The transmission process is straightforward. Users can open the "View Production" page, ensure the production is started, and click the "Send Message to Production" button. This feature simplifies the process of sending HL7 messages to external systems for further processing, ensuring that messages are accurately transmitted to the right destination.
TCP/IP connection settings

By default, the host and port are defined based on the running production, but they can be modified by clicking on 'Connection Settings' if you want to send the message to another TCP/IP client.
image


Click on “Send message to production” button from the application

Select the business service “HL7TcpService” and Open the message viewer
image
image

Class Methods for Message Generation

For advanced users, IRIS-HL7v2Gen allows for the generation of HL7 messages through a class method. By connecting to the IRIS terminal, users can invoke the GenMessage function from the dc.HL7v2Gen class and specify the desired message type. This functionality allows for greater flexibility and automation, particularly for developers who want to integrate the message generation process into their custom workflows or testing scripts.

For example, a user can execute the following command in the IRIS terminal to generate an ADT_A01 message:

set mes = ##class(dc.HL7v2Gen).GenMessage("ADT_A01")
write mes

image


Invoke the function outlined below to retrieve the supported message types

do ##class(dc.HL7v2Gen).ListMessageTypes()

image


Below is the snippet of HL7v2Gen class


For more information or to access a live demo, please visit iris-HL7v2Gen open exchange application page.

Thanks

Discussão (0)1
Entre ou crie uma conta para continuar