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

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

0 0
0 48
文章
· 九月 20, 2023 阅读大约需 2 分钟
第三十二章 Objects

[toc]

第三十三章 Objects - OREFs

OREFs

对象类的 %New() 方法创建一个内部内存结构来包含对象的数据,并返回指向该结构的 OREF(对象引用)。 OREFIRIS 中的一种特殊值。应该记住以下几点:

  • 在终端中,OREF 的内容取决于所使用的语言:
    • ObjectScript 中,会看到一个由数字、@ 符号和类名称组成的字符串。
    • Python 中,会看到一个包含类名和内存中 18 个字符的唯一位置的字符串。

例如:

0 0
0 58
文章
· 九月 19, 2023 阅读大约需 4 分钟
关于ensemble使用sql+global实现简单分页

前言

ensemble里边实现分页比较麻烦,毕竟对于sql的书写比较麻烦,单表的查询相对简单,对于多表的关联查询单纯的sql不好查询,我们使用sql进行先查询出主表满足条件的rowId,在根据根据满足条件的rowid进行遍历取值。

思路

我们先取对比一下其他数据库实现的原理。

  1. Mysql的实现原理
    总数:SELECT COUNT(*) AS total FROM person WHERE (name LIKE ?)
    分页:SELECT id,name,age,email FROM person WHERE (name LIKE ?) LIMIT ?,?

10 2
0 202
文章
· 九月 18, 2023 阅读大约需 2 分钟
第三十一章 Classes - 继承规则=

第三十一章 Classes - 继承规则

继承规则

与其他基于类的语言一样,可以通过继承组合多个类定义。 类定义可以扩展(或继承)多个其他类。这些类又可以扩展其他类。

请注意,类不能继承 Python 中定义的类(即 .py 文件中包含的类定义),反之亦然。

以下小节提供了中类继承的基本规则。

继承顺序

使用以下继承顺序规则:

  1. 默认情况下,如果在多个超类中定义了给定名称的类成员,则子类将从超类列表中最左边的类中获取定义。
  2. 如果类定义包含 Inheritance = right,则子类从超类列表中最右侧的类中获取定义。

由于历史原因,大多数类都包含 Inheritance = right

主要的超类

任何扩展其他类的类都有一个主要超类。

无论类使用哪种继承顺序,主超类都是第一个,从左到右阅读。

对于任何类级编译器关键字,给定类使用其主超类中指定的值。

对于持久化类来说,主超类尤其重要。

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

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

为什么是向量?

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

还有许多其他原因。

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

0 0
0 45
文章
· 九月 17, 2023 阅读大约需 2 分钟
小程序--密码增强管理:无缝编辑密码

增强的密码管理:无缝编辑密码

在不断发展的数字安全领域,强大的密码管理工具已变得不可或缺。我们的密码管理应用程序旨在简化和保护您的在线生活,现在提供了一项增强功能 - 轻松编辑密码的能力。

为什么这个功能会改变游戏规则?

0 0
0 61
文章
· 九月 17, 2023 阅读大约需 2 分钟
第三十章 Classes - 方法生成器

第三十章 Classes - 方法生成器

方法生成器

方法生成器是类编译器在类编译期间调用的程序。它的输出是该方法的实际运行时实现。方法生成器提供了一种继承方法的方法,可以生成根据继承类或属性的需要定制的高性能、专用代码。在 IRIS 库中,方法生成器广泛用于数据类型和存储类。

Class Queries

类可以包含类查询。类查询定义可由该类使用的 SQL 查询,并指定用作查询容器的类。下面显示了一个示例:

0 0
0 38
文章
· 九月 14, 2023 阅读大约需 2 分钟
第二十八章 Classes - 引用其他类的方法

第二十八章 Classes - 引用其他类的方法

引用其他类的方法

在方法(或例程)中,使用下面的语法来引用其他类中的方法:

要调用类方法并访问其返回值,请使用如下表达式:

 ##class(Package.Class).MethodName(arguments)
iris.cls("Package.Class").MethodName(arguments)

例如:

 Set x=##class(Util.Utils).GetToday()
x=iris.cls("Util.Utils").GetToday()

也可以调用一个类方法而不访问它的返回值,如下所示:

0 0
0 59
文章
· 九月 14, 2023 阅读大约需 2 分钟
容器中的 InterSystems IRIS

InterSystems 还发布了容器化部署的IRIS。这篇文章旨在演示 InterSystems IRIS 和依赖 IRIS 后端的应用程序如何打包到镜像中并在容器中的其他计算机中运行,以及这样做有多么简单。

容器运行包含所有必需的可执行文件、二进制代码、库和配置文件的镜像。镜像可以从一台机器移动到另一台机器,像 Docker Hub 这样的镜像存储库可以简化这个过程。

我在本演示中使用了 Open Exchange 的应用程序。

演示视频: https://www.loom.com/share/93f9a760b5f54c0a8811b7a212387b9d

IRIS 数据平台社区版的镜像(image)可以在 InterSystems 容器注册表中找到:

0 0
0 73
文章
· 九月 14, 2023 阅读大约需 1 分钟
VS Code 无法连接到服务器的原因之一

昨天,我在一个客户网站提供从 Studio 迁移到 VS Code 的定制咨询时,就遇到了这种情况。

该站点的服务器已配置为使用delegated authentication,但尚未针对 /api/atelier Web 应用程序设置“delegated”复选框,而 InterSystems ObjectScript 扩展包的成员正是使用该复选框进行连接的。

一旦我们的应用程序设置了其复选框并单击了服务器管理器刷新按钮,就可以在服务器上枚举命名空间。

0 0
0 66
文章
· 九月 13, 2023 阅读大约需 2 分钟
第二十七章 Classes - 引用其他类成员

第二十七章 Classes - 引用其他类成员

引用其他类成员

在方法中,使用下面的语法来引用其他类成员:

  • 要引用ObjectScript中的参数,使用如下表达式:
 ..#PARAMETERNAME

只能使用ObjectScript直接访问参数。要从Python访问参数,请使用ObjectScript包装器方法返回参数,并在需要时调用此方法。例如:

0 0
0 33
文章
· 九月 13, 2023 阅读大约需 1 分钟
去掉了 InstallFoundation 的方法 (IRIS 2023.2+ )

我们最近发布了 IRIS 2023.2版本。
此版本从此类“HS.HC.Util.Installer”中删除了“InstallFoundation”
这是一个没有记录在官方文档中的私有的方法,但它被社区广泛用来安装 FHIR 服务器。
所以如果你遇到这个错误:<METHOD DOES NOT EXIST> *InstallFoundation,HS.HC.Util.Installer
在构建我们自己的 FHIR 服务器的演示时,您可以通过替换此行来修复它:
do ##class(HS.HC.Util.Installer).InstallFoundation (namespace) 替换成 Do ##class(HS.Util.Installer.Foundation).Install(namespace) `

0 0
0 38
文章
· 九月 12, 2023 阅读大约需 1 分钟
第二十六章 Classes - Methods

第二十六章 Classes - Methods

Methods

方法有两种:实例方法和类方法(在其他语言中称为静态方法)。

指定方法关键字

在方法定义中,可以包含影响方法行为的可选编译器关键字。以下列表显示了一些最常见的方法关键字:

Language

IRIS 中,可以用 ObjectScriptPython 编写方法。要指定编写方法所用的语言,请使用以下语法:

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

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

基于数据类型的属性

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

数据类型类

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

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

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

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

0 0
0 40
文章
· 九月 10, 2023 阅读大约需 2 分钟
第二十四章 Classes - 指定属性关键字

第二十四章 Classes - 指定属性关键字

指定属性关键字

在属性定义中,可以包含影响属性使用方式的可选属性关键字。以下列表显示了一些最常见的关键字:

Required

指定可以将此类实例之前设置的属性值存储到磁盘。默认情况下,属性不是必需的。在子类中,可以将可选属性标记为必需,但不能执行相反的操作。

InitialExpression

指定属性的初始值。默认情况下,属性没有初始值。子类继承InitialExpression关键字的值并且可以覆盖它。指定的值必须是有效的 ObjectScript 表达式。

Transient

指定该属性不存储在数据库中。默认情况下,属性不是瞬态的。子类继承 Transient 关键字的值并且不能覆盖它。

Private

指定该属性是私有的。子类继承 Private 关键字的值并且不能覆盖它。

0 0
0 35
文章
· 九月 9, 2023 阅读大约需 2 分钟
第二十三章 Classes - 属性

第二十三章 Classes - 属性

形式上 IRIS 有两种属性:

  • 属性,保存值。该值可以是以下任意值:

    • 单个文字值,通常基于数据类型。
    • 对象值(包括集合对象和流对象)。
    • 多维数组。这种情况不太常见。

    属性一词通常仅指作为propertiesattributes,而不是指具有关联的属性。

  • 关系,保持对象之间的关联。

可以在包含 ObjectScript 方法、Python 方法或两者组合的类中定义属性。但是,无法从 Python 方法访问关系。本节展示了一个示例类,其中包含显示以下一些变体的属性定义:

0 0
0 41
文章
· 九月 8, 2023 阅读大约需 2 分钟
第二十二章 Classes - 调用类方法的快捷方式

第二十二章 Classes - 调用类方法的快捷方式

调用类方法的快捷方式

使用 ObjectScript 调用类方法时,在以下情况下可以省略包(或更高级别的包):
- 引用是在一个类内,并且被引用的类在同一个包或子包中。
- 引用位于类内,并且该类使用 IMPORT 指令导入包含引用的类的包或子包。
- 该引用位于方法内,并且该方法使用 IMPORT 指令导入包含引用的类的包或子包。

ObjectScriptPython 调用类方法时,在以下情况下可以省略包(或更高级别的包):

0 0
0 41

您好!社区的各位老师,

在我的上一篇文章中,我们学习了以下主题:

  1. 什么是 Docker?
  2. Docker 的一些好处
  3. Docker 是如何工作的?
  4. Docker 镜像
  5. Docker容器
  6. Docker 镜像存储库
  7. InterSystems 的 Docker 镜像存储库
  8. Docker安装
  9. Docker 基本命令
  10. 使用 Docker 运行 IRIS 社区版
  11. Docker 桌面图形用户界面

在本文中,我们将讨论以下主题:

  1. 使用 Docker Compose 文件( YAML 文件)
  2. Docker 文件的使用(用于构建 Docker 镜像)
  3. Docker 卷的使用

那么让我们开始吧。

0 0
0 70
文章
· 九月 5, 2023 阅读大约需 11 分钟
HTTP请求监控响应时间

嗨,开发者们!

今天我想谈谈一个让我感到困难的话题。我相信你们中的很多人一定已经遇到过这种情况(所谓的“瓶颈”)。由于这是一个广泛的主题,因此本文将仅重点关注识别可能导致缓慢问题的传入 HTTP 请求。我还将向您提供我开发的一个小工具来帮助识别它们。

我们的软件变得越来越复杂,处理来自不同来源的大量请求,无论是前端还是第三方后端应用程序。为了确保最佳性能,必须有一个能够记录一些关键测量的日志系统,例如响应时间、global引用的数量以及每个 HTTP 响应执行的代码行数。作为工作的一部分,我参与了 EMR 软件的开发以及事件分析。由于用户负载主要来自 HTTP 请求(REST API 或 CSP 应用程序),因此在发生普遍缓慢问题时进行此类测量的需求变得显而易见。

0 0
0 99
文章
· 九月 5, 2023 阅读大约需 2 分钟
第十九章 ObjectScript - 执行例程

第十九章 ObjectScript - 执行例程

执行例程

执行例程时,使用DO命令,如下所示:

 do ^routinename

要执行一个过程、函数或子程序(不访问其返回值),可以使用以下命令:

 do label^routinename

 do label^routinename(arguments)

要执行过程、函数或子例程并引用其返回值,可以使用$$label^routinename$$label^routinename(参数)形式的表达式。例如:

 set myvariable=$$label^routinename(arguments)

在所有情况下,如果标签位于同一个例程中,则可以省略插入符号和例程名称。例如:

0 0
0 55
文章
· 九月 4, 2023 阅读大约需 3 分钟
第十八章 ObjectScript - 使用例程

第十八章 ObjectScript - 使用例程

例程

可以将例程视为 ObjectScript 程序。例程可以从头开始编写,也可以在编译类时自动生成。

Procedures, Functions, and Subroutines 过程、函数和子程序

ObjectScript 例程中,标签定义以下代码单元之一的起点:

  • Procedures过程(可选地返回一个值)。过程中定义的变量是该过程私有的,这意味着它们不可用于其他代码。对于函数和子例程来说,情况并非如此。

过程也称为过程块。

  • 函数(返回值)。
  • 子例程(不返回值)。

建议使用过程Procedures,因为这可以简化控制变量范围的任务。然而,在现有代码中,可能还会看到函数和子例程,并且能够识别它们非常有用。以下列表显示了所有这些形式的代码的外观。

0 0
0 34
文章
· 九月 3, 2023 阅读大约需 8 分钟
独立模式下 EMPI 的安装和适配 - FHIR之转换和摄取

大家好。

在上一篇文章中,我们了解了如何配置 EMPI 来接收 FHIR 消息。为此,我们安装了 InterSystems 提供的 FHIR 适配器,该适配器配置了一个可以向其发送 FHIR 消息的 REST 端点。然后,我们将获取消息并将其转换为 %String,我们将通过 TCP 将其发送到 HSPIDATA 命名空间中配置的 EMPI 的输出。

好吧,是时候看看我们如何检索消息、将其转换回 %DynamicObject 并将其解析为 EMPI 用来存储信息的类。

TCP消息接收

正如我们所指出的,从配置了 FHIR 资源接收的生产中,我们已将消息发送到我们有业务服务侦听的特定 TCP 端口,在我们的例子中,该业务服务将是一个简单的EnsLib.TCP。 PassthroughService的目标是捕获消息并将其转发到业务流程,我们将在其中执行所需的数据转换。

这里有我们的商业服务:

这是它的基本配置:

0 0
0 70
文章
· 九月 3, 2023 阅读大约需 7 分钟
在 Python 上使用IRIS REST API 进行 SQL 迁移

对于即将到来的Python 竞赛,我想制作一个小型演示,介绍如何使用 Python 创建一个简单的 REST 应用程序,该应用程序将使用 IRIS 作为数据库。使用这个工具

  • FastAPI框架,高性能,易学,快速编码,可用于生产
  • SQLAlchemy 是 Python SQL 工具包和对象关系映射器,为应用程序开发人员提供 SQL 的全部功能和灵活性
  • Alembic 是一个轻量级数据库迁移工具,可与 SQLAlchemy Database Toolkit for Python 一起使用。
  • Uvicorn 是 Python 的 ASGI Web 服务器实现。

1 0
0 66
文章
· 九月 3, 2023 阅读大约需 2 分钟
第十七章 ObjectScript - 使用宏和包含文件include file

第十七章 ObjectScript - 使用宏和包含文件

使用宏和包含文件

如前所述,可以定义宏并稍后在同一类或例程中使用它们。更常见的是,在包含文件中定义它们。

Macros

ObjectScript 支持定义替换的宏。定义可以是一个值、整行代码或(使用 ##continue 指令)多行。

要定义宏,请使用#define 指令或其他预处理器指令。例如:

#define macroname <definition> 

要引用宏,请使用以下语法:

$$$macroname

或者:

$$$macroname(arguments)

使用宏来确保一致性。例如:

0 0
0 39
文章
· 九月 2, 2023 阅读大约需 2 分钟
第十六章 ObjectScript - 日期和时间值

第十六章 ObjectScript - 日期和时间值

日期和时间值

当地时间

要访问当前进程的日期和时间,可以使用 $HOROLOG 特殊变量。因此,在许多 IRIS 应用程序中,日期和时间都以此变量使用的格式存储和传输。这种格式通常称为$H 格式或$HOROLOG 格式。

$HOROLOG 从操作系统检索日期和时间,因此始终位于本地时区。

IRIS 类库包含以更常见的格式(例如 ODBC)表示日期的数据类型类,许多应用程序使用这些数据类型而不是 $H 格式。请注意,通过数据类型类中的 %Library.PosixTime支持 POSIX 时间,新应用程序应使用该类来表示日期/时间值。

0 0
0 27
文章
· 九月 1, 2023 阅读大约需 2 分钟
JWT - JSON Web Token Authentication

JWT Authentication 原理及验证流程

原理

JWT 是一种结构紧凑、URL 安全的身份验证、授权或信息交换方式。在身份验证的情况下,服务器会向已通过身份验证的客户端提供一个 JWT,这样客户端在 JWT 过期之前就无需再提供密码来访问服务器上受保护的资源。

0 0
0 56
文章
· 八月 31, 2023 阅读大约需 1 分钟
常见问题--如何根据ID重建索引

InterSystems 常见问题解答

通过在持久类(=table)定义中提供的%BuildIndices() 方法的参数中指定要重建索引的 ID 的开始值和结束值,您可以仅重建该范围内的索引。

例如,要仅针对 ID=10 到 20 重建 Sample.Person 类中的 NameIDX 索引和 ZipCode 索引,请执行以下代码(ID 范围在第 5 个和第 6 个参数中指定)。

0 0
0 87
文章
· 八月 31, 2023 阅读大约需 2 分钟
第十四章 ObjectScript - 系统函数

第十四章 ObjectScript - 系统函数

系统函数

本节重点介绍 ObjectScript 中一些最常用的系统函数。

这些函数的名称不区分大小写。

类库还提供了大量实用方法,可以像使用函数一样使用它们。

Value Choice

在给定一些输入的情况下,可以使用以下函数来选择一个值:
- $CASE 将给定的测试表达式与一组比较值进行比较,然后返回与匹配的比较值关联的返回值。例如:

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

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

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

0 0
0 39
文章
· 八月 30, 2023 阅读大约需 5 分钟
使用 SQLAlchemy 将表传输到 IRIS 或从 IRIS 获取表

案例描述

假设您是一名 Python 开发人员或拥有一支训练有素的 Python 专业团队,但您分析 IRIS 中某些数据的期限很紧迫。当然,InterSystems 提供了许多用于各种分析和处理的工具。然而,在给定的场景中,最好使用旧的 Pandas 来完成工作,然后将 IRIS 留到下次使用。
对于上述情况和许多其他情况,您可能需要从 IRIS 获取表来管理 InterSystems 产品之外的数据。但是,当您有任何格式(即 CSV、TXT 或 Pickle)的外部表时,您可能还需要以相反的方式执行操作,您需要在其上导入并使用 IRIS 工具。
无论您是否必须处理上述问题,Innovatium让我明白,了解更多解决编码问题的方法总是能派上用场。好消息是,从 IRIS 引入表时,您不需要经历创建新表、传输所有行以及调整每种类型的繁琐过程。
本文将向您展示如何通过几行代码快速将 IRIS 表转换为 Pandas 数据框架并向后转换。您可以在我的GitHub上查看代码,您可以在其中找到包含本教程每个步骤的 Jupiter Notebook。

0 0
0 63