文章
· 十月 9, 2023 阅读大约需 4 分钟
FHIR与微服务架构

市场上有太多的技术体系和应用开发架构,C/S、三层架构、面向服务架构… 以三层架构为例,展现层可能是网页或Java/.net客户端、应用层可能是java、.net、Python,数据层可能是SQL、NoSQL、NewSQL。但大多建立的是单体架构应用 – 为特定业务目标从底层数据模型到业务逻辑再到用户界面的一体化设计,也就是孤岛型应用。

单体架构应用最大问题是没有哪一部分是以复用为主要目的设计和建设的,而且和其开发技术体系绑定:

2 0
0 137
InterSystems 开发者社区汇聚了 17,972 位出色的开发者
InterSystems IRIS 程序员可以在这里学习、分享、了解最新动态、成长,以及收获快乐!
文章
· 七月 12, 2023 阅读大约需 4 分钟
当 GPT 与 FHIR 碰撞出火花:利用Open API 的规范力量

FHIR 通过提供标准化数据模型来构建医疗保健应用程序并促进不同医疗保健系统之间的数据交换,彻底改变了医疗保健行业。由于 FHIR 标准基于现代 API 驱动的方法,因此移动和 Web 开发人员更容易使用它。然而,与 FHIR API 交互仍然具有挑战性,尤其是在使用自然语言查询数据时。

1 0
0 137
文章
· 五月 9, 2023 阅读大约需 5 分钟
接收从 PACS 到 IRIS for Health 的 DICOM 消息

在上一篇文章中,我们看到了如何捕获位于我们服务器上一个文件夹中的DICOM类型的文件,以及如何将它们发送到PACS软件(在我们的案例中是ORTHANC开源解决方案)进行存储和咨询。那么,在这篇文章中,我们要处理的是相反的动作。

在我们的例子中,我们将配置我们的IRIS for Health Prodcution,以接收从我们的PACS通过TCP/IP发送的图像。要做到这一点,我们必须包括一个标准EnsLib.DICOM.Service.TCP类的业务服务,它将允许我们配置接收端。让我们来看看这个配置:

如您所见,我们已经声明了将监听的端口,通过该端口将接收从 PACS 发送的图像。我们还配置了本地 AET (Application Entity Title,应用实体名称)(IRIS) 和将向我们发送 DICOM (ORTHANC) 的 PACS,请记住这些字段是强制性的,并且将用于检查发送和接收 DICOM 消息的有效性。不要忘记必须从 DICOM 设置菜单配置和关联两个 AET:

1 1
0 137

大家好!

终于到了宣布获奖名单的时间!

🏆InterSystems开发者社区中文版第二届技术征文大赛🏆(点击链接进入参赛页面,浏览所有参赛文章)已经结束,此次大赛收到了来自8名参赛者的12篇参赛文章,最终进入评选的文章为10篇,感谢大家的积极参与!

以下是获奖名单!

专家提名奖:活动期间发布文章且成功参赛后,由InterSystems专家评选得出

0 0
0 129
文章
· 六月 19, 2023 阅读大约需 5 分钟
IRIS通过SNMP发送警告通知的操作

上篇文章IRIS, Caché监控指导 - 警告和告警 发出后收到要求介绍一下发送SNMP通知的具体操作,这里介绍一下。

我省去了SNMP的原理,这个有需要的可以网上查找。这里只做一个配置的操作:测试怎么从一个Windows上安装的IRIS实例发送IRIS Alert给另一台Linux服务器。

第一步: 配置 Windows SNMP

因为安全原因,Windows 10不再默认安装中启动SNMP,用户需要手工安装SNMP启动服务。以下两个文章是古老的Window 2003和新的Windows 10中配置SNMP的安装,给各位做个参考。

2 0
1 128

嗨社区!

想与您分享我在Telegram中使用GPT创建“我自己的”聊天的练习

这个应用需要用到 Open Exchange 上的两个组件:@Nikolay SolovyevTelegram Adapter@Kurro LopezIRIS Open-AI

因此,通过此示例,您可以在 Telegram 中使用 ChatGPT 设置自己的聊天。

让我们看看如何让它发挥作用!

1 0
0 127
文章
· 十月 23, 2023 阅读大约需 12 分钟
FHIR Profile - FHIR扩展与再约束

FHIR标准提供灵活的扩展与再约束机制 - Profile。到底Profile机制如何工作?什么样的扩展需要用到Profile?怎么建立Profile?


FHIR核心资源模型 - FHIR Core

FHIR发布的资源模型是按80/20原则设计的 - 最常用那80%的用例中需要的数据会被涵盖在FHIR核心资源模型中,这些数据需求可能只是所有用例需要数据的20%;通过对核心资源的扩展和再约束,可以让它们适用于不常见的20%用例和未被涵盖的80%的数据需求。

FHIR发布的资源模型是FHIR核心资源模型(FHIR Core),它们有如下特点:

1. 对象模型 - 有继承关系。所有资源都继承自DomainResource

2. 为了保证最大的适用度,资源中的绝大多数属性的最小基数都是0,意味着它们都可以为空

3. 资源的属性可以通过code(值集)、coding、CodeableConcept(术语)进行取值范围约束

4. 为了防止医疗错误,所有的属性都没有且不能有默认值

当需要对核心资源模型进行扩展和再约束时,FHIR提供了profile机制对所做的扩展和再约束进行画像(描述),这就是profile的意思。

1 0
0 127

vscode通过插件:intersystems Server Manager 连接测试开发环境,配置连接后无法使用

配置参数:

"intersystems.servers": {

"local": {

"webServer": {

"scheme": "http",

"host": "127.0.0.1",

"port": 52773

},

"test": {

"webServer": {

"scheme": "https",

"host": "xxx.xxx.xxx.xxx",

"port": 2443

},

"description": "test",

0 1
0 125
文章
· 十一月 12, 2023 阅读大约需 3 分钟
关于Cache中查看关键锁的几种方式

在日常Cache运维过程中可能会由于数据或者程序等原因造成锁的异常增长,导致数据库性能受到影响会出现程序报错或卡顿无法正常运行的问题。遇到此类问题需查看数据库当前锁列表情况,找到出现次数最多关键锁,根据关键锁对应的进程来判断处理。总结有以下三种方式查看关键锁。

10 2
0 123
文章
· 七月 7, 2023 阅读大约需 2 分钟
FAQ常见问题系列 - Production基础问题
  1. 主机和备机为什么总是切换,会不会是与仲裁机连接的心跳检测出问题了
    • 查看镜像状态 打开管理门户 - ‘系统操作’ - ‘镜像监视器’
    • 如遇到主备切换,可以通过消息日志查看切换原因 打开管理门户 - ‘系统操作’ - ‘系统日志’ - ‘消息日志’
  2. 基础问题怎么查询
    • 通过管理门户查看日志 打开管理门户 - ‘系统操作’ - ‘系统日志’ - ‘消息日志’
    • 通过监控告警日志 告警日志文件:<intall-dir>/mgr/alerts.log文件
1 0
0 121
文章
· 六月 12, 2023 阅读大约需 2 分钟
使用 Synthea 生成 FHIR 测试数据

文章相关视频参见Synthea生成FHIR测试数据,以及FHIR服务器加载FHIR资源文件

1. 什么是Synthea

Synthea是一个开源软件包,可以模拟生成患者就诊数据。他的github地址在这里

生成的就诊模版从最初的模拟美国前十种常见病、前十种慢性病到现今超过90种不同的模型。详细模型参见这里

基于当前版本,Synthea的特性包括:

2 0
1 117
文章
· 十一月 16, 2023 阅读大约需 17 分钟
浅谈一下个人基于IRIS后端业务开发框架的理解

浅谈一下个人基于IRIS后端业务开发框架的理解

现状

由于国内使用基于M语言IRIS平台几乎都在医疗行业。医疗系统又非常的庞大和复杂。前期由于快速占领市场,系统数量越来越多,到了临界点后就产生了质变,所以前期基于功能的线性开发注重效率,所以导致大量的产品业务代码有如下集中情况:
- 系统交互乱如麻,各系统的交互关系变成了网状。
- 系统规模庞大,内部耦合严重,牵一发而动全身,后续修改和扩展困难,开发效率低。
- 关键功能逻辑复杂,容易出现问题,出现问题后很难排查和修复,开发成本高。
- 功能越来越多,导致系统复杂度指数级上升。

- 重复造轮子,相似的功能不断重复开发。

image

如上图所示,这仅仅是展示了五个模块之前的交互,在此基础上继续增加模块则复杂度成指数级上升,并且如果每个模块之间如果没有做好接口管理,维护起来也是地狱级别。

8 1
0 115
文章
· 九月 21, 2023 阅读大约需 4 分钟
通过自定义数据类型实现参数统一验证优化重构代码

前言

对于第三方接口进行交互的时候,往往需要大量的进行参数合法性校验。以前的方法就是对每个参数进行验证。如下截图:
image

上图的会存在大量的if else if else..,如果字段很多,那导致一个方法存在大量的验证的代码,那我们考虑是否可以进行统一的验证参数的合法性。

思路

平时建立类的时候我们可以写参数MAXLEN=100,TRUNCATE=1 是否截取等,那找找这些参数的定义地方。如截图:


那我们想要定义自己的参数,该如何定义呢?根据面向对象设计原则之一:

13 1
1 112

将 FHIR 文档(例如患者信息表、出院摘要)发布到 FHIR 存储库时:

EndPoint端点/Bundle捆绑

您可以使用上述 URL 进行 POST。 (以下示例使用 IRIS for Health 提供的 FHIR 存储库。)

我将检查 GET 请求。

我能够确认我能够注册。

对于在FHIR repository注册的FHIR文档,如果能通过指定文档编号来GET会很方便,由于支持,无法对指定Composition.identifier的Bundle资源进行GET请求。

1 0
1 111
文章
· 九月 5, 2023 阅读大约需 11 分钟
HTTP请求监控响应时间

嗨,开发者们!

今天我想谈谈一个让我感到困难的话题。我相信你们中的很多人一定已经遇到过这种情况(所谓的“瓶颈”)。由于这是一个广泛的主题,因此本文将仅重点关注识别可能导致缓慢问题的传入 HTTP 请求。我还将向您提供我开发的一个小工具来帮助识别它们。

我们的软件变得越来越复杂,处理来自不同来源的大量请求,无论是前端还是第三方后端应用程序。为了确保最佳性能,必须有一个能够记录一些关键测量的日志系统,例如响应时间、global引用的数量以及每个 HTTP 响应执行的代码行数。作为工作的一部分,我参与了 EMR 软件的开发以及事件分析。由于用户负载主要来自 HTTP 请求(REST API 或 CSP 应用程序),因此在发生普遍缓慢问题时进行此类测量的需求变得显而易见。

0 0
0 108
文章
· 十月 6, 2023 阅读大约需 3 分钟
进程表

iris 是数据平台,更是一种数据库。对于熟悉SQL语句的人来说,会认为“既然是数据库,数据应该就能使用sql语句来查询”。这是对的,但是因为有global这个概念,保存的数据可能在global里面,而没有对应的表,也可能保存在类的参数定义里面。这些数据,不能使用sql直接查询。要查询iris数据库的数据,通常有几种方式:1.直接查询表的数据。2.查询视图。3.调用存储过程(call 命令)。其中要查询“只存于global里面或者类参数里定义的数据”,只有使用存储过程。但是存储过程有个问题,就是程序如果迁移到低版本的cache数据库后,数据类型的定义会有问题,且不再支持使用select的方式,只能使用call。这对于第三方熟悉sql的人员来说很不友好。因此结合global和表的关系,介绍一种我称为“进程表”的表。进程表,指数据只存于该进程中,global的样式为"^||global名“。通常按照默认存储新加一个持久类(对应会生成一个表),然后手动的把global改成进程global,也就是加上”||“。然后写个方法,把需要查询出来的数据写入进程global。这样就能查询出来 了。调用形式为 SELECT * FROM People WHERE People_GLB()=1。

示例如下:

10 2
0 107
文章
· 七月 5, 2023 阅读大约需 2 分钟
平台服务器入场配置预测应用

预测平台入场服务器配置

平台服务器入场配置预测应用,以java连接iris并使用其IntegratedML技术完成对医院门诊量,服务数,消息数,消息保存时间等数据分析,可以在医院集成平台入场前,对医院入场平台所需的服务器配置进行预测,为客户提供便利。

2 6
0 106

Hi 开发者们,

我们非常高兴地邀请大家参加新的 InterSystems 在线编程竞赛,此次编程大赛关注于“FHIR与数字医疗互操作性”这个主题。

🏆 InterSystems编程大赛:FHIR 与数字医疗互操作性🏆

时间: 2024年1月15日至2月5日(美国东部时间)

奖金池: 14,000 美元

1 1
0 105
问题
· 八月 30, 2023
Caché 2016.1 CDC

参考 https://blog.csdn.net/InterSystems/article/details/115350635 搭建 mirror ,获取数据变更,示例给出了获取数据变更的代码:

Class ZCustom.MirrorDejournal Extends SYS.MirrorDejournal
{
Method RunFilter(
MirrorDBName As %String,
GlobalReference As %String,
RecordType As %String,
Address As %Integer) As %Integer
{
Set ^CDCLog( $I($^CDCLog))=$lb(MirrorDBName,GlobalReference,RecordType,Address)
Quit 1
}

0 1
0 105
文章
· 五月 23, 2023 阅读大约需 1 分钟
【视频】医疗信息系统如何获得真正的互操作性?

实现医疗系统之间的互操作性是一项艰巨的挑战。随着FHIR日渐普及,对FHIR标准的兼容如今已成为许多国家医疗信息系统的全国性强制性要求。FHIR标准最有价值的一方面就是所有内容可被机器读取,使得FHIR应用跨机构使用成为可能,帮助您距离“语义互操作性”更近一步。

0 0
0 103