文章 Claire Zheng · 七月 22, 2022 阅读大约需 2 分钟 【精华置顶帖】一文了解关于InterSystems开发者社区的各种玩儿法(包括积分福利)! 这是一个帖子合集,方便你快速了解关于开发者社区的各种积分福利和玩儿法! #其他 3 0 1 279
公告 Claire Zheng · 四月 19, 2023 持续火热报名中:欢迎参加InterSystems 中国技术培训认证 为支持医疗信息行业人才发展,InterSystems 为中国市场量身定制了贴近需求、灵活、实操性强的技术认证培训计划,由 InterSystems 资深技术专家亲自授课,帮助用户快速掌握 InterSystems 技术,确保用户从快速发展的 InterSystems 技术中获益,以更好地服务于医院信息化建设。点击此处查看课程详情:InterSystems中国技术培训认证 #开发者社区官方 2 0 1 188
公告 Claire Zheng · 九月 3 InterSystems 2024开发者竞赛:开发者工具(Tools) Hi开发者们, 我们很高兴邀请大家参加我们的新一轮开发者竞赛,此次竞赛致力于创造有用的工具,让开发伙伴们的生活更轻松: 🏆 InterSystems 2024开发者竞赛:开发者工具(Tools) 🏆 欢迎提交有助于加快开发速度、贡献更多定性代码,并有助于使用 InterSystems IRIS 测试、部署、支持或监控您的解决方案的应用程序。 时间:2024年9月9日-29日(美国东部时间) 奖金池:14,000美元 #活动 #竞赛 #IRIS竞赛 1 0 0 39
文章 Michael Lei · 四月 24, 2021 阅读大约需 6 分钟 置顶--InterSystems 中文开发者社区精华文章集锦 欢迎大家将相关的经验在这个讨论区分享。 板块 文章列表 征文大赛作品集锦 2022年首届InterSystems 技术征文大赛集锦 2023年第二届InterSystems 技术征文大赛集锦 官方文档 我司即将推出中文官方文档门户,欢迎大家把需要的官方文档发在评论区,我们会优先发布。谢谢! #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health #开发者社区官方 1 1 3 857
文章 Nicky Zhu · 十月 10 阅读大约需 7 分钟 FHIRValidation - 用IRIS验证你自己的FHIR IG 本演示程序用于展示如何采用自定义FHIR profile来验证数据合规性。自定义FHIR实施指南基于FHIR R4版本开发,在本例中实现了对Organization资源的扩展并用于验证数据的合规性。 #Docker #FHIR #Git #GitHub #HL7 #JSON #REST API #InterSystems IRIS for Health Open Exchange app 1 0 0 13
文章 Meng Cao · 十月 5, 2022 阅读大约需 4 分钟 Caché数据库私有apache版本升级 操作系统: CentOS Linux release 7.9.2009 (Core) 1.查看数据相关信息 1)查看Caché数据库实例信息 [root@TestServer /]# ccontrol list Configuration 'CACHE' (default) directory: /opt/cache versionid: 2016.2.3.907.11.20719 conf file: cache.cpf (SuperServer port = 1972, WebServer = 57772) status: running, since Tue Oct 4 12:54:05 2022 state: ok 2)查看Caché数据库私有apache版本信息 #测试 #管理门户 #Caché 44 24 0 624
文章 王喆 👀 · 九月 7, 2022 阅读大约需 4 分钟 IRIS如何进行CRUD操作 前言 #API #JSON #ObjectScript #管理门户 #Ensemble #HealthShare #InterSystems IRIS #VSCode #学习门户 41 7 6 521
文章 sun yao · 十月 12, 2022 阅读大约需 10 分钟 前端操作自动生成BS、BP、BO 概述 现有Ensemble平台BS(服务)、BP(流程)、BO(操作)需对平台及开发语言有一定的了解才能实现,为简化用户操作,现对现有平台进行二次封装,通过API接口的形式进行前后端分离,通过前端界面操作实现BS(对外提供的服务)、BP、BO(逻辑处理或调用外部的服务)自动生成(通过%Dictionary实现),具体实现如下。 一、开发技术和工具 版本:Ensemble 2017.2.1 二、涉及公用类 2.1 %Dictionary.ClassDefinition(自定义类) • property Super as %CacheString; Specifies one or more superclasses for the class. 定义一个或多个父类,继承父类 #业务服务 #业务流程 (BPL) #业务规则 #访问控制 #Ensemble 29 10 6 632
文章 聆严 周 · 九月 30, 2022 阅读大约需 11 分钟 使用Prometheus监控Cache集群 使用Prometheus监控Cache集群 Executive Summary 生产级别的Cache集群往往由多个Cache实例组成,而Cache自带的管理界面不能满足对整个集群的监控,因此在实际使用中,往往需要投入人力对实例进行性能巡检。即便如此,这种巡检模式实时性低、告警的漏报错报率高、对既往数据追溯能力差。针对Cache/IRIS集群管理的这一缺憾,本文提出以Prometheus监控Cache集群的方案,最终实现了对集群全实例监控指标的自动化采集,以及准实时监控数据展示和告警提示。 #Caché #Ensemble #InterSystems IRIS 24 8 0 736
文章 lizw lizw · 九月 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) #Caché 23 1 0 321
文章 John Pan · 九月 9, 2022 阅读大约需 5 分钟 论集成标准的选择对医院信息集成平台建设的影响 集成平台的关键在于解决系统之间的互联互通和互操作性的问题,是一个多厂商、多协议的体系结构。医院在集成平台实施的过程中,面临的第一件重要的事情就是交互标准的选择,目前的建设中,分为两队:非标准队和标准队。非标准队一般采用视图抓取、xml格式、json等等的自定义格式,标准队一般采用HL7 V3、HL7 V2、FHIR、DICOM等医疗领域标准,下面会简单介绍一下各种方式以及实施落地的难易程度。(以下内容中将以难易程度总分5★来表示,星数量越多代表难度越高) 1、非标准队 与其说非标准,不如定义为院内交互标准,交互仅限于院内,是一种很有限的互操作,而且定制程度很高,需要很好地把握系统的内部知识。方案缺乏通用性,难以规模推广。但由于其技术门槛较低,学习成本较低,在集成系统数量较少时不失为一种经济快速的方法。 #FHIR #HL7 #文档 23 2 1 379
文章 王喆 👀 · 九月 13, 2022 阅读大约需 4 分钟 IRIS快速查询服务思路分享 背景 作为集成平台厂商,在医院同其它系统联调的时候所做的事情中,多的不是开发代码而是查消息。我先演示一下目前我正在使用的IRIS查消息的方式: #InterSystems 业务解决方案和架构 #ObjectScript #可视化 #HealthShare #InterSystems IRIS #InterSystems 想法门户 Open Exchange app 21 3 0 320
文章 王喆 👀 · 九月 21, 2023 阅读大约需 12 分钟 IRIS自动安装集群--manifest(安装清单) 前言 生产环境下我们部署和使用IRiS引擎,往往采用其主备镜像模式,虽然此架构简单但是往往我们需要持续在电脑前点击或者操作1到2小时,如果中间有个环节出现了问题有时我们可能需要部署一天. 接下来我分享的是IRIS自带的一个功能帮助我们部署---manifest-安装清单。他的主要使用方式是提前通过配置约定好我们期望的安装设置,在安装的过程中由IRIS程序直接执行脚本,简化IRIS集群的部署,减少运维人员的操作步骤,让我们有更多的精力放在实际项目和业务上。 #开发运维 #系统管理 #Ensemble #InterSystems IRIS for Health 20 5 0 311
文章 Chang Liu · 九月 22, 2022 阅读大约需 2 分钟 在国产系统上安装Healthconnect2021 1,准备 本次安装环境:Kylin-Server-10-SP2-Release-Build09-20210524-x86_64.iso 安装系统适配的对应版本:HealthConnect-2021.1.2.338.0-lnxubuntux64.tar.gz;ISCAgent-2021.1.2.338.0-lnxubuntux64.tar.gz 系统语言选择:English(必要) #新手 #部署 #文档 19 8 0 314
文章 王喆 👀 · 九月 24, 2022 阅读大约需 2 分钟 使用Global进行数据可视化---商业智能(BI) 在医院但凡接触“数据”和“指标”的人,对以下场景应该是深有感触。同样的指标、同样的时间,有可能是同一个部门出的,最后“数据不一致”。除了“匪夷所思”,更有“深恶痛绝”。那么,如何解决这个问题?我的答案是商业智能(BI)。随着技术和市场的发展,有很多公司开始研发直接面向业务用户的敏捷BI工具,FineBI就是这样的一款BI工具。这个也是我接触的第一款国产BI。 #InterSystems 业务解决方案和架构 #新手 #InterSystems IRIS BI (DeepSee) #InterSystems 想法门户 18 0 0 223
文章 姚 鑫 · 九月 25, 2022 阅读大约需 78 分钟 IRIS与Caché的23种设计模式 IRIS的23种设计模式 第一章 Caché 设计模式 简单工厂模式 定义 简单工厂模式属于创建型模式,又可称为静态工厂模式,这是由一个工厂对象决定创建出哪一种产品类的实例 使用场景 工厂类负责创建的对象比较少 客户只需知道传入工厂类的参数,而无须关心创建对象的逻辑 优点 使用户根据参数获得对一个的类实例,避免了直接实例化类型,降低了耦合性 能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类:客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,所有的客户类都要进行修改 缺点 可实例化的类型在编译期间已经被确定。 如果增加新类型,则需要修改工厂,这违背了开放封闭原则 子类多过不适合使用 示例 用Caché 实现一个计算器控制台程序,要求输入两个数和运算符号。 #Caché #InterSystems IRIS #InterSystems IRIS for Health 17 2 1 302
文章 shaosheng shengshao · 九月 14, 2022 阅读大约需 3 分钟 HEALTHSHARE2018版如何实现AES(CBC)的HEX输出,并可以实现加密和解密 在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) #加密 #安全 #HealthShare 17 8 1 442
文章 John Pan · 九月 9, 2022 阅读大约需 5 分钟 如何调用Ensemble/IRIS内置的HL7 V2 webservice - Java,PB9,Delphi7样例 概述 #Java #Ensemble #InterSystems IRIS for Health 17 1 0 438
文章 聆严 周 · 九月 27, 2022 阅读大约需 6 分钟 Cache / IRIS 操作数据的3种基本方式 背景 Cache起源于没有SQL的1970时代,当时各种高级计算机语言才刚刚诞生,其中M语言较为独特,它的诞生就是为了在没有操作系统的机器上,进行数据存储。别忘了,Unix在1971年才发布。M语言别具一格地采用了Global多维数组,统一了复杂的内存操作和文件读写,使之成为了1970年代数据库的事实标准,特别是在医疗行业。而后Intersystems在1978年接过M语言的旗帜,在M语言上添加了SQL兼容层和ObjectScript层,前者顺应了时代的潮流,后者不仅为M语言提供了强大的OOP和各种便捷的语法糖,还让数据能以对象形式进行访问,让数据和代码更加紧密。 本文将简述多维数组、SQL、对象这3种数据操作方式,提供实例代码片段,并在运行效率、开发效率、管理效率、实用性方面讨论它们的优缺点。 为方便讨论,以学校与学生为例。对每种操作方法,都列举3种典型的用例,分别为,访问某特定ID的学生(即数据库ID索引)、访问某特定studentID的学生(即遍历唯一索引)、和访问某学校的所有人(即遍历非唯一索引)。 现假设学生表/对象定义如下: #ObjectScript #SQL #Caché #InterSystems IRIS 16 3 1 714
文章 he hf · 十月 8, 2022 阅读大约需 6 分钟 10分钟快速开发一个连接到InterSystems IRIS数据库的C#应用 安装InterSystems IRIS数据库的ODBC驱动,在Windows系统中配置数据源后,可以使用Microsoft Visual Studio 开发工具 中的服务器资源管理器很方便地连接到InterSystems IRIS数据库服务器,利用数据库连接的可视化视图,可以非常方便快捷地进行连接到InterSystems IRIS数据库的应用开发。本文将展示一个利用以上方式实现的例子,开发工具为Microsoft Visual Studio 2019,开发语言为C#,10分钟快速开发实现一个连接到InterSystems IRIS数据库的C#应用,在本例子中,可以通过选择日期和科室,查询指定日期和科室的就诊日志。 1、在成功安装InterSystems IRIS数据库的ODBC驱动后,从Windows的“控制面板”中选择“管理工具”,在“管理工具”中选择“ODBC数据源”。 #.NET #ODBC #SQL #开发环境 #数据库 #Caché #InterSystems IRIS 16 6 3 971
文章 zhanglianzhu zh... · 九月 29, 2022 阅读大约需 3 分钟 Cache死循环检测和申明式事务 使用Cache的两个痛点问题: 一、Cache作为后关系型数据库,使用其提供M语言操作Global数据结构。可以达到极快的查询速度。M语言的set赋值和初始化没有区分,加之是弱类型,非常容易出现死循环,就算你是多年老手也一个不小心就踩坑。我就经历过改代码即使很小心还是出了死循环把数据库tmp撑满的事故。 二、M语言作为完备的编程语言,结合cache数据库操作数据实在是不要太方便。同时一个复杂的业务提交到数据库通过一个M逻辑全部处理完成,极大的减少了app和数据库交互次数。复杂业务的事务就是一方面,通过TSTART、TROLLBACK 、TCOMMIT,前台一次数据库交互后台就可能做了几十张表的更新操作。直接使用事务是容易,但是极易引入开放事务锁表(你自己就算很小心,也难保调别人接口别人事务不完善,而你又没检测事务层级),锁表之后结束进程导致数据回滚。 解决办法: 据我观察出现上面两个问题的原因,第一个是M语言弱类型和没单独的初始化命令导致,就算你是老手、工作细致也难以避免。第二个不是Cache特有的,通用关系库也有事务写的不完整的问题,事务问题对开发要求高或者从框架设计可以解决。 #数据库 #Caché 16 4 1 280
文章 王喆 👀 · 九月 12, 2022 阅读大约需 2 分钟 小工具:IRIS管理页打开显示查询功能 大家都用过IRIS的消息查看器吧,其实这个页面有一个隐藏的功能,就是显示【显示查询】,如图所示: #SQL #数据库 #管理门户 #Global Masters #HealthShare #InterSystems IRIS 16 0 0 254
文章 Guangliang Zhang · 十月 21, 2022 阅读大约需 6 分钟 基于cconsole.log的cache数据库的实时监控 cache数据库自身带有系统监控Portal界面,但需要运维人员定期主动查看才能获取监控信息。当系统故障发生时,容易出现由于没有及时获取故障信息而不能及时处理,从而导致造成的影响扩大。 #开发运维 #日志 #监视 #System Alerting and Monitoring (SAM) #Caché 15 3 1 472
文章 water huang · 九月 21, 2022 阅读大约需 4 分钟 对 %XML.PropertyParameters类的探索 日常工作中,我们使用xml 应该是比较多的,早期的ensemble或者cache,对JSON的支持不是很好,但是对xml支持比较好。因此早期的接口方式中,webservice+xml的方式很常用。而对象导出为xml最简单的方式就是类继承 %XML.Adaptor。继承该类后,就可以使用很多xml的特性,以满足各种需求。虽然看不到对象转为xml的具体实现,但是配置了参数,就可以实现更多的效果。那么想自定义一些参数呢?如果有人打开过它的定义,可以看到类上面有个 “ PropertyClass = %XML.PropertyParameters”,那么我们其实在需要xml参数的同时,又要自定义参数,就可以自己写个属性类,继承于%XML.PropertyParameters。 #API #Caché #Ensemble 15 4 0 178
文章 王喆 👀 · 九月 18, 2022 阅读大约需 4 分钟 Rest实现Post、Get、Put、Delete几种操作方式 这是一篇笔记: 说明 #API #ObjectScript #REST API #HealthShare #VSCode 15 0 0 162
文章 Yongfeng Hou · 十一月 23, 2023 阅读大约需 3 分钟 IRISHealth在DBServer和ECPApp之间启用SSL/TLS安全双向认证加密通信 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 #ECP #SSL #加密 #安全 #认证 #部署 #Caché #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 14 5 3 245
文章 liu bo · 九月 21, 2023 阅读大约需 4 分钟 通过自定义数据类型实现参数统一验证优化重构代码 前言 对于第三方接口进行交互的时候,往往需要大量的进行参数合法性校验。以前的方法就是对每个参数进行验证。如下截图: 上图的会存在大量的if else if else..,如果字段很多,那导致一个方法存在大量的验证的代码,那我们考虑是否可以进行统一的验证参数的合法性。 思路 平时建立类的时候我们可以写参数MAXLEN=100,TRUNCATE=1 是否截取等,那找找这些参数的定义地方。如截图: 那我们想要定义自己的参数,该如何定义呢?根据面向对象设计原则之一: #Globals #工具 #Ensemble 13 1 1 143
文章 bai hongtao · 十月 7, 2022 阅读大约需 4 分钟 第三方HA软件结合MIRROR使用方法探讨 在Cache 2018之前的版本中,数据库的高可用是通过第三方HA软件保障的,Cache数据库在2018以后及IRIS支持MIRROR技术,通过MIRROR可以保障数据库的高可用及数据的冗余,那么在新版本中,第三方HA软件与MIRROR是否可以同时使用以实现更高的数据库可用性?使用起来有哪些需要注意的?本文重点介绍探讨上述两个问题。 #故障转移 #数据库 #现场测试 #镜像 #高可用性 #Caché #InterSystems IRIS #其他 12 0 0 354
文章 water huang · 九月 25, 2022 阅读大约需 25 分钟 Ens.Util.JSON类的启发 日常工作中,JSON使用越来越多,很多其他的语言里面有成熟的JSON API,但cache 我一直没找到。而同事们使用的基本都是自己写的一些JSON工具。这些小工具,多多少少有些局限。使用ensemble2016后,发现了 Ens.Util.JSON类,他可以处理JSON。翻阅代码后,实际上主要API是 %ZEN.Auxiliary.abstractController。在使用中,我们遇到一个问题,那就是有些JSON的节点名是带有下划线的,这个不太好处理。一般来说,我们把对象转为xml的时候,对象的属性我们是去掉下划线的,带下划线的名字是用 XMLNAME来设置的,于是考虑JSON里面也使用它(如果配置了)作为对象转JSON的时候,JSON的名字。 #JSON #XML #Caché #Ensemble 12 4 0 202
文章 Meng Cao · 十一月 23, 2023 阅读大约需 2 分钟 使用支持SSL的ODBC连接IRIS数据库 前言 随着网络安全日益被重视,特别是等级保护制度的大环境下,SSL加密传输越来越被重视,本文介绍如何使用支持SSL的ODBC连接IRIS数据库。 数据库版本:IRISHealth-2023.1 1. 服务器端配置 1)新建SSL服务器配置。 2)开启超级端口的SSL支持,这里我们选择启用即可,如所有超级端口的连接都支持SSL可选要求。 #ODBC #InterSystems IRIS for Health 11 5 3 353