搜索​​​​

清除过滤器
公告
Johnny Wang · 九月 2, 2021

2021 年 8 月学习资料:现已上线!

2021 年 8 月的学习资料现在可以在learning.intersystems.com上独家获取!您可以: 先睹为快:2021 年虚拟峰会体验实验室 使用自适应分析(Adaptive Analytics)解决方案来组建你的第一个数据模型 免费试用 InterSystems IRIS 社区版 查看 InterSystems 文档中的分析 申请即将举行的线上技术课程 立刻报名! 注意:老是错过最新消息?别担心,我们会在9月恢复正常的邮件发送。
文章
Claire Zheng · 五月 9, 2023

【视频】老卢问答:与其他亚太国家相比,中国医疗信息化发展有什么特色?

2023年4月,InterSystems亚太区总经理老卢(Luciano Brustia)回到了阔别三年多的北京,针对一些热门问题分享了自己的观点:北京在疫情前后有什么不同?InterSystems是如何进行本土化创新服务中国市场的?与其他亚太国家相比,中国医疗信息化发展有什么特色?医疗信息化未来的发展方向和趋势是什么?
文章
Jingwei Wang · 六月 8, 2023

Embedded python 重新加载更新后的python模块

InterSystems IRIS中重新加载更新后的Python模块的方式和直接使用Python 重新加载模块的方式是一样的。 在Python3.4 之后到版本中,直接使用Python 重新加载模块的方式如下: import importlib ​ importlib.reload(module) 同样,在在InterSystems IRIS中重新加载Python模块的方式与其没有区别,示例如下: ClassMethod Hello() As %Status { Set sc = $$$OK Set sm = ##class(%SYS.Python).Import("sample") Set importlib = ##class(%SYS.Python).Import("importlib") do importlib.reload(sm) write sm.hello() Return sc } ​
公告
Jeff Liu · 十月 18, 2023

[视频] FHIR 上的临床警报和通知:将医疗保健行动引擎纳入工作流程

你好社区, 观看此视频,了解如何将 FHIR、CDS Hooks 和低代码医疗保健规则编辑器组合成一个易于使用、功能强大的平台,以帮助确保以最佳方式传递信息: ⏯ FHIR 临床警报和通知:将医疗保健行动引擎纳入 2023 年全球峰会工作流程 🗣演讲者:@Frank.Pandolfe,InterSystems 临床产品经理 订阅我们的Bilibili 频道InterSystems Developers以获取最新更新!
文章
Jeff Liu · 四月 17, 2024

[视频]了解HL7 FHIR 资源(Resources)的架构

各位开发者好 欢迎观看InterSystems Bilibili官方频道的最新视频 InterSystems Developers Bilibili: ⏯ Understanding the Structure of HL7 FHIR Resources 了解 HL7 FHIR 资源的结构。了解如何在 HL7 FHIR 网站上查看和阅读资源的树形表示法,从而了解资源中包含的不同数据元素。此外,还可了解如何查看 XML、JSON 或 Turtle 格式的资源,以及在哪里可以找到 FHIR 资源的通用建模语言 (UML) 图。 观看新视频!
文章
Michael Lei · 七月 6, 2021

使用 Yape 解包 pButtons - 更新说明和快速指南

如果一张图片胜过千言万语,那么一段视频又价值几何? 当然胜过敲一个帖子。 请在 [InterSystems Developers YouTube](https://www.youtube.com/c/InterSystemsDevelopers) 观看我的“Coding talks”: 1. 使用 Yape 分析 InterSystems IRIS 系统性能。 第 1 部分:安装 Yape   在容器中运行 Yape。 2. Yape 容器 SQLite iostat InterSystems 提取和绘制 pButtons 数据,包括时间范围和 iostat。 如果您需要一个简单的方法来捕获和查看 Caché 和 IRIS 以及系统性能指标,可以安排每天运行 pButtons 来轻松实现。 [我之前写过这方面的文章](https://cn.community.intersystems.com/post/intersystems-数据平台的容量规划和性能系列文章)。 我经常需要查看客户系统以进行容量规划和性能检查,这就是我编写 Yape 并在 [GitHub](https://github.com/murrayo/yape "GitHub") 上提供它的原因。 我的 InterSystems 同事 Fabian 将 Yape 的内部结构带入了新方向,并[使其正式在容器中运行](https://community.intersystems.com/post/visualizing-data-jungle-part-iv-running-yape-docker-image)。 Fabian 已经离开 InterSystems,但我继续在 GitHub 上进行开源开发。 在过去一个月左右的时间里,我修复了一些操作系统命令格式错误,使日期处理更智能,在 vmstat 中添加了“Total CPU”图表(倒着看“id”导致我的脖子拉伤),以及其他修饰性更改。 如果您想为 Yape 做出贡献,它在 GitHub 上是开源的。 如果您有功能要求,请[通过建议页面](https://github.com/murrayo/yape/issues)告诉我。 另外,请查看 [Open Exchange 上的 Yape 应用程序](http://bit.ly/2WnqmSt)。 在接下来的几个月,我将分享工作流程中的其他一些技巧,并期望继续开发以使呈现的数据更加有用。 Yape 非常适合检查和查看昨天或过去一周发生的事件的趋势,但是您还需要实时监视和警报... 这里我也对将来的一些帖子做个预告 ;)  
公告
Claire Zheng · 三月 26, 2024

相聚青岛|InterSystems诚邀您共赴2024 CHINC之约,即日起可预约展会Demo咨询

2024年3月29日-3月31日,由国家卫生健康委医院管理研究所主办、《中国数字医学》杂志社有限公司承办的“2024中华医院信息网络大会(CHINC)”将在青岛国际会展中心(红岛馆)举办。InterSystems诚邀您莅临展会,我们带来了内容丰富的Demo演示,包括:InterSystems IRIS 2024.1新特性、 InterSystems IRIS矢量存储和矢量查询、InterSystems FHIR数据资产化解决方案,以及InterSystems IRIS医疗版互联互通套件解决方案。 2024 CHINC期间,InterSystems在合作伙伴东华医为展位(B3馆-A02)设立Demo演示区,即日起即可预约现场Demo咨询,欢迎点击【此处】注册预约。 Demo演示详情 Demo演示: InterSystems IRIS 2024.1新特性 欢迎点击【此处】注册,预约Demo咨询 矢量查询 快速联机备份 (EAP) 多超级服务器端口SuperServer Ports FHIR R4 and R5 Object Model Generation IRIS for Health 支持 Smart on FHIR 2.0.0 FHIR查询的性能提升 新的监控指标 嵌入式Python BPL editor 灵活的Python版本设置 Demo演示: InterSystems IRIS矢量存储和矢量查询 欢迎点击【此处】注册,预约Demo咨询 InterSystems IRIS 提供全SQL的矢量存储和基于矢量相似度矢量查询能力 让业务数据无需迁移到其它平台就可以矢量化存储和查询 进一步通过集成矢量化语言模型、生成式语言模型,利用本地数据实现检索增强生成 Demo演示: InterSystems FHIR数据资产化解决方案 欢迎点击【此处】注册,预约Demo咨询 数据作为生产要素推动数字经济已成为我国国策。要让数据成为生产资料参与交易,则需满足两个条件:其一是建立数据生产、流通、消费环节中数据语义的一致性,使数据质量可被控制,数据价值可被度量;二是对数据进行按需加工,形成品类众多的半成品、预制件,以便适应各类业务场景的需要。也即:交易双方应对数据的含义和价值达成共识,这是能够交易的前提——这也正如在中国制造业高速发展的三十年中,标准化部件和预制件之于大规模生产的作用一样。 数据资产清单就是一种有助于在交易双方建立共识、进一步计量计价的有力工具。在医疗行业,FHIR可以成为语言基础,而SQL Builder则提供了FHIR数据资产清单。因此,“FHIR 存储库+SQL builder”能够构成盘活数据资产价值的解决方案。 InterSystems作为深耕医疗行业40余年的专业厂商,在IRIS for Health(IRIS医疗版)数据平台中,借助HL7 FHIR标准提供的语义基础,推出了集FHIR存储库、SQL Builder、FHIR API等功能于一体的医疗行业数据资产解决方案,用于满足医疗数据资产化的业务需要。 在本次解决方案展示中,我们将演示如何基于FHIR进行数据资产盘点,如何按需投放资产支撑数据集需求和数据应用,一遍盘活已成规模的行业数据。包括:1)使用SQL Builder投射SQL数据,在SQL上进一步支撑以数据集为基础的业务(数据集交易或BI),其中按需投放、最小化原则是重要的规约,而IRIS提供了这两种规约的直接支持。2)使用API支撑的业务,不仅仅是使用CRUD操作,FHIR的Search操作对于支撑CDSS等业务具有重要意义。 Demo演示: InterSystems IRIS医疗版互联互通套件 欢迎点击【此处】注册,预约Demo咨询 InterSystems IRIS医疗版互联互通套件是一个全面的解决方案,提供了一整套工具和标准,旨在支持互联互通成熟度测评和通过测评之后的数据利用。它提供了满足互联互通成熟度测评的符合性基础,包括数据元与值集标准以及基于互联互通规范的69个服务和53个电子病历共享文档。此外,该套件还赋能数据利用,能够将电子病历共享文档转换成FHIR资源并存储,通过FHIR SQL Builder实现FHIR资源到SQL表的转换,从而支持数据分析,这一功能打通了互联互通和FHIR生态系统,促进了医疗数据的流动和分析。 更多活动|答问卷,领取《FHIR白皮书》! 由HL7中国委员会主持撰写的《FHIR白皮书》包含FHIR的设计路线与版本、基本用法、核心定义解读与适配、FHIR的发布实施、本地化方法、国外典型实践和案例、国内案例、基于FHIR的参考架构等丰富的内容。欢迎点击【此处】答问卷,领取《FHIR白皮书》!
文章
姚 鑫 · 一月 27, 2023

第五十八章 使用 ^BLKCOL 监视块冲突

# 第五十八章 使用 `^BLKCOL` 监视块冲突 当一个进程被迫等待访问一个块时,就会发生块冲突。过多的块冲突会降低应用程序性能。 # `Using ^BLKCOL` 在 `IRIS®` 数据平台中,`^BLKCOL` 实用程序对指定时间段(默认为 `10` 秒)内的块碰撞进行采样,记录这段时间内指定时间间隔(默认为 `10` 毫秒)内的最新块碰撞。对于每个记录的冲突,`^BLKCOL` 不仅标识块,还标识涉及的全局及其在块中的第一个和最后一个引用,以及创建试图访问块的进程的例程和行。 注意:`irisstat -D` 选项,如本指南附录“使用 `irisstat` 实用程序监视 `IRIS`”中的使用选项运行 `irisstat` 中所述,也对块冲突进行采样,但仅识别涉及的块。 `irisstat -D` 的输出包含在 `^SystemPerformance` 实用程序生成的报告中,如本指南的使用 `^SystemPerformance` 监控性能一章所述。 运行 `^BLKCOL` 时,可以指定以下内容: - 采样周期的长度(以秒为单位) - 采样之间的间隔(以毫秒为单位) - 是否收集例程详细信息(默认为是) - 是否将输出格式化为: - 具有最高冲突计数的块列表(默认) - 涉及的所有块的列表`in collisions` - 来自检测到的所有块碰撞的逗号分隔值,按块编号和例程排序和计数 - 来自所有检测到的块碰撞的逗号分隔值,未排序(`RAW`) - 例程中的碰撞热点列表 - 要显示的块数(如果适用) - 是否将输出发送到文件 # `^BLKCOL Ouputend` 输出到文件 `^BLKCOL` 实用程序的使用显示在以下示例终端会话中: ```java %SYS>do ^BLKCOL Block Collision Analysis How many seconds should we sample: How long to wait (ms) between each sample: Collect routine details? Format for 'T'op counts, 'D'isplay all, 'S'orted CSV, 'H'ot spot, or 'R'aw CSV: Number of blocks to display: Output to file: Sampling ... (any key to interrupt) 625 block collisions in 735 samples. Block # (count) - Global refs (first - last in block) - Routine refs (SFN) 767 (395) in c:\InterSystems\iris\mgr\user\ ^acctest - ^acctest(10220," 167") (T/BPtr) 325 at ^AccessTest+156(4) 25 at ^AccessTest+121(4) 24 at ^AccessTest+92(4) 8 at ^AccessTest+109(4) 8 at ^AccessTest+127(4) 4 at ^AccessTest+170(4) 1 at ^AccessTest+163(4) 3890 (11) in c:\InterSystems\iris\mgr\user\ ^acctest(2552," 371") - ^acctest(2552," 38") (Data) 6 at ^AccessTest+164(4) 3 at ^AccessTest+163(4) 1 at ^AccessTest+134(4) 1 at ^AccessTest+156(4) 15572 (9) in c:\InterSystems\iris\mgr\user\ ^acctest(6980," 4795") - ^acctest(6988," 3259") (Data) 7 at ^AccessTest+134(4) 1 at ^AccessTest+164(4) 1 at ^AccessTest+170(4) 15818 (8) in c:\InterSystems\iris\mgr\user\ ^acctest(9124," 173") - ^acctest(9124," 1743") (Data) 5 at ^AccessTest+164(4) 3 at ^AccessTest+170(4) 971 (7) in c:\InterSystems\iris\mgr\user\ ^acctest(484," 3927") - ^acctest(484," 3938") (Data) 5 at ^AccessTest+170(4) 2 at ^AccessTest+164(4) 1137 (7) in c:\InterSystems\iris\mgr\user\ ^acctest(756," 4063") - ^acctest(756," 4073") (Data) 3 at ^AccessTest+109(4) 2 at ^AccessTest+134(4) 1 at ^AccessTest+156(4) 1 at ^AccessTest+163(4) 2999 (7) in c:\InterSystems\iris\mgr\user\ ^acctest(2092," 666") - ^acctest(2092," 674") (Data) 3 at ^AccessTest+170(4) 1 at ^AccessTest+109(4) 1 at ^AccessTest+121(4) 1 at ^AccessTest+134(4) 1 at ^AccessTest+164(4) 6173 (7) in c:\InterSystems\iris\mgr\user\ ^acctest(3684," 528") - ^acctest(3684," 536") (Data) 3 at ^AccessTest+163(4) 1 at ^AccessTest+109(4) 1 at ^AccessTest+156(4) 1 at ^AccessTest+164(4) 1 at ^AccessTest+170(4) 14617 (7) in c:\InterSystems\iris\mgr\user\ ^acctest(9688," 18") - ^acctest(9688," 26") (Data) 4 at ^AccessTest+170(4) 2 at ^AccessTest+164(4) 1 at ^AccessTest+134(4) 15282 (7) in c:\InterSystems\iris\mgr\user\ ^acctest(8700," 4889") - ^acctest(8760," 1402") (Data) 4 at ^AccessTest+170(4) 3 at ^AccessTest+164(4) %SYS>d ^BLKCOL Block Collision Analysis How many seconds should we sample: How long to wait (ms) between each sample: Collect routine details? Format for 'T'op counts, 'D'isplay all, 'S'orted CSV, 'H'ot spot, or 'R'aw CSV: H Number of blocks to display: Output to file: Sampling ... (any key to interrupt) 571 block collisions in 768 samples. Sorted by routine/line that waits for block ownership _____________________________________________________ (571) AccessTest (324) +156^AccessTest : s @G@($J,node)=$$getdata($E(Str,1,$r(1000))) ;SMLXXX+, AFH (54) +164^AccessTest : k @G@($J,node) (43) +134^AccessTest : . k @G@($J,node) (31) +92^AccessTest : . . k @G@($j) (28) +109^AccessTest : . s x=$O(@G@($J,x)) Sorted by routine that owns the block _____________________________________ (472) AccessTest (472) +AccessTest ```
文章
姚 鑫 · 二月 25, 2021

第四十七章 Caché 变量大全 ^$JOB 变量

# 第四十七章 Caché 变量大全 ^$JOB 变量 提供系统间IRIS进程(`JOB`)信息。 # 大纲 ```java ^$JOB(job_number) ^$J(job_number) ``` # 参数 - `job_number` 输入ObjectScript命令时创建的系统特定OBJ编号。每个活动的InterSystems IRIS进程都有一个唯一的作业号。登录到系统会启动一个作业。在UNIX®系统上,作业号是调用InterSystems IRIS时启动的子进程的`PID`。`JOB_NUMBER`必须指定为整数;不支持十六进制值。 # 描述 可以将`^$JO`B结构化系统变量用作`$DATA`、`$ORDER`和`$QUERY`函数的参数,以获取有关本地InterSystems IRIS系统上是否存在InterSystems IRIS作业的信息。 # 示例 以下示例显示如何将`^$JOB`用作`$DATA`、`$ORDER`和`$QUERY`函数的参数。 ## 作为$DATA的参数 `$DATA(^$JOB(job_number))` `^$JOB`作为`$DATA`的参数返回一个整数值,该值指示指定的作业是否作为节点存在于`^$JOB`中。下表显示了`$DATA`可以返回的整数值。 Value | Meaning ---|--- 0 | `JOB`不存在 1 | `JOB`存在 以下示例测试系统间IRIS进程是否存在。 ```java DHC-APP>SET x=$JOB DHC-APP>WRITE !,$DATA(^$JOB(x)) 1 ``` 变量`x`设置为当前进程的作业号(例如:4294219937)。写入操作返回布尔值1,表示此进程存在。 ## 作为$ORDER的参数 `$ORDER(^$JOB(job_number),direction)` `^$JOB`作为`$ORDER`的参数,按排序顺序将下一个或上一个`^$JOB`编号返回到指定的作业编号。如果不存在作为`^$JOB`节点的此类`JOB`编号,`$ORDER`将返回空字符串。 Direction参数指定是否返回下一个或上一个`job`编号。如果不提供方向参数,InterSystems IRIS会将排序顺序中的下一个`job`编号返回给指定的`job`编号。 以下子例程搜索InterSystems IRIS作业表,并将`job`号存储在名为`job`的本地数组中。 ```java /// d ##class(PHA.TEST.SpecialVariables).JOB() ClassMethod JOB() { JOB SET pid="" FOR i=1:1 { SET pid=$ORDER(^$JOB(pid)) QUIT:pid="" SET JOB(i)=pid } zw JOB WRITE "总共job有: ",i QUIT } ``` ```java DHC-APP>d ##class(PHA.TEST.SpecialVariables).JOB() JOB(1)=612 JOB(2)=1424 JOB(3)=1972 JOB(4)=5624 JOB(5)=7244 JOB(6)=7864 JOB(7)=7872 JOB(8)=7892 JOB(9)=7920 JOB(10)=8332 JOB(11)=9048 JOB(12)=9084 JOB(13)=9340 JOB(14)=10084 JOB(15)=10112 JOB(16)=10156 JOB(17)=10200 JOB(18)=10212 JOB(19)=10828 JOB(20)=22432 总共job有: 21 ``` ## 作为$QUERY的参数 `$QUERY(^$JOB(job_number))` `^$JOB`作为`$QUERY`的参数,按排序顺序将下一个`^$JOB`编号返回到指定的`JOB`编号。如果`^$JOB`中没有这样的`JOB`编号作为节点,则`$QUERY`将返回空字符串。 以下示例返回InterSystems IRISJOB表中的前两个`JOB`。请注意间接运算符`(@)`的用法: ```java DHC-APP>SET x=$QUERY(^$JOB("")) DHC-APP> WRITE !,x ^$JOB("612") DHC-APP>WRITE !,$QUERY(@x) ^$JOB("1424") ```
文章
姚 鑫 · 二月 3

第十四章 I - J 开头的术语

# 第十四章 I - J 开头的术语 ### InterSystems IRIS 存储 (InterSystems IRIS storage) 对象(Objects) 持久对象的默认存储类型。如果你使用 `IRIS` 存储,则无需指定任何存储数据的细节,并且你的类会自动投射到 `SQL`。 ### InterSystems SQL `SQL` `SQL` 是 `IRIS` 的高级关系接口。`SQL` 完全集成了`IRIS` 的对象功能,共享其类字典用于表定义,并使用作为类定义的高级数据类型。 ### InterSystems SQL 服务器 (InterSystems SQL server) `SQL` `SQL` 服务器处理来自客户端应用程序的 `SQL` 请求,以对`IRIS` 数据库应用查询和更新、错误日志记录以及其他与 `SQL` 相关的任务。这是 `ODBC` 和 `JDBC` 驱动程序连接的服务器进程。 ### InterSystems SQL 存储 (InterSystems SQL storage) 对象(Objects) `SQL` 存储提供了一种通过对象持久接口使用 `SQL` 插入、更新和检索数据的机制。如果类的存储定义指定了 `%Storage.SQL` 存储类并包含 `SQL` 映射部分,则这些类使用 `SQL` 存储。 ### 输入输出转换 (I/O translation) 系统 国家语言支持设施,由一组表组成,用于在计算机的字符集和特定设备的字符集之间进行转换。另见语言配置。 ### IP 地址 (IP address) `IRIS` 系统 根据互联网协议(`IP`)为计算机分配的数字标识符。`IRIS` 支持 `IPv6` 和 `IPv4` 格式。有关 `IRIS` 对 `IPv6` 的支持的更多信息,请参见“使用` IPv6` 地址”。 ### IRIS.DAT 系统 `IRIS` 数据库的主卷。它包含`IRIS` 全局和例程。 ### ITG 文件 (ITG file) 系统 包含数据库完整性报告的 `ASCII` 文件,扩展名为 `.ITG`,便于识别。`ITG` 文件由数据库完整性检查创建。 # 以 J 开头的术语 ### Java 通用 `Java` 是一种面向对象的编程语言,最初由 `Sun Microsystems` 创建。 ### Java 数据库连接 (Java Database Connectivity, JDBC) 通用 `Java` 数据库连接,或称 `DBC`,提供了一种用于关系型数据访问的标准 `Java` 接口。 ### 后台进程 (JOBbed process) 系统 通过在`IRIS` 提示符下或在应用程序中发出 `ObjectScript JOB` 命令创建的后台进程。在关系服务器系统上,服务器主进程及其创建的服务器进程是后台进程的示例。 ### 连接 (join) `SQL` 从`IRIS` 关系数据库的基表(通过查询、表单或报告)请求信息,其中必须从多个表中检索数据,因此需要表之间的链接。
文章
Michael Lei · 九月 9, 2021

来自海外的全球独立调查:为什么InterSystems IRIS医疗版是医疗IT开发者的最佳选择

挑战一:缺乏一个统一的技术体系?InterSystems IRIS 医疗版通过统一的数据库、互操作性/中间件、机器学习和FHIR等医疗行业特有的功能来简化开发,开箱即用。 挑战二:需要高性能的解决方案,可以定制适合医疗行业使用的案例InterSystems IRIS for Health医疗版由医疗行业开发人员创建并为医疗服务服务,具有所需的性能、可扩展性和灵活性,大量的全球、全国大型顶级医院案例。全美排名前20医院,全国客户数百家,百强医院30余家; 挑战三:开源和专有软件缺乏灵活性,无法为医疗行业应用提供高可靠性。InterSystems IRIS医疗版实现一套平台兼容专有和开源模块,同时开发人员可以选择自己喜欢的开发语言和灵活性,支持多种开发语言(ObjectScript,.net, Java, Sql, 等等) 挑战四:缺乏具有医疗卫生领域专业知识的供应商,也没有为开发人员提供持续的支持。InterSystems IRIS 医疗版的产品开发能力、屡获殊荣的支持和长期深耕医疗的企业文化,确保开发人员持续成功。
文章
Claire Zheng · 八月 17, 2021

FHIR标准和国际基于FHIR的互联互通实践(5):FHIR以及InterSystems FHIR参考架构

FHIR是快速医疗互操作资源(Fast Healthcare Interoperability Resources)的缩写,所以FHIR的核心是资源模型。它的颗粒度和结构都优于之前的V2 、V3、CDA标准,而且能够灵活扩展。另外一个优势就是它的API,它不仅提供了针对于资源模型本身的原子化的CRUD(创建、读取、更新、删除的这样一些原子化操作),而且提供了查询这种更复杂操作的能力,同样API是可以扩展的。 此外,之前的互操作标准基本上都不会涉及到数据的保存,而FHIR资源仓库提供了一个全新的架构、全新的思路来使用FHIR,实现这种互操作。 这是InterSystems公司FHIR的参考架构,处于核心的就是FHIR服务器,它向外提供API的接口能力,包括FHIR的事务、FHIR的各种交互跟FHIR操作,底层是FHIR资源仓库,它可以持久化所有的FHIR资源,同时允许FHIR服务器对FHIR资源进行事务性的操作,所有需要使用FHIR API的客户端都可以使用FHIR服务器发布出来的API来进行相应的操作与访问。 上文我们讲到有常见的4种互操作的方式,HL7 FHIR支持所有的这些方式,而且它提供了第5种互操作方式。 首先,通过RESTful API它能够提供一个更紧密的业务集成度、去中心化的互操作能力,比较适合于搭建医疗微服务业务环境,同时比较适合于像云、互联网、物联网这种有紧密业务集成需求的环境。 另外FHIR依然支持以消息、文档方式来进行使用。这两种使用方式兼顾了传统互操作的模式,主要的目标是解决低业务集成度和跨数据管理域的集成和交换需求。 FHIR也可以基于服务来提供这种互操作,例如IHE已经有了大量的场景规范基于FHIR来实现了。 第五种就是我们说的资源仓库。大家可能会觉得奇怪,它怎么会成为一种互操作的方式? 我们先来看看互联互操作需求的起源:上图是比较传统的三层架构的开发模式,从底层的数据模型进行设计,到业务逻辑层,再到用户界面层,创造的是烟囱一样的应用。这种烟囱应用之间就需要通过互操作来打通,实现信息的共享和交换。 假设建设的不是烟囱类型的应用,我们还需要基于消息、文档的交换吗? 来看看生物界。世界上最大的生物是一种巨大的菌丝,在美国的俄勒冈州的蓝山有一种蜜真菌,它被科学家认为这是世界上最大的生物。地下的菌丝是一个整体,连在一起的,看起来独立的一个个蘑菇,其实都是这个巨大生命体的一部分。科学家估计在蓝山的蜜真菌的面积能够达到9.6平方公里,年龄已经差不多1900岁,甚至有人说可能在6500岁之间。 如果说我们把FHIR的资源仓库视为菌丝,基于FHIR资源仓库开发的应用,就是一个个的小蘑菇,它们只需要关注用户界面和业务逻辑,因为它们所有的数据存储和数据访问能力都是由标准的FHIR服务器提供的,而FHIR服务器下面可以接非常多的FHIR资源仓库,也就说资源仓库可以不止一个。这就是虚拟的集中式架构,在虚拟集中式的架构下的所有应用天生就是互联互通的,这就是FHIR的第5种互操作模式。 大家可能会问真有人这么做吗?还真有——SMART on FHIR就是比较典型的这种应用方式。 SMART是 “可替代医疗应用的、可重复使用技术”的缩写,它起初是哈佛医学院跟波士顿儿童医院在2011年开启的一个项目,它这个项目目标是用来创建这种可复用、可替代的应用开发架构。显然FHIR提供的这种标准化的数据模型和API是SMART能够实现的基础——的确是,在2014年SMART 跟 FHIR融合出来一个新的项目就是今天的SMART on FHIR。这个应用程序开发的架构使用标准的FHIR资源模型,使用标准的FHIR API来操作资源数据,使用OAuth2 和OpenID实现统一的认证授权,而开发者只需要关注在业务逻辑和应用层面。它开发出来的SMART应用底层的数据都保存在FHIR服务器和FHIR资源仓库里面,这些应用跟我们的手机的APP一样,都是即插即用的。这些即插即用的应用可以在所有支持 FHIR的服务器和FHIR资源仓库上实现,而且可以复用。 这些应用程序里面并不保存数据,我们不用担心数据跟应用共存亡的问题,因此这些应用其实可以随时被替代。如果你觉得它不好,有一个更好的应用你觉得喜欢,就直接把旧的扔了,插一个新的应用就ok了,这种建设的应用天生就是互联互通的。 注:本文根据InterSystems中国技术总监乔鹏演讲整理而成。
公告
Claire Zheng · 十月 24, 2022

获奖名单公布!一起来关注InterSystems开发者社区中文版首届技术征文大赛

各位开发者社区的同学们,大家好! 我们的🏆InterSystems开发者社区中文版首届技术征文大赛🏆(←点击链接进入参赛页面,浏览所有参赛文章)已经结束,此次大赛收到了来自20名参赛者的30篇参赛文章,感谢大家的积极参与! 以下是获奖名单! 1. 专家提名奖:活动期间发布文章且成功参赛后,由InterSystems专家评选得出 🥇一等奖1名,Apple iPad @Zhe Wang 获奖作品:IRIS如何进行CRUD操作 🥈二等奖2名,Beats Fit Pro @姚 鑫 获奖作品:IRIS与Caché的23种设计模式 @聆严 周 获奖作品:使用Prometheus监控Cache集群 🥉三等奖3名,WD 固态硬盘 @John Pan 获奖作品:如何调用Ensemble/IRIS内置的HL7 V2 webservice - Java,PB9,Delphi7样例 @he hf 获奖作品:10分钟快速开发一个连接到InterSystems IRIS数据库的C#应用 @sun yao 获奖作品:前端操作自动生成BS、BP、BO 2. 开发者社区奖:活动期间发布文章且成功参赛后,由社区成员点赞评选得出,点赞前五名获得以下奖品 🥇第一名,HUAWEI WATCH 3智能手表 @Meng Cao 获奖作品:Caché数据库私有apache版本升级 🥈第二名,罗技(Logitech)ERGO键盘 @lizw lizw 获奖作品:关于%Dictionary.CompiledClass类在实际业务中的一些应用 🥉第三名-第五名,KEEP 运动智能手环 @Chang Liu 获奖作品:在国产系统上安装Healthconnect2021 @shaosheng shengshao 获奖作品:HEALTHSHARE2018版如何实现AES(CBC)的HEX输出,并可以实现加密和解密 @Guangliang Zhang 获奖作品:基于cconsole.log的cache数据库的实时监控 3. 入围奖:在征文大赛期间,所有在InterSystems开发者中文社区发布文章且成功参赛的其余用户都将获得特别奖励。 @water huang 获奖作品:对 %XML.PropertyParameters类的探索 @zhanglianzhu zhanglianzhu 获奖作品:Cache死循环检测和申明式事务 @li wang 获奖作品:HealthConnect访问HTTPS开头地址 @bai hongtao 获奖作品:第三方HA软件结合MIRROR使用方法探讨 @Liu Tangh 获奖作品:在Cache系统中使用负载均衡服务的探讨 @yaoguai wan 获奖作品:IRIS架构的浅显理解以及windows10、docker安装IRIS Health详解流程及部分问题浅析 @li dong 获奖作品:实现Cache/IRIS中zip文件的下载、解压及读取 @Yuxiang Niu 获奖作品:Cache中不同类型锁的理解与分析 @Vincent Wu 获奖作品:TrakCare Lab之延伸应用-护理站自动采检备管系统(NSAD)之开发 感谢大家的积极参与! 请获奖嘉宾及时通过此链接提交相关信息,以便我们及时与您联系奖品寄送事宜。
公告
Claire Zheng · 四月 22, 2021

InterSystems开发者工具编程大赛投票时间:为你心目中的最佳App投票吧!

亲爱的社区开发者们: 本周进入 InterSystems 开发者工具编程大赛 投票时间(4月19日-25日)! 来为你心目中基于InterSystems IRIS而构建的最佳方案投票吧! 🔥 投票入口: 点击投票 🔥 如何投票?有哪些最新信息值得了解一下? 所有的InterSystems员工均可为专家提名奖(Experts Nomination)或社区提名奖(Community Nomination)投票。 所有社区开发者都可以为自己提交的项目投票——投票将根据用户的Global Master级别自动计入专家提名奖(Experts Nomination)和社区提名奖(Community Nomination)。 根据目前的投票引擎和算法,您可以选择三个项目进行投票,选出您心目中的一、二、三名。以下是社区排行榜说明: 社区(Community)提名投票计分方式 如果您满足以下条件 提名 第一名 第二名 第三名 如果您在DC上发布过帖子,且在Open Exchange上传过App 9 6 3 如果您在社区发布过至少一篇帖子,或者在Open Exchange上传过至少一个App 6 4 2 如果您在社区进行过有效贡献(包括发表评论/提问等等) 3 2 1 专家(Experts)提名投票计分会有更复杂的数学计算,不同级别的专家有更多的“点数”权力: 专家(Experts)提名投票计分方式 级别 提名 第一名 第二名 第三名 Global Maters VIP级 & InterSystems产品经理 15 10 5 Global Master 大使级(Ambassador) 12 8 4 Global Master专家级(Expert)& 社区管理员/版主 9 6 3 Global Master专业级(Specialist) 6 4 2 Global Master初级倡导员(Advocate)& InterSystems员工 3 2 1 系统会根据您的级别,对社区(Community)提名和专家(Experts)提名分别自动计票。 请看投票演示(请注意您提名项目的分数变化): 为了顺利参加投票,您需要: 登录 Open Exchange – 利用开发者社区账号即可 确保您在开发者社区进行过有效贡献——回答问题、提问、发帖、在Open Exchange上传应用程序——然后您就可以进行投票了。 点击了解如何成为社区“活跃”用户 。 如果您改变了主意,可以取消并投票给其他您看中的应用——您有充分的时间选择(4月19日-25日)! 提醒:在投票期间,参赛者可以继续修复bug,提升应用,所以投票者不要错过最新发布的版本哦~ ➡️ 点击查看最新 InterSystems在线竞赛投票规则.
文章
Botai Zhang · 一月 26, 2021

利用Intersystems IRIS医疗版数据平台内置多模型整合医院信息查询业务解决方案

利用Intersystems IRIS医疗版数据平台内置多模型整合 医院信息查询业务解决方案 概述: 随着医院信息化建设的逐步完善,医院子系统越来越多,系统间接口越来越多,同时接口费用不断增加,管理工作变得越来越复杂。其中,查询类业务接口根据业务类型分化,数量也是逐步递增,带来接口量大、开发工作繁重、代码冗余、维护困难等等问题。针对这一困境,我们利用Intersystems IRIS数据平台内置多模型整合医院信息查询业务解决方案。该应用程序可通过内置模型应用完成查询业务,大大缩小开发、维护、实施等项目关键运转周期。 应用链接:HealthInfoQueryLayer 关键应用:IRIS for Health、REST API、ObjectScript、Globals 、SQL、DATA LOOKUP TABLES 应用程序采用模型及应用介绍: 1.采用模型 1.1. Globals (key-value) Globals是可以在IRIS数据库中存储和管理的稀疏多维数组。您可以使用ObjectScript和本机API处理Globals。 工具: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GGBL_MANAGING 应用: 应用程序根据Globals的键值对、访问速度快的特性。应用在本次程序的Rest分派类与BP流程管理中取值应用,解决了频繁取值速度慢、实现在查找表前端页面配置操作,如:存储了SQL模型、服务配置信息等等。 1.2. SQL访问 InterSystems IRIS通过 ObjectScript、REST API及JDBC提供对数据的SQL访问. 工具: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GSQL_smp 应用: 在查询业务中,三方系统不配合接口改造,导致接口实现困难问题。此时,我们采用IRIS内嵌模型ObjectScript、REST API及JDBC来实现对数据的SQL访问,来建立业务接口。 1.3. Object访问 通过ObjectScript、REST API,InterSystems IRIS提供了在Globals 存储和更改对象实例的途径。 文档: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=PAGE_multimodel_object 应用: 在整个交互过程中,直接操纵InterSystems IRIS对象。ObjectScript类定义通常用作创建对象(例如患者,科室或医护人员)的模板。 建立应用案例(此应用程序以患者为例) 2.1应用搭建: 2.1.2基本环境 IRIS版本信息:IRIS for Windows (x86-64) 2020.1 (Build 215U) Mon Mar 30 2020 20:14:33 EDT [HealthConnect:2.1.0] IRIS具有JAVA、JDBC环境 可采用PostMan进行测试 2.1.2安装步骤 ①建立Rest服务 新建Web应用程序→配置分派类→配置权限。 该步骤可见图片:应用程序运行情况/webaplication(Query).png及webaplication(role).png ②配置SQL-JDBC 建立SQL连接,连接测试数据库Mysql,导入测试jhip_patient_info.sql ③配置查找表 Global-^Ens.LookupTable中查找表文件导入 ④导入代码 导入ApplicationCode中的代码,编译,打开Production, 注意:修改BO配置信息(DNS)、配置JavaGateway等 2.2应用流程 2.3应用测试 可采用Postman工具(其他工具也可以)进行测试验证 Postman可导入Query.postman_collection.json,更改IP、端口号信息、URL进行测试。 2.4应用总结 本应用程序以查询患者为案例,采用IRIS中REST API、ObjectScript、Globals 、SQL内置多种模型实现医院信息查询业务。如果有需要可根据此方案丰富业务满足需求。 最后,如果您认可此解决方案,请在系统间多模型数据库竞赛中为该应用程序投票。 投票链接:投票链接 应用程序名称:HealthInfoQueryLayer 点击Vote投票即可。 感谢各位! 集成平台应用典型案例 感谢您的分享