Nova postagem

Encontrar

InterSystems Oficial
· jan 31, 2024

Developer preview #2 for InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2024.1

InterSystems announces its second preview, as part of the developer preview program for the 2024.1 release.  This release will include InterSystems IRIS®,  InterSystems IRIS® for HealthTM, and HealthShare® Health Connect.

Highlights

Many updates and enhancements have been added in 2024.1 and there are also brand-new capabilities, such as Using vectors in ObjectScript,  Vector Search (experimental), Multi-Volume Database, the ability to use Fast Online Backup (experimental), and the introduction of Multiple Super Server Ports. Many other improvements are also in this release, such as the Flexible Python Runtime, support to Smart on FHIR 2.0.0, and much more.

👉 NOTE: Some of these features or improvements may not be available in this current developer preview.

Another important topic is the removal of the Private Web Server (PWS) from the Health Connect installers.  The  Private Web Server is already removed from the InterSystems IRIS installers since the 2023.2 release. See this note in the documentation.

Future preview releases are expected to be updated biweekly and we will add features as they are ready. Please share your feedback through the Developer Community so we can build a better product together.

Initial documentation can be found at these links below. They will be updated over the next few weeks until launch is officially announced (General Availability - GA):

Early Access Programs (EAPs)

There are many EAPs available now. Check out to this page and register to those you are interested.

    Availability and Package Information

    This release comes with classic installation packages for all supported platforms, as well as container images in Docker container format.  For a complete list, refer to the Supported Platforms document.

    Installation packages and preview keys are available from the WRC's preview download site or through the evaluation services website (use the flag "Show Preview Software" to get access to the 2024.1).

    The build number for this developer preview is 2024.1.0L.223.0.

    Container images  are available from the InterSystems Container Registry. Containers are tagged as 2024.1-preview.

    9 Comments
    Discussão (9)4
    Entre ou crie uma conta para continuar
    Artigo
    · jan 31, 2024 2min de leitura

    Become A Whiz At Investigating HL7v2 Interface Issues - It's THIS Easy

    Do you ever spend an age entering criteria in the message viewer page, trying to find a message just to realise you're in the wrong instance of IRIS? 

    Or get lost in a sea of message tabs struggling to spot that Visual Trace page your were JUST looking at?

    Well, have you tried the IRIS WHIZ browser extension and its suite of tools designed to help you avoid such unpleasantness?


    As you can see in the above screenshot, this web browser extension can automatically colour the header of your instance/namespace and group the tabs together into coloured tab groups. Whether you like bold and brave or plain and simple, you choose what colours and names to use in the extension's options page. So if that's a bit bright for you, your header could look like this instead: 

     

    You don't have to have to change any code, or even have the same colours or names as the rest of your team. (Though if you do want the colours and names to be the same, you can easily share your config file with your team with the click of a button!)

    You can even change the page titles that appear in your browser's tab using a right click context menu - it's persistent and you can then look them up/delete them in the extension's pop-up:
     

    In fact the extension has a ton of features that make investigating HL7v2 interface issues a breeze.

    For example, below is a screenshot where I'm viewing two messages in a splitscreen view while reading through the first message's schema - all on one page. You can see some of the IRIS Whiz buttons available to me in the top left corner too.

     

    Or how about viewing all available HL7v2 messages in the Visual Trace window without having to click each message individually and view their Contents tab?

     

    And there's so many more features. In fact I created so many features I was told my tutorial video was too long for InterSystems to publish on their YouTube channel!

    So if you're interested in speeding up your interface investigations or want to learn more then watch my (heavily shortened) YouTube video and download the IRIS Whiz extension from the Open Exchange here.

    If you need something fixed or just want to share the love, please leave me a review
    and finally
    Please vote for this extension in the latest Open Exchange contest!

    1 Comment
    Discussão (1)1
    Entre ou crie uma conta para continuar
    Artigo
    · jan 31, 2024 10min de leitura

    The New FHIR Server Profile-based Validation

    New in version 2023.3 (of InterSystems IRIS for Health) is a capability to perform FHIR profile-based validation.

     (*)

    In this article I'll provide a basic overview of this capability.

    If FHIR is important to you, you should definitely try out this new feature, so read on.

     

    Background

    The FHIR standard defines an operation called $validate. This operation is intended to provide an API to validate Resources.

    To understand more about FHIR Validation in general you can see this FHIR documentation

    You can also see my session from Global Summit 2023 - "Performing Advanced FHIR Validation", where in the first part I provide information about various types of validations.

    Part of this validation is to validate against specific profiles. You can see here about Profiling.

    To illustrate, as a simple example, the base FHIR definition for the Patient Resource, defines the cardinality of identifier as '0..*', meaning that a Patient might not have any identifier (zero) and still be valid. But the US Core Patient Profile defines a cardinality of '1..*', meaning that no identifier for a Patient would not be valid.

    Other examples, following the US Core Patient sample above, would be using extensions, such as race or birthsex.

    If you'd like to learn more about FHIR Profiling you can have a look at a session from our Global Summit 2022 which @Patrick Jamieson presented - "Using FHIR Shorthand", where Pat explains about using FSH (FHIR Shorthand), but starts off by covering the general topic of Profiling.

    In previous versions, our FHIR Server did not support this type of validation - profile-based validation, but from the latest version (2023.3) this is supported.

     

    Usage

    Our documentation includes a section about how to call $validate for profile-based validation.

    There are two basic ways to call the $validate operation.

    Profile in Query URL

    One is sending a POST with the Resource in the Request Body and the profile as a URL parameter.

    For example, in Postman:

    Or using curl (note the encoding of the slashes in the profile URL parameter's value; Postman takes care of that for you):

     curl --location 'http://fhirserver/endpoint/Patient/$validate?profile=http%3A%2F%2Fhl7.org%2Ffhir%2Fus%2Fcore%2FStructureDefinition%2Fus-core-patient%7C3.1.0' --header 'Content-Type: application/fhir+json' --header 'Accept: application/fhir+json' --header 'Authorization: Basic U3VwZXJVc2VyOnN5cw==' --data "@data.json"

    While data.json referred to above includes this valid US Core Patient for example -

     
    Patient Resource JSON

    The response of this operation is an OperationOutcome Resource.

    If the Resource is valid (as per above) you will expect to get this kind of response -

    {
        "resourceType": "OperationOutcome",
        "issue": [
            {
                "severity": "information",
                "code": "informational",
                "details": {
                    "text": "All OK"
                }
            }
        ]
    }

    But if for example I will omit the identifiers from the Resource above, I will get this OperationOutcome:

    {
        "resourceType": "OperationOutcome",
        "issue": [
            {
                "severity": "error",
                "code": "invariant",
                "details": {
                    "text": "generated-us-core-patient-1: Constraint violation: identifier.count() >= 1 and identifier.all(system.exists() and value.exists())"
                },
                "diagnostics": "Caused by: [[expression: identifier.count() >= 1, result: false, location: Patient]]",
                "expression": [
                    "Patient"
                ]
            }
        ]
    }

    Profile in the Query Body

    The other way of sending the data to $validate is sending a POST with the Resource inside a Parameters array, with profile and other options.

    In Postman this will look now like this:

    With curl:

    curl --location 'http://fhirserver/endpoint/Patient/$validate' --header 'Content-Type: application/fhir+json' --header 'Accept: application/fhir+json' --header 'Authorization: Basic U3VwZXJVc2VyOnN5cw==' --data "@data.json"

    Note the URL does not include a profile, but now the body payload (or data.json in the example above) looks like this:

    {
        "resourceType": "Parameters",
        "parameter": [
            {
                "name": "mode",
                "valueString": "profile"
            },
            {
                "name": "profile",
                "valueUri": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient|3.1.0"
            },
            {
                "name": "resource",
                "resource": {
                    "resourceType": "Patient"
                }
            }
        ]
    }

    I excluded the actual Patient Resource, as it is the same as in the previous examples.

    But what is different here is the mode parameter element, and the profile one, and resource comes within it's own parameter element simply named 'resource'.

    See the docs referenced above for more options for mode, including where an ID can be included in the URL (to validate for example regarding it's update or deletion).

    For your convenience I created a simple Open Exchange package that includes a Postman Collection with sample requests per above.

    Possible Errors

    If you omit a version for the profile in the format of <profile URI>|<version number> you will get an <HSFHIRErr>ProfileVersionRequired error.

    You would get a 400 status code and this kind of OperationOutcome -

    {
        "resourceType": "OperationOutcome",
        "issue": [
            {
                "severity": "error",
                "code": "invalid",
                "diagnostics": "<HSFHIRErr>ProfileVersionRequired",
                "details": {
                    "text": "Profile URI 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient' does not include a version number.  Version number is required for profile validation."
                }
            }
        ]
    }

    If you provide a version number that does not exist on the FHIR Endpoint you will get a not-supported error (this time the HTTP status will be 200).

    Your OperationOutcome will look like this for example -

    {
        "resourceType": "OperationOutcome",
        "issue": [
            {
                "severity": "error",
                "code": "not-supported",
                "details": {
                    "text": "Profile 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient|15' is not supported"
                },
                "expression": [
                    "Patient"
                ]
            }
        ]
    }

    Via Code

    Note alternatively to calling the $validate operation via the standard REST API, internally, if the use-case is appropriate, you can also call a class method.

    Similarly to the method that already existed HS.FHIRServer.Util.ResourceValidator:ValidateResource() (mentioned also here in the Docs) there is now also a new method ValidateAgainstProfile() which you can utilize.

     

    Scope

    It is important to note that currently (v2023.3) this type of validation (profile-based validation) happens only as part of the $validate operation, but not when you create or update Resources. There more "basic" validation happens. So if you want you can run your Resources through the more "advanced" profile-based validation before they get POST'ed or PUT.

    Other options might be available in future versions.

     

    Setup Notes

    In general the good news is that the FHIR Server will take care of most of the Profile Validator setup for you.

    What you do need to make sure is that you have a supported Java 11 JDK (currently that's the Oracle one or OpenJDK's).

    You can find more details in the Configuring the Profile Validation Server documentation.

    Basically what happens behind the scenes is that we make sure there is an External Language (Java) Server running, in order to execute the Validator JAR (located in the installation folder, under dev/fhir/java; By the way if you peek in the logs folder there and you see some warnings, such as:

    CodeSystem-account-status.json : Expected: JsonArray but found: OBJECT for element: identifier

    don't get concerned, that's fine. The Validator loads many profiles by default and some of them have some formatting errors).

    So, if you look at your External Language Servers list, you should see you have something like this:

    Note when the Validator needs to validate against a profile, for the first time, it needs to load them, so to improve performance you can call the HS.FHIRServer.Installer:InitalizeProfileValidator() method:

    set status = ##class(HS.FHIRServer.Installer).InitializeProfileValidator(.error)

    This is also mentioned in the above referenced documentation for configuring the Validator.

    Indeed you could include this call in your instance's %ZSTART startup routine.

    And this is also mentioned in the related Class Reference:

    It is recommended to call this method after a restart of the Instance or External Language Server so that we don't have the performance hit of loading the profiles during the validate operation.

     

    Coming Soon...

    In upcoming versions we plan to provide more functionality in and around the Validator.

    But, for example, even today if you wish to perform external Terminology Server based validation (such as for LOINC codes) you can use a different approach, one explained and demonstrated in my Global Summit session I mentioned above, based on my colleague @Dmitry.Zasypkin's sample (available on Open Exchange). 

    Special Thanks

    Thank you to @Kimberly Dunn who was an invaluable source of information while examining this new feature and preparing this article.

     

    (*) Thanks to Microsoft Bing's DALL-E 3 powered Image Creator who created the image above for me.

    1 Comment
    Discussão (1)1
    Entre ou crie uma conta para continuar
    Artigo
    · jan 30, 2024 1min de leitura

    Use FHIR-OCR-AI to convert images into fhir messages

    I created this application considering how to convert images such as prescription forms into FHIR messages

    It recognizes the text in the image through OCR technology and extracts it, which is then transformed into fhir messages through AI (LLA language model).

     

    Finally, sending the message to the fhir server of IntereSystems can verify whether the message meets the fhir requirements. If approved, it can be viewed on the select page.

    To be improved:

    There are still inaccurate parts in image recognition that need to be manually modified

    AI may not be accurate when converting text to fhir messages

    4 Comments
    Discussão (4)2
    Entre ou crie uma conta para continuar
    Artigo
    · jan 30, 2024 5min de leitura

    Converting generic data into FHIR with IRIS-FHIRfy

    Background

    In 2021, I participated as an InterSystems mentor in a hackathon, where a newcomer to FHIR asked me if there was a tool to transform generic JSON data containing basic patient information into FHIR format. I informed her that I didn't know anything like that, unfortunately.

    But that idea stays in my mind...

    Several months later, in 2022, I came up with an idea to experiment: to train a named entity recognition (NER) to identify FHIR elements into generic texts. The training involved synthetic FHIR data generated by Synthea and the spaCy Python library.

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