文章 Michael Lei · 五月 26, 2022 1m read

Hi,大家好!

您曾经实施过DICOM集成吗?也许您已经百度了一些样例,甚至是模拟器。希望本文的例子能给您带来帮助。

DICOM 是一个广泛用于医疗诊断影像的消息标准。您可以使用IRIS For Health或者Health Connect在互操作性Production中使用DICOM标准,在这里您可以找到文档.

在很多情况下,当您开发一个DICOM集成时,您可以运行一个模拟器来扮演一些外部系统(如PACS),可以在连接到一个真正的系统之前充分测试您想要实现的流程,这一点真的很有用。

在这里您可以找到一个使用IRIS For Health的DICOM整合例子,还有一个叫做dcm4che的模拟器

在这个例子里, 实现了两个不同的场景:

接收嵌入PDF的DICOM消息

从PACS中查询或抽取 DICOM 影像

查询流程:

检索流程:

欢迎多提宝贵意见,谢谢!:)

0
0 135
文章 Michael Lei · 五月 23, 2022 1m read

大家是不是经常遇到以下情况:

  • 系统有 bug 但是无法在本地复现
  • 你需要在受影响的实例中运行几行代码
  • 能完整访问系统管理门户,但是没有终端或者管理控制台, 也不能访问 Studio, Atelier 或者 VSCode
  • 你要怎么运行你的几行代码来测试???
0
0 166
文章 Michael Lei · 五月 20, 2022 29m read

本文向你推荐一些使用IRIS创建REST API应用程序的模式。

注:所有源代码在https://github.com/yurimarx/movie

类模式到REST应用

首先,请看我对创建IRIS API应用程序所需类的建议:

  • IRISRESTApplication: CSP.REST 类会作为中央控制者来控制业务服务处理的所有REST请求和响应.
  • BusinessService: 具有业务主题的类实现。它可以使用一个或多个持久化域类来持久化和查询业务主题要求的数据。
  • Persistent Domain: 管理SQL表的持久化类.

环境准备

  • VSCode;
  • Docker Desktop;
  • InterSystems ObjectScript Extension Pack.

示例应用的类图

我将创建一个电影目录应用程序来演示文章中建议的模式:

Note: 感谢IRIS API 模版应用 https://openexchange.intersystems.com/package/iris-rest-api-template . 这是本教程的基础.

搭建样本应用

1. 在你的文件系统中创建一个movie文件夹。在一个新的VSCode窗口中打开这个文件夹。

2. 在movie 文件夹中创建 Dockerfile 文件来在Docker container实例中运行IRIS社区版. 内容:

0
0 232
公告 Michael Lei · 五月 18, 2022

所有人现在可以在 https://evaluation.intersystems.com下载IRIS和IRIS for Health社区和企业版 。

客户以及潜在客户都可以尝试我们最新最强的功能,包括一些还没有发布的新特性。

如何访问:

对于潜在客户,只要选择名称中带有"(预览)"的选项,就可以下载预览软件。

对于客户和InterSystems员工--只需拨动预览复选框,这将包括可用版本菜单下拉中的预览软件:

更多资源:

https://community.intersystems.com/post/introducing-evaluation-service-community-edition-downloads  

https://community.intersystems.com/post/intersystems-evaluation-service
 

有任何问题欢迎拨打 4006019890 或咨询您的ISC客户经理。

0
0 282
文章 Michael Lei · 五月 17, 2022 3m read

在这篇文章中,我们将使用docker和 参数配置文件模版 这一新特性来运行IRIS集群且轻松配置好。

在 UNIX® 和 Linux 上,您可以使用声明式参数配置合并文件来修改默认的 iris.cpf。合并文件是一个部分 CPF,在实例启动时为任何数量的参数设置所需的值。CPF 合并操作对每个实例只起一次作用。

我们的集群架构非常简单,它将由一个主节点(Node1)和两个数据节点(检查所有可用角色)组成。不幸的是,docker-compose不能部署到几个服务器上(尽管它可以部署到远程主机上),所以这对本地开发分片的数据模型、测试等很有用。如果是生产的InterSystems IRIS集群部署,你应该使用ICM云管理器IKO K8S调度器

0
0 107
文章 Michael Lei · 五月 15, 2022 1m read

Hi, 社区!

想和大家分享一下俄罗斯论坛上的一个Debug方法。

假设我想对应用程序进行Debug,我想让它在某一行停止执行。

在代码中加入这一行:

l +d,-d

当我想在这一行中开始调试时,我在终端中屏蔽了d

USER> l +d

执行该应用程序。

应用程序在这一行停止,让我用Studio调试器连接到它。

为了释放锁,我在终端做了以下工作

USER> l -d

还有其他好的Debug 建议吗?

0
0 97
文章 Michael Lei · 五月 15, 2022 7m read

InterSystems IRIS对加密、解密和哈希操作有很好的支持。在%SYSTEM.Encryption(https://docs.intersystems.com/iris20212/csp/documatic/%25CSP.Documatic…)类中,有市场上主要算法的类方法。


IRIS算法和加密/解密类型

正如你所看到的,这些操作是基于密钥的,包括3个类:

  • 对称密钥: 进行加密和解密操作的部分共享同一个秘密密钥。
  • 非对称密钥: 进行加密和解密操作的部分共享相同的秘密密钥进行加密。然而,对于解密,每个部分都有一个私人密钥。这个密钥不能与其他人共享,因为它是一个身份证明。
  • 哈希: 当你不需要解密,而只需要加密时使用。当涉及到存储用户密码时,这是一种常见的方法。

对称和非对称加密的区别

  • 对称加密使用一个单一的密钥,需要在需要接收信息的人之间共享,而非对称加密在通信时使用一对公共密钥和一个私人密钥来加密和解密信息。
  • 对称加密是比较老的技术,而非对称加密则相对较新。
  • 非对称加密的出现是为了补充对称加密模式中需要共享密钥的固有问题,通过使用一对公共-私有密钥来消除共享密钥的需要。
  • 非对称加密比对称加密花费的时间相对较多。
0
0 430
文章 Michael Lei · 五月 15, 2022 1m read

有一个简单的新方法可以在Windows和Mac上的InterSystems IRIS 2019.1(和2018.1.2)的SSL/TLS配置中添加证书授权(CA)证书。  你可以通过输入以下内容要求IRIS使用操作系统的证书存储。

%OSCertificateStore

在 "包含受信任证书颁发机构X.509证书的文件 "栏中输入:%OSCertificateStore。   这里有一张如何在门户中这样做的图片:

这里有一个描述这个问题的文档链接。  它在 "包含受信任的证书颁发机构证书的文件 "的选项列表中。

这就是你需要做的所有事情!  现在,这个配置将接受由操作系统证书库中列出的任何CA颁发的证书。

0
0 206
公告 Michael Lei · 五月 11, 2022

InterSystems Kubernetes Operation(IKO)3.3版现已通过WRC下载页面和InterSystems容器注册中心提供。
IKO通过提供一个易于使用的irisCluster资源定义,简化了在Kubernetes中使用InterSystems IRIS或InterSystems IRIS for Health的工作。完整的功能清单见IKO文档,包括轻松的分片、镜像和ECP的配置。

IKO 3.3 亮点:

  • 支持InterSystems IRIS和InterSystems IRIS for Health 2021.2 以及 2022.1版本
  • 支持 Kuberentes 1.21
  • 将常见的系统警报和监控(SAM)配置作为irisCluster的一部分进行部署
  • InterSystems API Manager(IAM)现在也可以作为 irisCluster的一部分进行部署和管理
  • 自动标记Mirror对的活跃端,因此服务可以始终指向激活的镜像成员
0
0 96
问题 Michael Lei · 五月 8, 2022

大家好!

我正在创建一个脚本,从Ensemble Production中删除一个项目(Component),我知道有手动的方法,但由于有几个Component,我想用一个脚本来更快。

我试着用%Delete()并在Ens.Config.Item上做选择,但这最终在生产中产生了几个错误。有谁知道我怎样才能简单地做到这一点?

答案参见:https://community.intersystems.com/post/delete-item-production

1
0 117
公告 Michael Lei · 五月 3, 2022

nterSystems很高兴地宣布发布系统警报和监控(SAM)1.1版。

什么是SAM ?

SAM将IRIS基于标准的监控API日志监控与熟悉的行业标准工具如Grafana和Prometheus结合起来,为IRIS集群创建一个基本的监控和告警解决方案。

关于SAM的更多信息,请参阅《系统告警和监控指南》

SAM 1.1有什么新的内容?

你会注意到Grafana仪表盘图形的性能改进,特别是在处理大型数据集时。  如果你从SAM 1.0升级,你要确保你有足够的磁盘空间,因为SAM 1.1增加了额外的数据索引。

有关升级到SAM 1.1的更多信息,请参见发行说明

SAM 主页

SAM 实例详细页面

0
0 249
文章 Michael Lei · 五月 3, 2022 6m read

Hi 社区,

想象一下,使您的应用程序能够阅读文本?现在有了IRIS的新功能--嵌入式Python,这就成为可能。有了这个新功能,IRIS可以原生地运行任何开源或商业的Python库。gTTS(https://pypi.org/project/gTTS/)是一个免费的库,使用谷歌翻译服务将文本转换成音频。

怎么做

只要通过参数传递文本,gTTS就会返回一个将文本转换为音频的MP3文件。也就是说,你的应用程序可以播放任何文本的音频! 请看如何做到这一点。

1. 进入https://openexchange.intersystems.com/package/IRIS-Text2Audio,点击下载按钮。

2. 克隆/git pull repo到任何本地目录中

$ git clone https://github.com/yurimarx/iris-tts.git

3. 在这个目录中打开一个Docker终端,运行:

$ docker-compose build

4. 运行IRIS container:

$ docker-compose up -d 

5. 到Postman (或其他类似的 REST 客户端) 来配置请求,如图所示:

0
0 172
文章 Michael Lei · 五月 3, 2022 6m read

所有源代码均在: https://github.com/antonum/ha-iris-k8s 

在上一篇文章中,我们讨论了如何在k8s集群上建立具有高可用性的IRIS,基于分布式存储,而不是传统的镜像。作为一个例子,那篇文章使用了Azure AKS集群。在这一篇中,我们将继续探讨k8s上的高可用配置。这一次,基于Amazon EKS(AWS管理的Kubernetes服务),并将包括一个基于Kubernetes 快照进行数据库备份和恢复的选项。

安装

开始干活. 首先需要一个AWS账户,安装 AWS CLI,kubectl 和 eksctl 工具. 要创建新的集群,请运行以下命令:

eksctl create cluster \
--name my-cluster \
--node-type m5.2xlarge \
--nodes 3 \
--node-volume-size 500 \
--region us-east-1

这个命令需要大约15分钟,部署EKS集群并使其成为你的kubectl工具的默认集群。你可以通过运行以下代码来验证你的部署:

0
0 501
公告 Michael Lei · 五月 2, 2022

本月我们正式发布VS Code ObjectScript扩展的1.8.0版本,它包含以下增强功能和错误修复。

最大的更新是支持服务器端的项目文件,因为很多人会记得Studio。如果你在客户端工作,VS Code已经有很好的项目管理功能。你可以简单地使用一个文件夹作为一个项目,或者使用多个根目录的工作空间。但是如果你在服务器端工作,你可能会喜欢一些更好的工具管理能力,这就是这个功能的意义所在。更多内容,欢迎查阅文档的新项目章节

1.8.0版本的更新日志

  • 增强功能
    • 增加对服务器端项目的支持 (#851)
    • 实现isfs文件夹的重命名和删除 (#923, #922)
    • 支持isfs和导出过滤器的 "映射 "标志,以过滤从其他数据库映射的软件包(#931)

完整的更新日志在这里

如果您已经安装了ObjectScript扩展,VS Code会自动更新。如果您是一个新用户,请从这里开始。 

0
0 119
文章 Michael Lei · 五月 1, 2022 4m read

临床研究必须与健康数据相连

就在不久以前,临床科研人员还需要依靠三联的纸质NCR表格,手工收集从堆积如山的手写电子病历中提炼出来的病人数据。从又大又重的《医师案头参考》(PDR)撕下几页,通过传真机发送给FDA,用于药物安全报告。业内专业人士接受了大量的培训,以确保数据经过源文件验证、双键处理,并在经过看似无休止的查询以纠正错误之后,保证其符合目的。

值得庆幸的是,随着电子健康档案的广泛采用,健康数据的数字化,这一过程得到了极大的改善。但是,鉴于临床研究进展缓慢,特别是精美的Excel表格仍由人工数据摘要完成,该领域早该有更多的技术变革,特别是围绕释放医疗互操作性的全部好处。如果我们能做到这一点,生命科学公司将有机会利用宝贵的健康数据来确保病人的安全,优化新药的疗效,并使临床开发过程更加高效,减少错误。

我们可能会比你想象的更快地将临床研究与健康数据联系起来。为什么?火神计划(Project Vulcan)正在进行中。这个项目组是最近在HL7的FHIR加速器项目中创建的,它已经召集了来自医疗、技术和生命科学领域的30多个利益相关的组织个和机构,利用FHIR这个医疗专用互操作性标准来进行临床和转化研究。自从我们在去年年初加入后,我们高兴的看到火神计划成员制定的早期想法越来越接近于功能现实。

0
0 120
问题 Michael Lei · 五月 1, 2022

Hi,

我无法连接到本地网络浏览器.

我想打开(http://localhost:57772/csp/sys/UtilHome.csp) 现实:

Caché Server Pages Version 2018.1.6.717.0
Server Availability Error

Server is currently unavailable

如果我调用 CSP.log 得到以下报错:

Access Denied
    Diagnostic
    Failed to connect to 'LOCAL' - Reason: 0 (Connection successfully made but server not responding) (No Retry)

请帮帮我,谢谢!

1
0 149
公告 Michael Lei · 四月 29, 2022

年度InterSystems IRIS开发者大赛来了,我们特别兴奋能够邀请大家参加我们今年的年度大奖赛,利用InterSystems IRIS数据平台创建开源解决方案!

🏆 InterSystems2022年度编程大奖赛 🏆

时间: 2021年5月9日 - 6月5日(美东时间)

总奖金超过$22,000美金,比去年提高37%!!! 

0
0 161
问题 Michael Lei · 四月 29, 2022

我想知道是否有更好的方法来使用动态SQL对数据集进行分页,而不是我下面使用的方法。问题是,当潜在的数据池变大时,这段代码就会变慢,以至于无法使用。在分析下面的每一行代码时,似乎速度变慢与最初的rset.%Next()迭代有关。 有没有什么不需要子查询/%VID的可用方法,比如简单的LIMIT/OFFSET?

我的代码类似于:

s sql=##class(%SQL.Statement).%New()

s query="SELECT *,%VID FROM (SELECT prop FROM table WHERE prop=x) WHERE %VID BETWEEN 1 AND 100"             

s sc=sql.%Prepare(query)

s rset=sql.%Execute()

while rset.%Next() {.....

1
1 459
公告 Michael Lei · 四月 29, 2022

我们很高兴向您介绍我们新的反馈门户网站--InterSystems Ideas!

我们的目标是改善我们的反馈机制,使您可以建议我们的产品如何发展以满足您的业务挑战。在开发者社区提问是与您的同行就特定的代码问题进行互动的好方法,而我们的客户支持网站WRC则一如既往地是解决实时问题的方法。

这个新的门户是为了获得您更高层次的想法。不是关于今天如何,更多是关于未来,您想看到我们的产品在未来如何更好地工作。您可以发布您自己的反馈,也可以对其他人提供的反馈进行评论/投票。InterSystems将查看你提交的任何反馈,直接回应你的反馈,并且如果您的建议有了任何进展,我们将及时更新状态。

所以,欢迎提出您的想法,为了我们共同的未来!谢谢!

0
0 67
问题 Michael Lei · 四月 27, 2022

Hi, 请问如何更改表(有数据)上的主键?谢谢!

答:

如果数据已经存在,那么这是一项必须重视的任务,特别是如果存在继承或父/子关系,因为这将导致你的数据存储方案的改变。

最简单的方法是通过一个中间(临时)表来实现。

创建一个具有相同结构的新类,但有一个新的主键。
使用SQL(不是合并命令)将数据从旧的类中移到它里面。
删除旧类中的数据/索引,然后改变其中的主键。
使用合并命令,将数据从新类移到旧类中。
删除带有数据的新类。
重建索引(如果有的话)。

几个有用的链接:
        MERGE

        持久性对象和InterSystems IRIS SQL

        持久性对象的介绍

如果仍然有问题,最好向WRC寻求帮助。

1
0 147
文章 Michael Lei · 四月 25, 2022 2m read

Kong提供了一个开源的配置管理工具(用Go语言编写),称为decK(代表声明式Kong)

  • 通过deck ping检查deck是否能识别你的Kong Gateway安装
deck ping   
Successfully connected to Kong!
Kong version:  2.3.3.2-enterprise-edition
  • 通过deck dump把 Kong Gateway配置倒出到 "kong.yaml" 文件 
deck dump
  • 修改 kong.yaml以后通过deck diff 通过把区别显示出来
0
0 335
文章 Michael Lei · 四月 25, 2022 4m read

在一次重大的版本升级中,建议重新编译你所有命名空间的类和例程。 (主要版本的安装后任务).

do $system.OBJ.CompileAllNamespaces("u")
do ##Class(%Routine).CompileAllNamespaces()

为了自动完成这项管理任务并记录任何错误,下面是一个导入并编译到USER命名空间的类的例子,你可以在每次升级后使用它 : admin.utils.cls

0
0 111
文章 Michael Lei · 四月 24, 2022 4m read

在HIMSS 2022的一次讨论中,小组成员讨论了长期执行登陆火星任务的健康挑战,以及新的交互如何保证宇航员的安全。

将人类送上火星的任务是一项艰巨的任务。但是在这些开创性的旅程中,对宇航员健康主要风险相关的关注却小得令人吃惊。

"你会认为太空飞行真的很复杂,但我们把它归结为五个方面,"美国宇航局总部NASA的首席科学家和科技利用经理朱莉-罗宾逊在HIMSS22的一个小组讨论会上说。

"而且我们在地球上以及在当前和计划中的太空任务中模拟了未来的火星任务。我们利用我们所做的每一次任务来推进我们对如何在未来任务中保持船员安全和健康的理解。" 

载人航天飞行期间的这五个主要危险包括:辐射;隔离和禁闭,如长期与相同的人困在一个狭小的空间里的行为和社会心理影响;远离地球,因为你不能离开或迅速与家乡的其他人沟通;失重;以及不友好和封闭的环境,因为宇航员不断重复使用水和重新呼吸相同的空气。

但是美国宇航局可以在地球上和国际空间站上模拟其中一些健康风险,为前往火星的长期任务做准备。这也是将人类送回月球的Artemis计划的一个目标。

Artemis计划将对这些重力、辐射、环境和隔离风险提供一个更好的模拟。当然,月球比火星离家近得多,通信延迟将短得多。

"如果在去火星的路上真的出了问题,船员还是会去火星。”罗宾逊说:"不管是死是活,船员都会去火星,因为物理学定律不会让你更快地回来。

0
0 105
文章 Michael Lei · 四月 24, 2022 7m read

基于Docker的Apache Web Gateway

Hi 社区

在本文中,我们将基于Docker程序化地配置一个Apache Web Gateway,使用。:

  • HTTPS protocol.
  • TLS\SSL to secure the communication between the Web Gateway and the IRIS instance.

我们将使用两个镜像:一个用于Web网关,第二个用于IRIS实例。

所有必需的文件都在这 GitHub repository.

我们从git clone开始:

git clone https://github.com/lscalese/docker-webgateway-sample.git
cd docker-webgateway-sample

准备系统

为了避免权限方面的问题,你的系统需要一个用户和一个组:

  • www-data
  • irisowner

需要与容器共享证书文件。 如果你的系统中不存在这些文件,只需执行:

sudo useradd --uid 51773 --user-group irisowner
sudo groupmod --gid 51773 irisowner
sudo useradd –user-group www-data

生成证书

在这个示例中,我们使用以下三个证书:

0
0 255
文章 Michael Lei · 四月 20, 2022 1m read

附件中的压缩文件包含了一些我多年来所做的Cache SQL Storage映射的例子。

如果你有现有的globals,并且想通过Objects或SQL暴露它们,你需要设置Cache SQL Storage映射。  如果你没有看到对你的情况有帮助的例子,请给我发一个例子,我可以帮你解决。

下载附件:https://community.intersystems.com/sites/default/files/post-associated-…

0
0 115
文章 Michael Lei · 四月 19, 2022 13m read

有很多方法可以使用Intersystems生成excel文件,其中一些是ZEN报告、IRIS报告(Logi报告或正式称为JReports),或者我们可以使用第三方Java库,可能性几乎是无限的。

但是,如果你想只用Caché ObjectScript创建一个简单的电子表格呢?(没有第三方应用程序)

在我的案例中,我需要生成包含大量原始数据的报告(财务人员喜欢这些数据),但是我的ZEN/IRIS失败了,给了我一个我想称之为 "零字节的文件",基本上说java的内存用完了,并导致报告服务器上的重载。

这可以用Office Open XML(OOXML)来完成。Office Open XML格式是由一个ZIP包内的一些XML文件组成的。因此,基本上我们需要生成这些XML文件,并将其压缩重命名为.xslx。就这么简单。

这些文件遵循一套简单的惯例,称为开放包装惯例。你需要声明各部分的内容类型,以及告诉消费应用程序应该从哪里开始。

为了创建一个简单的电子表格,我们至少需要5个文件。

  • workbook.xml
  • worksheet.xml
  • [Content_Types].xml
  • styles.xml
  • _rels
    • .rels
    • workbook.xml.rels
0
0 157