公告 Claire Zheng · 九月 15, 2021

亲爱的社区开发者们,大家好!

我们诚挚地邀请您参加与InterSystems开发者竞赛(InterSystems IRIS Analytics)竞赛优胜者交流 online meetup!

日期 & 时间: 美国东部时间2021年9月17日(周五)12:00;北京时间2021年9月18日(周六)0:00-1:00

在此次线上交流会上,您将了解到: 

  • 优胜者简介
  • 优胜者提交项目的简短demo
  • 关于项目中使用到的技术的开放探讨、问答,以及下一场开发者竞赛的安排。

0
0 202
文章 姚 鑫 · 九月 15, 2021 10m read

第十六章 SQL命令 CREATE TABLE(三)

字段数据约束

数据约束控制字段允许使用的值、字段的默认值以及数据值使用的排序规则类型。所有这些数据约束都是可选的。可以按任何顺序指定多个数据约束,并以空格分隔。

NULL和NOT NULL

NOT NULL数据约束关键字指定该字段不接受空值;换句话说,每条记录都必须为该字段指定一个值。NULL和空字符串('') IRIS中是不同的值。可以在接受字符串的字段中输入空字符串,即使该字段定义了NOT NULL限制也是如此。不能在数值字段中输入空字符串。

NULL数据约束关键字显式指定此字段可以接受空值;这是字段的默认定义。

UNIQUE

唯一数据约束指定此字段仅接受唯一值。因此,没有两条记录可以包含该字段的相同值。SQL空字符串('')被视为数据值,因此在应用了UNIQUE数据约束的情况下,任何两条记录都不能包含此字段的空字符串值。NULL不被视为数据值,因此唯一数据约束不适用于多个NULL。要限制字段使用NULL,请使用NOT NULL关键字约束。

  • 唯一数据约束要求指定字段的所有值都是唯一值。
  • UNIQUE fields constraint(使用CONSTRAINT关键字)要求一组指定字段的所有值在串联在一起时产生唯一值。不需要将各个字段限制为唯一值。

定义为分片表的表对UNIQUE数据约束的使用有额外的限制。

0
0 343
文章 姚 鑫 · 九月 13, 2021 9m read

第十五章 SQL命令 CREATE TABLE(二)

全局临时表

指定GLOBAL TEMPORARY关键字将表定义为全局临时表。表定义是全局的(对所有进程都可用);表数据是临时的(在进程期间持续存在)。相应的类定义包含一个附加的类参数SQLTABLETYPE=“GLOBAL TEMPORARY”。与标准的 IRIS表一样,ClassType=Persistent,并且类包含Final关键字,表示它不能有子类。

无论哪个进程创建临时表,临时表的所有者都会自动设置为_PUBLIC。这意味着所有用户都可以访问缓存的临时表定义。例如,如果存储过程创建了一个临时表,则允许调用该存储过程的任何用户都可以访问该表定义。这仅适用于临时表定义;临时表数据特定于调用,因此只能由当前用户进程访问。

全局临时表的表定义与基表相同。全局临时表必须具有唯一的名称;尝试为其提供与现有基表相同的名称会导致SQLCODE-201错误。该表将一直存在,直到显式删除(使用DROP TABLE)。可以使用ALTER TABLE更改表定义。

下面的嵌入式SQL示例创建一个全局临时表:

ClassMethod CreateTable3()
{
	d $SYSTEM.Security.
0
0 311
文章 Claire Zheng · 九月 13, 2021 1m read

针对新近面向中国推出的InterSystems IRIS医疗版互联互通套件,InterSystems将在9月17日(本周五)举办“InterSystems IRIS医疗版互联互通套件”线上发布会,会议详情如下,欢迎点击“此处”或扫描下方二维码报名。此次会议为邀请参会制,收到您的报名信息后,我们会及时与您确认参会资格并发送会议链接。

0
0 173
文章 Lele Yang · 八月 13, 2021 1m read

众所周知,Object Script是一个弱类型开发语言,%String是我们非常常用的一个类型,时不时有客户在初次接触Object Script编写程序时遇到%String长度限制的问题,在这里做一个简单总结,以便于相关开发人员作为参考。

1. MAXLEN设置字符串的长度。
Property Name As %String(MAXLEN = 50);
a) 如果不设置MAXLEN, 默认长度限制为50
b) MAXLEN = "", 没有限制长度,也就是字符串本身的长度限制。

如果超限,您将会看到如下报错,
错误 #7201: 数据类型值'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'的长度超过50允许的MAXLEN 

2. 字符串本身的长度限制。
在没有开启长字符串的情况下,%String类型的长度限制是32,767个字符。

如果超限,您会遇到报错<MAXSTRING>,如果遇到这个报错,建议您改用流类型%Stream,如%Stream.FileCharacter, %Stream.GlobalCharacter等等,更多关于如何使用流类型,详见如下在线文档,
http://dreamymclean.intersystems.skytapdns.com:52773/csp/docbook/DocBook.UI.Page.cls?

2
0 548
文章 姚 鑫 · 九月 11, 2021 3m read

第十三章 SQL命令 CREATE ROLE

创建角色

大纲

CREATE ROLE role-name

参数

  • role-name - 要创建的角色的名称,它是一个标识符。角色名称不区分大小写。

描述

CREATE ROLE命令可创建角色。角色是可以分配给多个用户的一组命名权限。一个角色可以分配给多个用户,一个用户可以分配多个角色。角色在系统范围内可用,它不限于特定的命名空间。

角色名可以是最多64个字符的任何有效标识符。角色名称必须遵循标识符命名约定。角色名称可以包含Unicode字符。角色名称不区分大小写。如果选中了支持分隔标识符配置选项(默认设置),则角色名可以是用引号括起来的分隔标识符。如果是分隔标识符,则角色名可以是SQL保留字。它可以包含句点(.)、插入符号(^)和两个字符的箭头序列(->)。它不能包含逗号()或冒号()字符。它可以以除星号(*)以外的任何有效字符开头。

最初创建角色时,角色只是一个名称;它没有权限。要向角色添加权限,请使用GRANT命令。还可以使用GRANT命令为角色分配一个或多个角色。这允许创建角色层次结构。

如果调用CREATE ROLE来创建已经存在的角色,SQL会发出SQLCODE-118错误。可以通过调用$SYSTEM.SQL.Security.RoleExists()方法确定角色是否已存在:

  WRITE $SYSTEM.SQL.Security.
0
0 147
文章 Heng Zhang · 九月 11, 2021 1m read

背景:在实际场景中,处理历史数据问题会出现数据暴增的情况,在此情景下journal文件会暴增从而出现磁盘被沾满的风险,因此需要对journal进行删除。 步骤: 1.点击【系统操作】->【任务管理器】->【新任务】创建定时任务。 2.按下图输入参数 image 重要参数: 任务运行所在的 命名空间:%SYS 任务类型:运行传统任务 执行代码:do ##Class(%SYS.Journal.File).PurgeAll()

  1. 点击【下一步】设定时间 按业务需要设定

4.点击【完成】

备注:此任务在数据暴增情况结束后应挂起。

0
0 455
文章 姚 鑫 · 九月 10, 2021 10m read

第十二章 SQL命令 CREATE QUERY

创建Query

大纲

CREATE QUERY queryname(parameter_list) [characteristics] 
   [ LANGUAGE SQL ]
   BEGIN
code_body ;
   END

CREATE QUERY queryname(parameter_list) [characteristics] 
    LANGUAGE OBJECTSCRIPT
   { code_body }

参数

  • queryname - 要在存储过程类中创建的查询的名称。queryname必须是有效的标识符。过程名可以是限定的(schema.procname),也可以是非限定的(procname)。非限定过程名接受默认模式名。即使没有指定参数,queryname也必须后跟括号。
  • parameter_list - 可选-传递给查询的参数列表。参数列表用圆括号括起来,列表中的参数用逗号分隔。即使没有指定参数,括号也是必须的。
  • characteristics - 可选-指定查询特征的一个或多个关键字。允许的关键字有结果、容器IDFORFINALPROCEDURESELECTMODE。多个特征由空白(空格或换行符)分隔。特性可以以任何顺序指定。
0
0 180
文章 Qiao Peng · 三月 29, 2021 4m read

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类型的异步镜像成员获取数据变更。

2
1 1348
文章 姚 鑫 · 九月 9, 2021 7m read

第十一章 SQL命令 CREATE PROCEDURE(二)

characteristics

用于创建方法的特征与用于创建查询的特征不同。

如果指定的特征无效,系统将生成SQLCODE -47错误。 指定重复的特征将导致SQLCODE -44错误。

可用的方法特征关键字如下:

方法关键字 含义
FOR className 指定要在其中创建方法的类的名称。如果这个类不存在,它将被创建。还可以通过限定方法名来指定类名。FOR子句中指定的类名通过限定方法名重写指定的类名。如果使用FOR my.class语法指定类名, IRIS将用Sqlname=procname定义类方法。因此,该方法应该作为my.procname()调用(而不是my.class_procname())。
FINAL 指定子类不能重写该方法。默认情况下,方法不是finalFINAL关键字由子类继承。
PRIVATE 指定该方法只能由它自己的类或子类的其他方法调用。默认情况下,方法是公共的,可以不受限制地调用。这个限制由子类继承。
RESULT SETSDYNAMIC RESULT SETS [n] 指定创建的方法将包含ReturnResultsets关键字。这一特征短语的所有形式都是同义词。
RETURNS datatype 指定调用该方法返回的值的数据类型。
0
0 220
文章 Michael Lei · 九月 9, 2021 1m read

挑战一:缺乏一个统一的技术体系?
InterSystems IRIS 医疗版通过统一的数据库、互操作性/中间件、机器学习和FHIR等医疗行业特有的功能来简化开发,开箱即用。

挑战二:需要高性能的解决方案,可以定制适合医疗行业使用的案例
InterSystems IRIS for Health医疗版由医疗行业开发人员创建并为医疗服务服务,具有所需的性能、可扩展性和灵活性,大量的全球、全国大型顶级医院案例。全美排名前20医院,全国客户数百家,百强医院30余家;

挑战三:开源和专有软件缺乏灵活性,无法为医疗行业应用提供高可靠性。
InterSystems IRIS医疗版实现一套平台兼容专有和开源模块,同时开发人员可以选择自己喜欢的开发语言和灵活性,支持多种开发语言(ObjectScript,.net, Java, Sql, 等等)

挑战四:缺乏具有医疗卫生领域专业知识的供应商,也没有为开发人员提供持续的支持。
InterSystems IRIS 医疗版的产品开发能力、屡获殊荣的支持和长期深耕医疗的企业文化,确保开发人员持续成功。

0
0 325
文章 Michael Lei · 九月 9, 2021 2m read

这是一个我开发的名为NiPaRobotica Pharmacy的小应用。 从附件可以看到一个界面,能够接收药房配药请求,并将订单上的行项目转换为发送给机器人的配药对话 。我在3家医院的药房部署了这个接口,其中两家药房有6个机器人被安排来将药物从分配槽配送到药剂师的窗口,每天能服务1200个病人。这些机器人能够将病人平均等待时间从2小时减少一半到1小时.接下来我把这个接口部署到专门为慢病病人建的6个配送点,例如如结核病、艾滋病毒、糖尿病、癫痫、高血压和哮喘等等。这个项目的目标是“把药物带给病人”。 这些点有六个6 ATM形式的药房配药设备 (Pharmacy Dispense Units ,PDU),可以让病人直接与呼叫中心的药剂师沟通。在每个PDU 背后是一个存放上千种药物的大型的机器人。我的应用可以发送指令给机器人,机器人将药物分配到传送带上,送到一个打印机下面。这个打印机已经收到药房标签的内容,包括病人姓名、剂量说明和其他信息等。然后打印机把标签放下并贴在药品包装上。这包药再往前走一点就有一块海绵压住标签,使其更牢固地贴在包装上。然后,传送带将物品传送到PDU中的一个盒子里,一旦所有药物都被分发出去,病人就能打开PDU上的一个盖子,取出他的药品。这个项目最重要的意义是让病人少跑腿,不需要请假,还要长途跋涉到他们平时看病的医院,再取药回家。

0
0 310
文章 Nicky Zhu · 九月 9, 2021 13m read

本文档将您介绍InterSystems IRIS®数据平台的分片(sharding)功能,以及它在分片集群中的使用,以水平扩展 InterSystems IRIS 的数据量。

作为本指南的一部分,您将使用 ICM 在公共云中提供的分片集群,并了解分片表(sharding a table)如何在集群中的分片之间分布其行。

分片(Sharding)如何帮助您?

您感受到大数据(Big Data)的热度了吗?

无论是否准备好了,我们都在管理比以往任何时候都多的数据,并被要求用这些数据做更多的事情——所需的响应时间也越来越短。无论您是照顾一千万名患者、每天处理数十亿的金融订单,追踪一个星系的恒星,还是监控一千个工厂的引擎,数据平台不仅要支持您目前的数据工作量,而且还必须在保持性能的同时进行扩展(Scale),以满足不断增长的需求,避免业务中断。每个特定业务的工作量对其运行的数据平台提出了不同的挑战 而随着工作量的增加,这些挑战将变得更加严峻。

InterSystems IRIS 包含一套全面的功能来扩展(Scale)您的应用程序,这些功能可以单独或组合应用,这取决于您的工作量的性质和它所面临的特定性能挑战。其中之一是分片(sharding),它在多个服务器上对数据及其相关缓存进行分区,为查询和数据摄取提供灵活、价优的性能扩展,同时通过高效的资源利用使基础设施价值最大化。

0
0 247
问题 chen minjun · 七月 21, 2021

问题:

1、EnableVSSBackup这个参数在哪里设置?

2、Cache是否有自己的writer,如果有,怎样查到,叫什么名?

3、实现Cache的全量增量备份,使用VSS是否是最佳实践?

4、是否有Cache全量增量备份的实践案例,以供参考?

————————————————————————————————————————————————————————————————————————————————

我参考这篇官方文档,在启动应用时EnableVSSBackup会默认设置为1,但是我在配置或者应用界面中并没有看到这参数。

https://docs.intersystems.com/latest/csp/docbook/Doc.View.cls?KEY=GCDI_…

在 Cache启动的时候,我在日志中并没有收到”Caché VSS Writer started“的信息;而且我在cache.cpf里添加EnableVSSBackup 字段为1,再启动cache会得到下面的乱码信息。

1
0 222
文章 Claire Zheng · 九月 9, 2021 2m read

在医院信息化领域,中日联谊医院最近一次站在行业瞩目的聚光灯下,是在2021年7月。在国家卫生健康委统计信息中心发布的《关于2020年度国家医疗健康信息互联互通标准化成熟度测评结果公示的通知》中,9家医院获评五级乙等,中日联谊医院名列其中。这也是目前为数不多的“通关”互联互通五乙的医院之一。

0
0 349
文章 Nicky Zhu · 九月 7, 2021 9m read

本文档介绍了 XEP API,它在 InterSystems IRIS®数据平台上极其快速的 .NET 对象存储和检索支持。它向您提供了一个关于 .NET 对象持久化的 XEP 方法的进阶概述,并引导您通过一个简单的场景来演示 API 的主要功能。

这些活动被设计成只使用默认设置和功能,这样您就可以熟悉 XEP 的基本原理,而不必处理超出本概述范围的细节。有关 XEP 的完整文档,请参见 Persisting .NET Objects with InterSystems XEP (《使用 InterSystems XEP 持久化 .NET 对象》)。

要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。

快速的对象存储和检索

面向对象编程是 .NET 框架的核心,因此 .NET 应用程序将数据建模为对象是很自然的。然而,当应用程序需要将数据存储在数据库中时,这可能会导致问题。如果您使用 ADO.NET 来存储和检索对象,您就面临着将对象数据转换为一组关系表、然后再将查询结果集转换为对象的问题。这个问题的通常解决方案是使用对象-关系映射(ORM)框架,如实体框架(Entity Framework 来自动化这个过程。

2
0 297
文章 Qianzhu Liu · 九月 8, 2021 4m read

众所周知,医生和护士是临床一线最主要的决策者和执行者,二者的紧密衔接与顺畅合作是医疗质量和患者转归的重要决定因素。其中,医生更侧重于病例分析、诊断确认和方案制定,护士则在医嘱执行、任务管理和患者教育方面更胜一筹。将上述临床工作内容映射到医疗信息系统的使用时,我们不难发现,护士与系统的交互更为频繁、复杂和多样。因此,尽管本系列标注为“临床医生与信息系统”,本文则主要探讨如何应用便捷、清晰、高效、完整的系统功能给予护士更多支持。

本文将以“护士任务列表”为例,说明医学信息系统如何助力护士临床工作。这里要说明的是,此功能在已经实施移动护理、已经购买移动护理车或移动设备(包括平板电脑、手持机)的医疗机构,效果更为显著。

1. 总揽全局

在开始一天的护理工作前,护士需要对当日所管辖病区所有患者的医嘱进行回顾,以确保按时、按质完成;并在需要时,根据实际临床情况与主管医生商议,及时调整该患者的诊疗方案。如图1显示,护士可以通过“护士任务列表”页面的筛选栏,定位病区和日期,从而获得该病区、该时段所有患者的医嘱信息。所有医嘱应该按照预设分类(包括药品、护理、检验、检查、其他等),以醒目且直观的图标显示,且图标与患者信息和预期执行时间必须存在准确的对应关系。

1 护士任务列表(按病区)

2.

0
0 308
问题 peng lv · 九月 7, 2021

本地库 在打开studio、studio编译类、关闭studio等操作系统卡死,关闭后连接超时。

打开cconsole.log报错日志,提示***严重的磁盘读写错误,I/O错误***,对数据库做了一致性检查,也未发现错误,必须重启电脑或者force库后恢复使用。

请问是什么问题造成的。。。

1
0 347
问题 fu liyun · 九月 8, 2021

09/08/21-08:33:52:611 (11940) 1 [SYSTEM MONITOR] DiskPercentFull(d:\cachedb\hippapp\) Warning: DiskPercentFull = 95.08 ( Warnvalue is 95).
09/08/21-08:33:52:617 (11940) 1 [SYSTEM MONITOR] DiskPercentFull(d:\cachedb\hippmsg\) Warning: DiskPercentFull = 95.08 ( Warnvalue is 95).

2
0 329
文章 Botai Zhang · 一月 26, 2021 3m read

利用Intersystems IRIS医疗版数据平台内置多模型整合

医院信息查询业务解决方案

概述:

随着医院信息化建设的逐步完善医院子系统越来越多,系统间接口越来越多,同时接口费用不断增加,管理工作变得越来越复杂。其中,查询类业务接口根据业务类型分化,数量也是逐步递增,带来接口量大、开发工作繁重、代码冗余、维护困难等等问题。针对这一困境,我们利用Intersystems IRIS数据平台内置多模型整合医院信息查询业务解决方案。该应用程序可通过内置模型应用完成查询业务,大大缩小开发、维护、实施等项目关键运转周期。

应用链接:HealthInfoQueryLayer           

关键应用:IRIS for Health、REST APIObjectScriptGlobals SQL、DATA LOOKUP TABLES

应用程序采用模型及应用介绍:

1.采用模型

1.1. Globals (key-value)

Globals是可以在IRIS数据库中存储和管理的稀疏多维数组。您可以使用ObjectScript和本机API处理Globals

工具:

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GGBL_MANAGING

应用:

应用程序根据Globals的键值对、访问速度快的特性。

2
0 574
文章 姚 鑫 · 九月 7, 2021 4m read

第九章 SQL命令 CREATE METHOD(二)

characteristics

可用的关键字如下:

  • FOR className - 指定要在其中创建方法的类的名称。 如果这个类不存在,它将被创建。 还可以通过限定方法名来指定类名。 FOR子句中指定的类名通过限定方法名重写指定的类名。
  • FINAL - 指定子类不能重写该方法。 默认情况下,方法不是finalFINAL关键字由子类继承。
  • PRIVATE - 指定该方法只能由它自己的类或子类的其他方法调用。 默认情况下,方法是公共的,可以不受限制地调用。 这个限制由子类继承。
  • PROCEDURE - 指定该方法是一个SQL存储过程。 存储过程由子类继承。 (这个关键字可以缩写为PROC。)
  • RESULT SETS ,DYNAMIC RESULT SETS [n] - 指定创建的方法将包含ReturnResultsets关键字。 这一特征短语的所有形式都是同义词。
  • RETURNS datatype - 指定调用该方法返回的值的数据类型。 如果省略RETURNS,则该方法不能返回值。 这个规范由子类继承,并且可以由子类修改。 该数据类型可以指定类型参数,如MINVALMAXVALSCALE。 例如RETURNS DECIMAL(19,4)
0
0 118
问题 cy f · 九月 3, 2021

我想在centos访问我部署在windows上的cache 数据库, 我使用了**InterSystems.Data.CacheClient.dll **在我的linux程序中,但是它不能正常的在centos机器上运行,但是可以在我的windows平台运行(改windows平台不是安装cache数据库,并且也没有安装任何cache 软件),有人知道这个怎么解决吗? try { if (conn.State != ConnectionState.Open) { conn.Open(); } CacheCommand cmd = new CacheCommand(); cmd.Connection = this.conn; if (inTransaction) cmd.Transaction = trans; DataSet ds = new DataSet(); CacheDataAdapter ad = new CacheDataAdapter(); cmd.CommandText = QueryString; //CLogger._log.Debug(QueryString); ad.SelectCommand = cmd; ad.Fill(ds); ad.Dispose(); return ds; } catch (Exception e2) { throw e2; }

5
0 365
问题 秀政 王 · 七月 2, 2021
错误详情

ERROR #5023: Remote Gateway Error: java.lang.NoClassDefFoundError: net/sf/cglib/proxy/MethodInterceptor at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.

3
0 471
文章 姚 鑫 · 九月 6, 2021 5m read

第八章 SQL命令 CREATE METHOD(一)

在类中创建方法。

大纲

CREATE [STATIC] METHOD name (parameter_list) 
   [ characteristics ]
   [ LANGUAGE SQL ]
   BEGIN
code_body ;
   END

CREATE [STATIC] METHOD name (parameter_list) 
    [ characteristics ]
    LANGUAGE OBJECTSCRIPT
   { code_body }

参数

  • name - 要在存储过程类中创建的方法的名称。 名称必须是有效的标识符。 过程名可以是限定的(schema.procname),也可以是非限定的(procname)。 非限定过程名接受默认模式名。 名称后面必须跟括号,即使没有指定参数。
  • parameter_list - 可选——传递给方法的参数列表。 参数列表用圆括号括起来,列表中的参数用逗号分隔。 即使没有指定参数,括号也是必须的。
  • characteristics - 可选—指定方法特征的一个或多个关键字。 允许的关键字是RETURNS, FOR, FINAL, PRIVATE, PROCEDURE, SELECTMODE
0
0 130