第六十七章 开发Productions - ObjectScript Productions - Production品及其零部件的生命周期 - BO和适配器的生命周期

BO和适配器的生命周期

IRIS 自动管理每个业务操作的生命周期。

Production Startup

Production生产(或更改特定业务操作的配置)时, IRIS 自动为每个配置的业务操作类(即,为Production定义中列出的每个业务操作)执行以下任务:

  1. 它调用类的 OnProductionStart() 回调方法(如果已定义)。

OnProductionStart() 方法是一种类方法,它为Production配置中列出的每个业务操作类调用一次。业务操作类可以使用此回调来执行它可能需要的任何类范围的初始化。

0 0
0 60

第六十二章 开发Productions - ObjectScript Productions - 部署Production - 导出Production

导出Production

要使用管理门户导出ProductionXML,请打开Production,单击Production设置和操作选项卡,然后单击导出按钮。 IRIS 选择所有业务服务、业务流程、业务操作和一些相关类,然后显示以下表单以允许添加导出注释和其他组件。

还可以导出业务服务、流程或操作,方法是在Productions配置中选择组件,然后单击“操作”选项卡上的“导出”按钮。在这两种情况下,都可以通过单击其中一个按钮并选择一个组件来将其他组件添加到包中。以通过清除该复选框来从包中删除组件。

可以使用导出注释来描述部署包中的内容。例如,可以描述完整的Productions是否位于作为Productions更新的包或组件集中。当使用管理门户将包部署到目标系统时,会显示导出注释。

0 0
0 59

第五十七章 镜像中断程序 - 在手动故障转移之前确定备份是否处于活动状态

在手动故障转移之前确定备份是否处于活动状态

假设有两个名为 IRIS AIRIS B 的故障转移成员。如果 ^MIRROR 例程确认备份 (IRIS B) 在与主 (IRIS A) 丢失联系时处于活动状态,因此具有最新的来自 IRIS A 的日志数据,可以使用单个过程手动进行故障转移。当连接因主要故障而丢失时,不会造成数据丢失的风险。但是,当发生多个故障时,活动备份可能没有来自主服务器的所有最新日志数据,因为主服务器在连接丢失后继续运行了一段时间。

使用以下过程确定备份是否处于活动状态:

1 0
1 59
文章
· 八月 14, 2023 阅读大约需 4 分钟
第二十二章 参考 - HL7业务服务的设置

第二十二章 参考 - HL7业务服务的设置

提供HL7业务服务设置的参考信息。

HL7最重要的设置如下:
- 池大小-默认值为1,可以支持FIFO(先进先出)处理。在许多情况下,必须按顺序接收多个患者的人口统计更新。例如,许多应用程序在处理订单消息之前需要接收ADT注册消息,在收到结果消息之前必须接收订单消息,等等。
- 类别—此文本标签允许在配置图中对配置项进行排序。
- 追加时间戳-(仅限文件)在存档路径中的文件名追加时间戳。
- 归档路径-(仅限文件和FTP)指定HL7消息归档的位置。
- 呼叫间隔-在寻找更多输入之前等待的秒数。缺省值是5秒。最小值是0.1秒。

Ack Mode

帮助建立发布 HL7 确认消息以响应收到的 HL7 消息的格式和约定。对于业务服务,此设置可以具有下表中显示的值之一。

0 0
0 58

第四十九章 开发Productions - ObjectScript Productions - 使用复杂记录映射器 - 复杂的记录映射类结构

复杂的记录映射类结构

有两个类以类似于描述记录映射的两个类的方式描述复杂的记录映射。描述复杂记录映射的两个类是:

  • 复杂记录映射,描述复杂记录的外部结构并实现复杂记录解析器和编写器。
  • 生成的复杂记录类定义了包含数据的对象的结构。该对象允许在数据转换和路由规则条件中引用数据。

一个复杂的记录映射业务服务读取并解析传入的数据并创建一条消息,该消息是生成的记录类的一个实例。业务流程可以读取、修改或生成生成的复杂记录类的实例。最后,复杂记录映射业务操作使用实例中的数据,使用复杂记录映射作为格式化模板写入输出数据。复杂记录映射类和生成的复杂记录类都具有描述数据的层次结构。复杂记录映射类和生成的复杂记录类具有并行结构。这与 RecordMap 类不同,其中生成的记录类可以具有不同的层次结构。

0 0
0 58

第六十一章 开发Productions - ObjectScript Productions - 部署Production

部署Production

通常,在开发系统上开发Production,然后在测试部署上完成并测试生产后,将其部署在实时生产系统上。本页介绍如何使用管理门户打包开发系统中的部署,然后将其部署到另一个系统上。它还描述了如何开发和测试对生产的更改,然后将这些更新部署到使用实时业务数据运行的系统。

0 0
0 58
文章
· 九月 20, 2023 阅读大约需 4 分钟
基于IRISI对您的敏感数据进行令牌化/代币化

根据剑桥词典的解释,令牌化数据是“用令牌(=代表第一个数据的不同数据)替换隐私数据,以防止隐私信息被不被允许做的人看到”(https://dictionary.cambridge.org/pt/dicionario/ingles/tokenize)。如今,一些公司,尤其是金融和医疗保健领域的公司,正在将其数据令牌/代币化作为满足网络安全和数据隐私(GDPR、CCPA、HIPAA 和 LGPD)要求的重要策略。但是,为什么不使用加密呢?保护敏感数据的令牌化过程比数据加密更常用,原因如下:

0 0
0 57
文章
· 三月 18 阅读大约需 4 分钟
IRIS/Caché SQL优化经验分享 - Tune Table

TuneTable(调整表)收集数据库中表的统计信息,用来为SQL引擎制定最优的执行计划。在其他数据库产品里,这个动作被称为“gather stats job"或者类似的名字,相比较TuneTable不是那么直白,但作用是一样的。

TuneTable是否要人工执行

一定要。

在IRIS 2023版本, 第一次加入了TuneTable的自动执行功能,在此之前的所有IRIS/Caché版本, 如果没有人工执行TuneTable, SQL引擎无法保证给出最好的查询计划。 即使是IRIS2023有了自动执行功能,也还需要人工执行TuneTable的操作,后面解释。

1 0
0 56

上个帖子写了TuneTable的执行, 提到了SQL优化器使用的那些统计数据, 这里逐一的介绍一下这些统计项。了解它们看懂和分析SQL执行计划的基础。 如果您不需要做单个查询的优化工作,可以调过这部分内容。

表的统计项

  • Extent Size: 表的大小,也就是记录数。在执行多表关联(JOIN)的查询时,SQL优化器会根据Extent Size值,从数据量最小的表来开始执行查询。

您还需要了解:表创建的时候Extent Size会获得一个初始值,而之后的插入修改数据并不自动修改这个值。而只有执行TuneTable才会修改这个。 这也就是为什么没有执行过TuneTable的数据库SQL性能好不了的原因。下图中的Patient表,可以看出有1,000,000记录

0 0
0 56
文章
· 九月 18, 2023 阅读大约需 6 分钟
开发者作品展示--几乎实现的向量支持

如今,关于大语言模型、人工智能等的消息不绝于耳。向量数据库是其中的一部分,并且已经有非IRIS的技术实现了向量数据库。

为什么是向量?

  • 相似性搜索:向量可以进行高效的相似性搜索,例如在数据集中查找最相似的项目或文档。传统的关系数据库是为精确匹配搜索而设计的,不适合图像或文本相似性搜索等任务。
  • 灵活性:向量表示形式用途广泛,可以从各种数据类型派生,例如文本(通过 Word2Vec、BERT 等嵌入)、图像(通过深度学习模型)等。
  • 跨模态搜索:向量可以跨不同数据模态进行搜索。例如,给定图像的向量表示,人们可以在多模式数据库中搜索相似的图像或相关文本。

还有许多其他原因。

因此,对于这次 pyhon 竞赛,我决定尝试实现这种支持。不幸的是我没能及时完成它,下面我将解释原因。

0 0
0 56

第五十二章 开发Productions - ObjectScript Productions - 不常见的任务 - 在目标是动态的情况下渲染连接

在目标是动态的情况下渲染连接

当用户选择业务主机时,管理门户会自动显示与给定业务主机之间的连接。例如:

为此,IRIS 读取业务主机的配置设置并使用它们。

但是,如果业务服务在运行时动态托管其目标, IRIS 将无法自动显示此类连接。在这种情况下,要显示此类连接,请实施 OnGetConnections() 回调方法。 IRIS 在呈现配置图时自动调用此方法(默认情况下不执行任何操作)。

OnGetConnections() 具有以下签名:

ClassMethod OnGetConnections(Output pArray As %String, item As Ens.Config.Item) [ CodeMode = generator ]

其中参数如下:

0 0
0 55

第三十五章 开发Productions - ObjectScript Productions - Defining Business Metrics - 定义单实例业务指标

定义单实例业务指标

要定义单实例业务指标,请定义一个满足以下要求的类:

  • 它必须是 Ens.BusinessMetric的子类。

对于此类,ADAPTER 参数是 Ens.InboundAdapter,它提供了 CallInterval 设置。这确保定期调用业务指标。

  • 它必须定义一个或多个业务度量属性。简单属性和具有自动历史的属性的细节不同。
  • 它可以选择性地为属性参数指定值,例如,以控制值的范围。
  • 它必须为业务度量属性分配值。为此,它必须实施 OnCalculateMetrics() 方法。

定义简单的业务指标属性

要定义一个简单的业务指标属性,请将一个属性添加到业务指标类,如下所示:

0 0
0 54

大型语言模型(例如 OpenAI 的 GPT-4)的发明和普及掀起了一波创新解决方案浪潮,这些解决方案可以利用大量非结构化数据,在此之前,人工处理这些数据是不切实际的,甚至是不可能的。此类应用程序可能包括数据检索(请参阅 Don Woodlock 的 ML301 课程,了解检索增强生成的精彩介绍)、情感分析,甚至完全自主的 AI 代理等!

在本文中,我想演示如何使用 IRIS 的嵌入式 Python 功能直接与 Python OpenAI 库交互,方法是构建一个简单的数据标记应用程序,该应用程序将自动为我们插入IRIS 表中的记录分配关键字。然后,这些关键字可用于搜索和分类数据,以及用于数据分析目的。我将使用客户对产品的评论作为示例用例。

0 0
0 54
文章
· 八月 4, 2023 阅读大约需 3 分钟
第十二章 配置Production - 添加HL7序列管理器

第十二章 配置Production - 添加HL7序列管理器

添加HL7序列管理器

HL7消息可能由于各种原因而乱序,特别是在多个处理器处理它们时。在某些情况下,需要确保按照正确的顺序处理HL7消息。在这种情况下,可以将HL7序列管理器添加到production的适当部分。

HL7序列管理器是一个业务流程,它接受传入的HL7消息(可能来自多个源),然后按照消息中的MSH:13 SequenceNumbers字段指定的顺序将消息转发到目标配置项。

序列管理器可以检测重复的消息和消息之间的时间间隔。它还确定顺序消息之间的时间间隔何时大到足以表明问题。它的灵敏度级别可以使用它的配置设置来调整。

要构建用于HL7消息路由生产的HL7序列管理器,必须创建并配置它,然后将其集成到生产中。本主题将解释每个步骤。

0 0
0 53

第五十九章 开发Productions - ObjectScript Productions - 测试和调试Production - 从管理门户进行测试

从管理门户进行测试

可以使用管理门户在开发、测试和调试Production时执行多项任务:

  • 能够查看和修改系统配置。
  • 能够启动和停止Production
  • 能够查看队列及其内容;消息及其详细信息;适配器和参与者及其状态;业务流程及其状态;配置项的代码和图形表示。
  • 能够查看、排序和有选择地清除事件日志条目。
  • 能够暂停(并稍后重新发送)连接暂时被阻止的消息。
  • 能够使用图形用户界面或通过输入 SQL SELECT 命令,按类别或消息内容过滤和搜索消息仓库中的特定消息。
  • 能够使用图形用户界面直观地跟踪消息活动。
  • 能够创建和查看统计报告。

对于开发人员来说,最有用的门户功能是不断收集运行时数据的监视服务、可用于向正在开发的产品发出模拟请求的测试服务以及记录业务主机发出的状态消息的事件日志。同时使用这些功能来生成测试数据并研究结果。

0 0
0 52
文章
· 九月 11, 2023 阅读大约需 3 分钟
第二十五章 Classes - 基于数据类型的属性

第二十五章 Classes - 基于数据类型的属性

基于数据类型的属性

当定义属性并将其类型指定为数据类型类时,可以使用特殊选项来定义和使用该属性,如本节中所述。

数据类型类

数据类型类使能够强制执行有关属性值的规则集。

IRIS 提供的数据类型类包括 %Library.String%Library.Integer%Library.Numeric%Library.Date等等。因为 %Library 包的类名可以缩写,所以可以缩写其中的许多类;例如, %Date%Library.Date的缩写。

每个数据类型类都具有以下特征:

  • 它指定编译器关键字的值。对于属性,编译器关键字可以执行以下操作:

0 0
0 51

第二十七章 开发Productions - ObjectScript Productions - 定义业务流程 - 关键原则

关键原则

在开发业务流程时,请考虑以下关键原则:

  • 有时希望使响应对象成为传入请求对象的修改版本,分阶段进行修改可能很有用。但是,不要修改传入的请求对象。而是将其复制到上下文变量(或者,对于自定义业务流程,将数据复制到局部变量)。然后修改副本。
  • 同步发送消息时要小心(只能在自定义业务流程中或 BPL 中的 <code>中执行)。

当业务流程A同步调用业务流程B时,流程A不会继续,直到收到响应。如果进程 A 需要完成对其他进程 (B) 的调用才能完成自身,并且如果这些进程共享参与者作业池,则如果没有空闲的参与者作业来处理被调用的业务流程,则参与者池可能会陷入死锁( B).

发生这种情况是因为在被调用业务流程返回之前,调用业务流程无法完成并释放参与者作业,但被调用业务流程无法执行,因为没有空闲的参与者作业来执行它。

0 0
0 51

第二十章 开发Productions - ObjectScript Productions - 指定设置的默认值

当定义业务主机类(可能还有适配器类)时,应该考虑如何控制这些项目的任何设置的默认值。 IRIS 可以从三个来源之一获取设置的默认值:
- production定义。
- 为 IRIS 实例定义的值,但存储在production定义之外。有关信息,请参阅配置制作中的定义制作默认值。
- 主机类中定义的属性的默认值。在这种情况下,默认值由 InitialExpression 属性关键字确定。

某些设置取决于环境,例如 TCP/IP 地址或文件路径;通常,将这些设置配置为在生产之外提供它们的源,而其他设置(例如 ReplyCodeActions)是设计决策,并且很可能开发应用程序以从生产定义中检索这些设置。

可以开发作品,使配置设置来自不同的来源。主要目的是更轻松地将制作从一个 IRIS 实例转移到另一个实例,例如从测试转移到现场。

0 0
0 50

第五十七章 开发Productions - ObjectScript Productions - 不常见的任务 - 以编程方式使用查找表

IRIS 提供了名为 Lookup() 的实用函数,以便可以轻松地从业务规则或 DTL 数据转换中执行表查找。此功能仅在创建至少一个查找表并用适当的数据填充后才起作用。

有关定义查找表的信息,请参阅配置产品中的定义数据查找表。

如果需要比管理门户提供的更直接的查找表操作,请在类中使用 Ens.Util.LookupTable。此类公开查找表以通过对象或 SQL 进行访问。此外,它还提供类方法来清除表、将数据导出为 XML 以及从 XML 导入数据。

Ens.Util.LookupTable提供以下字符串属性:

0 0
0 49

第五十八章 开发Productions - ObjectScript Productions - 测试和调试Production

本主题介绍可用于测试和调试产品的工具。该信息对于故障排除和调整企业已在使用的Production软件也很有用。

纠正Production问题状态

如果Production暂停或出现问题,请阅读本节。

暂停Production

Production在队列中的所有异步消息可以被处理之前停止时,就会发生暂停Production。如果不手动清除这些异步消息,它们会在Production开始备份时自动处理。如果希望处理消息,则在开始暂停Production之前不需要其他步骤。

0 0
0 49

第五十章 开发Productions - ObjectScript Productions - 高效处理批量记录

高效处理批量记录

RecordMap 功能一次导入一条记录,但如果正在导入或导出大量记录,则可以通过使用 RecordMap Batch 获得显着的效率提升。 RecordMap Batch 功能处理同类记录并一次处理一批中的所有记录。可以选择在批次之前加上一个标题记录,然后跟一个尾部记录。

要创建 RecordMap 批处理,需要实现一个继承自中的 %PersistentEnsLib.RecordMap.Batch的类。 Batch 类包含处理解析和写出与特定批次关联的任何标头和尾部的方法。必须提供解析和编写标头的代码。对于简单的表头和表尾,可以使用类中的 EnsLib.RecordMap.SimpleBatch,它继承自 Batch 类,并提供处理简单表头和表尾的代码。如果需要处理更复杂的标头和尾数据,可以扩展这两个批处理实现中的任何一个。

0 0
0 49
文章
· 八月 30, 2023 阅读大约需 1 分钟
使用代码获取数据库剩余空间

大家可以通过InterSystems IRIS 管理门户SMP查看当前数据库剩余空间,路径是 Management Portal: System Operation > Database

当然大家也可以通过下面的代码查看数据库的可用磁盘空间:

0 0
0 48

第三十九章 开发Productions - ObjectScript Productions - Defining Business Metrics - 以编程方式设置和获取值

以编程方式设置和获取值

在某些情况下,可能需要以编程方式访问指标属性。例如,可能希望业务流程直接读取或设置度量属性。为此,请在新选项卡中使用 Ens.BusinessMetricOpensGetMetric()SetMetric() 类方法。

使用 GetMetric() 方法

GetMetric() 类方法从业务指标缓存中读取指定指标属性的当前值。按如下方式调用此方法:

0 0
0 48

第五十六章 开发Productions - ObjectScript Productions - 不常见的任务 - 在适配器类中包含凭据

在适配器类中包含凭据

要在适配器类中包含生产凭证,请在类定义中执行以下操作:

  • 包括名为 Credentials 的设置。
  • 定义一个名为 CredentialsSet() 的方法,该方法使用 Credentials 设置的值作为键来查找 Credentials 表中的用户名和密码。然后实例化一个包含用户名和密码的凭据对象。

覆盖Production凭证

虽然Production凭证系统集中管理并将登录数据保留在源代码之外,但有时需要编写代码以从其他来源获取凭证。例如,代码可能会从 Web 表单或 cookie 中检索用户名和密码,然后将它们与 HTTP 出站适配器一起使用以连接到其他站点。

0 0
0 48

第五十三章 开发Productions - ObjectScript Productions - 不常见的任务 - 使用 Ens.Director 访问设置

使用 Ens.Director 访问设置

即使production未运行,类中的以下 Ens.Director 方法也允许检索生产设置:

GetAdapterSettings()

返回一个数组,其中包含所标识的配置项(业务服务或业务操作)的所有适配器设置的值。该数组由设置名称下标。可以使用 IRIS $ORDER 函数来访问数组的元素。此方法的第一个参数是一个字符串,其中包含由两个竖线 (||) 分隔的产品名称和配置项名称。返回值是状态值。如果状态值不是 $$$OK,则无法找到指定的生产名称 (myProd) 和配置项名称 (myOp) 组合。

0 0
0 47

本篇文章会介绍一个简单的示例:如何使用IRIS 2023版自带的EnsLib.SQL.Service.GenericServiceEnsLib.SQL.Operation.GenericOperationMySQL的数据库读取出来并灌入Oracle数据库,本示例以Windows环境为例。

1. 创建SQL网关连接,连到MySQL

1.1 在windows中创建MySQL ODBC连接

0 0
0 47

FHIR 用例集: 打破数字医疗壁垒,实现高质量发展

--促进互联互通,改进工作流程,提高数据洞察

简介


HL7® FHIR®(快速医疗互操作性资源)是以电子方式访问、交换和管理医疗信息的国际标准。与以往的标准不同,FHIR 可让帮助行业从业者轻松构建创新应用程序,有效地收集、汇总和分析来自不同来源的各种医疗保健和管理数据。医疗机构、社保/保险公司、政府机构、生命科学公司、医疗设备制造商和医疗科技等多种主体利用 FHIR 来简化信息流、提高数据洞察力、改善临床效果和业务成果。

FHIR 基于 JSON、HTTP 和 REST 等流行的网络技术。有了 FHIR,没有医疗信息化背景的软件开发人员也能使用熟悉的开发工具和开源技术,快速、轻松地满足政府机构、临床医生、研究人员、医疗行业从业者以及各类市场主体的数据需求。

FHIR 是一种灵活、适应性强的医疗数据模型,可轻松定制,以实现各种用例的互操作性。FHIR 由称为 "资源 "的离散、可计算的数据对象组成,以实现最佳效率。通过 FHIR 资源,应用程序可以访问单个医疗记录元素,而无需检索摘要文档中包含的所有数据。

0 0
0 47