InterSystems IRIS 目前将类限制为 999 个属性。
但是,如果您需要为每个对象存储更多数据该怎么办?
本文将回答这个问题(附加了社区 Python 网关的客串以及如何将广泛的数据集传输到 Python 中)。
答案其实很简单 - InterSystems IRIS 目前将类限制为 999 个属性,但不限制 999 个基元(primitives)。 InterSystems IRIS 中的属性可以是具有 999 个属性的对象等等 - 该限制很容易被忽略。
InterSystems IRIS 目前将类限制为 999 个属性。
但是,如果您需要为每个对象存储更多数据该怎么办?
本文将回答这个问题(附加了社区 Python 网关的客串以及如何将广泛的数据集传输到 Python 中)。
答案其实很简单 - InterSystems IRIS 目前将类限制为 999 个属性,但不限制 999 个基元(primitives)。 InterSystems IRIS 中的属性可以是具有 999 个属性的对象等等 - 该限制很容易被忽略。
将 FHIR 文档(例如患者信息表、出院摘要)发布到 FHIR 存储库时:
EndPoint端点/Bundle捆绑
您可以使用上述 URL 进行 POST。 (以下示例使用 IRIS for Health 提供的 FHIR 存储库。)
.png)
我将检查 GET 请求。
我能够确认我能够注册。
对于在FHIR repository注册的FHIR文档,如果能通过指定文档编号来GET会很方便,由于支持,无法对指定Composition.identifier的Bundle资源进行GET请求。
作为解决方法,将注册 Bundle 时设置为 Composition.identifier.value 的文档编号设置为 Bundle.identifier.value 然后 POST。通过这样做,您可以在 Bundle 的 Search Parameter: identifier 中指定文档编号并 GET 目标 Bundle 资源。
文档示例:(这是部分摘录,因为它很长)
{ "resourceType""Bundle"当返回 201 created 时,尝试 GET。
这样能够确认添加到Bundle.
我们想介绍一些在 FHIR 相关培训期间我们从几个人那里收到的问题。
IRIS for Health FHIR 存储库会自动在存储库中分配一个唯一的逻辑 ID (id) 作为资源 POST 期间的默认行为。
例如,如果您发布一个 Patient 资源,例如
{ "resourceType""Patient"如下面的“id”:“1”所示,资源 id 自动设置为存储库中的唯一值。 (摘自患者资源)
"meta"以Patient资源为例,我想使用patient ID,本来就是一个唯一值,作为FHIR repository的资源id!我将介绍在这种情况下如何注册。
POST 请求用于新注册,但 PUT 请求可用于执行指定资源 ID 的注册。
例如,如果患者 ID 为 P101001,则指定的 URL
http://localhost:52773/csp/healthshare/r4fhirnamespace/fhir/r4/Patient /P101001
指定喜欢
示例端点 URL = http://localhost:52773/csp/healthshare/r4fhirnamespace/fhir/r4
此外,在 Body 中指定的 Patient 资源的 JSON 中,
“编号”:“ P101001 ”
指定
执行示例如下。
Caché 镜像是一种可靠、廉价且易于实施的高可用性和灾难恢复解决方案,适用于基于 Caché 和 Ensemble 的应用程序。镜像在广泛的计划内和计划外中断情况下提供自动故障转移,应用程序恢复时间通常限制在几秒钟内。逻辑数据复制消除了存储作为单点故障和数据损坏的根源。升级可以在很少或没有停机时间的情况下执行。
但是,部署 Caché 镜像确实需要大量规划,并且涉及许多不同的过程。与任何其他关键基础设施组件一样,操作镜像需要持续监控和维护。
您可以通过两种方式使用本文:作为常见问题列表,或作为理解和评估镜像、规划镜像、配置镜像和操作镜像的简要顺序指南。每个答案都包含指向每个主题的详细讨论以及每个任务的分步过程的链接。
当您准备好开始规划镜像部署时,您的起点应该始终是Caché 高可用性指南“镜像”一章的镜像架构和规划部分。
我们客户的一个共同需求是配置 HealthShare HealthConnect 和 IRIS的高可用性模式。
市场上的其他集成引擎通常被宣传为具有“高可用性”配置,但事实并非如此。通常,这些解决方案与外部数据库一起使用,因此,如果这些数据库未配置为高可用性,当发生数据库崩溃或与它的连接丢失时,整个集成工具将变得不可用。
对于 InterSystems 解决方案,这个问题不存在,因为数据库是工具本身的一部分和核心。 InterSystems 如何解决高可用性问题?深奥的配置会把我们拖入异化和疯狂的漩涡?不!在 InterSystems,我们倾听并处理了您的投诉(正如我们一直努力做的那样 ;)),并且我们已将镜像功能提供给所有用户和开发人员。
镜像如何工作?这个概念本身非常简单。如您所知,IRIS 和 HealthShare 都使用一个日志系统,该系统记录每个实例的数据库上的所有更新操作。这个日志系统是后来帮助我们在崩溃后恢复实例而不会丢失数据的系统。好吧,这些日志文件在镜像中配置的实例之间发送,允许并保持镜像中配置的实例永久更新。
让我们简要解释一下在 Mirror 中配置的系统架构是什么样的:
嗨开发者们!
如您所知,InterSystems IRIS 除了Global、对象、文档和 XML 数据模型还支持关系,其中 SQL 语言也被用来处理数据。
与其他关系型 DBMS 一样,InterSystems IRIS 有自己的特点。
我开始这篇文章是为了抛砖引玉,并邀请您分享您的小诀窍 - 我会根据收到的评论更新内容。
开始了!
正式名称为Class Query 的意思可以追溯到 Caché 的早期。
使用CLASS是因为它嵌入在 COS 类中。
尽管官方文档中有精确的描述,但它仍然相当抽象。
我的教程应该通过 COS 中的一个简单示例逐步指导您,使您有直观的体会
各位开发者,大家好!
对我来说,关于 ObjectScript 的最痛苦的一件事是输入 ##class(Class).Method() 以在代码或终端中调用类方法。 为解决这个问题, 我甚至提出了一个在 ObjectScript 中简化它的想法。
但是 VSCode ObjectScript中有一个刚刚引入到插件中的新功能 – 复制调用Copy Invocation!
只需将 **Copy Invocation**(复制调用)链接悬停在代码中的每个类方法上方,点击它,该调用就会被复制到缓冲区:

将其粘贴到想要执行的任何位置!!
USER>w##class就到这儿!
这里是显示其运作方式的[视频]。
非常感谢 VSCode 贡献者!
祝您编程愉快!
嗨,大家好
在本文中,我列出了 5 个有用的 SQL 函数,并附有解释和查询示例👇🏻
这5个功能是
那么让我们从 COALESCE 函数开始
在InterSystems IRIS医疗版里有一个文件压缩解压的适配器HS.Util.Zip.Adapter和对应的文件压缩解压业务操作HS.Util.Zip.Operations。集成产品可以使用它们进行文件的压缩和解压操作。这2个类的联机文档说明较少,这里介绍它们的使用方法。
InterSystems IRIS使用操作系统的压缩和解压缩能力,因此需要注册操作系统执行压缩解压的命令。
在管理门户的Health标签页下,选中配置注册(Configuration Registry):
.png)
在其中增加2个注册项目:
\ZipUtility\UnZipCommand 和\ZipUtility\ZipCommand,分别代表解压和压缩命令。适配器HS.Util.Zip.Adapter会检查这2个注册项并得到相应的命令。各个操作系统的命令并不一样,示例如下:
\ZipUtility\UnZipCommand 解压缩命令
| Windows | "c:\program files\7-zip\7z" x %1 -o. -r |
| 非Windows | unzip %1 -d . |
\ZipUtility\ZipCommand 压缩命令
| Windows | "c:\program files\7-zip\7z" a %1 . |
Kong提供了一个开源的配置管理工具(用Go语言编写),称为decK(即声明式Kong,declarative Kong)。
deck ping
Successfully connected to Kong!
Kong version: 2.3.3.2-enterprise-editiondeck dumpdeck diff
updating service alerts {
"connect_timeout": 60000,
- "host": "172.24.156.176",
+ "host": "192.10.10.18",
"id": "3bdd7db4-0b75-4148-93b3-2ff11e961f64",
"name": "alerts",
"path": "/alerts",
"port": 50200,
"protocol": "http",
"read_timeout": 60000,
"retries": 5,
"write_timeout": 60000
}
Summary:
Created: 0
Updated: 1
Deleted: 0任何技术总是有些自己独特的术语,尤其是一些英文术语,对于新的用户来说往往即陌生又迷惑。这里整理了一下常听到的InterSystems术语,帮助大家尽快进入InterSystems技术圈子。
| 名词 | 说明 |
|---|---|
| Arbiter | 仲裁器。用于在mirror高可用集群里辅助判断主备机成员状态,提高高可用集群的有效性 |
| Atelier | InterSystems开发的基于Eclipse的IDE,可以单独部署、也可以嵌入Eclipse |
| bitmap索引 | 位图索引。以位图方式保存的枚举类型数据的索引,用于高性能查询 |
| bitslice索引 | 位片索引。用位图方式对数值型数据建立的索引,用于高性能查询 |
| Buttons | Cache'数据库上的诊断报告工具。历史上,InterSystems曾经提供一个routine,名为^Buttons,用于收集系统数据用于诊断。虽然后来这个工具已经被放在%SYS.Task.DiagnosticReport类中,但大家还是习惯称之为buttons |
| cconsole log | Cache'数据库的控制台日志文件,记录通用信息、系统错误、特定操作系统错误、网络错误等。 |
我想通过表面表里面的字段找到这个表对应的实体类的属性,有什么高效的方式吗?
实质的需求是,我查询一个表的时候,这个表的字段很多,我需要通过值定位到哪些字段符合。
在测试你的代码时,你经常会遇到需要检查对象的实际内容。无论是使用 ZWRITE 还是 $system.OBJ.Dump(),
你会得到一个简单的属性图片,"--- 属性值---"
而 "--- swizzled references ---" 更容易让人混淆
用“--- calculated references ---" 你只是被留在了后面。
Hi 亲爱的开发者们,你是否精通多门语言并希望与世界各地的非英语用户分享你的知识?
我们为你提供了闪光的机会! 🤩
有一个简单的新方法可以在Windows和Mac上的InterSystems IRIS 2019.1(和2018.1.2)的SSL/TLS配置中添加证书授权(CA)证书。 你可以通过输入以下内容要求IRIS使用操作系统的证书存储。
%OSCertificateStore
在 "包含受信任证书颁发机构X.509证书的文件 "栏中输入:%OSCertificateStore。 这里有一张如何在门户中这样做的图片:

这里有一个描述这个问题的文档链接。 它在 "包含受信任的证书颁发机构证书的文件 "的选项列表中。
这就是你需要做的所有事情! 现在,这个配置将接受由操作系统证书库中列出的任何CA颁发的证书。
在软件开发和业务集成中,规则无处不在:会员折扣的计算规则、根据消息类型和内容将其路由到不同目标系统的路由规则。还有一个规则发挥重要作用的地方- 辅助决策规则,例如临床知识库和医疗质量指标规则。
规则经常需要随业务调整和知识积累进行调整,而规则的调整是业务和行业专家定的。如果规则是以代码硬编码的,这些调整需要程序员改动,一来不直观、需要业务专家与程序员大量的沟通成本,二来硬编码改动会对应用伤筋动骨,甚至带来风险,三来没法控制新规则生效的时间 – 总不能让程序员在新规则生效的那一刻去编译和部署吧。
InterSystems规则引擎可以帮助我们解决这些问题,于构建、执行和记录消息路由规则和普通的业务规则,带给应用和集成方案充分的灵活性和可用性。甚至业务专家和临床信息学家都可以通过低代码的、图形化的规则编辑器修改规则和指定规则生效和失效时间。
InterSystems规则引擎是InterSystems IRIS数据平台和Health Connect与Ensemble集成平台的组件。创建的规则可以被单独调用,也可以被业务流程调用。
本篇介绍规则的如何使用InterSystems规则编辑器创建规则和规则引擎执行规则的逻辑。
1. 规则基本概念
在设计规则前,先了解一下规则的基本概念。
上下文是用于规则定义的数据模型。
系统实用类:SYS.Database中的查询FreeSpace可以用来在任何时候检查磁盘上的自由空间。
下面是在IRIS终端中的尝试方法(进入%SYS命名空间,然后运行它)。
zn "%SYS"
set stmt=##class(%SQL.Statement).%New()
set st=stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
set rset=stmt.%Execute()
// 一次性显示所有
do rset.%Display()输出结果示例如下。
*在命令执行的例子中,所有的数据库都放在同一个磁盘上,所以所有的磁盘空闲空间(DiskFreeSpace)返回相同的值。
我们所有的工作环境都是Ensemble 2017.2。但我们最近将迁移到IRIS for Health 2021.1版本。这是一个复杂的过程,但经过仔细考虑,我们找到了实现这一目标的方法。
我们有一个开发服务器和两个生产服务器的镜像,采用Failover模式。我们有40多个名称空间在使用中,有些有HL7集成,有些有Soap服务、Rest服务、文件处理......什么都有点。我们需要确定向IRIS的迁移不会出现问题,最重要的是,我们需要不惜一切代价避免服务中断。因此,我们必须做的第一件事是建立一个计划。
好人不需要规则。
神秘博士
要成为日期和时间的主人并不是一件容易的事,在任何编程语言中,这总是一个问题,有时会让人感到困惑,我们将澄清并提出一些提示,使这项任务尽可能简单。
坐上TARDIS,我将把你变成一个时间领主。

开发者们大家好!
你可能已经注意到了在IRIS 2021 Global的名字是随机的。
如果你用DDL来创建类而且想给Global一个确定的名字,实际上是可以做的。
在CREATE Table 里使用 WITH %CLASSPARAMETER DEFAULTGLOBAL='^GLobalName' ,如文档。参考以下例子:
注(2019 年 6 月):许多内容发生了变化,最新的详细信息请参见此处 注(2018 年 9 月):自本帖首次发布以来,内容已经有了很大改动,我建议使用 Docker 容器版本,以容器形式运行的项目以及详细信息仍然在 GitHub 的同一个地址发布,您可以下载、运行并根据需要进行修改。
与客户合作进行性能评估、容量规划和故障排除时,我经常解包和查看来自 pButtons 的 Caché 和操作系统指标。 我不久前发布了一个帖子,介绍了一个用来解包 pButtons 指标的实用工具(该实用工具使用 unix shell、perl 和 awk 脚本编写),而不是费力地浏览 html 文件,再将需要绘制的部分剪切并粘贴到 excel 中。 虽然这是一个有用的省时工具,但还不够完善... 我还使用脚本自动绘制指标图表,以便快速查看并包含在报告中。 但是,这些绘图脚本不容易维护,并且当需要站点特定的配置(例如 iostat 或 Windows perfmon 的磁盘列表)时会变得特别混乱,所以我从未公开发布过绘图实用工具。 不过我现在可以很高兴地说,已经有了简单得多的解决方案。
当我与 Fabian 一起在客户站点查看系统性能时,有了意外发现,他向我展示了使用实用的 Python 绘图模块所做的工作
在本帖中,我将展示使用_外部备份_来备份 Caché 的策略,以及与基于快照的解决方案集成的示例。 如今,大多数解决方案部署在基于 VMware 的 Linux 上,因此许多帖子都以展示解决方案如何集成 VMware 快照技术为例。
Caché 安装后即包含 Caché 在线备份,可提供不间断的 Caché 数据库备份。 但随着系统规模的扩大,您应该考虑更高效的备份解决方案。 集成了快照技术的_外部备份_是推荐的系统(包括 Caché 数据库)备份解决方案。
外部备份的在线文档包含了全部详细信息。 一个关键考虑事项是:
“为确保快照的完整性,Caché 提供了在创建快照时冻结数据库写操作的方法。 在创建快照期间,只冻结对数据库文件的物理写入,从而允许用户进程继续在内存中不间断地执行更新。”
还需要注意的是,虚拟化系统上的部分快照过程会导致正在备份的虚拟机短暂暂停,这段时间通常称为关闭时间。 该时间通常不到一秒,因此不会被用户注意到,也不会影响系统运行,但在某些情况下,关闭时间可能较长。 如果关闭时间长于 Caché 数据库镜像的 QoS 超时时间,那么备份节点将认为主节点出现故障,并将进行故障转移。 在本帖的后面部分,我将说明在需要对镜像 QoS 超时时间进行更改时如何查看关闭时间。
我正在参加 Joel Solon 讲授的“使用 InterSystems Objects 和 SQL 进行开发”课程。 课程非常好,我将在这里分享一些从培训中总结的提示。
第 3 天的提示:
1. 您可以使用 %Dictionary 类查看类目录,并在 INFORMATION_SCHEMA 表中查看 sql 对象。
2. 可以在 ObjectScript 方法中以动态 SQL 或嵌入式 SQL 使用 SQL。
3. 您可以使用 ?(例如:where country = ?)将参数传递到动态 SQL 字符串, 使用冒号(例如:where country = :variable)将参数传递到嵌入式 SQL。
4. 动态 SQL 示例(来自 Intersystems 文档):
SET tStatement = ##class(%SQL.Statement).%New(,"Sample")
SET myquery = 3
SET myquery(1) = "SELECT TOP ? Name,DOB,Home_State"
SET myquery(2) = "FROM Person"
SET myquery(3) = "WHERE Age > 60 AND Age < 65"
SET qStatus = tStatement.%Prepare(.myquery)
IF qStatus'=1 {WRITE "%Prepare failed:" DO $System.Status.DisplayError(qStatus) QUIT}
DO tStatement.%Display()
WRITE !,"End of %Prepare display"我正在参加 Joel Solon 讲授的“使用 InterSystems Objects 和 SQL 进行开发”课程。 课程非常好,我将在这里分享一些从培训中总结的提示。
第 4 天的提示:
1. 所有数据都存储在global中,global名称以 ^ 开头。 global示例:^animal。 global可以有多个数据位置(“子数据”)。 示例:^animal("大象","吃草")。
2. 可从任意系统范围(命名空间)访问 ^%* global。
3. global使 IRIS 能够支持多模型数据(对象、关系、文档、多维等)。
4. 要查看global,请转到 Management Portal > Explorer > Globals > Select Global > View,或者在终端中输入 do ^%G 或 zwrite ^global。
5. 在持久类和 SQL 表之间有自动对应关系:
6. 一个表可以对应多个类,但序列类serial是持久类表的一部分(没有特定的表)。
7. 一个类可以对应多个表。
8.
原文在这里
我正在参加 Joel Solon 讲授的“使用 InterSystems Objects 和 SQL 进行开发”课程。 课程非常好,我将在这里分享一些从培训中总结的提示。
第 2 天的提示:
1. 您可以创建持久类(在数据库中具有对应表的类,用于保持类属性)。
2. 持久类示例:
Class dc.Person extends (%Persistent)
{
Property Name As %String;
Property BirthDate As %Date;
}3. 扩展 %Persistent 时,您将获得 %New() 以在内存中创建新实例,获得 %Save() 以保存到数据库,获得 %Id() 以获取该实例在数据库中的唯一 ID,以及获得 %OpenId() 以使用数据库值加载实例。
4. 持久类允许您调用 %Deleteid() 以从数据库中删除一个实例,调用 %DeleteExtent() 以删除所有保存的对象(没有 where 时删除!),调用 %ValidateObject() 以验证保存前传递的数据(验证是否必需、大小等)。
5. 持久类具有 %IsModified() 和 %Reload(),前者用于检查内存中的数据变化(参见评论中 joel 的提示),后者用于获取这些变化。
6.
IRIS RAD Studio 是一个低代码解决方案,使开发更简单。任何人都可以基于一个简单的类定义乃至一个CSV文件来创建CRUD..
https://openexchange.intersystems.com/package/iris-rad-studio
这是一个第三方写的在 IRIS 2020.1 和 Caché 2018.1.3 上工作的代码示例
不会与新版本保持同步
也不会获得 InterSystems 支持提供的服务!
Caché/Ensemble/IRIS 中的 Global 通常在 SQL 访问中是不可见的
本示例将展示如何克服此限制。