InterSystems 官方 Claire Zheng · 八月 1, 2024

InterSystems IRIS数据平台、InterSystems IRIS for Health和HealthShare Health Connect 2024.2版本现已正式发布(GA)。

发布亮点

2024.2是持续交付版本。在这个版本中增加了许多更新和增强:

持续提升开发者体验

  • Studio移除——2024.2 Windows安装不包括Studio IDE,升级现有实例会从实例的bin目录中移除Studio。希望继续使用Studio的开发人员应该从WRC component distribution page 下载2024.1 Studio独立组件。
  • Foreign Tables 得到了完全的支持——在2024.2版本中,我们解决了来自早期访问用户的反馈,包括更好的元数据管理,改进的谓词下推,以及进一步与LOAD DATA命令保持一致,LOAD DATA命令可以获取外部数据,而不是将外部数据投射到IRIS SQL表中。
  • 在微软Windows中运行Python运行时保持灵活——运行微软Windows的客户现在可以选择用于嵌入式Python的Python运行环境。
0
0 115
文章 姚 鑫 · 七月 30, 2024 3m read

第九章 使用进程私有全局变量来支持非常大的消息

使用进程私有全局变量来支持非常大的消息

默认情况下、 Web 服务在解析请求或响应时通常使用本地数组内存。可以强制它改用进程私有全局变量;这使 Web 服务能够处理非常大的消息。

为此,请指定 Web 服务类的 USEPPGHANDLER 参数,如下所示:

Parameter USEPPGHANDLER = 1;

如果此参数为 1,则 Web 服务在解析请求或响应时始终使用进程私有全局变量。如果此参数为 0,则 Web 服务始终使用本地数组内存来实现这些目的。如果未设置此参数,则 Web 服务使用默认值,通常是本地数组内存。

自定义 Web 服务的回调

可以通过覆盖其回调方法来定制 Web 服务的行为:

OnRequestMessage()

如果没有安全错误,则在 Web 服务收到请求消息时调用;如果出现安全错误,则不会调用此回调。系统在执行安全处理、检查信封是否有错误以及处理 WS-Addressing 标头中指定的操作(如果有)后调用此回调。此回调对于记录原始 SOAP 请求等任务很有用。

此方法具有以下签名:

Method OnRequestMessage(mode As %String, action As %String, request As %Stream.Object)

其中:

  • mode 指定 SOAP 请求的类型。
0
0 104
文章 Hao Ma · 七月 29, 2024 2m read

转发自Eduard Lebedyu的原文

在本系列文章中,我将介绍并讨论使用 InterSystems 技术和 GitLab 进行软件开发的几种可行方法。我将涉及以下主题:

1
0 210
文章 姚 鑫 · 七月 27, 2024 1m read

第五章 控制 xsi:type 属性的使用

控制 xsi:type 属性的使用

默认情况下, SOAP 消息仅包含顶级类型的 xsi:type 属性。例如:

<?xml version="1.0" encoding="UTF-8" ?>
...
<types:GetPersonResponse>
<GetPersonResult href="#id1" />
</types:GetPersonResponse>
<types:Person id="id1" xsi:type="types:Person">
<Name>Yeats,Clint C.</Name>
<DOB>1944-12-04</DOB>
</types:Person>  
...

在这些示例中,已添加换行符以提高可读性。要将此属性用于 SOAP 消息中的所有类型,请将 OUTPUTTYPEATTRIBUTE 参数或 OutputTypeAttribute 属性设置为 1。相同的输出将如下所示:

<?xml version="1.
0
0 82
文章 姚 鑫 · 七月 25, 2024 2m read

第四章 覆盖 HTTP SOAP 操作和请求消息名称

覆盖 HTTP SOAP 操作和请求消息名称

当通过 HTTP 调用 Web 方法时,HTTP 标头必须包含 SOAP 操作,该操作是指示 SOAP HTTP 请求意图的 URI。对于 SOAP 1.1SOAP 操作作为 SOAPAction HTTP 标头包含在内。对于 SOAP 1.2,它包含在 Content-Type HTTP 标头中。

SOAP 操作指示 SOAP HTTP 请求的意图。该值是一个标识意图的 URI;它通常用于路由入站 SOAP 消息。例如,防火墙可以使用此标头适当地过滤 HTTP 中的 SOAP 请求消息。

对于 Web 服务中的 Web 方法,SOAPAction HTTP 标头默认具有以下形式(对于 SOAP 1.1):

SOAPAction: NAMESPACE/Package.Class.Method

其中 NAMESPACEWeb 服务的 NAMESPACE 参数的值,Package.Class.Method 是用作 Web 方法的方法的名称。例如:

SOAPAction: http://www.myapp.org/GSOAP.WebService.GetPerson

要覆盖此设置,请在 Web 方法的定义中为 SoapAction 方法关键字指定一个值。

0
0 191
讨论 Claire Zheng · 七月 25, 2024

Hi社区成员们!

你可能已经知道了,, 我们的 Developer Community AI(开发者社区AI) 已经运行一个多月了 🎉 我们希望你能够出于好奇来尝试一下 😁 如果你还没试过,那就试试吧!无论如何,由于它仍在测试阶段,我们非常有兴趣了解你对它的看法,也很期待听到你的想法和经验。

我们重视你为此付出的时间和精力,所以将随机赠送一个可爱的奖品给愿意分享自己想法的社区成员。要参加此抽奖活动,你需要遵循以下准则:

0
0 300
文章 Michael Lei · 七月 25, 2024 1m read

InterSystems 常见问题FAQ 

要编译包含映射修饰符的类rountine,请指定编译器修饰符“/mapped=1”或“/mapped”。例如,执行以下操作:

[示例 1] 获取类列表并编译

 do $System.OBJ.GetClassList(.list,"/mapped")
 // build your classes starting from .list
 do $System.OBJ.Compile(.list) 

[示例 2] 编译所有类 

 do $system.OBJ.CompileAll("/mapped") 
0
0 145
文章 光辉 赵 · 七月 23, 2024 6m read

FHIR是标准,是规范,使用FHIR使大家可以使用同一种语言、语义进行交流,名称、API都是统一的,只要符合FHIR标准,任何系统都可交互。对业务开发者来说,大部分接口交互的定义交给FHIR来处理,效率大大提高。

1
0 207
文章 Michael Lei · 七月 18, 2024 2m read

InterSystems 常见问题系列

使用 ErrorList 查询 SYS.ApplicationError 类.

  • 注 1: 在 %SYS 命名空间中运行.
  • 注 2: 这是个非存储的utility, 所以我们用 %ResultSet 类而不用 %SQL.Statement.

执行命令的例子如下.

USER>set $namespace="%SYS"   //equal to zn "%SYS"
%SYS>set rset=##class(%ResultSet).%New()

%SYS>set rset.ClassName="SYS.ApplicationError"
%SYS>set rset.QueryName="ErrorList"
// The first argument of the query is the namespace name, the second argument is the date (in MM/DD/YYYY format).
%SYS>do rset.Execute("USER","08/17/2020")

// To display the results on the screen, execute the %Display() method.
%SYS>do rset.
0
0 177
文章 Michael Lei · 七月 18, 2024 1m read

InterSystems 常见问题系列

可以通过 TRY-CATCH 来完成:

 #dim ex As %Exception.AbstractException
 TRY {
    //Code that causes an error
  }
  CATCH ex {
     do ex.Log()
  }

如果用了 ^%ETN, 从BACK 接入点 (BACK^%ETN)处调用.

请参考另外一篇文章: 如何使用命令获得应用错误 (^ERRORS)

0
0 178
文章 Hao Ma · 三月 25, 2021 8m read

关键字:PyODBC,unixODBC,IRIS,IntegratedML,Jupyter Notebook,Python 3

 

目的

几个月前,我简单谈到了关于“将 Python JDBC 连接到 IRIS”的话题。我后来频繁提起它, 因此决定再写一篇 5 分钟的笔记,说明如何“将 Python ODBC 连接到 IRIS”。

在 Windows 客户端中通常很容易设置 ODBC 和 PyODBC,不过我每次在 Linux/Unix 风格的服务器中设置 unixODBC 和 PyODBC 客户端时,都会遇到一些麻烦。

有没有一种简单连贯的方法,可以不安装任何 IRIS,在原版 Linux 客户端中让 PyODBC/unixODBC 针对远程 IRIS 服务器运行?

 

范围

最近,我花了点时间研究如何在 Linux Docker 环境的 Jupyter Notebook 中从头开始让一个 PyODBC 演示运行起来, 记录下这篇稍微有些繁琐的笔记,以供日后快速参考。  

范围内: 

这篇笔记将涉及以下组件:

  • PyODBC over unixODBC 
  • 安装了 TensorFlow 2.2 和 Python 3 的 Jupyter Notebook 服务器
  • 带有 IntegratedML 的 IRIS2020.3 CE 服务器,包括示例测试数据。
  • 1
    0 528
    文章 Jingwei Wang · 八月 30, 2022 3m read

    InterSystems IRIS 允许从任何符合DB-API的Python应用程序对InterSystems IRIS 进行快速、无缝地访问。Python DB-API驱动是对PEP 249 v2.0(Python数据库API规范 v2.0)的完整兼容。

    步骤

    1. 前提是要有一个Python的开发环境。
      本示例使用vs code 如下所示创建一个dbapi.py文件。
      dbapi.py :
      # Embedded Python examples from summer 2022
      import iris as dbapi
      ​
      mytable = "mypydbapi.test_things"
      conn = dbapi.connect(hostname='localhost', port=1972, namespace='IRISAPP', username='superuser', password='iris')
      ​
      # Create table
      cursor = conn.cursor()
      try:
       cursor.
    1
    0 412
    问题 y g · 七月 16, 2024

    ubuntu系统中,查询到的数据都是空字符串

     python3 httpTest2.py
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')

    代码如下
    import pyodbc
    import requests

    driver = '/usr/irisodbc/bin/libirisodbc35.so'
    server = 'xx'
    database = 'xx'
    username = 'xx'
    password = 'xx'
    port = 'xx'


    cnxn = pyodbc.connect(driver=driver, server=server,port='51773', database=database, uid=username, pwd=password,charset='UTF-8')
    cursor = cnxn.

    0
    0 92
    文章 Yongfeng Hou · 十一月 23, 2023 3m read

            IRISHealth以其完备且系统化的安全特性在医疗行业的数据库中独树一帜,这些特性包括安全认证、安全授权、安全审计、数据加密以及安全配置。其中数据传输无疑是其中最重要的一环。为此,IRISHealth采用了SSL/TLS技术来对传输的数据进行加密,有效保障了从IRIS数据平台的超级服务数据传输、Telnet服务数据传输、java/.net/Studio客户端的访问数据传输、MIRROR与DB的数据传输,到DBServer和ECPApp之间的数据传输的安全性。


            本文是在两个IRISHealth2021实例之间进行ECP服务通信的示例,一个作为DBServer,一个作为ECPApp,两个实例之间通过使用SSL/TLS的ECP协议进行TCP的加密传输通信。

    1.IRIS的DB和ECP环境:




    DBServer

    ECPApp

    10.1.30.231 10.1.30.232

    2. CA证书的环境:




    CA根服务器 

    DBServer

    ECPApp

    10.1.30.231 10.1.30.231 10.1.30.232
    CARoot.cer DataSever.cer ECPApp.cer
    CARoot.key DataSever.key ECPApp.
    5
    3 438
    文章 liu bo · 七月 7, 2024 1m read

    问题:锁管理里边包含很多WorkQueueMgr的锁,我想批量去移除,比较多,一个一个移除比较慢

    解决:查询所有的进程,过滤routine不包含某个routine的进程,进行终止

    代码:

    ClassMethod BatchTerminalProcessQuery()
    {     Set Rset = ##class(%ResultSet).%New("%SYS.ProcessQuery:ListPids")
    Rset.Execute()
    While Rset.Next() {
       CurrentLineAndRoutine=""
       &sql(SELECT CurrentLineAndRoutine INTO :CurrentLineAndRoutine FROM %SYS.ProcessQuery WHERE Pid = :Rset.GetData(1))
       continue:CurrentLineAndRoutine'[".WorkQueueMgr"
       CurrentLineAndRoutine,!
       pid=Rset.GetData(1)
       sc= $System.Process.Terminate(pid)
       sc,!
       ;w $ZU(4,pid,1)
    }
    Rset.Close()
    }

    1
    0 256
    文章 Michael Lei · 七月 11, 2024 1m read

    在当今充满活力的医疗保健行业,获取全面、精简的医疗记录对于做出明智的决策至关重要。人工智能驱动的健康图表应用程序是一个开创性的解决方案,旨在为医生提供一种获取和理解健康数据的有效方式。

    主要功能

    - 全面的数据检索: 健康图表应用程序通过提取各种健康数据,包括过敏症、病情、手术、免疫接种、药物、家族史、社会史、生命体征和化验结果,超越了传统记录。这种全面的视角可以让人们深入了解患者的健康历程。

    - 通过人工智能增强洞察力:通过利用人工智能的力量,Health Chart 应用程序可以智能处理数据。人工智能引擎将原始信息转化为可操作的洞察,生成健康摘要和风险评估。这不仅节省了医生的宝贵时间,还提高了患者护理质量。

    公司介绍:https://www.prairiebyte.com

    软件试用

    目标使用者--临床医生

    类别--护理协调, 数据可视化, 疾病管理/基层医疗

    应用程序类型--SMART ON FHIR应用程序

    FHIR 版本--R4

    支持的电子病历系统--Cerner、Epic等支持FHIR API的软件系统

    0
    0 258
    文章 Michael Lei · 七月 9, 2024 1m read

    Abstractive Health是一款医生人工智能助手,可帮助医生创建最佳病历。我们直接与国家 HIE 和 EHR 集成。我们的医疗摘要可用于门诊、住院和急诊护理,实现临床笔记的自动化,如 SOAP 笔记、进展笔记、护理过渡、ED Provider 笔记和出院摘要。我们使用生成式人工智能和 LLM 来压缩数百页的医疗笔记,从而节省您的时间,让您可以专注于病人护理。

    公司介绍:https://www.abstractivehealth.com

    软件试用

    目标使用者--临床医生

    类别--护理协调, 数据可视化, 人口健康

    应用程序类型--SMART ON FHIR应用程序

    FHIR 版本--R4

    支持的电子病历系统--Allscripts、Athena Health、Cerner、Epic等支持FHIR API的软件系统

    安全和隐私政策: https://www.abstractivehealth.com/security-and-privacy

    0
    0 170
    文章 Michael Lei · 七月 7, 2024 1m read

    InterSystems 常见问题系列FAQ

    如果要让超时功能失效, 在DSN设置查询超时为disabled:

    Windows Control Panel > Administrative Tools > Data Sources (ODBC) > System DSN configuration

    如果勾选了Disable query timeout , 超时就会失效.

    如果想在应用侧修改,你可以在ODBC API 层设置:在连接数据源之前,调用ODBC SQLSetStmtAttr功能设置SQL_ATTR_QUERY_TIMEOUT 属性 

    0
    0 309
    文章 Michael Lei · 七月 7, 2024 1m read

    InterSystems 常见问题FAQ

    如果您想在InterSystems 产品启动时执行一个操作系统可执行文件,命令或者程序,可以在SYSTEM^%ZSTART routine里面写明流程 ( %ZSTART routine在 %SYS 命名空间里面创建).

    在 SYSTEM^%ZSTART 里面写代码之前, 请确保他可以在任何情况下能正常工作

    如果 ^%ZSTART routine 写的不对,或者没有响应或者发生错误,InterSystems 产品可能会无法启动。

    更多信息,请参考一下文档。

    About writing %ZSTART and %ZSTOP routines [IRIS]
    About writing %ZSTART and %ZSTOP routines

    0
    0 144
    文章 Michael Lei · 七月 7, 2024 4m read

    InterSystems  常见问题系列FAQ

    InterSystems 产品里数据 (表、对象、实例数据) 是存在global 变量里的。
    每个global 的数据大小可以从管理门户中中点击属性查看Management Portal > System > Configuration > Local Database > Globals page, 然后在global 属性页点击计算大小Calculate Size 按钮。
    你可以在终端上调用^%GSIZE 来在命名空间里显示数据大小,方法如下.

    USER>do ^%GSIZE
     
    Directory name: c:\intersystems\ensemble\mgr\user\ =>
    All Globals? No => Yes
    ^DeepSee.ActiveTasks contains no data
    Include it anyway? No => Y
    Include any other similar globals without asking again? Yes =>
    ^DeepSee.ActiveTasks contains no data
    Include it anyway? No => Yes
    Include any other similar globals without asking again?
    0
    0 238
    文章 Michael Lei · 七月 7, 2024 2m read

    InterSystems 常见问题系列FAQ

    流程如下

    1. 上传到 FTP server

     set tmpfile="c:\temp\test.jpg"
     set ftp=##class(%Net.FtpSession).%New() 
     // connect to FTP server
     do ftp.Connect("","<username>","<password>")
     // set transfer mode to BINARY
     do ftp.Binary()
     // Move to the directory to upload
     do ftp.SetDirectory("/temp/upload")
     // Prepare a stream of files to upload  
     set file=##class(%File).%New(tmpfile)
     do file.Open("UK\BIN\")
     // upload file
     // 1st argument: File name to create at upload destination
     // 2nd argument: File stream to upload
     do ftp.Store("test.jpg",file)
     // Logout from ftp server
     do ftp.
    0
    0 153