文章 liu bo · 九月 21, 2023 阅读大约需 4 分钟 通过自定义数据类型实现参数统一验证优化重构代码 前言 对于第三方接口进行交互的时候,往往需要大量的进行参数合法性校验。以前的方法就是对每个参数进行验证。如下截图: 上图的会存在大量的if else if else..,如果字段很多,那导致一个方法存在大量的验证的代码,那我们考虑是否可以进行统一的验证参数的合法性。 思路 平时建立类的时候我们可以写参数MAXLEN=100,TRUNCATE=1 是否截取等,那找找这些参数的定义地方。如截图: 那我们想要定义自己的参数,该如何定义呢?根据面向对象设计原则之一: #Globals #工具 #Ensemble 13 1 1 161
公告 Claire Zheng · 九月 26, 2023 2023 InterSystems Python 编程大赛获奖者公布 Hi 开发者们, 是时候公布2023 InterSystems Python 编程大赛的获奖者了! 感谢所有提交15 份申请的出色参与者 🔥 #竞赛 #IRIS竞赛 0 0 0 54
文章 Michael Lei · 九月 20, 2023 阅读大约需 4 分钟 基于IRISI对您的敏感数据进行令牌化/代币化 根据剑桥词典的解释,令牌化数据是“用令牌(=代表第一个数据的不同数据)替换隐私数据,以防止隐私信息被不被允许做的人看到”(https://dictionary.cambridge.org/pt/dicionario/ingles/tokenize)。如今,一些公司,尤其是金融和医疗保健领域的公司,正在将其数据令牌/代币化作为满足网络安全和数据隐私(GDPR、CCPA、HIPAA 和 LGPD)要求的重要策略。但是,为什么不使用加密呢?保护敏感数据的令牌化过程比数据加密更常用,原因如下: #安全 #InterSystems IRIS Open Exchange app 0 0 0 106
文章 姚 鑫 · 九月 20, 2023 阅读大约需 2 分钟 第三十二章 Objects [toc] 第三十三章 Objects - OREFs OREFs 对象类的 %New() 方法创建一个内部内存结构来包含对象的数据,并返回指向该结构的 OREF(对象引用)。 OREF 是 IRIS 中的一种特殊值。应该记住以下几点: 在终端中,OREF 的内容取决于所使用的语言: 在 ObjectScript 中,会看到一个由数字、@ 符号和类名称组成的字符串。 在 Python 中,会看到一个包含类名和内存中 18 个字符的唯一位置的字符串。 例如: #InterSystems IRIS for Health 0 0 0 108
文章 姚 鑫 · 九月 18, 2023 阅读大约需 2 分钟 第三十一章 Classes - 继承规则= 第三十一章 Classes - 继承规则 继承规则 与其他基于类的语言一样,可以通过继承组合多个类定义。 类定义可以扩展(或继承)多个其他类。这些类又可以扩展其他类。 请注意,类不能继承 Python 中定义的类(即 .py 文件中包含的类定义),反之亦然。 以下小节提供了中类继承的基本规则。 继承顺序 使用以下继承顺序规则: 默认情况下,如果在多个超类中定义了给定名称的类成员,则子类将从超类列表中最左边的类中获取定义。 如果类定义包含 Inheritance = right,则子类从超类列表中最右侧的类中获取定义。 由于历史原因,大多数类都包含 Inheritance = right。 主要的超类 任何扩展其他类的类都有一个主要超类。 无论类使用哪种继承顺序,主超类都是第一个,从左到右阅读。 对于任何类级编译器关键字,给定类使用其主超类中指定的值。 对于持久化类来说,主超类尤其重要。 #InterSystems IRIS for Health 1 0 0 79
文章 Michael Lei · 九月 18, 2023 阅读大约需 6 分钟 开发者作品展示--几乎实现的向量支持 如今,关于大语言模型、人工智能等的消息不绝于耳。向量数据库是其中的一部分,并且已经有非IRIS的技术实现了向量数据库。 为什么是向量? 相似性搜索:向量可以进行高效的相似性搜索,例如在数据集中查找最相似的项目或文档。传统的关系数据库是为精确匹配搜索而设计的,不适合图像或文本相似性搜索等任务。 灵活性:向量表示形式用途广泛,可以从各种数据类型派生,例如文本(通过 Word2Vec、BERT 等嵌入)、图像(通过深度学习模型)等。 跨模态搜索:向量可以跨不同数据模态进行搜索。例如,给定图像的向量表示,人们可以在多模式数据库中搜索相似的图像或相关文本。 还有许多其他原因。 因此,对于这次 pyhon 竞赛,我决定尝试实现这种支持。不幸的是我没能及时完成它,下面我将解释原因。 ##嵌入式 Python #Docker #Git #JDBC #ObjectScript #ODBC #Python #SQL #Vector Search #InterSystems IRIS Open Exchange app 0 0 0 112
文章 Michael Lei · 九月 17, 2023 阅读大约需 2 分钟 小程序--密码增强管理:无缝编辑密码 增强的密码管理:无缝编辑密码 在不断发展的数字安全领域,强大的密码管理工具已变得不可或缺。我们的密码管理应用程序旨在简化和保护您的在线生活,现在提供了一项增强功能 - 轻松编辑密码的能力。 为什么这个功能会改变游戏规则? #JavaScript #Python #SQL #工具 #InterSystems IRIS #Open Exchange Open Exchange app 0 0 0 112
问题 郭 恩意 · 九月 5, 2023 执行SQL时报错504 执行SQL语句查询数据时,提示unexpected status code, unable to process HyperEvent:Gateway timeout(504) #SQL #HealthShare 0 4 0 156
文章 姚 鑫 · 九月 17, 2023 阅读大约需 2 分钟 第三十章 Classes - 方法生成器 第三十章 Classes - 方法生成器 方法生成器 方法生成器是类编译器在类编译期间调用的程序。它的输出是该方法的实际运行时实现。方法生成器提供了一种继承方法的方法,可以生成根据继承类或属性的需要定制的高性能、专用代码。在 IRIS 库中,方法生成器广泛用于数据类型和存储类。 Class Queries 类可以包含类查询。类查询定义可由该类使用的 SQL 查询,并指定用作查询容器的类。下面显示了一个示例: #InterSystems IRIS for Health 0 0 0 79
公告 Michael Lei · 九月 14, 2023 InterSystems IRIS 小数点版本发布说明 有时,InterSystems 必须重新发布版本以纠正 1-2 个问题。此过程会生成称为“小数点版本”的新套件。 #版本 #InterSystems IRIS 0 0 0 109
文章 姚 鑫 · 九月 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() 也可以调用一个类方法而不访问它的返回值,如下所示: #InterSystems IRIS for Health 0 0 0 116
公告 Weiwei Gu · 九月 14, 2023 来认识 2023 年 8 月的InterSystems Global Masters获奖者! 是时候宣布八月份的获奖者了!请欢迎我们出色的Global Masters英雄! 热烈的掌声归于这些开发者以及他们在 8 月份为我们全球开发者社区做出的巨大贡献: 🥇@Sylvain Guilbaud🥈@Ashok Kumar 🥉 @罗伯特·森珀 请在下面了解有关比赛和我们的优秀获奖者的更多信息。 #Global Masters 0 0 0 90
文章 Weiwei Gu · 九月 14, 2023 阅读大约需 2 分钟 容器中的 InterSystems IRIS InterSystems 还发布了容器化部署的IRIS。这篇文章旨在演示 InterSystems IRIS 和依赖 IRIS 后端的应用程序如何打包到镜像中并在容器中的其他计算机中运行,以及这样做有多么简单。 容器运行包含所有必需的可执行文件、二进制代码、库和配置文件的镜像。镜像可以从一台机器移动到另一台机器,像 Docker Hub 这样的镜像存储库可以简化这个过程。 我在本演示中使用了 Open Exchange 的应用程序。 演示视频: https://www.loom.com/share/93f9a760b5f54c0a8811b7a212387b9d IRIS 数据平台社区版的镜像(image)可以在 InterSystems 容器注册表中找到: #Docker #容器化 #InterSystems IRIS #InterSystems IRIS for Health #Open Exchange #VSCode Open Exchange app 0 0 0 132
文章 Weiwei Gu · 九月 14, 2023 阅读大约需 1 分钟 VS Code 无法连接到服务器的原因之一 昨天,我在一个客户网站提供从 Studio 迁移到 VS Code 的定制咨询时,就遇到了这种情况。 该站点的服务器已配置为使用delegated authentication,但尚未针对 /api/atelier Web 应用程序设置“delegated”复选框,而 InterSystems ObjectScript 扩展包的成员正是使用该复选框进行连接的。 一旦我们的应用程序设置了其复选框并单击了服务器管理器刷新按钮,就可以在服务器上枚举命名空间。 #身份认证 #VSCode 0 0 0 119
问题 华 张 · 九月 13, 2023 请问iscsnmp.dll文件需要读取的snmpext.dat文件不存在怎么办? 如题,我根据日志发现并没有snmpext.dat文件 #Caché 0 1 0 119
文章 姚 鑫 · 九月 13, 2023 阅读大约需 2 分钟 第二十七章 Classes - 引用其他类成员 第二十七章 Classes - 引用其他类成员 引用其他类成员 在方法中,使用下面的语法来引用其他类成员: 要引用ObjectScript中的参数,使用如下表达式: ..#PARAMETERNAME 只能使用ObjectScript直接访问参数。要从Python访问参数,请使用ObjectScript包装器方法返回参数,并在需要时调用此方法。例如: #InterSystems IRIS for Health 0 0 0 63
公告 Michael Lei · 九月 13, 2023 InterSystems 参加 麻省理工大学2023年度HackMIT InterSystems 团队本周末将前往麻省理工学院最大的黑客马拉松,届时我们将为黑客们带来一项技术挑战。我们为黑客们提供在他们的项目中使用 IntegratedML 或 InterSystems Supply Chain Orchestrator 的机会,以便争夺一些非常酷的奖品! 如果您在波士顿并且有兴趣成为活动中的 InterSystems 导师,请给我们写信。 #活动 #其他 0 0 0 96
文章 Weiwei Gu · 九月 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) ` #FHIR #InterSystems IRIS for Health 0 0 0 70
文章 姚 鑫 · 九月 12, 2023 阅读大约需 1 分钟 第二十六章 Classes - Methods 第二十六章 Classes - Methods Methods 方法有两种:实例方法和类方法(在其他语言中称为静态方法)。 指定方法关键字 在方法定义中,可以包含影响方法行为的可选编译器关键字。以下列表显示了一些最常见的方法关键字: Language 在 IRIS 中,可以用 ObjectScript 或 Python 编写方法。要指定编写方法所用的语言,请使用以下语法: #InterSystems IRIS for Health 0 0 0 35
文章 姚 鑫 · 九月 11, 2023 阅读大约需 3 分钟 第二十五章 Classes - 基于数据类型的属性 第二十五章 Classes - 基于数据类型的属性 基于数据类型的属性 当定义属性并将其类型指定为数据类型类时,可以使用特殊选项来定义和使用该属性,如本节中所述。 数据类型类 数据类型类使能够强制执行有关属性值的规则集。 IRIS 提供的数据类型类包括 %Library.String、 %Library.Integer、 %Library.Numeric、%Library.Date等等。因为 %Library 包的类名可以缩写,所以可以缩写其中的许多类;例如, %Date 是 %Library.Date的缩写。 每个数据类型类都具有以下特征: 它指定编译器关键字的值。对于属性,编译器关键字可以执行以下操作: #InterSystems IRIS for Health 0 0 0 111
InterSystems 官方 Claire Zheng · 九月 11, 2023 InterSystems Supply Chain Orchestrator 和 InterSystems IRIS for Supply Chain 现已正式发布(GA) InterSystems 很高兴地宣布InterSystems Supply Chain Orchestrator™的核心组件,即 InterSystems IRIS for Supply Chain 2023.1 版,现已正式发布 (GA)。 #InterSystems Package Manager (IPM) #InterSystems 业务解决方案和架构 #框架 #InterSystems IRIS #InterSystems 官方 #Supply Chain Orchestrator 0 0 0 116
文章 姚 鑫 · 九月 10, 2023 阅读大约需 2 分钟 第二十四章 Classes - 指定属性关键字 第二十四章 Classes - 指定属性关键字 指定属性关键字 在属性定义中,可以包含影响属性使用方式的可选属性关键字。以下列表显示了一些最常见的关键字: Required 指定可以将此类实例之前设置的属性值存储到磁盘。默认情况下,属性不是必需的。在子类中,可以将可选属性标记为必需,但不能执行相反的操作。 InitialExpression 指定属性的初始值。默认情况下,属性没有初始值。子类继承InitialExpression关键字的值并且可以覆盖它。指定的值必须是有效的 ObjectScript 表达式。 Transient 指定该属性不存储在数据库中。默认情况下,属性不是瞬态的。子类继承 Transient 关键字的值并且不能覆盖它。 Private 指定该属性是私有的。子类继承 Private 关键字的值并且不能覆盖它。 #InterSystems IRIS for Health 0 0 0 88
文章 姚 鑫 · 九月 9, 2023 阅读大约需 2 分钟 第二十三章 Classes - 属性 第二十三章 Classes - 属性 形式上 IRIS 有两种属性: 属性,保存值。该值可以是以下任意值: 单个文字值,通常基于数据类型。 对象值(包括集合对象和流对象)。 多维数组。这种情况不太常见。 属性一词通常仅指作为properties的attributes,而不是指具有关联的属性。 关系,保持对象之间的关联。 可以在包含 ObjectScript 方法、Python 方法或两者组合的类中定义属性。但是,无法从 Python 方法访问关系。本节展示了一个示例类,其中包含显示以下一些变体的属性定义: #InterSystems IRIS for Health 0 0 0 81
文章 姚 鑫 · 九月 8, 2023 阅读大约需 2 分钟 第二十二章 Classes - 调用类方法的快捷方式 第二十二章 Classes - 调用类方法的快捷方式 调用类方法的快捷方式 使用 ObjectScript 调用类方法时,在以下情况下可以省略包(或更高级别的包): - 引用是在一个类内,并且被引用的类在同一个包或子包中。 - 引用位于类内,并且该类使用 IMPORT 指令导入包含引用的类的包或子包。 - 该引用位于方法内,并且该方法使用 IMPORT 指令导入包含引用的类的包或子包。 从 ObjectScript 或 Python 调用类方法时,在以下情况下可以省略包(或更高级别的包): #InterSystems IRIS for Health 0 0 0 88
文章 Lilian Huang · 九月 7, 2023 阅读大约需 7 分钟 Docker 简介 - 第 2 部分(Docker Compose、Docker File、Docker Volume) 您好!社区的各位老师, 在我的上一篇文章中,我们学习了以下主题: 什么是 Docker? Docker 的一些好处 Docker 是如何工作的? Docker 镜像 Docker容器 Docker 镜像存储库 InterSystems 的 Docker 镜像存储库 Docker安装 Docker 基本命令 使用 Docker 运行 IRIS 社区版 Docker 桌面图形用户界面 在本文中,我们将讨论以下主题: 使用 Docker Compose 文件( YAML 文件) Docker 文件的使用(用于构建 Docker 镜像) Docker 卷的使用 那么让我们开始吧。 #Docker #Open Exchange 0 0 0 133
文章 Lilian Huang · 九月 5, 2023 阅读大约需 11 分钟 HTTP请求监控响应时间 嗨,开发者们! 今天我想谈谈一个让我感到困难的话题。我相信你们中的很多人一定已经遇到过这种情况(所谓的“瓶颈”)。由于这是一个广泛的主题,因此本文将仅重点关注识别可能导致缓慢问题的传入 HTTP 请求。我还将向您提供我开发的一个小工具来帮助识别它们。 我们的软件变得越来越复杂,处理来自不同来源的大量请求,无论是前端还是第三方后端应用程序。为了确保最佳性能,必须有一个能够记录一些关键测量的日志系统,例如响应时间、global引用的数量以及每个 HTTP 响应执行的代码行数。作为工作的一部分,我参与了 EMR 软件的开发以及事件分析。由于用户负载主要来自 HTTP 请求(REST API 或 CSP 应用程序),因此在发生普遍缓慢问题时进行此类测量的需求变得显而易见。 #监视 #InterSystems IRIS #Open Exchange Open Exchange app 0 0 0 231
文章 姚 鑫 · 九月 5, 2023 阅读大约需 2 分钟 第十九章 ObjectScript - 执行例程 第十九章 ObjectScript - 执行例程 执行例程 执行例程时,使用DO命令,如下所示: do ^routinename 要执行一个过程、函数或子程序(不访问其返回值),可以使用以下命令: do label^routinename 或 do label^routinename(arguments) 要执行过程、函数或子例程并引用其返回值,可以使用$$label^routinename或$$label^routinename(参数)形式的表达式。例如: set myvariable=$$label^routinename(arguments) 在所有情况下,如果标签位于同一个例程中,则可以省略插入符号和例程名称。例如: #InterSystems IRIS for Health 0 0 0 123
公告 Claire Zheng · 九月 4, 2023 第二届InterSystems Idea 创意马拉松获奖名单公布! 大家好! 我们的第二届 InterSystems Idea-A-Thon创意马拉松顺利结束,产生了29 个与竞赛主题相关的精彩创意: 💡使用 InterSystems IRIS 快速、安全、绿色地运行解决方案💡 感谢大家的想法、评论和投票! 现在是时候宣布获奖者了! #竞赛 #InterSystems 想法门户 0 0 0 92
文章 姚 鑫 · 九月 4, 2023 阅读大约需 3 分钟 第十八章 ObjectScript - 使用例程 第十八章 ObjectScript - 使用例程 例程 可以将例程视为 ObjectScript 程序。例程可以从头开始编写,也可以在编译类时自动生成。 Procedures, Functions, and Subroutines 过程、函数和子程序 在 ObjectScript 例程中,标签定义以下代码单元之一的起点: Procedures过程(可选地返回一个值)。过程中定义的变量是该过程私有的,这意味着它们不可用于其他代码。对于函数和子例程来说,情况并非如此。 过程也称为过程块。 函数(返回值)。 子例程(不返回值)。 建议使用过程Procedures,因为这可以简化控制变量范围的任务。然而,在现有代码中,可能还会看到函数和子例程,并且能够识别它们非常有用。以下列表显示了所有这些形式的代码的外观。 #InterSystems IRIS for Health 0 0 0 83
文章 Kelly Huang · 九月 3, 2023 阅读大约需 8 分钟 独立模式下 EMPI 的安装和适配 - FHIR之转换和摄取 大家好。 在上一篇文章中,我们了解了如何配置 EMPI 来接收 FHIR 消息。为此,我们安装了 InterSystems 提供的 FHIR 适配器,该适配器配置了一个可以向其发送 FHIR 消息的 REST 端点。然后,我们将获取消息并将其转换为 %String,我们将通过 TCP 将其发送到 HSPIDATA 命名空间中配置的 EMPI 的输出。 好吧,是时候看看我们如何检索消息、将其转换回 %DynamicObject 并将其解析为 EMPI 用来存储信息的类。 TCP消息接收 正如我们所指出的,从配置了 FHIR 资源接收的生产中,我们已将消息发送到我们有业务服务侦听的特定 TCP 端口,在我们的例子中,该业务服务将是一个简单的EnsLib.TCP。 PassthroughService的目标是捕获消息并将其转发到业务流程,我们将在其中执行所需的数据转换。 这里有我们的商业服务: 这是它的基本配置: #FHIR #提示和技巧 #HealthShare 0 0 0 139