文章
· 十月 8, 2024 阅读大约需 5 分钟
FHIR Object Model 简介

挑战

在使用FHIR进行开发的过程中,我们会面对海量的FHIR规范中定义的数据结构,具体来说在FHIR规范中定义了超过150个资源、700多个资源内元素。每个定义里都包括了对自身结构的描述以及数据约束、数据绑定值集等。对于一个开发人员要记住这些内容非常困难。

同时FHIR数据,特别是Json格式的FHIR数据是典型的“有向图”结构,它的资源中嵌套元素定义、集合以及复杂的资源间“关系”,在这些复杂结构的数据间导航并操作,非常困难。

解决方案

在InterSystems IRIS for Health 2024.1之前,我们会将FHIR数据以Json文档的方式载入 %DynamicAbstractObject,例如下面的代码

2 0
0 169

HI 各位开发者们,

📅2024年9月23日🕑14:00-15:30🕞,InterSystems将举办线上研讨会,点击🔔此处🔔报名参会。

此次研讨会以“面向未来的数据平台——InterSystems IRIS五大亮点提速数据潜力挖掘与AI应用”为主题,帮助您了解InterSystems IRIS数据平台的五大亮点:

  • 使用InterSystems IRIS for Health进行FHIR开发
  • 使用Python进行互操作Production开发
  • InterSystems IRIS列存储
  • InterSystems IRIS外部表(Foreign Table)
  • InterSystems IRIS向量和基于向量检索的患者相似度匹配

0 2
0 99
文章
· 九月 22, 2024 阅读大约需 3 分钟
第三十章 使用派生密钥令牌进行加密和签名

第三十章 使用派生密钥令牌进行加密和签名

IRIS 支持 WS-SecureConversation 1.4 定义的 <DerivedKeyToken> 元素。可以创建并使用<DerivedKeyToken> 元素进行加密和签名,作为前三个主题中描述的方法的替代。

通常,会同时执行加密和签名。为简单起见,本主题分别介绍这些任务。有关结合加密和签名的信息,请参阅结合加密和签名。

概述

<DerivedKeyToken> 元素旨在携带发送者和接收者可以独立使用的信息来生成相同的对称密钥。这些方可以使用该对称密钥对 SOAP 消息的指定部分进行加密、签名或同时执行这两种操作。

要生成和使用 <DerivedKeyToken>,请执行以下操作:

0 1
0 100
文章
· 九月 6, 2024 阅读大约需 3 分钟
第十八章 添加时间戳和用户名令牌

第十八章 添加时间戳和用户名令牌

本主题讨论时间戳和用户令牌。

概述

时间戳是 WS-Security 标头中的 <Timestamp> 安全元素。严格来说,时间戳不是安全元素。但是,可以使用它来避免重放攻击。时间戳对于自定义日志记录也很有用。

用户名令牌是 WS-Security 标头中的 <UsernameToken> 安全元素;它带有用户名。它还可以带有相应的密码(可选为摘要形式)。通常使用它进行身份验证,即允许 IRIS Web 客户端使用需要密码的 Web 服务。

注意:默认情况下,WS-Security 标头元素以明文形式发送。要保护 <UsernameToken> 中的密码,应该使用 SSL/TLS、加密 <UsernameToken>(如其他地方所述),或者使用这些技术的某种组合。

0 0
0 120
文章
· 一月 22 阅读大约需 2 分钟
如何查询某张数据表占用的磁盘空间?

近期有些小伙伴需要查询某张特定的表所占用的磁盘大小,可能其他小伙伴也有类似的需求。

给大家一个例子供参考。

应当考虑到IRIS的表底层使用global存储数据,包括表数据、索引数据和流数据(如果表中有流属性的话),因此一张表的完整占用应当包含至少上述三种global的求和,如下所示:

1 0
1 112
文章
· 十月 9, 2024 阅读大约需 2 分钟
在 IRIS 中使用 Foreign Table(外部表)

Foreign Table 的概念

Foreign Table 是 IRIS SQL 中一种特殊类型的表。它不代表 IRIS 本地全局管理的数据,而是投射出来的,由 “外部服务器 ”管理的外部数据。从 SQL 的角度来看,外部表与普通表一样,可以在查询中使用,没有任何特定限制。

在数据编织中可以帮助整合不同的来源的数据,以支持各种应用、分析并提供智能洞察力。

1 0
0 106
文章
· 九月 23, 2024 阅读大约需 2 分钟
基于向量搜索的患者相似度匹配示例程序

演示程序

使用向量搜索在 IRIS for Health 上运行的病人相似性比较演示。
使用向量搜索计算相似度,在向量基础上比较不同病人之间的个人属性,如姓名、出生日期、地址等。得分越高,被比较的病人越有可能是同一个人。
本演示程序使用 sentence-transformers model 将文本转换为向量,然后使用 IRIS 向量函数来存储、读取和比较向量。

流程原理

image

1 0
0 106
文章
· 九月 8, 2024 阅读大约需 3 分钟
第二十章 加密 SOAP 主体

第二十章 加密 SOAP 主体

本主题介绍如何加密 IRIS Web 服务和 Web 客户端发送的 SOAP 消息正文。

主题“加密安全标头元素”和“使用派生密钥令牌进行加密和签名”描述了如何加密安全标头元素以及加密 SOAP 主体的其他方法。

加密概述

IRISSOAP 消息加密的支持基于 WS-Security 1.1。反过来,WS-Security 遵循 XML 加密规范。根据后者规范,要加密 XML 文档:

  1. 生成一个对称密钥以供临时使用。
  2. 可以使用它来加密文档(或文档的选定部分)。

使用包含内容加密版本的 <EncryptedData> 元素替换文档的这些部分。

1 0
0 101
文章
· 十月 29, 2024 阅读大约需 2 分钟
第五章 主设备、当前设备、空设备

第五章 主设备、当前设备、空设备

一个进程拥有一台设备

一次只有一个进程可以拥有一个设备,顺序文件除外。

换句话说,在进程成功向设备发出OPEN命令后,在第一个进程释放该设备之前,其他进程都无法打开该设备。进程通过以下任一方式释放设备:

  • 通过显式发出CLOSE命令。

  • 通过停下来。

每个进程都有一个主设备

每个 IRIS 进程都有一个主要输入设备和一个主要输出设备。默认情况下,这些是同一设备。当您登录终端并激活 IRIS 时,该终端将成为主要设备。由于 IRIS 隐式向该终端发出OPENUSE命令,因此可以立即向它发出READWRITE命令。 IRIS 主设备是操作系统指定为主输入设备的设备。 $PRINCIPAL特殊变量包含主设备的设备 ID

0 0
0 95
文章
· 十二月 13, 2024 阅读大约需 3 分钟
第四十九章 终端输入 输出 - 转义序列编程

第四十九章 终端输入 输出 - 转义序列编程

转义序列编程

转义序列的 ANSI 标准使智能终端的编程变得实用。字符串中转义字符及其后面的所有字符不会显示在屏幕上,但会更新$X$Y 。使用WRITE *语句将转义序列发送到终端,并通过直接设置$X和$Y来保持它们最新。

ANSI 标准建立了转义序列的标准语法。特定转义序列的效果取决于使用的终端类型。

每次READ之后在$ZB中查找传入的转义序列。 IRISANSI 标准转义序列和任何其他使用 ANSI 形式的转义序列放入$ZB中。 IRIS 可识别两种形式的转义序列:

0 0
0 93

第十四章 本地进程间通信(管道) - 用于进程间通信的 CLOSE 命令

用于进程间通信的 CLOSE 命令

如果使用带Q (/QUEUE) 参数代码的OPEN创建子进程,则该子进程可能会在设备上的CLOSE操作中继续存在。排队的进程间通信管道的生存能力取决于平台。在 UNIX® 系统上,子进程始终在CLOSE后继续存在。在 Windows 系统上,进程的生存取决于进程的年龄。刚刚启动的子进程不会在CLOSE操作中幸存,但是一旦子进程完全建立,它就会在 CLOSE操作中幸存。

0 0
0 92

2024.3InterSystems IRIS® 数据平台、InterSystems IRIS® for HealthHealthShare® Health Connect 现已正式发布 (GA)。

版本亮点

在此版本中,您可以期待一系列激动人心的更新,包括:

0 0
0 90
文章
· 十二月 18, 2024 阅读大约需 3 分钟
第五十二章 File 输入 输出 - OPEN模式参数

第五十二章 File 输入 输出 - OPEN模式参数

OPEN 模式参数

可以通过以下两种方式之一指定 OPEN 模式参数
- 用引号字符括起来的字母代码字符串,如 “VRWN”。每个字母都指定一个参数。字母代码可以按任何顺序指定;因为 IRIS 按照从左到右的顺序执行它们,所以在某些情况下,字母代码之间的交互可能会决定首选顺序。
- 一系列 /keyword 参数,未加引号。这些参数用冒号分隔。关键字参数可以按任意顺序指定;因为 IRIS 以从左到右的顺序执行它们,所以在某些情况下,参数之间的交互可能会决定首选顺序。

指定字母代码参数和关键字参数的组合时,请先指定字母代码字符串,然后指定关键字参数,用冒号分隔。以下示例指定三个字母代码参数,后跟两个关键字参数,后跟 reclen 和 timeout 参数。

0 0
0 88

InterSystems FAQ

一个实例上的最大命名空间数量是 2047. 但是,要使用这么大量的命名空间,你需要相应地配置好内存。

一个实例里可以创建的数据库的最大数量(包括远程数据库) 15998. 根据授权的类型,可能会有所限制。具体细节请参考以下文档。
Database Configuration [IRIS]
Database Configuration

0 0
0 88
文章
· 九月 14, 2024 阅读大约需 4 分钟
第二十五章 添加数字签名

第二十五章 添加数字签名

本主题介绍如何向 IRIS Web 服务和 Web 客户端发送的 SOAP 消息添加数字签名。

通常,会同时执行加密和签名。为简单起见,本主题仅介绍签名。有关结合加密和签名的信息,请参阅主题结合加密和签名。

主题使用派生密钥令牌进行加密和签名描述了向 SOAP 消息添加数字签名的另一种方法。

数字签名概述

可以使用数字签名来检测消息是否被篡改,或者简单地验证消息的某一部分是否确实由所列实体生成。与传统的手工签名一样,数字签名是对文档的附加,只有文档的创建者才能创建,并且不容易伪造。

IRISSOAP 消息的数字签名的支持基于 WS-Security 1.1。反过来,WS-Security 遵循 XML 签名规范。根据后者的规范,要对 XML 文档进行签名:

0 0
0 87

Hi 大家好

在本文中,我讲介绍我的应用 iris-AgenticAI .

代理式人工智能的兴起标志着人工智能与世界互动方式的变革性飞跃--从静态响应转变为动态、目标驱动的问题解决方式。参看 OpenAI’s Agentic SDK , OpenAI Agents SDK使您能够在一个轻量级、易用且抽象程度极低的软件包中构建代理人工智能应用程序。它是我们之前的代理实验 Swarm 的生产就绪升级版。

该应用展示了下一代自主人工智能系统,这些系统能够进行推理、协作,并以类似人类的适应能力执行复杂任务。

应用功能

  • Agent Loop 🔄 一个内置循环,可自主管理工具的执行,将结果发回 LLM,并迭代直至任务完成。
  • Python-First 🐍 利用本地 Python 语法(装饰器、生成器等)来协调和连锁代理,而无需外部 DSL。
  • Handoffs 🤝 通过在专业代理之间委派任务,无缝协调多代理工作流程。
  • Function Tools ⚒️ 用 @tool 修饰任何 Python 函数,可立即将其集成到代理的工具包中。
  • Vector Search (RAG) 🧠 原生集成向量存储(IRIS),用于 RAG 检索。
  • Tracing 🔍 内置跟踪功能,可实时可视化、调试和监控代理工作流(想想 LangSmith 的替代方案)。
  • MCP Servers 🌐 通过 stdio 和 HTTP 支持模型上下文协议(MCP),实现跨进程代理通信。
  • Chainlit UI 🖥️ 集成 Chainlit 框架,可使用最少的代码构建交互式聊天界面。
  • Stateful Memory 🧠 跨会话保存聊天历史、上下文和代理状态,以实现连续性和长期任务。

0 0
0 85
文章
· 十二月 27, 2024 阅读大约需 2 分钟
第五十九章 假脱机设备

第五十九章 假脱机设备

介绍

IRIS数据平台使能够将打印输出直接发送到您的打印机或屏幕,或将其保留在后台打印中以供以后打印。IRIS 假脱机独立于您的操作系统执行的假脱机。

IRIS 中的假脱机是一种技术,可让自动将程序的输出保存在 ^SPOOL 下标全局中,而不是立即打印。可以通过将 ^SPOOL 全局的内容发送到打印机来稍后打印输出。本页介绍使用此假脱机工具的两种方法:使用 ObjectScript 命令(OPEN、USE、WRITE、CLOSE)或使用 %IS%SPOOL 实用程序。

打开和使用假脱机设备

要将输出发送到当前命名空间中的 spool 全局变量,请打开 spooler 并将其指定为输出设备。

0 0
0 83

第三十二章 使用派生密钥令牌进行加密和签名 - 使用

进行加密

要使用 <DerivedKeyToken> 进行加密,请使用以下步骤:

  1. 如果要加密一个或多个安全标头元素,请创建这些安全标头元素。.
  2. 创建 <DerivedKeyToken> 并将其添加到 WS-Security 标头,如创建和添加 <DerivedKeyToken> 中所述。

请注意,此步骤还会创建并添加 <EncryptedKey> 所基于的 <EncryptedKey> 元素。

0 0
0 83
文章
· 十月 31, 2024 阅读大约需 2 分钟
第七章 在 I O 命令中指定设备

第七章 在 I/O 命令中指定设备

当使用 I/O 命令OPENUSECLOSE在除正在使用的设备之外的任何设备上处理 I/O 时,必须指定一个 I/O 设备。可以根据设备类型以三种方式之一指定设备,如下表所示。

0 0
0 81

社区朋友们好,

传统的基于关键词的搜索方式在处理具有细微差别的领域特定查询时往往力不从心。而向量搜索则通过语义理解能力,使AI智能体能够根据上下文(而非仅凭关键词)来检索信息并生成响应。

本文将通过逐步指导,带您创建一个具备代理能力的AI RAG(检索增强生成)应用程序。

实现步骤:

  1. 添加文档摄取功能
    • 自动获取并建立文档索引(例如《InterSystems IRIS 2025.1版本说明》)
    • 实现向量搜索功能
  2. 构建向量搜索智能体
  3. 移交至主智能体(分流处理)
  4. 运行智能体

1. Create Agent Tools 添加文档摄取功能

Implement Document Ingestion: Automated ingestion and indexing of documents


1.1 - 以下是实现文档摄取工具的代码:

    def ingestDoc(self):
        #Check if document is defined, by selecting from table
        #If not defined then INGEST document, Otherwise back
        embeddings = OpenAIEmbeddings()	
        #Load the document based on the fle type
        loader = TextLoader("/irisdev/app/docs/IRIS2025-1-Release-Notes.txt", encoding='utf-8')      
        
        documents = loader.load()        
        text_splitter = RecursiveCharacterTextSplitter(chunk_size=400, chunk_overlap=0)
        
        texts = text_splitter.split_documents(documents)
                       
        #COLLECTION_NAME = "rag_document"
        db = IRISVector.from_documents(
            embedding=embeddings,
            documents=texts,
            collection_name = self.COLLECTION_NAME,
            connection_string=self.CONNECTION_STRING,
        )

        db = IRISVector.from_documents(embedding=embeddings,documents=texts, collection_name = self.COLLECTION_NAME, connection_string=self.CONNECTION_STRING,)

向量搜索智能体(Vector Search Agent)能够自动完成文档的摄取(ingest)索引构建(index), 该新功能在InterSystems IRIS 2025.1的数据资源文件夹里) 至 IRIS 向量存储, 只有当数据尚未存在时,才执行该操作。



运行以下查询以从向量存储中获取所需数据:

SELECT
id, embedding, document, metadata
FROM SQLUser.AgenticAIRAG



1.2 - 实现向量搜索功能


以下代码为智能体提供了搜索能力:

 def ragSearch(self,prompt):
        #Check if collections are defined or ingested done.
        # if not then call ingest method
        embeddings = OpenAIEmbeddings()	
        db2 = IRISVector (
            embedding_function=embeddings,    
            collection_name=self.COLLECTION_NAME,
            connection_string=self.CONNECTION_STRING,
        )
        docs_with_score = db2.similarity_search_with_score(prompt)
        relevant_docs = ["".join(str(doc.page_content)) + " " for doc, _ in docs_with_score]
        
        #Generate Template
        template = f"""
        Prompt: {prompt}
        Relevant Docuemnts: {relevant_docs}
        """
        return template


分流代理处理传入的用户查询,并将其委托给矢量搜索代理,后者执行语义搜索操作,以检索最相关的信息。

0 0
0 80

第四十章 创建安全对话 - 启用 IRIS Web 服务以支持 WS-SecureConversation

启用 IRIS Web 服务以支持 WS-SecureConversation

Web 客户端向 Web 服务发送请求安全对话的消息时,安全对话就开始了。作为响应,Web 服务发送双方都可以使用的 <SecurityContextToken>

要使 IRIS Web 服务能够使用此令牌进行响应,请重写 Web 服务的 OnStartSecureConversation() 方法。此方法具有以下签名:

1 0
0 80
文章
· 二月 18 阅读大约需 2 分钟
第二十八章 T 开头的术语

第二十八章 T 开头的术语

以 T 开头的术语

表 (table)

InterSystems SQL

表是一种由表示特定实体的行和表示每个实体特定数据点的列组成的数据结构。

目标角色 (target role)

系统

在受保护的 IRIS 应用中,由应用程序授予给已经是其他角色(称为匹配角色)成员的用户的角色。如果用户拥有匹配角色,则在使用应用程序时,用户还可以被授予一个或多个额外的目标角色。

目标用户 (target user)

系统

0 0
0 79
文章
· 二月 10 阅读大约需 2 分钟
第二十章 P 开头的术语

第二十章 P 开头的术语

通过引用传递 (passing by reference)

系统

一种传递参数地址而不是值的方式。这允许访问实际的变量,使得传递给的方法、函数或例程可以更改变量的实际值。

通过值传递 (passing by value)

系统

传递参数值的一种方式。这提供了变量的副本。因此,传递给的方法、函数或例程无法更改变量的实际值。

模式匹配表 (pattern match table)

系统

内部表,用于指示 IRIS 是否将字符视为字母、标点、数字或控制字符。

权限 (permission)

系统

在资源上执行某项活动的能力说明。对于数据库资源,可用的权限有读取(Read)和写入(Write)。对于服务、应用程序或管理操作,可用的权限是使用(Use)。

0 0
0 79
文章
· 十月 25, 2024 阅读大约需 2 分钟
第一章 I O 输入 输出简介

第一章 I/O 输入/输出简介

本页概括地描述了如何在 IRIS 数据平台应用程序中以及在 IRIS 提示符下使用 I/O 设备。

介绍

IRIS 数据平台为多种不同类型的逻辑和物理设备提供支持。支持的逻辑设备包括:
- 主要装置
- 文件
- 管道
- TCP连接
- 作业间通信 (IJC) 设备用于在 IRIS 进程之间进行通信
- 假脱机程序

支持的物理设备包括

  • 终端
  • 打印机

I/O 命令概述

I/O 命令允许拥有、使用、读取、写入和关闭设备。要将 I/O 操作定向到设备,请首先发出以下命令:

1 0
0 79
文章
· 一月 7 阅读大约需 3 分钟
第六十八章 打印机 - 在 UNIX® 上指定打印机

第六十八章 打印机 - 在 UNIX® 上指定打印机

要在 UNIX 设备名称为 /dev/tty06 的终端上打开 I/O 设备,请输入以下命令

   OPEN "/dev/tty06"

UNIX 系统上,打印机由 OPEN 命令上的名称标识,并在 tty 设备上作为“字符特殊”文件处理。因此,支持的 OPENUSE 命令参数与终端 I/O 相同, 而不是顺序文件 I/O 的参数。

UNIX 上,OPEN 支持大多数终端 I/O 关键字参数,如终端 I/O 中所述。

0 0
0 78
文章
· 十二月 15, 2024 阅读大约需 4 分钟
第五十一章 File 输入 输出 - 文件路径名工具

第五十一章 File 输入 输出 - 文件路径名工具

文件路径名工具

如果当前设备是顺序文件,则$ZIO包含该文件的完整路径名。

可以使用$ZSEARCH返回指定文件或目录的完整文件规范(路径名和文件名)。文件名可能包含通配符, $ZSEARCH使用通配符返回一系列满足通配符的完全限定路径名。

%Library.File 类包含许多提供文件系统服务的方法。这些包括:

0 0
0 77