文章
· 三月 4, 2021 阅读大约需 11 分钟
第三章 SQL语言元素(二)

第三章 SQL语言元素(二)

算术运算符和函数

InterSystems SQL支持以下算术运算符:

  • + 加法操作符。
    例如,17+7 = 24

  • 减法运算符。
    例如,17-7等于10
    注意,这些字符中的一对是InterSystems SQL注释指示器。
    因此,要指定两个或多个减法操作符或负号,必须使用空格或圆括号。
    例如,17- -7或17-(-7)等于24

1 5
0 129
文章
· 十一月 23, 2023 阅读大约需 2 分钟
使用支持SSL的ODBC连接IRIS数据库
  • 前言

随着网络安全日益被重视,特别是等级保护制度的大环境下,SSL加密传输越来越被重视,本文介绍如何使用支持SSL的ODBC连接IRIS数据库。

数据库版本:IRISHealth-2023.1

  • 1. 服务器端配置

1)新建SSL服务器配置。

2)开启超级端口的SSL支持,这里我们选择启用即可,如所有超级端口的连接都支持SSL可选要求。

11 5
3 199
文章
· 九月 21, 2023 阅读大约需 12 分钟
IRIS自动安装集群--manifest(安装清单)

前言

生产环境下我们部署和使用IRiS引擎,往往采用其主备镜像模式,虽然此架构简单但是往往我们需要持续在电脑前点击或者操作1到2小时,如果中间有个环节出现了问题有时我们可能需要部署一天.

接下来我分享的是IRIS自带的一个功能帮助我们部署---manifest-安装清单。他的主要使用方式是提前通过配置约定好我们期望的安装设置,在安装的过程中由IRIS程序直接执行脚本,简化IRIS集群的部署,减少运维人员的操作步骤,让我们有更多的精力放在实际项目和业务上。

20 5
0 243

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

14 4
3 180
文章
· 十一月 29, 2022 阅读大约需 3 分钟
配置 DSN

在Windows配置DSN

  1. 确认InterSystems ODBC客户端驱动已安装
    • InterSystems IRIS ODBC驱动会随着InterSystems IRIS安装包默认安装。
    • 如果没有随着InterSystems IRIS安装,请由此下载驱动,下载后执行.exe文件进行安装。
  2. 定义DSN(Data Source Names)
2 3
0 278
文章
· 三月 1, 2021 阅读大约需 7 分钟
第二章 InterSystems SQL基础

第二章 InterSystems SQL基础

本章概述了InterSystems SQL的特性,特别是那些SQL标准未涵盖的特性,或者与InterSystems IRIS®数据平台统一数据架构相关的特性。
本教程假定读者具备SQL知识,并不是为介绍SQL概念或语法而设计的。

本章讨论以下主题:
- 表
- 查询
- 权限
- 数据显示选项
- 数据排序类型
- 执行SQL

在InterSystems SQL中,数据显示在表中。每个表都包含许多列。一个表可以包含零个或多个数据值行。以下术语大体上等效:

1 2
0 110

在使用xDBC连接到字符集为US7ASCII的Oracle数据库时,大家可能遇到过中文的乱码问题,尤其是使用Oracle自己的xDBC驱动的时候。

字符集为US7ASCII的Oracle数据库虽然可以保存中文数据,但给客户端带来了很多麻烦,需要对获取和提交的数据进行转码。

在Ensemble/Health Connect/InterSystems IRIS 中使用SQL适配器连接到这样的Oracle数据库时,可以使用$ZCVT函数进行转码。

1. $ZCVT函数

$ZCVT函数是广泛使用的字符串转换函数,可以做大小写转换、编码转换、URL 和 URI 转换等。我们用其编码转换能力来解决字符集转码问题。

2. 获取的SQL结果集数据有中文时

6 2
0 613
文章
· 三月 6, 2021 阅读大约需 16 分钟
第五章 SQL定义表(一)

第五章 SQL定义表

表名称和架构名称

可以通过定义表(使用CREATE TABLE)或通过定义投影到表的持久类来创建表:

  • DDL:InterSystemsIRIS®数据平台使用CREATE TABLE中指定的表名来生成相应的持久类名,并使用指定的架构名来生成相应的包名。
  • 类定义:InterSystemsIRIS®数据平台使用持久类名称来生成对应的表名,并使用包名称来生成对应的模式名。

由于以下原因,这两个名字之间的对应关系可能不相同:

2 2
0 141
文章
· 八月 19, 2022 阅读大约需 2 分钟
IRIS 医疗版docker 容器初体验

我很高兴与大家分享我第一次使用docker容器版本的IRIS for Health的经验,以探索你对使用或试用的兴趣,利用docker容器的优势,它是轻量级的,易于部署。本文将通过使用Renan Lourenco编写的名为ENSDEMO的GitHub仓库的实施步骤。

设置IRIS for Health社区版docker容器环境的步骤:

0 2
0 264
文章
· 一月 20, 2021 阅读大约需 6 分钟
InterSystems IRIS医疗版2020.1 HL7基准测试

简介

最近完成了针对IRIS医疗版2020.1版本的性能及可扩展性基准测试,重点关注HL7v2的互操作性。本文介绍了在各种工作负载下观察到的吞吐量,并提供了IRIS医疗版用作HL7v2消息传输互操作性引擎时的系统常规配置和调整准则。

基准测试模拟了与实际环境接近的工作负载(详细信息请参见“工作负载说明和方法”部分)。本次测试的工作负载包括HL7v2患者管理(ADT)和生命体征结果(ORU)数据,并包含数据内容转换和路由。

IRIS医疗版2020.1版本可以表明,采用第二代Intel®Xeon®可扩展处理器和Intel®Optane™SSD DC P4800X系列SSD存储的商用服务器,每天的持续消息吞吐量超过23亿条(入站和出站总量),与此前的Ensemble 2017.1 HL7v2吞吐量基准测试相比,扩展性提高了一倍多。

1 2
0 238

如果看了前一篇InterSystems IRIS医疗行业版创建FHIR服务器,应该您已经搭建好了FHIR服务器和FHIR资源仓库。除了使用FHIR REST API来操作这个FHIR服务器,您还可以更直观地看看它的价值 - 使用SMART on FHIR应用。这次,基于上次建好的FHIR服务器,我们用10分钟把一个SMART on FHIR运行起来。

0 2
0 346
文章
· 九月 25, 2022 阅读大约需 78 分钟
IRIS与Caché的23种设计模式

IRIS的23种设计模式

第一章 Caché 设计模式 简单工厂模式

定义

  • 简单工厂模式属于创建型模式,又可称为静态工厂模式,这是由一个工厂对象决定创建出哪一种产品类的实例

使用场景

  • 工厂类负责创建的对象比较少
  • 客户只需知道传入工厂类的参数,而无须关心创建对象的逻辑

优点

  • 使用户根据参数获得对一个的类实例,避免了直接实例化类型,降低了耦合性
  • 能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类:客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,所有的客户类都要进行修改

缺点

  • 可实例化的类型在编译期间已经被确定。
  • 如果增加新类型,则需要修改工厂,这违背了开放封闭原则
  • 子类多过不适合使用

示例

  • 用Caché 实现一个计算器控制台程序,要求输入两个数和运算符号。
17 2
1 254

InterSystems IRIS/Caché的CDC

InterSystems IRIS/Caché未提供开箱即用的变更数据捕获(CDC)工具,而且由于其多模型建模能力和底层的多维存储模型,相对于关系型数据库的单一模型,针对于SQL的CDC在InterSystems IRIS/Caché上会更复杂一些。例如通过Journal日志记录的是底层持久化多维数组的数据变更,而不是SQL table的变更。

通常,在应用层面实现变更数据捕获是更灵活和简单的方式,例如通过设置触发器、类的DSTIME参数。但如果无法在应用层做CDC,可以考虑使用InterSystems IRIS/Caché的Journal和强大的开发能力获取数据变更。

这里介绍使用InterSystems IRIS/Caché的Reporting类型的异步镜像成员获取数据变更。

0 2
1 820
文章
· 五月 12, 2021 阅读大约需 11 分钟
InterSystems 数据平台和性能 - 第 5 篇 使用 SNMP 进行监控

InterSystems 数据平台和性能 - 第 5 部分 使用 SNMP 进行监控

在之前的帖子中,我展示了如何使用 pButtons 收集历史性能指标。 我首选 pButtons 是因为我知道它随每个数据平台实例(Ensemble、Caché、...)一起安装。 不过,还有其他方法可以实时收集、处理和显示 Caché 性能指标,以进行简单的监视,或进行更重要的并且复杂得多的运营分析和容量计划。 最常见的数据收集方法之一是使用 SNMP(简单网络管理协议)。

SNMP 是 Caché 向各种管理工具提供管理和监控信息的标准方式。 Caché 在线文档包含了 Caché 和 SNMP 之间接口的详细信息。 虽然 SNMP 应该可以直接与 Caché 配合工作,但仍有一些配置技巧和陷阱。 我经历了很多次错误的开始,并且在 InterSystems 其他同事的帮助下,才让 Caché 与操作系统 SNMP 主代理建立对话,所以我写了这篇帖子,希望您可以避免同样的痛苦。

在本帖中,我将介绍如何为 Red Hat Linux 上的 Caché 设置和配置 SNMP,您应该能够对其他 *nix 版本使用相同步骤。 我使用 Red Hat 写这篇文章是因为在 Linux 上进行设置更棘手一些;在 Windows 上,Caché 会自动安装一个 DLL 来与标准 Windows SNMP 服务连接,所以应该更容易配置。

0 2
1 256
文章
· 九月 28, 2022 阅读大约需 3 分钟
使用嵌入式Python生成数据流

Hi Developers,

嗨,各位开发者们:

各位都知道,Python是一个庞大而强大的生态系统,包含了成千上万的库和包,特别是在数据科学方面。

因此,我想首次尝试使用IRIS最近的一项功能--嵌入式Python,简单地导入一个名为datetime的Python库,生成带有时间戳成分的数据,并在InterSystems IRIS for Health Data Platform中持久化。同样的方法在IRIS数据平台上也可以使用。

1 1
0 97
文章
· 三月 21 阅读大约需 2 分钟
IRIS 向量搜索

这是在 IRIS 中完全运行向量搜索演示的尝试。
没有外部工具,您需要的只是终端/控制台和管理门户。
特别感谢Alvin Ryanputra作为他的软件包iris-vector-search的基础
灵感和测试数据的来源。
我的软件包基于 IRIS 2024.1 版本,需要注意您的处理器功能。

我尝试用纯 ObjectScript 编写演示。
仅描述向量的计算是在嵌入式Python中完成的

计算 2247 个记录的 384 维向量需要时间。
在我的 Docker 容器中,它正在运行 01:53:14 来完全生成它们。

1 1
0 25
文章
· 十月 16, 2021 阅读大约需 2 分钟
如何使用HL7相應地更新結果參考範圍和異常標誌

在本文中,我將演示以下內容:

  • 使用自定義實用程序函數從數據庫更新 ReferencesRange(OBX:7) 針對 ObservationIdentifier(OBX:3.1)[TestCode]
  • 根據數據庫實用程序函數中的 ObservationIdentifier(OBX:3.1)[TestCode] 和 ObservationValue(OBX:5)[Result] 更新異常標誌 (OBX:8)
  • 基於異常標誌的路由消息 (OBX:8)

以下是主要和轉換後的 HL7 2.5 ORU_R01 消息:

0 1
0 87
文章
· 五月 20, 2021 阅读大约需 9 分钟
第一章 发送HTTP请求

第一章 发送HTTP请求

本主题介绍如何发送HTTP请求(如POSTGET)和处理响应。

HTTP请求简介

可以创建%Net.HttpRequest的实例来发送各种HTTP请求并接收响应。此对象相当于Web浏览器,可以使用它发出多个请求。它会自动发送正确的cookie,并根据需要设置Referer标头。

要创建HTTP请求,请使用以下常规流程:

0 1
0 220
文章
· 七月 4, 2023 阅读大约需 11 分钟
小实验--生成式AI和 FHIR 结合

这是个实验项目,使用OpenAI API与FHIR资源和Python相结合来回答医疗行业的用户提问。

项目想法

生成式人工智能,如OpenAI上提供的LLM模型, 已被证明在理解和回答高层次问题方面具有显著能力。他们使用大量的数据来训练他们的模型,因此他们可以回答复杂的问题。

他们甚至可以使用编程语言,根据提示创建代码 --我不得不承认,让我的工作自动化的想法让我感到有些焦虑。但到目前为止,似乎这是人们必须要习惯的事情,不管你喜不喜欢。所以我决定做一些尝试。

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

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

现状

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

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

image

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

8 1
0 115

2021年9月13日,中国 北京—— 致力于帮助客户解决最关键的可扩展性、互操作性和速度问题的创新数据技术提供商InterSystems今日宣布在中国推出InterSystems IRIS医疗版互联互通套件,以满足医院信息化建设的标准化要求,促进业务协同,助力公立医院高效建设互联互通平台。

0 1
0 169
文章
· 四月 24, 2022 阅读大约需 10 分钟
在ObjectScript中调用Java程序 —— 一个国密算法的案例

尽管IRIS和HealthConnect拥有全面的互操作特性,但在实际工作中,还是有可能遇到需要使用遗留类库,dll SDK等方式与外部应用通信的情况。例如IRIS中并没有内嵌国密算法SM2、SM3和SM4,而开源社区中不乏通过Java、Python和C++等语言完成的具体实现。本文就将以调用SM4的Java实现为例展示ObjectScript程序与第三方语言通信的过程。

Github地址:https://github.com/LinZhuISC/javademo.SM4

跨编程环境调用设计要点

在开始实际操作之前,希望读者先针对整个调用过程中的主调方和被调方思考两个现象:

3 1
1 266
文章
· 三月 5, 2021 阅读大约需 9 分钟
第四章 SQL标识符

第四章 标识符

标识符

标识符是SQL实体的名称,例如表、视图、列(字段)、模式、表别名、列别名、索引、存储过程、触发器或其他SQL实体。
标识符名称在其上下文中必须是唯一的;
例如,同一模式中的两个表或同一表中的两个字段不能具有相同的名称。
但是,不同模式中的两个表或不同表中的两个字段可以具有相同的名称。
在大多数情况下,相同的标识符名称可以用于不同类型的SQL实体;
例如,一个模式、该模式中的表以及该表中的字段都可以具有相同的名称,而不会产生冲突。
但是,同一个模式中的表和视图不能具有相同的名称。

InterSystems IRIS®数据平台SQL标识符遵循一组命名约定,根据标识符的使用,这可能会受到进一步的限制。
标识符不区分大小写。

标识符可以是简单标识符,也可以是分隔符。
InterSystems SQL默认支持简单标识符和分隔标识符。

简单标识符

简单标识符有以下语法:

0 1
0 155