文章
· 八月 7, 2022 阅读大约需 2 分钟
最佳实践之改善日期范围查询的SQL性能

根据日期范围查询的SQL性能让你失望? 我有一个比较特别的技巧,可能会帮助你解决这个问题! (SQL开发人员讨厌这个!)*

如果你有一个类,在添加数据时记录时间戳,那么这些数据将与你的IDKEY值保持顺序--也就是说,当且仅当ID1<ID2时,表内所有ID和时间戳值的TimeStamp1<TimeStamp2--那么你可以利用这一知识来提高对时间戳范围的查询性能。 考虑一下下面这个表:

Class User.TSOrder extends %Persistent 
{ 

Property TS as %TimeStamp;

Property Data as %String (MAXLEN=100, MINLEN=200);

Index TSIdx on TS;

Index Extent [type=bitmap, extent];

}

用过去30天内的30,000,000条随机行来填充,每天将得到1,000,000条行。 现在,如果我们想查询某一天的信息,你可以这样写:

0 0
0 365
文章
· 十月 20, 2022 阅读大约需 3 分钟
实现Cache/IRIS中zip文件的下载、解压及读取

IRIS中实现zip文件的下载、解压及读取

0 前言

项目上做对账需求时,需要通过http方式下载第三方的对账的文件,是一个压缩文件,里边包含一个csv文件。

1 准备工作

1.1 安装解压缩软件

需要根据cache/iris服务器运行环境安装不同的解压缩软件。
本文是在windows环境下实现的,安装了WinRAR解压缩软件,安装目录为:”C:\Program Files\WinRAR“。

1.2 部署测试http服务器

部署一个web服务器,放一个zip文件。
本文在macOS系统中使用MAMP部署了一个简单的服务器,提供一个对外服务:http://192.168.1.107:8888/sss/Archive.zip

2 下载zip文件

主要思路:
通过http下载zip文件,然后另外到服务器上指定的文件夹下,并重命名。

代码

10 2
0 360
文章
· 九月 9, 2022 阅读大约需 5 分钟
论集成标准的选择对医院信息集成平台建设的影响

集成平台的关键在于解决系统之间的互联互通和互操作性的问题,是一个多厂商、多协议的体系结构。医院在集成平台实施的过程中,面临的第一件重要的事情就是交互标准的选择,目前的建设中,分为两队:非标准队和标准队。非标准队一般采用视图抓取、xml格式、json等等的自定义格式,标准队一般采用HL7 V3、HL7 V2、FHIR、DICOM等医疗领域标准,下面会简单介绍一下各种方式以及实施落地的难易程度。(以下内容中将以难易程度总分5★来表示,星数量越多代表难度越高)

1、非标准队

与其说非标准,不如定义为院内交互标准,交互仅限于院内,是一种很有限的互操作,而且定制程度很高,需要很好地把握系统的内部知识。方案缺乏通用性,难以规模推广。但由于其技术门槛较低,学习成本较低,在集成系统数量较少时不失为一种经济快速的方法。

23 2
1 344
文章
· 二月 6, 2022 阅读大约需 5 分钟
翻译文章-数据迁移工具 - 第二部分:从My SQL到IRIS

本文是上一篇关于如何从流行数据库(如 PostgreSQL 和 MySQL)迁移到 IRIS 的后续文章。

我们将使用与从 PostgreSQL 迁移相同的过程。 但是,您会发现它更容易,因为 MySQL 中的数据类型与 IRIS 非常相似。 这就是为什么我们不需要在列中创建转换规则。

获取示例数据到迁移过程

在 GitHub 中,可以下载 docker-compose 项目来构建和运行 2 个数据库:

  • 源数据库:带有示例数据库的 MySQL 数据库 Docker 实例。
  • 目标数据库:InterSystems IRIS 数据平台 Docker 实例,具有用于接收源数据库的现成模式。

要获取示例并运行它,请执行以下步骤:

0 1
0 338

在AES的加密过程中,存在HEX和Base64的输出,目前在HEALTHSHARE自带有Base64的加解密规则,现在针对HEX的加解密进行对应的处理,实现和网上ASE加解密工具进行互相加解密。
在Ensemble的AES的CBC加密主要用到的是这俩个方法
$system.Encryption.AESCBCManagedKeyEncrypt(Plaintext,KeyID)
Plaintext是需要加密的字符串,需要进行$ZCONVERT(字符串,"O","UTF8")转换
KeyID是密钥的ID。
或者是
$SYSTEM.Encryption.AESCBCEncrypt(text,key,IV)
text是需要加密的字符串,需要进行$ZCONVERT(text,"O","UTF8")转换
Key 是密钥 键的长度必须为16、24或32个字符
IV 是偏移量 如果存在此参数,则必须为16个字符长。

第一个方法是在本地生成对应的密钥,暂时还不能和网站上的进行互相加解密的处理。
目前主要是针对第二个方法
$SYSTEM.Encryption.AESCBCEncrypt(text,key,IV)

16 8
0 325
文章
· 七月 25, 2022 阅读大约需 4 分钟
ESB和注册中心概述

本章介绍了使用InterSystems IRIS作为企业服务总线,描述了InterSystems IRIS ESB架构,并提供了部署ESB的概述。

企业服务总线的概念

企业服务总线(ESB)提供了一个单点来访问和管理具有SOAP、REST或其他网络API的应用程序。ESB提供了以下功能。

0 0
0 323
文章
· 四月 25, 2022 阅读大约需 39 分钟
Angular 中 Ensemble 工作流的 UI

大家应该都已经很熟悉 InterSystems Ensemble(一个集成和应用程序开发平台),每个人都知道 Ensemble Workflow 子系统是什么以及它对于自动化人类交互的作用。 对于那些不了解 Ensemble Workflow 的人,我将简要介绍它的功能(已经熟悉的朋友可以直接跳过这一部分并学习如何使用 Angular.js 中的 Workflow 接口)。

InterSystems Ensemble

InterSystems Ensemble 是一个集成和应用程序开发平台,旨在集成异构系统、自动化业务流程和创建新的复杂应用程序,这些应用程序通过新的业务逻辑或新的用户界面增强集成应用程序的功能:EAI、SOA、BPM、BAM 甚至 BI (感谢 InterSystems DeepSee:一种用于开发分析应用程序的内置技术)。

Ensemble 具有以下关键功能:

1 1
0 320

医疗行业的互操作性在改善病人护理、降低医疗服务提供者的成本以及为提供者提供更准确的情况方面发挥着重要作用。然而,由于有这么多不同的系统,数据的格式也有很多不同的方式。有许多标准被创造出来以试图解决这个问题,包括HL7v2、HL7v3和CDA,但每一种都有其缺点。

FHIR,即快速医疗互操作性资源,是一种新的医疗数据格式,旨在解决这些问题。它是由国际卫生级七组织(HL7)开发的,该组织还开发了HL7v2、HL7v3和CDA。

今天我们将探讨如何在VS代码中借助IntelliSense和自动完成功能,通过使用FHIR Schema 创建和验证FHIR资源。

第 1 步 :从FHIR 官方网站 https://www.hl7.org/fhir/下载 JSON schema file 文件用来做资源校验

0 0
0 319

InterSystems流程自动化与工作流引擎

InterSystems工作流程引擎的主要功能 2

使用InterSystems工作流程引擎 3

场景描述 3

环境配置与测试 5

任务管理 15

任务API和自定义任务用户界面 16

展望 17

15

集成平台除了集成业务系统,打通数据与业务流程外,另一个核心的功能就是流程自动化(BPA)。

流程自动化涉及几个重要的特性:

  1. 流程建模
  2. 流程协同
  3. 决策自动化
  4. 低代码工作流程自动化
  5. 任务协同与任务管理

其中第4和5点都是和工作流程相关的。

什么是工作流程(Workflow)?它和业务流程(Business Process)有何区别?为何集成平台要涉及对工作流程的管理?

2 0
2 314
文章
· 三月 2, 2022 阅读大约需 12 分钟
如何以自动化方式/编程方式创建一个镜像环境

各位好,

你曾建立过一个镜像环境吗?它是否有一个私有网络、虚拟IP地址和SSL配置?
在做了几次之后,我意识到这是一个漫长的过程,而且需要很多手动操作来生成证书和配置每个IRIS实例。
对于经常要做这件事的人来说,这是一个痛苦的过程。

例如,质量保证团队可能需要为每个新的应用程序版本创建一个新的镜像环境来测试。支持团队可能需要创建一个镜像环境来重现一个复杂的问题。

我们肯定需要工具来快速创建这些镜像环境。

在这篇文章中,我们将用如下环境创建一个镜像样例:

  • 仲裁机
  • 主服务器
  • 故障切换备份成员
  • 读写报告异步成员
  • 节点间日志转移的SSL配置
  • 镜像环境中的私有网络
  • 虚拟IP地址
  • 镜像数据库

network-schema

0 0
0 309
文章
· 一月 25, 2022 阅读大约需 4 分钟
翻译文章-数据迁移工具 - 第一部分: 从 Postgres 到 IRIS

有时需要将数据和数据模型Schema从Postgres转移或迁移到IRIS。目前有几个选择可以做到这一点,但最流行的两个选项是使用DBeaver(https://openexchange.intersystems.com/package/DBeaver)或SQLGateway。第一种方法将在本文中演示,第二种方法在Robert Cemper的一篇优秀文章中介绍,使用 SQLgateway 迁移数据库(https://community.intersystems.com/post/db-migration-using-sqlgateway),请看本文中如何使用DBeaver执行这种迁移。

为迁移过程获取样本数据

在Github上可以下载一个docker compose项目来构建和运行两个数据库。:

1 0
0 308
文章
· 十一月 5, 2022 阅读大约需 7 分钟
Caché实现SM4分组密码算法

0. 算法概述

SM4算法是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F。SM4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。

1. 密钥及轮密钥

密钥长度为128比特,表示为MK=(MK(0),MK(1),MK(2),MK(3)),其中MKi(i=0,1,2,3)为字。
轮密钥表示为(rk(0),rk(1),...,rk(31)),其中rk(i)(i=0,...,31)为32比特字。轮密钥由秘钥生成。

密钥及轮密钥

2 0
0 302
文章
· 九月 28, 2022 阅读大约需 12 分钟
关于%Dictionary.CompiledClass类在实际业务中的一些应用

简单分享下在医院实际业务过程中%Dictionary.CompiledClass的一些应用。
一,Query查询出来的数据直接存表。
我们经常会遇到一些突如其来的检查,如:飞行检查,审计检查等等,往往一下子要查询几年的各种数据,每种数据涉及字段还非常多,数据之间还要求对上,查询耗时长,数据对比难度大,此时,我们需要把查询出来的数据直接存到临时表,数据核对和修改直接在临时表中完成,核对好的数据直接在sqldbx或者水滴等查询工具中整表导出,效率会高一些。
具体实现:按照数据要求,把表建好,Query输出字段和表字段顺序一致,按日期每天调用Query查询和插入,记录异常数据,后续单独处理。
优点:效率明显提高,数据核对和修改、导出很方便,避免了数据量大,多次查询耗时长问题。
缺点:数据量大会占用存储,记得删。
// W ##CLASS(lizw.CloseCycleData).insertDayByDay("2022-01-01","2022-06-30")
ClassMethod insertDayByDay(sd, ed)
{
k ^tmplzw("insertFromQyeryTestpara",$j)

23 1
0 299

在软件开发和业务集成中,规则无处不在:会员折扣的计算规则、根据消息类型和内容将其路由到不同目标系统的路由规则。还有一个规则发挥重要作用的地方- 辅助决策规则,例如临床知识库和医疗质量指标规则。

规则经常需要随业务调整和知识积累进行调整,而规则的调整是业务和行业专家定的。如果规则是以代码硬编码的,这些调整需要程序员改动,一来不直观、需要业务专家与程序员大量的沟通成本,二来硬编码改动会对应用伤筋动骨,甚至带来风险,三来没法控制新规则生效的时间 – 总不能让程序员在新规则生效的那一刻去编译和部署吧。

2 0
0 296
文章
· 九月 21, 2022 阅读大约需 6 分钟
医疗行业数字化转型 —谈谈微服务架构

在数字化转型成为国家战略和国内外科技大厂的成功经验、强大的宣传攻势和推广能力联合左右下,微服务架构(Microservices Architecture,MSA)毫无疑问已经成为当今基础架构的主流话题,短短几年间席卷全行业,仿佛成了每个行业数字化转型的必由之路。

0 0
0 296
文章
· 一月 28, 2022 阅读大约需 6 分钟
第三十七章 SQL函数 CURRENT_TIMESTAMP

第三十七章 SQL函数 CURRENT_TIMESTAMP

日期/时间函数,返回当前本地日期和时间。

大纲

CURRENT_TIMESTAMP
CURRENT_TIMESTAMP(precision)

参数

  • precision - 一个正整数,它将时间精度指定为小数秒的位数。
    默认值是0(没有小数秒);
    这个默认值是可配置的。

CURRENT_TIMESTAMP返回TIMESTAMP数据类型。

描述

CURRENT_TIMESTAMP要么不接受参数,要么接受精度参数。
不允许使用空参数括号。

CURRENT_TIMESTAMP返回当前时区的本地日期和时间;
它会根据当地的时间变化进行调整,例如日光节约时间。

0 0
0 295

众说周知,EPIC 是电子病历厂商中当之无愧的领导者,本文让我们看看EPIC是如何玩转FHIR的,并进一步了解其互操作性方法、资源和API工具。

几十年来,EPIC和其他主要的EHR供应商一直在围绕着互操作性作斗争,有时候互相容忍,有时也得接受(开放接口)。

今天,大多数电子病历厂商已经针对市场和监管的压力采取了行动,采用FHIR API标准,扩大病人对医疗记录的访问。

但在早期,EPIC和其他竞争对手争先恐后地抢占市场份额,为了成为院内系统的主导者,与其他厂商分享数据、给别人提供数据访问似乎是自我毁灭。

那么今天,EPIC在FHIR API、SMART on FHIR 应用市场、患者访问和互操作性战略方面的立场如何? 以下是关于EPIC在FHIR API和互操作性上提供的简单介绍和链接。


EPIC 在FHIR API和互操作性上的战略和资源

EPIC互操作性的方法和选择

大多数EPIC集成的重点是通过EPIC系统提供扩展访问,但不一定与其他厂商共享。

0 0
0 285
文章
· 十一月 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 283
文章
· 五月 7, 2022 阅读大约需 1 分钟
KLAS报告: 2022美国EMR电子病历市场份额

从数据上看,2022年Epic的市场份额遥遥领先,而Cerner的市场却在不断被蚕食。

非常骄傲的是Epic电子病历是基于InterSystems数据平台构建,早在2020年Epic就将其数据库从Cache升级到InterSystems IRIS。

关于KLAS
KLAS是一家全球性数据驱动型公司,旨在通过提升医疗机构和保险公司的话语权来改善医疗服务水平和质量。KLAS与数以千计的医疗领域专业人员携手合作,收集对软件、服务和医疗设备的相关见解与反馈,并发布相应的行业报告、发展趋势和统计概况。KLAS如实提供准确且公正的数据,这种调研直接反映了医疗领域专家的声音,并帮助医疗行业的供应商提高业绩。更多详情,请登录:https://klasresearch.com/

报告原文也可以从网上获取。

1 1
0 282

北京协和医院现公开招聘信息类技术岗位。有关事项公告如下:
岗位1:运维工程师
任职要求:
1.年龄30岁以下,本科及以上学历,计算机相关专业;
2.熟悉计算机软硬件技术,熟练排除各种软硬件的故障;有基本的网络知识,了解DNS、DHCP原理,熟练使用Ping、tracert等简单命令;
3.有2年以上桌面运维工作经验者优先。

岗位2:数据库管理员
任职要求:
1. 本科及以上学历,计算机相关专业;
2. 精通InterSystems Caché数据库,精通MySQL,SQL Server,熟悉Oracle,精通SQL脚本编写;有丰富数据库管理、运维调优经验;
3. 5年以上数据库运维管理经验;
4. 有医疗行业经验优先。

0 0
0 281
文章
· 八月 18, 2022 阅读大约需 2 分钟
使用csvgen从文件或URL地址中以编程方式导入CSV

Hi 社区的朋友们,大家好!

有时我们需要以编程方式自动将CSV数据从文件或者UR网址L导入到InterSystems IRIS。我们希望创建具有适当数据类型的类并导入数据。

我在Open Exchange上发布了一个模块csvgen,它正是这样做的。

如果你只需要将CSV文件导入IRIS,你可以这么做:

USER>do ##class(community.csvgen).Generate("/usr/data/titanic.csv",,"Data.Titanic")

Class name: Data.Titanic
Header: PassengerId INTEGER,Survived INTEGER,Pclass INTEGER,Name VARCHAR(250),Sex VARCHAR(250),Age INTEGER,SibSp INTEGER,Parch INTEGER,Ticket VARCHAR(250),Fare MONEY,Cabin VARCHAR(250),Embarked VARCHAR(250)
Records imported: 891
USER>

或者你的CSV文件在互联网上, 例如GitHub上面的新冠疫情数据 你可以这样获得数据:

USER>d ##class(community.csvgen).GenerateFromURL("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/05-29-2020.csv",",","Data.Covid19")

Class name: Data.Covid19
Header: FIPS INTEGER,Admin2 VARCHAR(250),Province_State VARCHAR(250),Country_Region VARCHAR(250),Last_Update DATE,Lat MONEY,Long_ DOUBLE,Confirmed INTEGER,Deaths INTEGER,Recovered INTEGER,Active INTEGER,Combined_Key VARCHAR(250),Incidence_Rate DOUBLE,Case-Fatality_Ratio DOUBLE
Records imported: 3522
USER>

0 0
0 279
文章
· 八月 9, 2022 阅读大约需 2 分钟
ObjectScript 错误处理片段

ObjectScriptt至少有三种处理错误的方法(状态代码status codes、异常 exceptions, SQLCODE等)。大多数系统代码使用状态码,但由于一些原因,异常更容易处理。在处理遗留代码时,你要花一些时间在不同的技术之间进行转换。我经常使用这些片段作为参考。希望它们对其他人也是有用的。

0 0
0 279
文章
· 七月 14, 2022 阅读大约需 6 分钟
InterSystems SQL 的使用 - 第二部分 - 基础介绍

本文概述了InterSystems SQL的特点,特别是那些没有被SQL标准所涵盖或与InterSystems IRIS 数据平台的统一数据架构有关的特点。假定你已有SQL的知识,本文不是SQL概念或语法的介绍。

在InterSystems SQL中,数据是在表内呈现的。每个表都被定义为包含若干列。一个表可以包含零个或多个数据值的行。以下术语大致上是等同的。

0 0
0 276