New post

検索

Announcement
· May 22

[Video] Adding Custom Utility Functions in Health Connect Cloud

Hi, Community!

Ready to go beyond built-in utility functions in your HealthShare® Health Connect Cloud™ integrations?

👉 Learn how to Add Custom Utility Functions in Health Connect Cloud!

In this video, you will see how to write custom utility functions for:

  • data transformations
  • business processes
  • custom components

...and how to build custom functions into a code-based source control workflow.

Discussion (0)1
Log in or sign up to continue
Announcement
· May 22

Look what’s coming to the Tech Exchange @ InterSystems READY 2025

Okay, it's officially going to be an outstanding Developer Zone this year at InterSystems READY 2025!
Tech Exchange — a special space filled with developer-tailored content — is back this year, better than ever!

Here's what to explore at Tech Exchange: 

More than 40 short tech demos with Q&A

✅ Developer Ecosystem Booth:

Meet and chat with the Developer Relations team — the people behind the Developer Community, Global Masters, Ideas Portal, Open Exchange, Programming Contests, and many other activities we run for developers! 
💫Try your luck at the Wheel of Fortune
📸 Snap a photo at our booth for a secret project (we’ll reveal more at the booth!) and earn Global Masters points
🍪 Did you know there will be a barista in the room? Well, our table has cookies! Help us clear the cookies — yes, the edible kind!
As always, learn about everything we offer to support developers — including our new AI-powered Developer Community tool (get faster answers and debug errors more easily), programming and writing contests with prizes, and tons of great resources!

✅ Learning Services booth with one-on-one training sessions and learning plan consultations. Learn more here 
User Experience booth
Request a 1-on-1 meeting with InterSystems product experts and developers

Dedicated tables with InterSystems experts that will be ready to answer your questions:

FHIR & Interoperability table
Attend the FHIR Table at Tech Exchange to Learn About New Bulk FHIR Features:

  • Population-level analytics across patient cohorts and EHRs
  • Building high-quality research datasets with FHIR
  • Extracting clinical measures, operational analytics, and care quality metrics from health systems using FHIR
  • How SMART on FHIR and FHIR Bulk Access support third-party application development and innovation

✅ Python table of Mumpsters and Pythonistas

Mumpsters, you have question around Python? Python developpers you have question around IRIS ? come to the Python Table!

Meet with our experts to discuss all things Python and IRIS. We will be happy to answer your questions, share best practices, and help you get the most out of your Python experience with IRIS.

🐍 Topics:

  •     Interoperability on Python (IoP)
  •     Remote debugging
  •     Deep Dive in low level APIs
  •     Best practices
  •     How to start with Python and IRIS
  •     Virtual Environment Support

Got SQL Questions? Stop by the SQL Table!
Meet InterSystems experts and get quick answers on IRIS SQL, vector search, query tuning, data modeling, and more.

Topics:

  • IRIS SQL fundamentals
  • Vector search and foreign tables
  • Data modeling and indexing strategies
  • Query optimization and error investigation
  • Document storage and sharding techniques

Visit the Supply Chain Table

Stop by for one-on-one conversations and live demos covering the latest in InterSystems supply chain solutions.

Topics:

  • Overview of InterSystems supply chain solutions and strategy
  • Deep dive into our key products:

InterSystems Supply Chain Orchestrator
InterSystems Data Fabric Studio with
 supply chain module

  • Real-world client use cases and implementation stories
  • Live demos featuring:
    • Intelligent supply chain for smarter healthcare
    • Empowering enterprise applications through a supply chain data gateway
    • Decision intelligence with Supply Chain Orchestrator
    • Generative AI Co-Pilot for supply chain workflows

 

What: Tech Exchange @ InterSystems READY 2025
Where: Bonnet Creek IX

As always, we have a number of Global Masters activities - both fun and informational - to keep you updated on the event while you also earning the points. Check them out under "InterSystems READY" tag.

1 Comment
Discussion (1)1
Log in or sign up to continue
Question
· May 22

Consistir retorno de [SqlProc]

Bom dia!

Tenho o seguinte ClassMethod()

ClassMethod Insere(ID As %BigInt, ...) As %Status [ SqlProc ]
{
    ; Executa o insert
    &()    

    I 'SQLCODE S ID=%ROWID
    I SQLCODE Q $$$ERROR($$$GeneralError,SQLCODE)
    Q $$$OK
}

Qual seria uma boa prática para capturar o retorno %Status, na camada de aplicação C# .NET ?

4 Comments
Discussion (4)1
Log in or sign up to continue
InterSystems Official
· May 22

Nouvelle version intermédiaire pour IRIS 2025.1.0 : correctif d'interopérabilité critique

Nous publions une version intermédiaire pour InterSystems IRIS, IRIS for Health et Health Connect 2025.1 (version 2025.1.0.225.1) afin de résoudre un problème d'interopérabilité critique affectant les utilisateurs utilisant des hôtes métier compatibles SDS.

Quel est le problème ?

Dans certaines configurations où un Business Host est marqué comme compatible avec SDS, l'application de nouveaux paramètres via l'interface utilisateur peut indiquer à tort que les modifications ont été appliquées, même si le redémarrage nécessaire n'a pas eu lieu. Cela peut entraîner la non-application des paramètres et engendrer une confusion ou un comportement inattendu dans les environnements de production.

Pourquoi cette version intermédiaire ?

En raison du risque de comportement incorrect à l'exécution dans les configurations concernées, en particulier pour les utilisateurs qui dépendent de mises à jour précises et immédiates des composants de production, nous avons priorisé cette version intermédiaire afin de garantir une visibilité étendue et une résolution rapide.

Qu'est-ce qui est inclus ?

Cette version intermédiaire met à jour tous les kits et conteneurs pour :

  • InterSystems IRIS® 2025.1.0
  • IRIS for Health™ 2025.1.0
  • HealthShare® Health Connect 2025.1.0

Cette version inclut également des mises à jour pour WebGateway, Arbiter, ICM et les variantes de conteneurs verrouillés.

Discussion (0)0
Log in or sign up to continue
Article
· May 22 5m read

在IRIS中基于XSLT实现互联互通临床文档到 FHIR 资源的转换

基于 XSLT 互联互通临床文档到 FHIR 资源转换

国家卫健委互联互通成熟度评测中的临床共享文档,作为医疗信息交换的重要载体,采用了XML标准的文档格式。随着医疗信息化的发展,FHIRFast Healthcare Interoperability Resources)作为新一代医疗信息交换标准,因其简洁性、灵活性和RESTful架构,逐渐成为医疗数据交换的理想选择。将共享文档文档转换为FHIR资源,能够有效促进不同医疗系统间的数据互通,提升医疗信息的利用价值。

XSLT(可扩展样式表语言转换)是一种用于将XML文档转换为其他XML文档或文本格式的语言。在医疗数据转换场景中,XSLT凭借其强大的XML处理能力,成为共享文档FHIR转换的理想工具。

我们知道共享文档文档是一种结构化的XML文档,通常包含以下主要部分:

- 文档头(Document Header):包含文档元数据,如文档类型、创建时间、作者等

- 临床数据部分(Clinical Sections):按章节组织的临床信息,如问题列表、用药记录、检查报告等

- 数据条目(Entries):具体的临床数据项,如诊断、药物、检验结果等

 

FHIR则采用了资源导向的设计理念,每个临床概念都被建模为独立的资源,通过RESTful API进行访问。FHIR资源具有以下特点:

- 模块化设计:每个资源专注于特定的临床领域,如Patient(患者)、Condition(疾病)、MedicationRequest(用药申请)等

- 灵活的数据结构:支持复杂的数据类型和嵌套结构

- 丰富的语义表达:通过代码系统和扩展机制提供标准化的术语支持

互联互通共享文档FHIR的转换并非简单的格式转换,而是需要在保持临床语义的前提下,将共享文档的文档结构映射到FHIR的资源模型。这需要深入理解两种标准的数据模型和语义。

Intersystems IRIS中,我们内嵌了我司创建的SDA医疗数据模型,此模型也是以xml为结构,并且在IRIS中已经开箱即用地实现了SDA模型到FHIR资源的转化,所以在IRIS互联互通套件中把共享文档向FHIR资源转化的思路就变成了由互联互通共享文档->SDA文档->FHIR资源的转化流程。(关于我司SDA数据模型的介绍参见https://docs.intersystems.com/irisforhealth20251/csp/docbook/Doc.View.cl...

下面是一个使用XSLT互联互通文档中的信息转换为SDA再使用IRIS开箱即用功能转为FHIR资源的示例:

在互联互通套件中,我们已经实现了由互联互通文档向SDA转化的xslt,这些xslt在https://gitee.com/jspark/CCHDist 代码仓库的https://gitee.com/jspark/CCHDist/tree/master/image-iris/src/hccns/Setting/HCC 部分可以找到,文件名为HCC2SDA.xsl,其内引用的其他xlst模版也在相同文件夹下。

互联互通文档转化为SDA文档的示例代码:

Method HCCToSDA(pHCC As %Stream.Object, ByRef pSDA As %Stream.Object) As %Status
{
    Set tSC = $$$OK
    Try
    {
        If $ISOBJECT(pSDA) &&(pSDA.%IsA("%Stream.Object"))
        {           
        }
        Else
        {
            Set tSC = $$$ERROR(-10000,"Input parameter pSDA is not a stream")
            Quit
        }

        // transfter to SDA first
        Set tSlash = $Case($system.Version.GetOS(),"Windows":"\",:"/")
        Set tXSL="file:///"_$SYSTEM.Util.InstallDirectory()_"csp"_tSlash_"xslt"_tSlash_"HCC"_tSlash_"HCC2SDA.xsl"
        Set tSC = ..Transformer.Transform(pHCC,tXSL,.tSDA)
        Quit:($$$ISERR(tSC))
        D pSDA.CopyFrom(tSDA)
        
        // store SDA for debug purpose
        if (..Debug=1)
        {
            Set ..FileGUID = $Case($system.Version.GetOS(),"Windows":"\",:"/")_$SYSTEM.Util.CreateGUID()
            Set tSDAFile=##class(%Stream.FileCharacter).%New()
            Set tSC=tSDAFile.LinkToFile(..DebugPath_..FileGUID_".XML")
            Set tSDAFile.TranslateTable="UTF8"
            Do tSDAFile.Write(pSDA.Read())
            Do tSDAFile.%Save(),tSDAFile.%Close()
            Kill tSDAFile
        }
    }
    Catch ex 
    {
        Set tSC=ex.AsStatus()
    }   
    Quit tSC
}

 

SDA转化为FHIR资源的示例代码:

Method SDAToFHIR(pSDA As %Stream.Object, ByRef pFHIR As %Stream.Object) As %Status
{
    If ($ISOBJECT(pSDA) && pSDA.%IsA("%Stream.Object"))
    {}
    Else
    {
        Quit $$$ERROR(-10000,"Input parameter pSDA is not a stream")
    }
        
    Set tSC = $$$OK
    Try
    {
        // transfer SDA to FHIR
        Set tFHIR = ##class(HS.FHIR.DTL.Util.API.Transform.SDA3ToFHIR).TransformStream(pSDA,"HS.SDA3.Container","R4")
        If ('$ISOBJECT(tFHIR))
        {
            K tFHIR
            Set tSC = $$$ERROR(-10000,"SDA transfer to FHIR error!")
            Quit
        }
        Else
        {
            Set:($Get(pFHIR)="") pFHIR=##class(%Stream.TmpCharacter).%New()
            
            Do pFHIR.Write(tFHIR.bundle.%ToJSON())
            Do tFHIR.%Close()
            
            // store SDA for debug purpose
            if ..Debug=1
            {
                Set tFHIRFile=##class(%Stream.FileCharacter).%New()
                Set tSC=tFHIRFile.LinkToFile(..DebugPath_..FileGUID_".JSON")
                Set tFHIRFile.TranslateTable="UTF8"
                Do pFHIR.Rewind()
                Do tFHIRFile.Write(pFHIR.Read())
                D tFHIRFile.%Save(),tFHIRFile.%Close()
                K tFHIRFile
            }
        }
    }
    Catch ex 
    {
        Set tSC=ex.AsStatus()
    }
    
    Quit tSC
}

综合起来互联互通文档转化为FHIR资源的示例,这里pFHIR的输出就是得到的fhir资源:

Method HCCToFHIR(pHCC, ByRef pFHIR) As %Status
{
    If ($ISOBJECT(pHCC) && pHCC.%IsA("%Stream.Object"))
    {}
    Else
    {
        Quit $$$ERROR(-10000,"Input parameter pHCC is not a stream")
    }

    // transfter to SDA first
    Set tSDA = ##class(%Stream.GlobalCharacter).%New()
    Set tSC = ..HCCToSDA(pHCC,.tSDA)
    Quit:($$$ISERR(tSC)) tSC

    // store SDA for debug purpose
    Set tSC = ..SDAToFHIR(tSDA,.pFHIR)
    Quit tSC
}

 

在我们的IRIS互联互通套件里实现了由共享文档生成再到FHIR资源的转化的全部流程,https://gitee.com/jspark/CCHDist 可以在这个代码仓库中找到IRIS互联互通套件的代码实现以及相关介绍文档。

Discussion (0)1
Log in or sign up to continue