文章
· 十月 8 阅读大约需 5 分钟
FHIR Object Model 简介

挑战

在使用FHIR进行开发的过程中,我们会面对海量的FHIR规范中定义的数据结构,具体来说在FHIR规范中定义了超过150个资源、700多个资源内元素。每个定义里都包括了对自身结构的描述以及数据约束、数据绑定值集等。对于一个开发人员要记住这些内容非常困难。

同时FHIR数据,特别是Json格式的FHIR数据是典型的“有向图”结构,它的资源中嵌套元素定义、集合以及复杂的资源间“关系”,在这些复杂结构的数据间导航并操作,非常困难。

解决方案

在InterSystems IRIS for Health 2024.1之前,我们会将FHIR数据以Json文档的方式载入 %DynamicAbstractObject,例如下面的代码

2 0
0 35
文章
· 九月 2 阅读大约需 2 分钟
如何定位临时global在IRISTEMP数据库中占用的空间

当进程中的数据不需要持久化保存,但又需要用到global的高性能特性时,我们常常将数据保存在临时global中,也就是保存在IRISTEMP/CACHETEMP数据库中。

系统使用 IRISTEMP/CACHETEMP 数据库保存临时的数据,用户也可以进行同样的操作。

关于临时global以及IRISTEMP数据库的更多内容,可以参见文档 Temporary Globals and the IRISTEMP Database

以下情况global作为临时使用:

1 0
0 23

在使用 InterSystems ObjectScript 进行编程时,当你定义了属性property、查询query或者索引index,系统会在编译的过程中自动创建与之相关的一些方法,这篇文章对这些方法做了些总结:

属性Properties

1. 假设你定义了一个属性 Property, 下面的方法会被自动创建

ClassMethod PropertyGetStored(id)

对于数据类型属性,这个函数将返回其逻辑值,对于对象属性,返回id。这是一个对类global数据的封装,也是获取单例属性值(singular property value)最快的方法。此方法仅适用于已持久化存储的属性。

0 0
0 29
文章
· 七月 1 阅读大约需 2 分钟
新数据类型 VECTOR 的限制

在 OEX 最近一次编程竞赛之后,我有一些令人惊讶的发现。
几乎所有的应用程序都是基于人工智能与预制 Python 模块的结合。
但深入研究后发现,所有示例都使用了 IRIS 的相同技术组件。

从 IRIS 的角度来看,无论是搜索文本还是搜索图像或其他模式都是一样的。 其底层基本都是一样的。

这让我想起了我家里的情况。我的妻子和女儿对家里的大量裙子、衬衫和其他衣服的信息进行了整理。
但无论如何进行整理、分类、归档,我依然通过和我的妻子和女儿说话,来确定我的穿着。
无论怎样包装,其结果都是如此。

回到这次竞赛比赛:
同样的 IRIS 技术内容,却有很多花哨的包装。
每个人都在同一条高速公路上奔跑。没有人提到它有什么限制。

于是我试着深入挖掘,找出新数据类型 VECTOR 的使用限制。
所有向量都有两个基本参数
- 静态 DATATYPE:"整型integer"(或 "int")、"double"、"十进制decimal"、"字符串 "和 "时间戳"。
- 半动态 LEN(gth): > 0 通常也称为 POSITION;纯整数。

0 0
0 34
文章
· 七月 1 阅读大约需 4 分钟
在InterSystems ObjectScript中使用 VECTORs

迄今为止,我看到的大多数使用向量vector的示例,将它只作为 SQL 中的一种功能,尤其是围绕 VECTOR_Search 的 3 个函数。
* TO_VECTOR()
* vector_dot_product ()
* vector_cosine ()

iris-vector-search 演示包中隐藏着一个非常有用的摘要。
从那里,你可以通过多个链接找到所需的一切。

我还缺少更多的 VECTOR 方法,于是在 Idea Portal 上提出了相关请求。

接着,我想起每个 SQL 方法或存储过程都有一堆 ObjectScript 代码。
于是我开始搜索,下面就是我的研究的一些总结:

0 0
0 26
文章
· 六月 11 阅读大约需 8 分钟
使用 IRIS 以及 langchain 构建 问答聊天机器人

这篇文章介绍了使用由支持 langchain 框架的IRIS来实现问答聊天机器人,其重点介绍了检索增强生成(RAG)。

文章探讨了IRIS中的向量搜索如何在langchain-iris中完成数据的存储、检索和语义搜索,从而实现对用户查询的精确、快速的响应。通过无缝集成以及索引和检索/生成等流程,由IRIS驱动的RAG应用程序使InterSystems开发者能够利用GenAI系统的能力。

为了帮助读者巩固这些概念,文章提供了Jupyter notebook一个完整的问答聊天机器人应用程序,以供参考。

什么是RAG以及它在问答聊天机器人中的角色

1 0
0 135
文章
· 六月 10 阅读大约需 2 分钟
类定义中如何使用列式存储

列式存储是 InterSystems IRIS 提供的一项较新的技术。与传统的基于行的存储不同,它通过将数据存储在列而不是行中来优化查询处理,从而实现更快的访问和检索相关信息。

下面是使用SQL创建此类表的例子

1 0
0 85
文章
· 十二月 24, 2023 阅读大约需 2 分钟
接收POST请求的Base64 文件

在此文章中将分享,当使用InterSystems IRIS 做后端时如何接收并保存通过POST方式发送过来的 Base64文件。

前后端之间传输文件,我认为较简单的方式是:前端将文件转为Base64格式,调用POST方法并将Base64内容附加在JSON消息中的一个参数中,在JSON消息中的另一个参数可以是文件名,比如消息定义如下:

0 0
0 146
文章
· 八月 30, 2023 阅读大约需 1 分钟
使用代码获取数据库剩余空间

大家可以通过InterSystems IRIS 管理门户SMP查看当前数据库剩余空间,路径是 Management Portal: System Operation > Database

当然大家也可以通过下面的代码查看数据库的可用磁盘空间:

0 0
0 77
文章
· 六月 12, 2023 阅读大约需 2 分钟
使用 Synthea 生成 FHIR 测试数据

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

1. 什么是Synthea

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

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

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

2 0
1 161
文章
· 一月 19, 2023 阅读大约需 4 分钟
InterSystems IRIS 2022.3 版本下的列存储

您可能还记得在 InterSystems 2022年全球峰会以及 2022.2 版本发布的网络研讨会上,我们发布了一项令人兴奋的新功能——列存储,它可以纳入您 InterSystems IRIS 的解决方案中。 列存储引入了一种存储SQL表数据的替代方法,它为分析查询提供了数量级的加速。 最新的2022.3开发预览版在原有的基础上包括一系列我们认为值得在这里宣布的更新。

快速回顾

0 0
0 106
文章
· 九月 21, 2022 阅读大约需 2 分钟
Production 中调用 web service 组件时有关超时参数的设置

我在这里和大家分享下在 Interoperability 的接口开发中,调用Web Service接口的几个超时参数的设置经验。

赶时间的同学可以直接拉到文章最下面看结论就好。

1.实验过程

首先我设计了一个Web service的服务器端,强制在接收到请求后 8s 返回结果。

在客户端我设置了响应超时7s, 重试间隔5s, 故障超时23s,如图:

在客户端、服务器端均设置了SOAP Log 记录接收和发送的内容

1 1
0 102

原文可见 这里,原作者 Robert Cemper

我们在SQL中的经常被提到视图VIEW,基本上是一段预先设计好的SQL语句,它也像任何其他SQL查询语句一样执行和组装。

而物化视图MATERIALIZED VIEW意味着查询的内容是预先收集的,这些数据可以相当快地进行检索。

我第一次看到这个概念是和我最喜欢的竞争对手O* 一起的,他们对此功能发出了很多的声音。

然而在Caché/IRIS中,这种功能几乎是一早就存在的,我们认为这是很正常的普通功能。只是我们大多数开发人员只是没有意识到这一点,只要稍加润色,它就可以作为一个优秀的特性呈现出来。 此外,任何更新和维护都是作为内置的能力进行的,无需开发人员任何额外的工作。

看下面的例子:

在我们的Sample.Person类中,我们可以定义一个索引

0 0
0 169