中文社区的同学们大家好!

如你所知,从2022年9月5日-10月24日(北京时间),我们正在举办🏆InterSystems开发者社区中文版首届技术征文大赛🏆(点击链接进入参赛页面,浏览所有参赛文章

截至目前,我们已收获了20余篇佳作yesyesyes

作为此次大赛重要奖项“专家提名奖”评比的重要部分,我们的专家评审团已组建成团!

1 0
0 27
InterSystems 开发者社区汇聚了 11,571 位出色的开发者
程序员可以在这里学习、分享、了解最新动态、成长,以及收获快乐!

亲爱的社区同学们!

2022年9月5日-10月24日,我们正在举办InterSystems开发者社区中文版首届技术征文大赛!

🏆InterSystems开发者社区中文版首届技术征文大赛🏆(点击链接进入参赛页面,浏览所有参赛文章

2022年9月27日(下周二)11:00-11:30,我们将进行一次针对此次征文大赛的线上宣讲,欢迎您通过腾讯会议参加,了解关于此次征文大赛的信息,针对感兴趣的问题提问。

#腾讯会议信息

会议主题:InterSystems 社区技术征文大赛宣讲&解读
会议时间:2022/09/27 11:00-11:30 (GMT+08:00) 中国标准时间 - 北京

0 0
0 14

嗨,开发者们!

秋高气爽之际,我们很高兴地宣布启动🏆InterSystems开发者社区中文版首届技术征文大赛 🏆(←点击链接进入参赛页面,浏览所有参赛文章)!

从2022年9月5日-10月24日(北京时间),欢迎热爱InterSystems技术的你来投稿,撰写与InterSystems技术相关的文章。

🎁参与奖 我们为每一位成功参赛的作者准备了礼品!

🏆优秀文章大奖 Apple iPad; Beats Fit Pro; HUAWEI WATCH; Logitech键盘; WD固态硬盘;KEEP智能手环

  Add to calendar Apple Google Outlook
2 0
0 96
Contestant
文章
Chang Liu · 九月 22 阅读大约需 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(必要)

10 7
0 82
//迭代取值
IRISIterator subscriptIter = irisNative.getIRISIterator("^liubo.clazz.personD");
System.out.println("================迭代开始===================");
while (subscriptIter.hasNext()) {
    String subscript = subscriptIter.next();
    //此处怎么获取此节点的字符串进行解析呢,另外java可以直接访问ensemble的global么

    System.out.println(node);

}
0 3
0 26
Contestant

 在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)

6 3
0 41
Contestant
文章
lingyan zhou · 九月 27 阅读大约需 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的学生(即遍历唯一索引)、和访问某学校的所有人(即遍历非唯一索引)。

现假设学生表/对象定义如下:

4 2
0 56
Contestant
文章
姚 鑫 · 九月 12 阅读大约需 3 分钟
第三十章 管理许可(三)

第三十章 管理许可(三)

确定许可证容量和使用情况

如何知道已使用了多少许可证以及由谁使用?类中的 %SYSTEM.License 提供了到 IRIS 许可证应用程序编程接口 (API) 的接口,并提供了许多方法和相关查询,可以使用这些方法和相关查询来查询许可证容量和当前使用情况。

可以使用 %Library.%ResultSet 类的 RunQuery 方法运行多个许可查询。例如:

USER>do ##class(%ResultSet).RunQuery("%SYSTEM.License","Summary")

LicenseUnitUse:Local:Distributed:
当前使用的软件许可单元 :2:2:
使用的最大软件许可单元数 :3:2:
授权的软件许可单元 :25:25:
当前连接 :2:2:
最大连接数 :6:6:

可以从管理门户的许可证使用页面(系统操作 > 许可证使用)查看这些查询的输出,详细信息如下表所示:

1 1
0 38
Contestant
文章
zhanglianzhu zh... · 19 hr 前 阅读大约需 3 分钟
Cache死循环检测和申明式事务

使用Cache的两个痛点问题:

一、Cache作为后关系型数据库,使用其提供M语言操作Global数据结构。可以达到极快的查询速度。M语言的set赋值和初始化没有区分,加之是弱类型,非常容易出现死循环,就算你是多年老手也一个不小心就踩坑。我就经历过改代码即使很小心还是出了死循环把数据库tmp撑满的事故。

二、M语言作为完备的编程语言,结合cache数据库操作数据实在是不要太方便。同时一个复杂的业务提交到数据库通过一个M逻辑全部处理完成,极大的减少了app和数据库交互次数。复杂业务的事务就是一方面,通过TSTART、TROLLBACK 、TCOMMIT,前台一次数据库交互后台就可能做了几十张表的更新操作。直接使用事务是容易,但是极易引入开放事务锁表(你自己就算很小心,也难保调别人接口别人事务不完善,而你又没检测事务层级),锁表之后结束进程导致数据回滚。

 

解决办法:

据我观察出现上面两个问题的原因,第一个是M语言弱类型和没单独的初始化命令导致,就算你是老手、工作细致也难以避免。第二个不是Cache特有的,通用关系库也有事务写的不完整的问题,事务问题对开发要求高或者从框架设计可以解决。

2 1
0 59
Contestant
文章
water huang · 九月 21 阅读大约需 4 分钟
对 %XML.PropertyParameters类的探索

日常工作中,我们使用xml 应该是比较多的,早期的ensemble或者cache,对JSON的支持不是很好,但是对xml支持比较好。因此早期的接口方式中,webservice+xml的方式很常用。而对象导出为xml最简单的方式就是类继承%XML.Adaptor。继承该类后,就可以使用很多xml的特性,以满足各种需求。虽然看不到对象转为xml的具体实现,但是配置了参数,就可以实现更多的效果。那么想自定义一些参数呢?如果有人打开过它的定义,可以看到类上面有个 “PropertyClass = %XML.PropertyParameters”,那么我们其实在需要xml参数的同时,又要自定义参数,就可以自己写个属性类,继承于%XML.PropertyParameters。

4 1
0 18
Contestant

研究Healthshare2018在已经安装完成使用的情况下,部署IIS,并代理平台。之前看到可以通过单独的CSP Gateway安装包进行处理这种问题,该文主要是获取不到该安装包的时候可以如何实现IIS的处理。

第一步:首先按照网上教程部署IIS服务。安装完成之后会在C盘创建一个名叫intepub的包。

第二步:在inetpub包下面直接插入CSPGateway 。这个包是在其他先安装IIS下,后安装Healthshare的CSP网关服务的时候在inetpub下面自动插入的包,直接找一个复制过来。

第三步:打开IIS,创建一个叫csp的网站,按照下图配置。

  第四步:在点击模块进行CSPms模块的添加。
 

3 1
0 28

最近遇到一个问题,需求是把大量的数据写入到第三方数据库oracle,目前用的是EnsLib.SQL.OutboundAdapter 方案,但是感觉队列很容易卡死,不知道是什么原因。然后想换成  set res = ##class(%ResultSet).%New("%DynamicQueryGW:SQLGW") 这种方式执行插入和更新。但是它返回的错误是网关调用失败,我希望得到具体的错误,我用这个对应额sql语句去 navicat执行就能提示出明确的错误!有大佬处理过类似的问题吗?有更好的方案吗?

0 1
0 28

*** Recovery started at Wed Sep 28 08:14:28 2022
     Current default directory: d:\dhc\devsoftware\ensemble\mgr
     Log file directory: d:\dhc\devsoftware\ensemble\mgr\
     WIJ file spec: d:\dhc\devsoftware\ensemble\mgr\CACHE.WIJ
Recovering local (d:\dhc\devsoftware\ensemble\mgr\CACHE.WIJ) image journal file...
Starting WIJ recovery for 'd:\dhc\devsoftware\ensemble\mgr\CACHE.WIJ'.
  0 blocks pending in this WIJ.
WIJ pass # is 0.
Starting fast WIJ compare
Finished comparing 24 blocks in 0 seconds
Exiting with status 3 (Success)

0 1
0 9

Journaling is NOT on. Updates will NOT be journaled
*** Missing previous 1 files that may contain TSTARTs

ERROR: <ZFILE>ScanForOpenTrans+42^JRNRESTB

There is a problem with searching for open transactions in older files.
If you decide to continue, transactions started in files earlier than
the first one to be restored might remain open after the restore.

Do you want to abort? Yes => No

请问什么情况下会触发出现Do you want to abort?

在门户网站查看数据库Global Journal也是勾选上的.

0 1
0 12

亲爱的社区开发者们,

我很高兴地向大家介绍一位我们的新版主 @Tete Zhang (张特特)!

@Tete Zhang (张特特) 目前任职于InterSystems中国,在WRC部门任职资深技术支持专家一职。

以下是@Tete Zhang (张特特)的自我介绍:

在2015年夏天实习结束后,我于2016年正式作为技术支持工程师加入InterSystems,从那时起,我在InterSystems全球支持中心北美分部工作了六年,2022年,我调职至北京,服务于InterSystems中国,希望能为成长中的中国市场出一份力。

很高兴可以在社区与大家相遇,希望能与大家一起努力,创造更精彩的社区!

0 0
0 19

1. VMWare快照引起的网络中断导致非计划内主备机切换问题

1.1 问题描述

在创建虚拟机快照时,虚拟机需要短时间的冻结,这个短时间冻结通常指虚拟机静默,在静默过程中网络连接处于中断状态。由于数据库的不断增长,使用VMWare快照的方式对虚拟机进行备份的时长也会不断增加,当对虚拟机进行快照的时长长于InterSystems镜像服务质量 (QoS) 超时时间,即当主机网络中断超过QoS超时时间,仲裁机与备机观察并相互确认与主机的连接丢失后,将发起切换过程,使原备机成为主机并将虚拟IP从主机MAC地址解绑后重绑定到备机的MAC地址上。特别需要注意的是,在这种由于网络中断引起的切换中,仲裁与备机都无法得知主机的实际工作状态。因此,在主机网络连接恢复后,为了为了避免因切换期间主机还在处理数据导致主备机间数据不一致,备机主动发起请求让主机下线,关闭主机,此时主机状态显示为关闭(Down)。

1 0
0 5
Contestant
文章
姚 鑫 · 九月 24 阅读大约需 14 分钟
第四十二章 使用多个 IRIS 实例(二)

第四十二章 使用多个 IRIS 实例(二)

控制 IRIS 实例

iris 命令支持终端以外的许多功能,并以 iris function instname arguments 格式调用,其中 instname 是在安装期间选择的实例名称,参数取决于函数。

重要提示: iris help 命令显示所有命令函数和参数; IRISHelp.html 文件位于 install-dir\Help 目录中。 iris 命令的某些功能在本文档中没有列出,但在帮助显示中显示。

1 0
0 8
Contestant
文章
姚 鑫 · 九月 28 阅读大约需 3 分钟
第四十六章 功能跟踪器收集使用统计信息

[toc]

第四十六章 功能跟踪器收集使用统计信息

作为 不断努力改进其产品以满足客户需求的一部分, 在 IRIS® 数据平台中包含一个名为 Feature Tracker 的软件实用程序,该软件实用程序收集软件模块使用情况的统计数据。本主题介绍特征跟踪器。

为什么 InterSystems 收集统计数据

Feature Tracker 收集的统计数据记录软件模块是否存在并在给定的 IRIS 实例中使用。 Feature Tracker 每周通过 https 将此信息发送给 InterSystems。这些统计数据有助于 InterSystems 规划开发和支持。
收集的信息不包括任何应用程序数据。

0 0
0 4
Contestant
文章
姚 鑫 · 九月 5 阅读大约需 4 分钟
第二十三章 使用任务管理器(一)

第二十三章 使用任务管理器(一)

要访问任务管理器,请导航至系统操作 > 任务管理器。

还可以使用终端与任务管理器进行交互,如使用 ^TASKMGR 部分所述。

注意:任务管理器每 60 秒轮询一次以查看是否有要运行的任务。当单击立即执行操作来安排任务时,在新安排的任务实际运行之前可能会有长达 60 秒的延迟。

新任务

新任务选项启动任务计划程序向导。此工具允许安排新任务运行。

注意:还可以使用任务计划程序向导通过从“任务计划”页面选择现有任务来编辑现有任务。

1 0
0 11
文章
Jingwei Wang · 九月 20 阅读大约需 2 分钟
在虚拟化环境中使用镜像的注意事项

在虚拟化环境中使用镜像,构成镜像的InterSystems IRIS实例被安装在虚拟主机上,创造了一个混合的高可用性解决方案,将镜像的优点与虚拟化的优点结合起来。镜像通过自动故障切换对计划内或计划外的故障提供即时响应,而虚拟化HA软件在计划外的机器或操作系统故障后自动重新启动承载镜像成员的虚拟机。这允许失败的成员迅速重新加入镜像,充当备份(或在必要时作为主机)。

当镜像被配置在虚拟化环境中时,请参考以下建议:

1 0
0 4
文章
Michael Lei · 九月 24 阅读大约需 2 分钟
2022亚太地区数字医疗五大趋势(摘要)

亚太地区的医疗数字化环境正在快速发展。在不断增长的消费者需求、快速发展的技术和更复杂的护理需求的驱动下,医疗机构正面临着提供数字优先、无缝、可持续的医疗服务的压力。

网络攻击不断增加、人们对安全问题的关注也越来越多、不断上升的医疗成本,以及数据的爆炸性增长,医疗机构正在转向数字医疗技术,以希望把复杂的事情变得简单。

在2022年,哪些趋势正在塑造亚太地区医疗服务的未来?哪些机会是成熟的创新?医疗行业领导者如何确保他们的组织能够做好准备来利用新出现的机会?

趋势一  不断增长的数据量带来了复杂性

在我们寻找新的方法来利用数据的同时,数据量继续上升,越来越多的数据被综合起来,以建立有意义的联系并提供可指导行动的洞察。

趋势二  人工智能在医疗领域的应用加速

随着医疗行业在人工智能成熟度方面赶上其他行业。数据既是一个关键的成功因素,也是人工智能成功应用的一个障碍。

趋势三  互操作性解决方案释放数据的真正力量

随着部署互操作性解决方案的成本降低,在组织内部和外部,实现真正的互操作性的梦想也在逐步实现。

0 0
0 9
Contestant

简单分享下在医院实际业务过程中%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)

1 0
0 4