搜索​​​​

文章
Claire Zheng · 三月 22, 2022

如何准确理解FHIR能力?医疗IT行业的数据交换和共享难题如何破?

最在第一期“极客聊吧”中,InterSystems销售工程师们聊了聊这些话题:为什么有些医院和某些商保之间可以直接结算,有些又不能?医院和保险之间的结算难在哪儿?在InterSystems 2021全球线上峰会中提到的医保结算案例对国内实践有哪些借鉴意义?FHIR又能起到什么关键作用?医疗数据实现互联互通的关键是什么?以下是文字版。 点击查看视频。 #从商保结算谈起# 菁伟 (@Jingwei.Wang ):大家好,我是InterSystems的销售工程师王菁伟,这是我的同事祝麟和刘皆良(Jeff)。今天我们一块来聊聊HIT行业里的数据交互那点事。去医院就诊的话,我们会发现有些医院可以和某些商业保险直接结算,有的医院或者某些保险产品又不能。为什么直结这个流程没有全面开通呢? 祝麟 ( @Lin.Zhu ):我们虽然平时看病都基本实现了医保直连, 但实际上背后医院的信息科和供应商付出了大量的努力,比如供应商就需要要适应各地医保结算流程和政策的差异,这个过程的数字化还是有很大难度的,也没法一蹴而就。 Jeff ( @Jieliang.Liu ):到商保这一侧,可以观察到很多商保产品的直结清单是逐年递增。那么保险公司的产品是一家一家和医院对接的,难度恐怕更大。 菁伟 (@Jingwei.Wang ):医院和保险之间的结算过程到底为什么落地困难呢? 祝麟 ( @Lin.Zhu ):原因很多,既有政策层面的,也有技术层面的。比如医院和院外机构间通信的安全性保障就是问题,如果没有安全的公共平台进行数据交换,哪家医院也不能独立承担数据流出医院的安全风险,这在政策的制定和技术的实现方面都有挑战。 Jeff ( @Jieliang.Liu ):医院和保险之间的接口也是问题,不同的医院会采用不同厂家提供的系统,不同保险公司采用的数据接口肯定也不一样,是个典型的多对多集成的问题,工作量会比较大,实施周期也很长。 #借鉴国际成功案例# 菁伟 (@Jingwei.Wang ):去年InterSystems的全球峰会上HealthShare的分论坛里是不是就谈到了医保结算的场景?这个案例对实现直接结算有没有借鉴意义呢? 祝麟 ( @Lin.Zhu ):是的。本身医保结算这个事是个全球性的挑战。除了我们国家以外,即使是商保比较发达的欧美国家,在打通流程方面也是处于进行中的状态。这次峰会上HealthShare发布解决方案,实现了CMS,也就是美国医保局所定义的医疗服务提供方和支付方的交互规范。这个方案覆盖的正是医疗机构、支付方以及患者三者之间结算和信息交互流程。 菁伟 (@Jingwei.Wang ):也就是说满足了政策要求? Jeff ( @Jieliang.Liu ):也包含技术要求。CMS定义的交互流程和数据模型是以FHIR为载体的。 祝麟 ( @Lin.Zhu ):是的。CMS定义的交互规约既包含流程规范,也包含接口和数据规范,目前是以FHIR R4规定的,所以必须以FHIR API的形式实现。 #如何准确理解FHIR能力# 菁伟 (@Jingwei.Wang ):那么,现在有没有实际的案例使用FHIR来完成业务功能呢? Jeff ( @Jieliang.Liu ):有的。我们在国际上已经看到不少基于FHIR的业务出现。比如我们和UC Davis Health以及Centene合作进行了医保预授权的自动化项目,就是基于FHIR的。在这个项目里,UC Davis Health的角色是医疗机构,Centene是保险的支付方,采用HealthShare作为平台来支撑不同角色间的实时交互。 祝麟 ( @Lin.Zhu ):UC Davis Health的医生在Epic的电子病历系统里下达医嘱,系统把患者和医嘱信息按自定义接口发到HealthShare;HealthShare将请求转为FHIR标准再通过FHIR接口与Centene的系统交互,检查这些医嘱能不能被Centene的保险产品覆盖,再把结果通过HealthShare转回到医生那儿。这样就可以在下达医嘱时实时地通过预授权的检验,杜绝医保拒付的情况。先不说杜绝拒付问题能节省的开支,光是将预授权自动化这一项,和人工处理相比,就能把每一单预授权的处理成本从3.68美金降到0.04美金,那每处理一百万次预授权就能省下几百万美金了。 菁伟 (@Jingwei.Wang ):那么,假设我们有一个集成平台,通过平台实现FHIR API接口,不同的系统通过FHIR API与集成平台对接,是不是就能解决数据交互问题呢? 祝麟 ( @Lin.Zhu ):这是个非常好的问题。FHIR在设计之初就声明采用了剃刀原理,它大概只能覆盖80%常见的交互需求。因此,对于差异化的需求或者是新技术引入的新的数据交互需求,FHIR要借助除了API之外的额外机制来解决这个问题。在医疗行业,我们现在经常遇到医疗文档共享或者跨机构流程这样的业务场景,除了API。Jeff,你认为平台这个层面还需要什么样的一些能力来支撑这些场景呢? Jeff ( @Jieliang.Liu ):Profile。针对患者健康档案共享和支付方之间的数据交换两个不同的场景,需要分别遵循USCore profile和PDex Profile的规约。也就是说在可预见的未来,对于一家医院或者一个区域级的数据交换中心来说,需要能够支持不同的Profile以应对不同的场景。 菁伟 (@Jingwei.Wang ):这些不同的Profile之间有什么差别吗? Jeff ( @Jieliang.Liu ):首先我们需要明白Profile立意于使用FHIR支持差异化的用例或场景。因此,一个合法的Profile就只覆盖这个场景所需要使用的模型而不会涉及到其他用例的内容。 US Core和PDex 这两个Profile首先在定位上不太一样。US Core面向患者就诊过程的信息交换,对就诊中的涉及例如治疗计划、体征和检验结果这样的临床信息进行了定义;而PDex是面向医保结算的用例,就会包含报销范围,支付方的组织机构信息这样一些和医保报销相关的信息,由CPCDS这个数据集定义。当然PDex也会引用US Core中定义的内容,比如患者的身份、病史、体征、检验结果,在PDex里这些临床信息是直接引用US Core里的定义的。 祝麟 ( @Lin.Zhu ):没错,正如同我们在医院信息互联互通标准化成熟度测评过程中可以体会到文档交换和服务调用是面向不同用例的交互手段,两者的信息构造有差异。那么使用FHIR进行交互时,面对不同的应用场景时完全可能需要套用不同的Profile,甚至是借助Profile套用特定的术语。因此,Profile之间会有很多差异。 如果FHIR在中国落地,可以想象到,由于医疗技术上我们包含中医,医疗福利上我们有医保和商保,还有很多其他差异,我们也需要有中国自己定义的多个Profile去投入使用。 因此,对FHIR的支持不能仅仅体现在支持HL7官网发布的协议结构上。支持多Profile,能够根据地区、应用场景的不同导入并套用Profile对于医疗行业的集成引擎、数据平台这样的产品是一项至关重要的FHIR能力。 Jeff ( @Jieliang.Liu ):除了遵循协议之外,还有数据架构。在HealthShare的解决方案里包含了一个整合好的数据存储。 祝麟 ( @Lin.Zhu ):是的,有一份在各业务系统之上,经过整合与泛化统一存储的数据能够极大简化应用标准协议的成本。大家可以想象一下,对于使用FHIR来说,在多Profile模式下运行的一个体系,如果没有一份整合的数据,那么每次要支持一个新的Profile,特别是和上一次应用的Profile所需的资源不一样,术语可能也不一样的时候,实施方需要再一次挨个把和各个业务系统的映射再做一遍,这个代价和周期可想而知。 菁伟 (@Jingwei.Wang ):梳理和整合数据存储的话,这样一套方案就不是单纯的集成平台方案了。 祝麟 ( @Lin.Zhu ):没错,这是因为采用集成平台,和采用集成加数据整合的医院信息平台,要解决的问题是不一样的。 当单纯应用集成平台整合流程时,要解决是打破烟囱的问题,但还谈不上整合数据与数据利用。对于这样的场景,即使点对点地两两集成,也能解决问题,坦率说除非每个应用系统都能支持某个标准协议通信,否则采不采用协议进行集成并不关键。但如果要上线统一患者档案这样的业务,就需要整合和泛化数据并进行存储,如何利用这份数据就是协议可以发挥作用的地方了。 Jeff ( @Jieliang.Liu ):日本群马大学医学部附属医院就用我们的产品作为信息平台使用。应用InterSystems IRIS作为信息交换引擎从HIS、检验这样的系统里通过实时和批量数据同步接口获取数据,转换为FHIR并存储在InterSystems IRIS的FHIR存储库里。这个FHIR存储库所承担的就是临床数据中心的角色。它们的科研系统REDCap则通过FHIR对这个存储库进行查询并获得患者档案。现在这个项目也还在扩展,通过和Apple的技术融合实现患者端对自己的临床档案的访问。 祝麟 ( @Lin.Zhu ):是的,FHIR API本身就能支持数据利用和数据共享。院里要做科研的话也可以通过FHIR API查询符合条件的患者集合,比如查2021年11月到12月间就诊的低密度脂蛋白低于100的II型糖尿病患者,这是个典型的数据利用问题。如果不借助一份整合好的数据,只凭借单纯的集成平台,那就需要把这样的请求解析并分解到不同的业务系统,再把结果整合起来,才能获得结果。实施难度大,业务压力大不说,效率还没有保障。直接从支持FHIR的存储库里获取数据要高效得多。 Jeff ( @Jieliang.Liu ):使用FHIR资源仓库还有一大好处是,FHIR资源仓库并不意味着中心化的存储,而是由一系列物理上分布的资源仓库组成。这些离散的仓库各自保存特定的数据,通过资源间的相互引用形成逻辑上的统一。由于这种引用本质上松耦合,因此能够形成一个逻辑上整合的数据中心。也因为物理离散而逻辑统一,FHIR存储库非常适合用在微服务架构中。当然无论如何,物理上分布的数据也仍然需要通过FHIR统一逻辑概念和语意,以便在异构的系统间和组织机构间进行共享。 因此在应用FHIR相关的技术方面,FHIR接口是个基本的合规要求,多Profile的支持和FHIR存储库则更加关键,这是两个会直接影响FHIR是否能落地的重要特性。 #小谈互联互通# 菁伟 (@Jingwei.Wang ):标准接口和整合数据存储,这个概念听着很耳熟。 Jeff ( @Jieliang.Liu ):当然。一是互联互通的推荐架构里,是包含临床数据中心的,也是对整合应用数据提出了要求。另外,InterSystems在介绍方案时,通常也是把集成平台、数据中心看作是一个解决方案中的两个组成部分来看的。 祝麟 ( @Lin.Zhu ):没错,随着互联互通这项工作的逐渐推广,相信各家医院和区域数据中心都会收到越来越多数据开放和应用的需求。基于FHIR的数据交换和数据利用会经历越来越多的讨论,我们也会见到大量的交互场景通过FHIR实现的案例,以及基于FHIR特性的智能应用的出现。 菁伟 (@Jingwei.Wang ):感谢两位工程师与大家分享FHIR的案例和FHIR协议落地时所需要的平台能力。FHIR除了资源和接口的定义之外,还有许多特性能够帮助医疗机构打通数据流程。作为一个面向互操作性的协议,相信未来我们还会见到更多通过FHIR支撑的业务场景。
文章
Claire Zheng · 三月 24, 2022

【极客聊吧】如何为用户提供更好的开发体验(下 )

众所周知,InterSystems IRIS的产品设计理念源于互操作性(Interoperable)、稳定性(Reliable)、直观(Intuitive)、可扩展性(Scalable),在云时代,InterSystems IRIS的云上操作与本地一样便捷,令用户体验有了明显提升。为了更高效地对InterSystems IRIS进行配置,我们还提供了哪些新特性?为了便捷地进行数据迁移,InterSystems IRIS最新版本提供了哪些解决方案?本期视频中,InterSystems中国销售工程师吕正之、马浩和WRC产品支持专家杨乐乐对此进行了解答。
文章
Jingwei Wang · 三月 24, 2022

创建REST 服务

REST是一种架构风格,而不是一种格式。尽管REST经常使用HTTP来传输消息,使用JSON来传递数据,但你也可以用XML或纯文本来传递数据。REST利用了现有的网络标准,如HTTP、URL、XML和JSON。 虽然它可以使用XML来描述数据,但它更常使用JSON,这是一个轻量级的数据封装器。 InterSystems REST服务 InterSystems REST服务由以下组件组成: 规范类(%REST.Spec的一个子类):这个类包含了REST服务的OpenAPI 2.0规范(Swagger)。InterSystems支持几个扩展属性,你可以在规范中使用。 调度类(%CSP.REST的一个子类):这个类负责接收HTTP请求并在实现类中调用合适的方法。 实现类(%REST.Impl的子类):这个类定义了实现REST调用的方法。 Web应用程序:它通过InterSystems Web Gateway提供对REST服务的访问。 使用API 管理工具创建REST服务 - 基于 OpenAPI 2.0规范 /api/mgmnt/ 可以使用/api/mgmnt服务来创建、更新和删除REST服务。 使用/api/mgmnt创建 .disp .impl 和 .spec 类 使用http://localhost:52773/api/mgmnt/v2/namespace/myapp 注意: 命名空间必须已经存在,myapp可以自己定义,使用POST。 生成成功消息: { "msg": "New application myapp created" } 创建Web应用程序 名字:/csp/namespace 分派类:myapp.disp 应用角色: %DB_%DEFAULT 补全实现类中的方法 使用^%REST Routine创建REST服务 - 基于 OpenAPI 2.0规范 do ^%REST 使用%REST.API类创建REST服务 - 基于 OpenAPI 2.0规范 可以用它来发现服务器上的REST服务,为这些REST服务生成OpenAPI 2.0规范,并在服务器上创建、更新、或删除REST服务。 使用%REST.API 创建 .disp .impl 和 .spec 类 set file="c:/temp/swagger.json" set obj = ##class(%DynamicAbstractObject).%FromJSON(file) do ##class(%REST.API).CreateApplication("petstore",.obj,,.new,.error) //examine error and decide how to proceed... ... 创建Web应用程序 名字:/csp/namespace 分派类:myapp.disp 应用角色: %DB_%DEFAULT 补全实现类中的方法 基于%CSP.REST 手动创建REST 服务 - 不需要定义OpenAPI 2.0规范 创建REST 分派类,继承 %CSP.REST 类 定义URL map Class REST.Interface.RestHandler Extends %CSP.REST { ​ Parameter CONTENTTYPE = "application/json"; ​ Parameter CONVERTINPUTSTREAM = 1; ​ Parameter CHARSET = "utf-8"; ​ XData UrlMap { <Routes> <Map Prefix="/coffee/sales" Forward="MyLib.coffee.SalesREST"/> <Map Prefix="/coffee/repairs" Forward="MyLib.coffee.RepairsREST"/> <Map Prefix="/coffee" Forward="MyLib.coffee.MiscREST"/> </Routes> } } ​ 创建REST 服务类,继承 %CSP.REST 类 REST 服务类URL map 定义,例如MyLib.coffee.SalesREST类中URL map定义REST 服务类 Class MyLib.coffee.SalesREST Extends %CSP.REST { ​ Parameter HandleCorsRequest = 1; ​ XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ] { <Routes> <Route Url="/request" Method="GET" Call="Request" /> <Route Url="/request" Method="POST" Call="Request" /> </Routes> } ​ /// 根据文档号,输出其HTML格式 /// pDocNo:文档编号 ClassMethod Request() As %Status { #dim tSC As %Status = $$$OK #dim e As %Exception.AbstractException Try { Set tSC = ##class(REST.Util).GetSales(pName) W tSC } Catch (e) { Set tSC=e.AsStatus() } Return tSC } } ​ 创建Web应用程序 名字:/csp/namespace 或其他名字 分派类:REST.Interface.RestHandler 应用角色: %DB_%DEFAULT
公告
Michael Lei · 三月 25, 2022

新的在线 Kubernetes 练习!

大家好! 对于那些参加了2021年虚拟峰会的体验实验室的人来说,你可能还记得其中一个实验室会议是围绕Kubernetes进行的。我们现在已经将该实验室转换为完全线上按需使用。你可以启动一个小型的虚拟机集群,并按照练习来管理你的Kubernetes集群,将InterSystems IRIS容器部署到其中,并观察它在摧毁一个吊舱时的自我修复性质。 如果你有兴趣,这是一个很好的Kubernetes介绍。请看这里: 用InterSystems IRIS 和 Kubernetes实现高可用
文章
Claire Zheng · 三月 29, 2022

什么是卓越?——InterSystems全球副总裁John Paladino

卓越是什么?是思维方式,理念,还是结果? 在InterSystems,我们用行动来定义卓越。卓越意味着设立非常高的标准并超越它;卓越意味着不管是最小的姿态,还是最大的努力都同等重要;卓越意味着积极主动,即使是在客户还不清楚的情况下也努力去了解客户真正需要的东西,在客户提问之前就准备好相应的解决方案;卓越意味着着眼未来,分析潜在趋势,发现机会并有效协同,将一个个创意转化成为可行动的计划。 卓越是驱动我们与像您一样珍贵的合作伙伴一起支持起全世界最核心的关键应用。卓越是我们为何和如何能持续解决问题,成为客户可信赖的合作伙伴,以及成为支撑最重要的关键系统背后的力量。我们全力追求卓越,为客户更好地解决问题。但是不要仅仅向我们提出问题,我们也非常欢迎您的创意和目标,让我们一起来实现它们!
问题
liu yangyang · 三月 29, 2022

指定的数据库用户/密码组合被拒: [08S01][461] [InterSystems IRIS JDBC] Communication link failure: Access Denied [08S01][461] Access Denied

主要问题: 默认安装后,有没有默认用户名,密码?远程jdbc连接报错,麻烦解答一下,谢谢 [InterSystems IRIS JDBC] Communication link failure: Access Denied [08S01][461] Access Denied 创建用户: addgroup iris useradd -g iris -d "/home/iris" -m -s "/bin/bash" iris passwd iris 安装过程: root@baec-ThinkPad-E480:/data/IRIS_Community-2021.2.0.651.0-lnxubuntu1804x64# ./irisinstall Your system type is 'Ubuntu LTS (x64)'. Enter instance name : IRIS Enter a destination directory for the new instance. Directory: /data Select installation type. 1) Development - Install InterSystems IRIS server and all language bindings 2) Server only - Install InterSystems IRIS server 3) Custom Setup type ? How restrictive do you want the initial Security settings to be? "Minimal" is the least restrictive, "Locked Down" is the most secure. 1) Minimal 2) Normal 3) Locked Down Initial Security settings ? What group should be allowed to start and stop this instance? iris Do you want to install IRIS Unicode support ? InterSystems IRIS did not detect a license key file Do you want to enter a license key ? no Please review the installation options: ------------------------------------------------------------------ Instance name: IRIS Destination directory: /data InterSystems IRIS version to install: 2021.2.0.651.0com Installation type: Development Unicode support: Y Initial Security settings: Minimal User who owns instance: root Group allowed to start and stop instance: iris Effective group for InterSystems IRIS processes: irisusr Effective user for InterSystems IRIS SuperServer: irisusr SuperServer port: 1972 WebServer port: 52773 JDBC Gateway port: 53773 Web Gateway: using built-in web server Not installing IntegratedML ------------------------------------------------------------------ Confirm InterSystems IRIS installation ? Starting installation Starting up InterSystems IRIS for loading... ../bin/irisinstall -s . -B -c c -C /data/iris.cpf*IRIS -W 1 -g2 Starting Control Process Allocated 254MB shared memory: 32MB global buffers, 80MB routine buffers Creating a WIJ file to hold 32 megabytes of data IRIS startup successful. System locale setting is 'zh_CN.UTF-8' This copy of InterSystems IRIS has been licensed for use exclusively by: InterSystems IRIS Community Copyright (c) 1986-2022 by InterSystems Corporation Any other use is a violation of your license agreement ^^/data/mgr/> ^^/data/mgr/> Start of IRIS initialization Loading system routines Updating system TEMP and LOCALDATA databases Installing National Language support Setting IRISTEMP default collation to IRIS standard (5) Loading system classes Updating Security database Loading system source code Building system indices Updating Audit database Updating Journal directory Updating User database Updating Interoperability databases Scheduling inventory scan IRIS initialization complete See the iboot.log file for a record of the installation. Starting up InterSystems IRIS... Once this completes, users may access InterSystems IRIS Starting IRIS Using 'iris.cpf' configuration file Starting Control Process Global buffer setting requires attention. Auto-selected 25% of total memory. Allocated 2420MB shared memory: 1965MB global buffers, 196MB routine buffers Creating a WIJ file to hold 99 megabytes of data This copy of InterSystems IRIS has been licensed for use exclusively by: InterSystems IRIS Community Copyright (c) 1986-2022 by InterSystems Corporation Any other use is a violation of your license agreement You can point your browser to http://baec-ThinkPad-E480:52773/csp/sys/UtilHome.csp to access the management portal. Installation completed successfully 启动实例: root@baec-ThinkPad-E480:/data# iris start iris IRIS is already up! 查看信息: root@baec-ThinkPad-E480:/data# iris list Configuration 'IRIS' (default) directory: /data versionid: 2021.2.0.651.0com datadir: /data conf file: iris.cpf (SuperServer port = 1972, WebServer = 52773) status: running, since Tue Mar 29 17:00:13 2022 state: ok product: InterSystems IRIS 连接信息: ip:x.x.x.x 端口:1972 指定数据库:user 用户:_SYSTEM 密码:system 连接报错信息: 指定的数据库用户/密码组合被拒: [08S01][461] [InterSystems IRIS JDBC] Communication link failure: Access Denied [08S01][461] Access Denied
公告
jieliang liu · 三月 30, 2022

[视频] InterSystems ObjectScript如何使用 VS Code调试器

HI 开发者们, 我们在bilibili 发布了新的视频! 看看VS Code的InterSystems ObjectScript的调试器如何帮助你浏览和检查代码。了解如何为调试类方法和production组件编写启动配置,并获得VS Code调试器界面的概述--包括变量部分、观察窗格和调试控制台。 请欣赏并继续关注!
公告
jieliang liu · 三月 30, 2022

2022年3月开发者社区更新

大家好,欢迎来到2022年3月开发者社区更新! 我们最近在InterSystems社区对开发者们的体验做了一些改进: 全新的社区内容搜索功能 综合社区数据 链接你的脸书账号 帖子页面更新:标签、作者块、草稿突出显示 下面让我们仔细看看。 社区搜 我们已经在社区网站上部署了一个全新的搜索引擎。有两个搜索选项: 快速搜索 高级搜索 通过DC快速搜索,你可以很容易地找到一个帖子/标签/用户并直接进入该网页。 在建议的选项中没有找到合适的东西? 试着通过点击🔍按钮使用DC高级搜索: 在这里,你可以轻松地为你的搜索查询添加高级参数: 按特定用户的帖子搜索 通过特定标签搜索 按特定的帖子类型或只按你的帖子搜索 你还可以按时间段和相关性对结果进行排序: 综合社区数据 现在你可以看到InterSystems开发社区的数据统计了: 链接你的脸书账号 在你的DC资料中添加Facebook链接,以认识新朋友,拉近彼此的距离。 进入你的DC用户资料-->编辑-->其他信息-->Facebook资料 帖子页面更新:标签、作者块、草稿突出显示 你问了 - 我们做到了! 现在DC标签出现在帖子的正文中。 另外,在帖子页面,你现在可以在右边的块中看到作者的联系信息: DC网站上的草稿现在是蓝色突出显示: 希望你喜欢我们的更新 在DC GitHub上提交您的改进请求和错误报告。或者在本帖的评论中发表您的建议。 请继续关注!
文章
Lilian Huang · 三月 30, 2022

[首次使用InterSystems IRIS] 互操作性: 它是如何工作的?

这篇文章的目的是为了说明如何使用互操作菜单实现系统集成。 图片左侧窗口是接受外部系统发送信息的窗口。 信息接收方式种类很多,如定时监控指定目录来读取文件,定期查询数据库,输入且等待信息输出,或直接调用其他应用程序系统传送信息。 在系统集成配置中创建IRIS 互操作性菜单,接收到存储在一个对象中的信息被称为一条消息message(以下统称为消息)。消息被发送到组件component (以下统称为组件)中做后续处理。 使用所有接收到的信息或仅使用其中的一部分就能用来创建消息。 假设您要将信息中包含的消息发送给外部系统。这种情况下,需要将该消息发送给负责请求外网处理的组件(图右侧)。接收到消息的组件会请求外部系统对其进行处理。 此外,假设一条消息需要人工审查、数据转换或附加数据。这种情况下,消息会被发送到图表中间的业务流程管理组件(BPM),该组件负责协调处理业务流程。 消息用于在每个组件之间发送和接收数据。当发送或接收消息时,消息会被自动存储在数据库中。 由于消息存储在数据库中,因此在数据转换前后可以检查其差异性。在操作期间,或过程中间重新开始(重新发送),可以检查作为问题根源的消息。在开发、测试和操作的每个阶段可以验证正在使用的消息状态。 一个简单的系统集成图将分为三个部分(业务服务Business Service、业务流程Business Process和业务操作 Business Operation),如下图所示。 还有一个称为“生产Production”的定义,它存储有关要使用的组件信息(例如,连接信息)。 各组件功能如下: 业务服务Business Service 负责从外部源接收信息,创建消息,以及向其他组件发送消息。 业务流程Business Process 该功能在收到消息时被激活,并负责协调流程(按预先定义的顺序调用组件、等待响应、等待人工审核结果等)。 业务运营Business Operation 此功能在收到消息时被激活,会请求外部系统处理该消息。 消息是用于在组件之间发送和接收数据。 当收到一个消息时,业务服务以外的所有组件开启处理流程。 问题是,创建和使用此消息的目的是什么? 通过创建消息可获取中继到外部系统的数据并检索进入业务服务。 由于不是所有的外部系统都用相同类型的数据格式连接到 IRIS,并且要中继的内容各不相同,因此生产者可以根据信息自由定义消息类别。 有两种类型的消息:请求(= 请求消息)和响应(= 响应消息)。触发组件激活的消息被称为request(=请求消息),组件处理后响应的消息称为response(=响应消息)。 这些消息在考虑中继流程时会被设计。 在接下来的文章中,我们将使用一个案例来概述生产、消息和组件的创建。 上一篇链接,请参考:《首次使用InterSystems IRIS 》-让我们来使用互操作性!链接如下:https://cn.community.intersystems.com/post/%E3%80%8A%E9%A6%96%E6%AC%A1%E4%BD%BF%E7%94%A8intersystems-iris-%E3%80%8B-%E8%AE%A9%E6%88%91%E4%BB%AC%E6%9D%A5%E4%BD%BF%E7%94%A8%E4%BA%92%E6%93%8D%E4%BD%9C%E6%80%A7
文章
Lilian Huang · 三月 30, 2022

[首次使用InterSystems IRIS] 互操作性: 一个Production是什么?

这篇文章是前面文章[首次使用InterSystems IRIS] 互操作性: 它是如何工作的?的延续。 在上一篇文章中,解释了互操作性菜单如何用于系统集成。 在本文中,我想解释如何用互操作菜单开发系统集成。 首先,您想创建什么样的业务流程? 请一边思考,一边开始以下内容。 Production(生产) 消息 组件 业务服务 业务流程 业务运营 Production被定义和用作指定系统集成所需的组件及存储组件的配置,这些配置通过管理门户界面使用(内部被存储为生产的类定义)。 例如,假设您正在创建一个业务服务,该服务定期处理放置在指定目录中的文件。 在这种情况下,有必要准确配置要监测的目录和要处理的文件。 一个生产就是预先准备好用于存储这些配置。 这些配置取决于发送和接收数据的组件所使用的适配器。 适配器是用于简化与外部系统连接的类,有些是协议特定的,如 Mail/File/SOAP/FTP/HTTP/SQL/TCP,有些是标准特定的,如 HL7。 有关适配器的更多信息,请参阅文档(protocol-specific adapters and adapters related to EDI documentation) 由于我们将必要的组件定义为Production,“启动Production”将启动系统集成,而“停止Production”将停止系统集成。 完成Production需要的开发是系统集成所需组件的创建,具体包括以下内容: • 信息 • 组件(业务服务、业务流程、业务运营) • 数据转换等。 上面的内容会在后面的文章中慢慢讲解。 首先,让我们使用Production示例来启动Production,并在检查配置的同时通过查询数据来检查消息处理的流程。 模版可以从这里下载https://github.com/Intersystems-jp/selflearning-interoperability。 如使用容器,请使用 git 克隆 下载示例代码,导航到克隆的目录,然后运行 docker-compose up -d 就这么简单! 请在此处参考流程here (创建容器需要一些时间)。 如果不使用容器,下载示例后新建一个命名空间,并将src文件夹下的所有类定义文件(extension .cls)导入创建的命名空间。 更多关于创建命名空间的过程,请参考本文this article.07:03之后的视频。 有关示例代码的更多详细信息,请参阅README。 准备就绪后,访问管理门户(更改 Web 服务器的端口号以匹配您的环境)。 http://localhost:52773/csp/sys/UtilHome.csp 进入管理门户 > 互操作性 > 配置 > 生产。 如果您使用的是容器以外的方法,请连接到您导入源代码的命名空间,访问[[配置] > [生产],,单击[打开] 按钮,选择[开始] > [生产],,然后单击 [开始] 按钮。 ※ 如果您使用容器以外的东西,则需要进行一些初始设置。 请在尝试以下内容之前设置以下描述的内容contents described below。 生产页面将为每一个 “服务”、“流程”和“操作”组件显示为[● 组件名称] ]。 单击组件名称可更改屏幕右侧“设置”选项卡的内容。 例如点击Start.GetKionOperation(单击),显示如下。 组件有[HTTP Server] 和 [URL] 配置来连接Web API. 配置底部有一个 [appid] 字段,您可以在其中输入您获得的 API 密钥。 [appid] 附近有一个 [lang] 字段,设置为“ja”(“ja”=日语)。 [lang] 设置来自 OpenWeather 的响应语言。 如用英语,设置为“en”。 完成设置这些配置后,单击“应用”按钮。 如果您使用的是容器,则该配置完成。 欲了解更多信息,请点击here。 如果您正在尝试容器以外的其他配置 请提前做好以下两项设置: 1) 配置SSL客户端。 由于要连接的 Web API 将使用 HTTPS 进行通信,因此请提前在 IRIS 端配置 SSL 客户端。 为了匹配生产模版的设置,我们将使用名称 [openweather]。 生产中的设置如下: 单击管理门户 > [系统管理] > [安全] > [SSL/TLS 配置] > [新建配置] 按钮,在“配置名称”字段中输入“openweather”,然后单击“保存”按钮 结束。 2) 为 REST 创建一个基本 URL 在示例制作中,为使能够通过 REST 输入信息,我们已经进行了配置,基本 的URL for REST配置需要在 IRIS 端。 在生产示例中,我们将配置 /启动设置为基本 的URL。 由于 Start.REST 类存在于导入示例的命名空间中,因此我们将指定该类作为调度类,并添加 %All 作为应用程序角色,以在访问时省去身份验证。 管理门户 > 系统管理 > 安全 > 应用程序 > Web 应用程序路径 > 单击“创建新的 Web 应用程序”按钮。 在名称字段中,指定 /start; 在命名空间字段中,指定从中导入样本的命名空间; 在 Dispatch Class 字段中,指定 Start.REST; 在允许的身份验证方法字段中,选择“未Unauthenticated”,然后保存文件。 保存后,将 %All 角色添加到“application role ”选项卡上的应用程序角色中。 尝试发送数据 全部配置好后,尝试用业务服务通过 REST 发送信息并让它运行。 http://localhost:52773/start/weather/Takoyaki/Osaka 上面的例子是假设某人在大阪购买了“章鱼烧”的 URL。 运行后画面如下。 检查已发送到生产的消息。 在管理门户 > 互操作性 > 配置 > 生产中,单击以下服务: 选择屏幕右侧的“消息”选项卡,然后单击标题字段列下方的任意数字。 如果您没有看到它,请重新加载您的浏览器。 使用 Visual Trace 页面,您可以看到组件之间发送和接收的消息信息。 您可以看到天气信息是从 Web API 检索并在浅蓝色框架中发送回来的。 通过这种方式,您可以使用跟踪来查看当时正在发送和接收哪些数据以及以什么顺序。 在整篇文章中,我们已经确认了Production已经定义了需要的组件和参考示例代码设置的系统集成 我们还确认,我们可以使用 Visual Trace 页面按时间顺序参考通过 Production 的消息。 在下一篇文章中,我们将讨论创建此跟踪中显示的“消息”背后的概念以及如何实际定义它。
公告
Claire Zheng · 四月 6, 2022

【投票时间】InterSystems开发者竞赛:Globals

Hey 开发者们, 投票周开始了! 来为你最欣赏的应用投上一票吧!InterSystems开发者竞赛:Globals! 🔥 为你最欣赏的应用投票: 点此投票 🔥 如何投票?请看以下细节。 Experts nomination(专家提名) InterSystems experts:InterSystems经验丰富的专家评审团将选出最好的应用程序,在Experts nomination(专家提名)中提名奖项。 有请InterSystems专家: ⭐️ @Benjamin.DeBoe, Product Manager⭐️ @Alexander.Koblov, Support Specialist⭐️ @Robert.Kuszewski, Product Manager⭐️ @Daniel.Kutac, Senior Sales Engineer⭐️ @Stefan.Wittmann, Product Manager⭐️ @Joel.Solon, Senior Technical Trainer⭐️ @Eduard.Lebedyuk, Sales Engineer⭐️ @Timothy.Leavitt, Development Manager ⭐️ @Steve.Pisani, Senior Solution Architect⭐️ @Evgeny.Shvarov, Developer Ecosystem Manager Community nomination(社区提名) 每一个用户来说,你投出的每一票的分数,是根据下面两类中最高的分数来计: 条件 奖项排名 第一名 第二名 第三名 在社区发布一篇帖子,并在Open Exchange中上传一个App 9 6 3 在社区发布了至少一篇帖子 或 在Open Exchange上传了一个App 6 4 2 在社区进行了任何有效贡献,如回帖、提问、发帖等 3 2 1 等级 奖项排名 第一名 第二名 第三名 Global Masters 的 VIP 级别 或 InterSystems 产品经理 15 10 5 Global Masters 的 Ambassador级别 12 8 4 Global Masters的Expert 级别或开发者社区版主 9 6 3 Global Masters的Specialist级别 6 4 2 Global Masters的Advocate级别,或 InterSystems员工 3 2 1 Blind vote! 每个应用获得的投票数将对所有人不可见。我们会每天在这个帖子(英文原帖)的评论区发布一次排行榜。 在 竞赛页面 ,各项目将按以下进行排名:发布得越早,排名越靠前。 P.S. 不要忘记订阅本文(请订阅英文原帖),点击铃铛图标,即可收到最新评论。 在参与投票前,您需要: 登录 Open Exchange – 使用开发者社区账号即可。 在社区内进行有效贡献 ——回答问题、发帖、在Open Exchange发布新应用等等都可以,然后你的账号才可以参与投票。点击查看本帖 ,了解如何更好地成为有效的社区贡献者! 投票期间,如果你改了主意,可以随时将票改投给其他项目。 来支持你喜欢的项目吧! 注意:在投票期间,参赛者可以继续修复bug,提升应用,所以投票者不要错过最新发布的版本哦~
公告
Claire Zheng · 四月 7, 2022

【报名参会】聊聊数据平台与三级等保!

4月12日,新一期“极客俱乐部”在线分享即将推出,InterSystems中国技术总监乔鹏将分享“InterSystems数据平台与三级等保”这一主题,聊聊数据平台如何保护信息安全,以及如何配置、管理数据平台,以满足三级等保要求。点击链接报名参会,或扫描下方二维码参会。
文章
Claire Zheng · 四月 7, 2022

谈谈InterSystems IRIS数据平台的部署灵活性与TCO降低

众所周知,InterSystems IRIS的产品设计理念源于互操作性(Interoperable)、稳定性(Reliable)、直观(Intuitive)、可扩展性(Scalable),在云时代,InterSystems IRIS的云上操作与本地一样便捷,令用户体验有了明显提升,除此之外,为了更高效地对InterSystems IRIS进行配置,我们还提供了哪些新特性?为了便捷地进行数据迁移,InterSystems IRIS最新版本提供了哪些解决方案?点击查看视频,或浏览文字版。 马浩 @Hao.Ma (老马 ): 我想介绍一下杨乐乐(Ida),她是我们资深的WRC(全球响应中心)人员,几乎所有我们现有客户提出的技术问题都会汇集到WRC中,那么Ida,关于如何为客户提供更好的开发体验,有什么好的内容跟我们分享吗? 杨乐乐 @Ida.Yang (Ida): 大家好,我是杨乐乐,很高兴和大家分享这一主题。我先给大家介绍一下InterSystems IRIS的产品发布与部署。InterSystems IRIS 的产品发布主要有两条线,主版本和持续交付(CD,Continuous Delivery)版本,其中主版本一年发布一次,主版本的发布包括安装包和容器映像两种形式,比如2021.1.0;持续交付版本一个季度发布一次,仅仅会以容器映像的形式发布,比如2020.2.0、2020.3.0、2020.4.0。 在Docker容器中部署InterSystems IRIS®是灵活的、高度可复用的,并且非常适合公共云平台。容器将代码和数据干净地分开,并支持持续集成CI/持续交付CD和DevOps,可以更快地将产品的改进推向市场,我们的季度发布版本正是为了助力客户加速这一过程。 为了更高效地对InterSystems IRIS进行配置,我们还提供配置合并功能,这个功能可以让您在一次操作中对InterSystems IRIS实例的配置做任意多的修改。实现方式也十分直接明了,您只需在一个声明性的配置合并文件中声明配置信息,无论是在实例初始部署时还是以后的修改配置,都可将声明中的配置信息应用于实例。配置合并可以很容易地用于从同一个容器映像或工具包中自动部署具有不同配置的多个实例,以及同时重新配置多个运行中的实例,实现集群或其他多实例部署场景下的的自动重新配置。 除了针对实例的配置合并,InterSystems IRIS还提供配备非常直观的云管理器,InterSystems Cloud Manager(ICM),通过ICM我们可以直接配置公共或私有云的基础设施并在其上部署服务,它为InterSystems产品的容器化部署带来了自动化和基础设施即代码(IaC)的所有优势。通过将API编入可共享和版本化的声明性配置文件,ICM让你安全、可预测地持续创建、修改和改进生产基础设施及服务。 ICM现在支持的基础设施即服务(IaaS)公共云平台包括谷歌云、亚马逊AWS、Microsoft Azure和腾讯云,当然您也可以在您的私有VMware云中轻松配置和部署InterSystems IRIS。除此之外ICM也支持您在现有的基础设施上进行部署。 InterSystems IRIS提供的另外一个对容器化的支持是InterSystems Kubernetes Operator(IKO),众所周知,Kubernetes是一个开源的协调引擎,用于自动部署、扩展和管理容器化工作。IKO通过对Kubernetes的扩展,支持在任何Kubernetes平台上为InterSystems IRIS®部署集群、分布式缓存集群以及独立实例,包括部署时可以选择是否配置我们的高可用性镜像。同时,IKO还增加了特定的集群管理功能,比如它实现了向集群添加节点的自动化等等。 吕正之 @Louis.Lu (Louis): 云确实是一种趋势,很高兴听到InterSystems对于云支持特性的相关总结,对于云上的操作可以和在本地操作一样方便,突出了一个自动化和便捷性的特点,这对客户体验是一个明显的提升。 杨乐乐 @Ida.Yang(Ida): 确实是这样。 除了以上对云平台、容器化支持的内容,我还想跟大家分享两个新特性。 第一个是InterSystems IRIS现在也可部署于基于ARM架构的平台,包括完整的安装版和容器版。通过对ARM架构的支持,客户对于平台的选择可以更加灵活,能够将他们的应用程序部署到具有成本效益的硬件平台上,包括物理平台和云平台。 另外一个是与客户日常运维相关的一个更新,同时这个更新也是对于从Caché、Ensemble就存在的一个旧有问题的答复。相对于传统关系型数据库以表格行和列的方式储存,IRIS的前身Caché采取的是紧密型的存储方式,这样的好处是,同样的数据,Caché所使用的存储空间会减少30%-40%。但是另一个方面Caché为了保证数据的高速写入以及数据的一致性等问题,采用了多段写入的方式,这样一来就会产生很多记录数据库操作的日志,也就是Journal日志,特别是在业务高峰期,或者我们在大批量处理历史数据的时候,Journal日志所在的磁盘空间会长得非常快。同时另外一方面随着越来越多文档数据、流数据的保存,这一部分格式的数据在所有数据中的比例也越来越大。为了解决上面的问题,节约空间占用,InterSystems IRIS即将推出的下一个版本中,会加入对Journal日志以及流数据压缩算法的优化,使用优化后的压缩算法磁盘所占空间将会缩减30%,其中XML和其他文档类型的压缩率甚至能够高达80%。 吕正之 @Louis.Lu (Louis): 真不错,日志所占磁盘空间的快速增长确实是很多客户关心的问题,很高兴现在我们在新的版本中做出了这么大的改进。这让我想到了另一个问题,也是很多客户关心的,就是数据迁移,不管是从其他的数据库或者是CSV文件中如何快速方便的将数据迁移到InterSystems IRIS,有什么好的方式推荐吗? 杨乐乐 @Ida.Yang(Ida): 是的,数据迁移也是客户日常会碰到的挑战。现在好消息是,在最新版本中我们加入了Data Loader的功能,它可以方便快捷地从CSV文件或通过JDBC加载源数据到InterSystems IRIS SQL表中。它可以使用类似于SQL语句中的INSERT语句那样,以COLUMNS和VALUES子句的方式来完善该命令,以适用更多的应用场景,这很类似于前面IntegratedML中可以使用USING子句。 吕正之 @Louis.Lu (Louis): 嗯,真高兴我们可以在InterSystems IRIS的下一个版本中看到这么多好的功能,所有的这些功能都是为了更好提升客户的开发、使用感受。 大家都知道我们的IRIS是由互操作性(Interoperable)、稳定性(Reliable)、直观(Intuitive)、可扩展性(Scalable)四个单词首字母的缩写构成,这代表了IRIS的四个主要特点和核心设计理念,但同时在我们内部还有另一个缩写,也代表了我们的设计初衷,这就是It Really Is Simple,也就是“它真的很简单”的意思。我们尽可能将构建一个富数据应用所需的所有工具汇集到一个平台中,不需要开发者寻找适合数据存储、数据处理、业务流程编辑、数据分析等不同部分的不同技术框架,省去了不同的知识堆栈、异构系统集成、多开发调试环境切换的烦恼,产品根据市场技术发展、客户需求等不断做出调整与更新,但变化不离其宗—— 它真的很简单(It Really Is Simple)。 好了,这次我们的分享就到这里,再次感谢各位的观看。
文章
jieliang liu · 四月 8, 2022

Kettle 中使用JDBC链接 InterSystems IRIS

使用 JDBC 链接 InterSystems : ​将IRIS jdbc 驱动拷贝到 安装文件夹/lib 下 ​自定义链接URL: jdbc:IRIS://ipAddress:superserverPort/namespace ​​自定义驱动器类名称: com.intersystems.jdbc.IRISDriver 然后就可以像其他关系型数据库使用的方式来使用Kettle。