搜索​​​​

清除过滤器
文章
Jingwei Wang · 七月 28, 2022

InterSystems SQL 的使用 - 第七部分 - Stored Procedures

定义 Stored Procedures 可以使用以下方式定义stored procedures 使用DDL定义存储过程 使用类方法定义存储过程 使用DDL定义存储过程 CREATE PROCEDURE 可以创建一个查询,它总是作为一个存储过程被预测。一个查询可以返回一个单一的结果集。 CREATE PROCEDURE AgeQuerySP(IN topnum INT 10, IN minage INT 20) BEGIN SELECT TOP :topnum Name, Age FROM Sample.Person WHERE Age > :minage; END 列表中的每个参数声明包括(按顺序)。指定参数模式是IN(输入值),OUT(输出值),还是INOUT(修改值)。如果省略,默认的参数模式是IN,参数名称是区分大小写的。 CREATE QUERY 可以创建一个可以选择作为存储过程投射的查询。一个查询可以返回一个单一的结果集,这个查询可能是也可能不是作为存储过程公开的。要创建一个作为存储过程公开的查询,你必须指定PROCEDURE关键字作为其特征之一。你也可以使用CREATE PROCEDURE语句来创建一个作为存储过程公开的查询。 为了创建一个查询,你必须拥有%CREATE_QUERY管理权限,正如GRANT命令所指定的那样。如果类的定义是一个已部署的类,你不能在该类中创建一个查询。 CREATE QUERY AgeQuery(IN topnum INT DEFAULT 10,IN minage INT 20) PROCEDURE BEGIN SELECT TOP :topnum Name,Age FROM Sample.Person WHERE Age > :minage ; END 使用类定义存储过程 要定义一个方法存储过程,只需定义一个类方法并设置其SqlProc关键字。 Class MyApp.Person Extends %Persistent [DdlAllowed] { ​ /// This procedure finds total sales for a territory ClassMethod FindTotal(territory As %String) As %Integer [SqlProc] { // use embedded sql to find total sales &sql(SELECT SUM(SalesAmount) INTO :total FROM Sales WHERE Territory = :territory ) ​ Quit total } } 这个类被编译后,FindTotal()方法将作为存储过程MyApp.Person_FindTotal()投射到SQL。你可以使用该方法的SqlName关键字改变SQL对存储过程的命名。 该方法使用一个存储过程上下文处理程序,在存储过程和其调用者(例如,ODBC服务器)之间来回传递存储过程上下文。这个过程上下文处理程序是由InterSystems IRIS使用%sqlcontext对象自动生成的(作为%qHandle:%SQLProcContext)。 %sqlcontext由SQLCODE错误状态、SQL行数、错误信息等属性组成,使用相应的SQL变量进行设置,如下所示。 SET %sqlcontext.%SQLCODE=SQLCODE SET %sqlcontext.%ROWCOUNT=%ROWCOUNT SET %sqlcontext.%Message=%msg 使用 Stored Procedures 当执行一个以SQL函数为参数的存储过程时,使用CALL来调用该存储过程,如下面的例子. CALL sp.MyProc(CURRENT_DATE) SELECT查询不支持执行带有SQL函数参数的存储过程。SELECT支持用一个SQL函数参数执行一个存储函数。 xDBC不支持使用SELECT或CALL来执行一个带有SQL函数参数的存储过程。 你可以在一个SQL查询中使用一个存储函数,就像它是一个内置的SQL函数一样。函数的名称是存储函数的SQL名称(在这里是 "Square"),由定义它的schema(包)名称限定(在这里是 "MyApp")。 下面的查询使用了Square函数。 SELECT Cost, MyApp.Utils_Square(Cost) As SquareCost FROM Products 查询Stored Procedures 信息 INFORMATION.SCHEMA.ROUTINES持久化类显示关于当前命名空间中所有routine和程序的信息。 下面的例子返回routine名称,方法或查询名称,routine类型(PROCEDURE或FUNCTION),routine主体(SQL=带SQL的类查询,EXTERNAL=不带SQL的类查询),返回数据类型,以及当前名称空间中模式 "Sample "中所有routine的routine定义。 SELECTROUTINE_NAME,METHOD_OR_QUERY_NAME,ROUTINE_TYPE,ROUTINE_BODY,SQL_DATA_ACCESS,IS_USER_DEFINED_CAST, DATA_TYPE||' '||CHARACTER_MAXIMUM_LENGTH AS Returns,NUMERIC_PRECISION||':'||NUMERIC_SCALE ASPrecisionScale, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA='Sample' INFORMATION.SCHEMA.PARAMETERS持久化类显示当前命名空间中所有routine和程序的输入和输出参数的信息。 下面的例子返回了当前命名空间中模式 "Sample "中所有routine的routine名称、参数名称、是输入参数还是输出参数,以及参数数据类型信息。 SELECT SPECIFIC_NAME,PARAMETER_NAME,PARAMETER_MODE,ORDINAL_POSITION, DATA_TYPE,CHARACTER_MAXIMUM_LENGTH AS MaxLen,NUMERIC_PRECISION||':'||NUMERIC_SCALE AS PrecisionScale FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_SCHEMA='Sample'
文章
Jingwei Wang · 七月 28, 2022

InterSystems SQL 的使用 - 第八部分 - 存储和使用流数据(BLOBs和CLOBs)

InterSystems SQL支持在InterSystems IRIS数据平台数据库中将流数据存储为BLOB(Binary Large Objects 二进制大对象)或CLOB(Character Large Objects字符大对象)的能力。 InterSystems SQL支持两种流字段: 字符流:用于大量的文本。 二进制流:用于图像、音频或视频。 BLOBs和CLOBs可以存储多达4GB的数据(JDBC和ODBC规范规定的限制)。除了在通过ODBC或JDBC客户端访问时如何处理字符编码转换(如Unicode到多字节)外,BLOB和CLOB的操作在各方面都是相同的:BLOB中的数据被视为二进制数据,决不转换为其他编码,而CLOB中的数据被视为字符数据,在必要时进行转换。 如果一个二进制流文件(BLOB)包含单一的非打印字符$CHAR(0),它被认为是一个空的二进制流。它相当于""空二进制流值:它存在(不是空的),但长度为0。 从对象的角度来看,BLOB和CLOBs被表示为流对象。更多信息请参见定义和使用类中的 "与流合作 "一章。 定义流数据字段 InterSystems SQL支持流字段的各种数据类型名称。这些InterSystems的数据类型名称是对应于以下的同义词。 字符流:数据类型LONGVARCHAR,映射到%Stream.GlobalCharacter类和ODBC/JDBC数据类型-1。 字符流:数据类型LONGVARBINARY,映射到%Stream.GlobalBinary类和ODBC/JDBC数据类型-4。 下面的例子定义了一个包含两个流字段的表。 CREATE TABLE Sample.MyTable ( Name VARCHAR(50) NOT NULL, Notes LONGVARCHAR, Photo LONGVARBINARY) 流字段的限制: 一个流字段可以被定义为NOT NULL。 一个流字段可以取一个DEFAULT值,一个ON UPDATE值,或者一个COMPUTECODE值。 一个流字段不能被定义为UNIQUE,一个主键字段,或一个IdKey。试图这样做会导致一个SQLCODE -400的致命错误,并带有%msg,如以下。ERROR #5414: 无效的索引属性。Sample.MyTable::MYTABLEUNIQUE2::Notes, Stream属性在唯一/主键/idkey索引中是不允许的 > ERROR #5030: 在编译'Sample.MyTable'类时发生错误。 不能用指定的COLLATE值定义一个流字段。试图这样做会导致一个SQLCODE -400的致命错误,并带有%msg,如以下。ERROR #5480: 属性参数没有声明。Sample.MyTable:Photo:COLLATION > ERROR #5030: 在编译'Sample.MyTable'类时发生错误。 在流数据字段中插入数据 有三种方法可以将数据插入到流字段。 %Stream.GlobalCharacter字段:你可以直接插入字符流数据。例如: INSERT INTO Sample.MyTable (Name,Notes) VALUES ('Fred','These are extensive notes about Fred') %Stream.GlobalCharacter和%Stream.GlobalBinary字段:你可以使用OREF插入流数据。你可以使用Write()方法将一个字符串追加到字符流中,或者使用WriteLine()方法将一个带有行终止符的字符串追加到字符流中。默认情况下,行结束符是$CHAR(13,10)(回车/换行);你可以通过设置LineTerminator属性改变行结束符。 在下面的例子中,第一部分创建了一个由两个字符串和它们的终止符组成的字符流,然后使用嵌入式SQL将其插入到一个流字段中。例子的第二部分返回字符流的长度并显示字符流数据,显示终止符。 ​ ClassMethod CreateAndInsertCharacterStream() { Set gcoref = ##class(%Stream.GlobalCharacter).%New() DO gcoref.WriteLine("First Line") Do gcoref.WriteLine("Second Line") &sql(INSERT INTO Sample.MyTable(Name, Notes) VALUES('Fred',:gcoref)) IF SQLCODE<0 {WRITE "SQLCODE ERROR:"_SQLCODE_" "_%msg QUIT} ELSE {WRITE "Insert successful",!} do ..DisplayTheCharacterStream(gcoref) } ​ ClassMethod DisplayTheCharacterStream(gcoref As %Stream.GlobalCharacter) { KILL ^CacheStream WRITE gcoref.%Save(),! ZWRITE ^CacheStream } %Stream.GlobalCharacter和%Stream.GlobalBinary字段:你可以通过从文件中读取数据来插入流数据。比如说 ClassMethod InsertDataFromImage() { Set myf = "C:\Temps\IMG.png" OPEN myf:("RF"):10 USE myf:0 READ x(1):10 &sql(INSERT INTO Sample.MyTable (Name,Photo) VALUES ('George',:x(1))) IF SQLCODE <0 {WRITE "INSERT Failed:"_SQLCODE_" "_%msg QUIT} ​ CLOSE myf } 作为DEFAULT值或计算值插入的字符串数据将以适合于流字段的格式存储。 查询流字段数据 二进制流字段返回字符串<binary>。 SELECT Name,Photo,Notes FROM Sample.MyTable WHERE Photo IS NOT NULL DISTINCT, GROUP BY, 和 ORDER BY 每个流数据字段的OID值都是唯一的,即使数据本身包含重复的内容。这些SELECT子句对流的OID值进行操作,而不是数据值。因此,当应用于查询中的流字段时。 DISTINCT子句对重复的流数据值没有影响。DISTINCT子句将流字段为NULL的所有记录记录减少到一个NULL记录。DISTINCT对流字段的OID进行操作,而不是它的实际数据。 GROUP BY子句对重复的流数据值没有影响。GROUP BY子句将流字段为NULL的所有记录数减少到一个NULL记录。GROUP BY StreamField的操作对象是一个流字段的OID,而不是它的实际数据。 ORDER BY子句根据流数据值的OID值,而不是数据值来排序。ORDER BY子句在列出有流字段数据值的记录之前,先列出流字段为NULL的记录。 predicate 条件和流 IS [NOT] NULL 可以应用于流字段的数据值,如下面的例子中所示。 SELECT Name,Notes FROM Sample.MyTable WHERE Notes IS NOT NULL BETWEEN, EXISTS, IN, %INLIST, LIKE, %MATCHES, 和 %PATTERN谓词可以应用于流对象的OID值,如下面的例子所示。 SELECT Name,Notes FROM Sample.MyTable WHERE Notes %MATCHES '*1[0-9]*GlobalChar*' 。 试图在一个流字段上使用任何其他的predicate条件会导致SQLCODE -313错误。 聚合函数和流 COUNT聚合函数接收一个流字段,并对包含该字段非空值的记录进行计数,如下面的例子所示: SELECT COUNT(Photo) AS PicRows,COUNT(Notes) AS NoteRows FROM Sample.MyTable 然而,COUNT(DISTINCT)不支持流字段。对流字段不支持其他聚合函数。试图用任何其他聚合函数来使用流字段会导致SQLCODE -37错误。 标量函数和流 除了%OBJECT、CHARACTER_LENGTH(或CHAR_LENGTH或DATALENGTH)、SUBSTRING、CONVERT、XMLCONCAT、XMLELEMENT、XMLFOREST和%INTERNAL函数外,InterSystems SQL不能将任何函数应用到流字段。试图使用流字段作为任何其他SQL函数的参数会导致SQLCODE -37错误。 %OBJECT函数打开一个流对象(接受一个OID),并返回oref(对象引用),如以下例子所示: SELECT Name,Notes,%OBJECT(Notes) AS NotesOref FROM Sample.MyTable WHERE Notes IS NOT NULL CHARACTER_LENGTH,CHAR_LENGTH和DATALENGTH函数取一个流字段,并返回实际的数据长度,如下面的例子所示。 SELECT Name,DATALENGTH(Notes) AS NotesNumChars FROM Sample.MyTable WHERE Notes IS NOT NULL SUBSTRING函数接收一个流字段,并返回流字段实际数据值的指定子串,如下面的例子所示。 SELECT Name,SUBSTRING(Notes,1,10) AS Notes1st10Chars FROM Sample.MyTable WHERE Notes IS NOT NULL 当从管理门户的SQL执行界面发出时,SUBSTRING函数最多返回流字段数据的100个字符的子串。如果指定的流数据子串长于100个字符,会在第100个字符后面用省略号(...)表示。 CONVERT函数可以用来将流数据类型转换为VARCHAR,如下面的例子所示。 SELECT Name,CONVERT(VARCHAR(100),Notes) AS NotesTextAsStr FROM Sample.MyTable WHERE Notes IS NOT NULL CONVERT(datatype,expression)语法支持流数据转换。如果VARCHAR精度小于实际流数据的长度,它将返回值截断为VARCHAR精度。如果VARCHAR精度大于实际流数据的长度,返回值就有实际流数据的长度。不进行填充。 {fn CONVERT(expression,datatype)}语法不支持流数据转换;它发出SQLCODE -37错误。 %INTERNAL函数可以在流字段上使用,但不执行任何操作。 流字段并发锁定 InterSystems IRIS通过在流数据上加锁来保护流数据值不受另一个进程的并发操作。 InterSystems IRIS在执行写操作之前会拿出一个独占锁。写操作完成后,独占锁会立即释放。 InterSystems IRIS在第一次读操作发生时取出一个共享锁。只有在实际读取流时才会获得共享锁,并且在整个流从磁盘读入内部临时输入缓冲区后立即释放。 在InterSystems IRIS方法中使用流字段 你不能在InterSystems IRIS方法中直接使用嵌入式SQL或动态SQL来使用BLOB或CLOB值;而是要使用SQL来找到BLOB或CLOB的流标识符,然后创建%AbstractStream对象的实例来访问数据。 从ODBC使用流字段 ODBC规范没有为BLOB和CLOB字段提供任何识别或特殊处理。 InterSystems SQL在ODBC中表示CLOB字段为LONGVARCHAR (-1)类型。BLOB字段被表示为LONGVARBINARY类型(-4)。 从JDBC使用流字段 在一个Java程序中,你可以使用标准的JDBC BLOB和CLOB接口从BLOB或CLOB中检索或设置数据。比如说 Statement st = conn.createStatement()。 ResultSet rs = st.executeQuery("SELECT MyCLOB,MyBLOB FROM MyTable")。 rs.next(); // 取出Blob/Clob ​ java.sql.Clob clob = rs.getClob(1); java.sql.Blob blob = rs.getBlob(2); ​ // Length System.out.println("Clob length = " + clob.length())。 System.out.println("Blob length = " + blob.length())。 ​ // ... 注意:当完成对BLOB或CLOB的处理时,你必须明确地调用free()方法来关闭Java中的对象,并向服务器发送消息以释放流资源(对象和锁)。
公告
Claire Zheng · 八月 22, 2022

InterSystems IRIS医疗版互联互通套件2.0版支持国内互联互通标准转换为FHIR标准,提升数据易用性

2022年8月22日,中国 北京 —— 致力于帮助客户解决最关键的可扩展性、互操作性和速度问题的创新数据技术提供商InterSystems今日宣布在中国推出InterSystems IRIS医疗版互联互通套件2.0版,更好地满足用户对数据利用的需求。医疗技术的进步带来了呈指数级增长的数据量,医疗数据变得更分散、异构性更强、数据量更大,互操作性变得比以往任何时候都更加重要,更具挑战性。在国内,中国医院信息互联互通标准化成熟度测评工作自启动以来,已成为医院数据实现互联互通的重要建设标准。在国际上,HL7 FHIR®(快速医疗互操作性资源)缩小了医疗数据爆炸与数据应用能力之间的差距,成为面向未来的医疗数据互操作的标准。近年来,FHIR引起国内业内人士越来越多的关注与认可。此次推出的InterSystems IRIS医疗版互联互通套件2.0版本打通了国际、国内互联互通生态,有助于推动医疗数据的有效利用。 作为医疗行业数据技术和基于标准的互操作性的领导者,InterSystems长期致力于基于FHIR提供解决方案以解决医疗行业面临的挑战。2021年,InterSystems中国结合国内新版测评标准推出InterSystems IRIS医疗版互联互通套件,满足了医院快速落地互联互通标准化成熟度测评涉及到的标准化改造需求,广受市场认可。点击此处了解“InterSystems IRIS医疗版互联互通套件”详情。 InterSystems最新推出的InterSystems IRIS医疗版互联互通套件2.0版在原有服务基础上,打通了国内互联互通生态与FHIR生态,支持互联互通文档转换为FHIR资源,这一创新举措有效填补了市场空白。通过转换,满足FHIR标准的医疗数据能够在多种业务场景下更易获取和应用。InterSystems IRIS医疗版互联互通套件2.0版解决了长期以来大量医疗数据无法得到有效利用的难题,有利于提升医疗数据的利用价值,助力医疗机构持续实现业务创新。对用户而言,基于InterSystems IRIS医疗版数据平台,即可一键部署FHIR资源仓库,并基于FHIR API和资源开发临床、科研和健康管理等新应用。 此外,InterSystems IRIS医疗版互联互通套件2.0版可为用户提供一套完整的API,实现对互联互通平台的监控和管理,提升用户的业务管理能力。 InterSystems技术兼备高性能与稳定性,在国内连续多年支持数百家大型公立医院海量数据稳定运行。主流PC服务器单实例下,支持日消息吞吐量可高达27.64亿。截至2021年,InterSystems技术已助力一百余家医院通过四级及以上医院信息互联互通标准化成熟度评级,其中,五乙用户占全国30%以上。 InterSystems 亚太区总经理卢侠亮表示:“FHIR能够实时访问分布在各系统、数据库和设备上的数据,因此被行业称为面向未来的医疗数据标准,对于希望有效利用数据价值的用户来说,FHIR是不容错过的。InterSystems多年来始终致力于FHIR建设,我相信InterSystems IRIS医疗版互联互通套件2.0将为中国用户带来更高效的标准化互联互通技术保障。” 2022年8月19日,“InterSystems IRIS医疗版互联互通套件2.0”线上发布会成功举办,会议包括“产品演示”与“互动答疑”两个环节,欢迎点击此处观看发布会回放,了解更多详情。 如果您希望了解更多相关内容,欢迎跟帖回复!
文章
Louis Lu · 一月 26, 2022

InterSystems IRIS 中使用网页版本的命令行工具 - Web Terminal

许多使用InterSystems IRIS的用户在调试代码的时候习惯使用命令行的方式,比如运行一个函数查看输出或者查看代码运行过程中保存在global中的数据等等。 对于将 InterSystems IRIS 安装在 Windows 操作系统的用户,只需要点击右下角图标选择Terminal 就可以很方便的使用。 但是对于将其安装到 Linux 或者Docker 容器中的用户,要使用命令行却不那么方便,下面我将会介绍在我们 Openexchange 中的一个应用 -- Web Terminal。 也就是说可以在网页中直接执行Terminal中的命令。 或者查看SQL执行结果: 可以在其中输入 /help ,获取更多帮助信息 安装 1. 点击进入项目下载页面,选择下载最新的版本。 2. 在任意的命名空间下导入下载的xml文件。 注意在这里选择导入文件的同时也要勾选上 “编译导入的项” 3. 之后会出现下面提示导入成功的提示 如果出现类似于下面的错误提示: 请将下载的 WebTerminal-v4.9.3.xml 文件编辑做下面修改 1 . 第1611行:修改为 set requiredRole = "%DB_IRISSYS" 2. 第1730行:修改为 set dbPrefix = "IRIS" 重新导入就可以了。 使用 安装上面步骤安装完后,只需要在浏览器中输入网址:http://[host]:[port]/terminal/ (注意最后的 / 符号必须有)(比如:http://localhost:52777/terminal/) 输入访问的用户名密码后,就可以进入网页版本的terminal了 在Openexchange中详细介绍的地址在这里,更详细的文档可以点击这里
公告
Claire Zheng · 十月 12, 2023

创意社区新闻摘要#8 | InterSystems Ideas News#8

Hi 开发者社区的成员们,大家好! 欢迎关注我们第8期 InterSystems Ideas NEWS! 本期分享如下: ​​​​✓ 描述创意门户所有页面的新视频 ✓ 自上次NEWS发布以来实施的想法 ⏯观看视频:加入名人堂 除了“创意(Idea)”页面之外,创意门户还包含 4 个新页面: 门户指南(Portal Guide) 消息(News) 民意调查(Polls) 名人堂(Hall of Fame) 欢迎查看,随时了解创意门户(Idea Portal)上的最新动态! 自创意门户(Idea Portal)推出以来,开发者社区成员已实施了24 个创意。其中 6 个是在过去 3 个月内实现的: 创意 想法的实施(项目) 开发者 Include support for GraphQL by @Jose-Tomas Salvador GraphQL @Gevorg Arutiunian REST API for Security Package by @Evgeny Shvarov Config-API @Lorenzo Scalese Jupyter Notebook by @Alex MacLeod Jupyter Server Proxy for VS Code @John Murray Java Hibernate support for IRIS by @Dmitry Maslennikov IRIS Hibernate Dialect @yurimarx Marx Example of Flask application with SQLAlchemy IRIS by @Dmitry Maslennikov IRIS-FlaskBlog @Muhammad Waseem Support for Liquibase by @yurimarx Marx liquibase-iris @Dmitry Maslennikov 👏 感谢大家实施并发布这些想法 👏 请继续关注我们的后续公告! 在我们的InterSystems 创意门户上发布您的绝妙创意,并为现有创意投票并对其发表评论!
公告
Michael Lei · 九月 13, 2023

InterSystems 参加 麻省理工大学2023年度HackMIT

InterSystems 团队本周末将前往麻省理工学院最大的黑客马拉松,届时我们将为黑客们带来一项技术挑战。我们为黑客们提供在他们的项目中使用 IntegratedML 或 InterSystems Supply Chain Orchestrator 的机会,以便争夺一些非常酷的奖品! 如果您在波士顿并且有兴趣成为活动中的 InterSystems 导师,请给我们写信。 我们期待看到新的创意项目!请继续关注 9 月 18 日公布的获奖者名单。 了解有关本次黑客马拉松的更多信息,请访问HackMIT 官方网站。
公告
Claire Zheng · 四月 10, 2023

创意社区新闻摘要#5 | InterSystems Ideas News#5

Hi 开发者社区的成员们,大家好! 欢迎关注我们第5期 InterSystems Ideas News! 本期分享如下: ✓名人堂 ——创意社区门户的新页面 ✓与 Global Masters 整合——您的每个奇思妙想都可以积分 ✓计划实施的想法清单 11 位开发人员已经实施了来自 Ideas Portal 的想法。我们在 InterSystems Ideas 上创建了一个新的专门页面来向这些英雄致敬。名人堂名单: 已实施创意的名称; 实施创意的开发人员; 项目名称(含详细信息链接)。 实施来自Community Opportunity 的创意,您的名字也将进入名人堂! 大约一个月前,提交产品创意的开发人员开始获得这些创意的积分。 我们想分享一下,自 2 月 22 日以来,作者因以下想法共获得了 18,200 Global Masters的积分 发布、推广或实施的 15 个产品创意: Cross-production Interoperability Messages, Service and Operation by @Stefan Cronje Additional Data Types for ISC Products by @Stefan Cronje Change data capture from IRIS to kafka using SQL commands by @Yuri Marx Allow graphical editing of Interoperability components BPL, DTL and Business Rules in VS Code by @Steve Pisani Examples to work with IRIS from Django by @Evgeny Shvarov Install python and java libraries from ZPM and Installation Manifest (%Installer) by @Yuri Marx Set password through environment variable by @Dmitry Maslennikov Add a project that helps to generate unittests for an ObjectScript class by @Evgeny Shvarov Create a UI for convenient and easy transfer of projects (classes, globals, applications, users, roles, privileges, grants, namespace mapping, SQLgateways, libraries, etc.) to other system instances for fast deployment. by @Sergey Mikhailenko Add a wizard similar to the SOAP wizard to generate a REST client from OpenAPI specification by @Jaime Lerga Public API for access to shared memory by @Alexey Maslov Fold code on loops and If's on studio by @Heloisa Paiva Chat bot to help with TrakCare customization/settings by Sumana Gopinath Iterative build of TrakCare configuration/code tables utilising FHIR and HL7 Messaging. by Linda McKay BPL, DTL, Business Rule Editor in VSCode by @Cristiano Silva 发布您的绝妙想法并赢得积分! 为了总结本期通讯,这里列出了计划实施的创意 Publish the InterSystems IRIS Native SDK for Node.js on npm by @John Murray Move users, roles, resources, user tasks, Mappings (etc) to a seperate Database, other than %SYS, so these items can be mirrored by @Sean.O'Connor1391 Please add google oauth authorization to login to the management portal by @Aleksandr Kolesov InterSystems Ideas - Long Term by @Vinay Purohit BPL, DTL, Business Rule Editor in VSCode by @Sawyer Butterfield Add Favorites in GM by @Irène Mykhailova LIMIT OFFSET support for IRIS SQL by @Dmitry Maslennikov Introduce WITH into IRIS SQL engine by @Evgeny Shvarov Security settings for mirror configurations by @Evgeny Shvarov A modern management portal to manage InterSystems IRIS by @Evgeny Shvarov copy/sync system configurations and user accounts between IRIS instances by @Evgeny Shvarov Jupyter Notebook by Guest 保持创意,在InterSystems Ideas上发布您的奇思妙想,对现有想法进行投票和评论!
公告
Claire Zheng · 二月 13, 2023

技术奖励结果公布 | 2023 InterSystems 开发者竞赛:工具(Tool)

Hi,开发者们! 以下是2023 年 InterSystems 开发者竞赛:工具(Tool)参赛者应用的技术奖励分数! Project Idea Implementation Python Docker ZPM Online Demo Code Quality First Article on DC Second Article on DC Video on YouTube First Time Contribution Total Bonus Nominal 3 3 2 2 2 1 2 1 3 3 22 gateway-sql 3 2 2 2 1 10 xml-to-udl 2 1 2 3 3 11 iris-persistent-class-audit 2 2 1 2 3 3 13 GlobalStreams-to-SQL 2 2 2 1 2 1 3 13 DX Jetpack for VS Code 2 2 2 1 3 10 JSONfile-to-Global 2 2 2 1 2 1 3 13 apptools-admin 3 2 5 irissqlcli 3 2 2 7 OpenAPI-Suite 3 2 2 2 1 2 1 13 iris-connections 2 2 1 2 1 3 11 Intersystems IRIS platform queue trend monitoring component 2 2 3 7 message_key_query 2 2 3 7 iris-log-viewer 3 2 2 2 1 2 1 3 16 iris-tripleslash 3 2 2 1 2 1 3 14 iris_log_analytics 3 3 iris-deploy-tools 2 2 2 6 blockchain - [ IRIS python ] 3 3 cos-url-shortener 3 2 2 1 2 3 3 16 iris-geo-map 3 2 2 2 1 2 1 3 16 ISC DEV 0 IRIS Data Migration Manager 3 3 奖金可能会有更新变化。 请在下面的评论或Discord 聊天中跟帖。
文章
Kelly Huang · 二月 27, 2023

物联网 (IOT) 在 InterSystems IRIS 平台上的应用

物联网( IoT ,Internet of things )即“万物相连的互联网”,是互联网基础上的延伸和扩展的网络,将各种信息传感设备与网络结合起来而形成的一个巨大网络,实现任何时间、任何地点,人、机、物的互联互通 物联网是新一代信息技术的重要组成部分,IT行业又叫:泛互联,意指物物相连,万物万联。由此,“物联网就是物物相连的互联网”。这有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;第二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信。因此,物联网(Internet of Things,简称IoT)是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、 连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络。在https://baike.baidu.com/item/物联网/7306589?fromtitle=IoT&fromid=552548&fr=aladdin 查看更多信息 IoT(物联网)作为一个互连事物的网络,包括车辆、机器、建筑物、家用设备或任何其他具有嵌入式 TCP/IP 远程连接可用的事物,允许其接收和发送执行指令和数据。每个事物都为物联网网络提供一项或多项服务。例如,智能灯泡提供关灯和开灯服务;智能空调维持环境温度;智能相机在捕捉运动时发送通知。然而,所有这些设备都可以一起运行以提供建筑物安全性,例如。当摄像头检测到运动时,灯就会亮起。那些可以提供业务和集成服务(例如构建安全性)的流程的编排由服务器软件控制器完成。它可以从十几个智能设备接收数据和指令并将其发送到 TCP/IP 网络(如 Internet),以将这些东西作为主要服务进行操作。 事物和服务器软件使用两种协议来互操作数据和指令:MQTT(消息队列遥测传输)和 REST(表述性状态传输)API。第一个更常见,因为它的结构更简单。某些设备的内存和处理器功能有限,没有足够的资源来使用 REST。因此,本文将详细介绍如何使用 MQTT 实现服务器端软件以与物联网进行互操作。 关于 MQTT MQTT 是一种用于消息队列/消息队列服务的轻量级、发布-订阅、机器对机器网络协议。它专为连接具有资源限制或网络带宽有限的设备的远程位置而设计。它必须在提供有序、无损、双向连接的传输协议上运行——通常是 TCP/IP。它是一个开放的 OASIS 标准和 ISO 推荐标准 (ISO/IEC 20922)。在https://baike.baidu.com/item/MQTT/3618851?fr=aladdin 上查看更多信息。 MQTT 协议有两个角色来在事物之间互操作数据:消息代理和客户端。第一个角色是服务器软件,用于接收和发布由一个或多个客户端生成或使用的消息。另外一个角色是智能设备和服务器软件,用于使用物的服务提供主要服务,例如提供楼宇自动化服务的服务器软件,或使用智能信号量和公共摄像头服务控制城市交通的软件。 MQTT 代理 市场上有各种 MQTT 消息代理,比较受欢迎的是 Eclipse Mosquitto (https://mosquitto.org/),因此我们将在示例中使用它。MQTT 代理类似于 JMS 或 MQ 代理。它是一种用于接收消息并将其发布到主题中的中间体。因此,连接的客户端可以订阅一个或多个主题以生成或使用来自这些主题的消息。这些主题允许客户端(软件和设备)以一种非耦合和异步的方式完成他们的工作。这意味着每个客户端都会观察一条消息并在必要时采取行动。他们也可以自己发布新消息。例如,如果恒温器在主题“A 楼”中发送一条指示高温的消息,则安装在该建筑物中并列在主题“A 楼”中的空调可以从那里获取此消息并自行打开以降低温度.但是,通常会看到带有业务规则的服务器端软件在温度达到特定值时自动打开空调。如果将 MQTT 代理配置为在关闭时保留消息并在再次打开时恢复它们,则它还可以保证消息传递。 MQTT Broker 的其他优点包括(来自维基百科): 消除易受攻击和不安全的客户端连接(如果配置为这样做)。 能够轻松地从单个设备扩展到数千个小工具。 管理和跟踪所有客户端连接状态,包括安全凭证和证书(如果配置为这样做)。 在不影响安全性的情况下减少网络压力,如果配置为这样做(使用蜂窝或卫星网络时)。 MQTT消息 有 3 种类型的消息: 连接:在 TCP/IP 会话中建立代理和客户端之间的连接。 断开连接:断开服务器和客户端与 TCP/IP 会话的连接。 发布:将消息放入主题并将该消息的副本发送给订阅该主题的每个客户端。 查看正在运行的消息示例: InterSystems IRIS 支持物联网和 MQTT 协议 根据 InterSystems IRIS 文档,目前支持的版本是 MQTT 3.1。此 MQTT 规范被定义为 OASIS 标准, MQTT 版本 3.1.1 。 IRIS 的互操作性模块定义了一个入站(用于使用 MQTT 消息)和一个出站(用于生成 MQTT 消息)MQTT 适配器。可以使用这些适配器开发自定义业务服务和操作,或者您可以分别使用内置业务服务和操作EnsLib.MQTT.Service.Passthrough和EnsLib.MQTT.Operation.Passthrough 。 如果您想在互操作性生产之外使用 MQTT 协议,您可以使用较低级别的 %Net.MQTT 类。 MQTT 类使用Eclipse Paho MQTT C 客户端库。 创建业务服务以使用 MQTT 消息 Class packagename.NewService1 Extends Ens.BusinessService { Parameter ADAPTER = "EnsLib.MQTT.Adapter.Inbound" ; Method OnProcessInput(pInput As EnsLib.MQTT.Message, pOutput As %RegisteredObject ) As %Status { set tsc= $$$OK set messageContent = pInput.StringValue …. Quit tsc } } 创建业务操作以生成/发送 MQTT 消息 Class packagename.NewOperation1 Extends Ens.BusinessOperation { Parameter ADAPTER = "EnsLib.MQTT.Adapter.Outbound" ; Parameter SETTINGS = "-SendSuperSession" ; Method OnMessage(pRequest As packagename.Request, Output pResponse As packagename.Response) As %Status { #dim tSC As %Status = $$$OK #dim e As %Exception.AbstractException Try { Set message = ##class (EnsLib.MQTT.Message). %New () Set message.Topic = ..Adapter .Topic Set jsonValue = {} Set jsonValue.message = "Response message” Set message.StringValue = jsonValue.%ToJSON() Set tSC=..Adapter.Send(message.Topic,message.StringValue) Set pResponse = ##class(packagename.Response).%New() Set pResponse.message = “Message response” } Catch e { Set tSC=e.AsStatus() } Quit tSC } 入站和出站 MQTT 适配器的设置 业务服务和业务运营都可以配置以下参数(来源:https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=EMQTT_reference): 客户 ID:这是向经纪人标识此客户的字符串。它必须是 ASCII 编码的并且包含 1 到 23 个字符。 连接超时:这是连接超时。连接到繁忙的服务器可能需要一些时间,因此可以使用此超时来避免过早的连接失败。它指定在连接尝试失败之前等待的秒数。 凭据名称:这是用于访问 MQTT 代理的一组凭据值的 ID 名称。 Credentials 项中定义的用户名和密码必须是 ASCII 编码的。如果代理不需要登录凭据,则不需要。 Keep Alive:指定在客户端发送给代理的消息之间传递的最大秒数。 QOS:这决定了所需的服务质量。它可以有以下两个值之一:0 - QOSFireAndForget:不等待来自代理的响应和 1 - QOSWaitForDelivery:等待来自代理的响应,如果代理没有响应则发出错误。 保留:这是向代理指示消息是否应保留的标志。 主题:这是您希望发布或订阅的主题的名称。主题必须是 ASCII 编码的。主题通常是一个层次结构字符串,其子主题级别由 /(正斜杠)分隔。在订阅中,主题可以使用通配符作为主题级别。 URL:这是您希望与之通信的经纪人的 URL。该方案是“tcp”或“ssl”,后跟域名和以“:”分隔的端口,例如“tcp://BIGBADAPPLE.local:1883”。通常启用 TLS 的端点配置有 8883 端口,但这不是强制性的。 下载并安装示例应用程序 IRIS IoT 示例是一个简单的应用程序,向您展示如何使用互操作性生产来使用(接收)和生成(发送)MQTT 消息。要获取它,请访问 https://openexchange.intersystems.com/package/IoT-Sample。现在,执行后续步骤。 1. clone/git pull repo 到任何本地目录 -----0----- 2、在该目录下打开终端,运行: -----1----- 3. 使用您的项目运行 IRIS 容器: -----2----- 如果要使用 ZPM 安装它,请按照以下步骤操作: 1. 打开启用了互操作性的 IRIS 命名空间。2. 打开终端并调用: -----3----- 运行示例应用程序。 1.打开制作,开始制作。它将开始观察 MQTT 主题 /DeviceStatusInputTopic 并生成对 MQTT 主题 /DeviceStatusOutputTopic 的响应。查看: 2. 使用MQTT 客户端发送消息并测试生产。为此,请在您的 Google Chrome 浏览器上访问https://chrome.google.com/webstore/detail/mqttbox/kaajoficamnjijhkeomgfljpicifbkaf 。它是 Chrome 插件 MQTTBox。只需点击添加到 Chrome,然后点击添加应用程序。 3. 在您的 Google Chrome 浏览器中,转到 chrome://apps/ 并选择 MQTTBox(如果需要,单击仍然打开)。 4. 单击创建 MQTT 客户端按钮。 5. 使用以下设置配置 MQTT 连接: 客户名称:本地 协议:mqtt/tcp 主机:本地主机:1883 用户名:admin 密码:管理员 所有其他设置保留默认值。 6. 配置 MQTT 主题以发送和接收 MQTT 消息: 要发布的主题:/DeviceStatusInputTopic 订阅主题:/DeviceStatusOutputTopic 有效载荷: { "deviceId" : "Air Conditioner Level 1" , "statusDate" : "2023-01-07 14:03:00" , "status" : 0 } 7. 单击按钮订阅以检查关于主题 /DeviceStatusOutputTopic 的消息。 8. 单击按钮 Publish 将消息发送到 /DeviceStatusInputTopic,并在 /DeviceStatusOutputTopic 上查看 IRIS 生产产生的结果。 9. 检查 IRIS 管理门户 Visual Trace 上的消息处理会话 示例应用程序源代码 Dockerfile ARG IMAGE=intersystemsdc/irishealth-community ARG IMAGE=intersystemsdc/iris-community FROM $IMAGE WORKDIR /home/irisowner/irisbuild ARG TESTS= 0 ARG MODULE= "iris-iot-sample" ARG NAMESPACE= "USER" RUN --mount= type = bind ,src=.,dst=. \ iris start IRIS && \ iris session IRIS < iris.script && \ ([ $TESTS -eq 0 ] || iris session iris -U $NAMESPACE "##class(%ZPM.PackageManager).Shell(\"test $MODULE -v -only\",1,1)" ) && \ iris stop IRIS quietly 最新版本的 InterSystems IRIS Community 用于创建 InterSystems IRIS 的 docker 实例,其命名空间名为 USER。 docker-compose 文件 version: '3.6' services: mosquitto: image: eclipse-mosquitto: 2 container_name: mosquitto user : root volumes: - ./mosquitto/config/:/mosquitto/config/ - ./mosquitto/log/:/mosquitto/log/ - ./mosquitto/data/:/mosquitto/data/ ports: - 1883 : 1883 - 9001 : 9001 iris: build: context: . dockerfile: Dockerfile restart: always command: --check-caps false ports: - 1972 - 52795 : 52773 - 53773 volumes: - ./:/irisdev/app 现在创建了两个 docker 容器实例,并且启动并运行。第一个是基于 Eclipse Mosquitto 产品的 MQTT 代理(mosquitto 服务),第二个是 MQTT 服务器端软件,负责消费和生产 MQTT 消息以提供设备监控服务。mosquitto docker 实例在文件 /mosquitto/config/mosquitto.conf 中配置。在那里定义了端口、消息持久性、安全和日志问题。文件 /mosquitto/config/password.txt 也将用户确定为 admin,密码也是 admin。但是,它是通过命令 mosquitto_passwd -U password.txt 加密的(您可以在https://mosquitto.org/man/mosquitto_passwd-1.html阅读更多相关信息)。 虹膜脚本文件 zn "%SYS" Do ##class (Security.Users).UnExpireUserPasswords( "*" ) zn "USER" Do ##class (EnsPortal.Credentials).SaveItem( 0 , "mosquitto_cred" , "mosquitto_cred" , "admin" , "admin" , "" ) zpm "load /home/irisowner/irisbuild/ -v" : 1 : 1 halt 该文件为业务服务和业务操作创建凭证。登录到 MQTT Broker 并运行 ZPM 文件 module.xml。 模块.xml 该文件用于在服务器上编译源代码以及在使用 ZPM 时安装示例应用程序。 <?xml version= "1.0" encoding= "UTF-8" ?> <Export generator= "Cache" version= "25" > <Document name= "iris-iot-sample.ZPM" > <Module> <Name>iris-iot-sample</Name> <Description>A simple IRIS interoperability application - for IoT using MQTT.</Description> <Version> 1.0 .8</Version> <Packaging> module </Packaging> <Dependencies> <ModuleReference> <Name>sslclient</Name> <Version> 1.0 .1</Version> </ModuleReference> </Dependencies> <SourcesRoot>src</SourcesRoot> <Resource Name= "dc.irisiotsample.PKG" /> <SystemRequirements Version= ">=2020.1" Interoperability= "enabled" /> </Module> </Document> </Export> 在 SourceRoot 标签上有要编译的源包。 DeviceStatus 持久类 Class dc.irisiotsample.DeviceStatus Extends %Persistent { Property deviceId As %String ; Property statusDate As %TimeStamp ; Property status As %Boolean ; Storage Default { <Data name= "DeviceStatusDefaultData" > <Value name= "1" > <Value>% %CLASSNAME </Value> </Value> <Value name= "2" > <Value>deviceId</Value> </Value> <Value name= "3" > <Value>statusDate</Value> </Value> <Value name= "4" > <Value>status</Value> </Value> </Data> <DataLocation> ^dc .irisiotsample.DeviceStatusD</DataLocation> <DefaultData>DeviceStatusDefaultData</DefaultData> <IdLocation> ^dc .irisiotsample.DeviceStatusD</IdLocation> <IndexLocation> ^dc .irisiotsample.DeviceStatusI</IndexLocation> <StreamLocation> ^dc .irisiotsample.DeviceStatusS</StreamLocation> <Type> %Storage.Persistent </Type> } } 此类用于将 DeviceStatus 保存在 SQL 表中。 DeviceStatusRequest 类 Class dc.irisiotsample.DeviceStatusRequest Extends Ens.Request { Property deviceId As %String ; Property statusDate As %TimeStamp ; Property status As %Boolean ; Storage Default { <Data name= "DeviceStatusRequestDefaultData" > <Subscript> "DeviceStatusRequest" </Subscript> <Value name= "1" > <Value>deviceId</Value> </Value> <Value name= "2" > <Value>statusDate</Value> </Value> <Value name= "3" > <Value>status</Value> </Value> </Data> <DefaultData>DeviceStatusRequestDefaultData</DefaultData> <Type> %Storage.Persistent </Type> } } 此类用于在互操作性组件之间交换数据。 设备状态服务 Class dc.irisiotsample.DeviceStatusService Extends Ens.BusinessService { Parameter ADAPTER = "EnsLib.MQTT.Adapter.Inbound" ; Method OnProcessInput(pInput As EnsLib.MQTT.Message, pOutput As Ens.StringResponse) As %Status { set tsc= $$$OK set DeviceStatusValue = ##class ( %DynamicAbstractObject ). %FromJSON (pInput.StringValue) set DeviceStatus = ##class (dc.irisiotsample.DeviceStatusRequest). %New () set DeviceStatus.deviceId = DeviceStatusValue.deviceId set DeviceStatus.statusDate = DeviceStatusValue.statusDate set DeviceStatus.status = DeviceStatusValue.status set tsc = ..SendRequestSync ( "DeviceStatusProcess" , DeviceStatus, .Response, - 1 , "Device Status Process" ) set pOutput = Response quit tsc } } adapter 参数表示在接收 MQTT 消息时使用 MQTT 适配器。方法 OnProcessInput 在 pInput 上接收 MQTT 消息并将其发送到业务流程,调用方法 SendRequestSync 作为同步消息。 设备状态进程 Class dc.irisiotsample.DeviceStatusProcess Extends Ens.BusinessProcess { Method OnRequest(request As dc.irisiotsample.DeviceStatusRequest, Output response As Ens.StringResponse) As %Status { Set tsc = 1 Set response = ##class (Ens.StringResponse). %New () Set DeviceStatus = ##class (dc.irisiotsample.DeviceStatus). %New () Set DeviceStatus.deviceId = request.deviceId Set DeviceStatus.status = request.status Set DeviceStatus.statusDate = request.statusDate Set tsc = DeviceStatus. %Save () If $$$ISOK (tsc) { Set tsc = ..SendRequestSync ( "DeviceStatusOperation" , request, .pResponse, - 1 , "Device Status Operation" ) Set response.StringValue = "Device id " _pResponse.deviceId_ " has the status " _pResponse.status } Else { Set response.StringValue = "Error on save the device status" Set SuspendMessage = 1 } quit tsc } Storage Default { <Type> %Storage.Persistent </Type> } } 此类从业务服务接收消息,将其保存到数据库,并调用 DeviceStatusOperation 发送(生成)带有结果的消息。 DeviceStatusOperation Class dc.irisiotsample.DeviceStatusOperation Extends Ens.BusinessOperation { Parameter ADAPTER = "EnsLib.MQTT.Adapter.Outbound" ; Parameter SETTINGS = "-SendSuperSession" ; Method NotifyDeviceStatus(pRequest As dc.irisiotsample.DeviceStatusRequest, Output pResponse As dc.irisiotsample.DeviceStatusResponse) As %Status { #dim tSC As %Status = $$$OK #dim e As %Exception.AbstractException Try { Set message = ##class (EnsLib.MQTT.Message). %New () Set message.Topic = ..Adapter .Topic Set jsonValue = {} Set jsonValue.message = "Device " _pRequest.deviceId_ " has status " _pRequest.status Set message.StringValue = jsonValue. %ToJSON () Set tSC= ..Adapter .Send(message.Topic,message.StringValue) Set pResponse = ##class (dc.irisiotsample.DeviceStatusResponse). %New () Set pResponse.deviceId = pRequest.deviceId Set pResponse.status = pRequest.status } Catch e { Set tSC=e.AsStatus() } Quit tSC } XData MessageMap { <MapItems> <MapItem MessageType= "dc.irisiotsample.DeviceStatusRequest" > <Method>NotifyDeviceStatus</Method> </MapItem> </MapItems> } } 此类从业务流程接收消息,并生成一条 MQTT 消息,发送到具有流程响应的主题。 设备状态生产 Class dc.irisiotsample.DeviceStatusProduction Extends Ens.Production { XData ProductionDefinition { <Production Name= "dc.irisiotsample.DeviceStatusProduction" LogGeneralTraceEvents= "false" > <Description></Description> <ActorPoolSize> 2 </ActorPoolSize> <Item Name= "DeviceStatusService" Category= "" ClassName= "dc.irisiotsample.DeviceStatusService" PoolSize= "1" Enabled= "true" Foreground= "false" Comment= "" LogTraceEvents= "false" Schedule= "" > <Setting Target= "Adapter" Name= "ClientID" >InterSystemsIRIS</Setting> <Setting Target= "Adapter" Name= "Topic" >/DeviceStatusInputTopic</Setting> <Setting Target= "Adapter" Name= "Url" >tcp: //mosquitto:1883</Setting> <Setting Target= "Adapter" Name= "CredentialsName" >mosquitto_cred</Setting> </Item> <Item Name= "DeviceStatusProcess" Category= "" ClassName= "dc.irisiotsample.DeviceStatusProcess" PoolSize= "1" Enabled= "true" Foreground= "false" Comment= "" LogTraceEvents= "false" Schedule= "" > </Item> <Item Name= "DeviceStatusOperation" Category= "" ClassName= "dc.irisiotsample.DeviceStatusOperation" PoolSize= "1" Enabled= "true" Foreground= "false" Comment= "" LogTraceEvents= "false" Schedule= "" > <Setting Target= "Adapter" Name= "ClientID" >InterSystemsIRIS</Setting> <Setting Target= "Adapter" Name= "Topic" >/DeviceStatusOutputTopic</Setting> <Setting Target= "Adapter" Name= "Url" >tcp: //mosquitto:1883</Setting> <Setting Target= "Adapter" Name= "CredentialsName" >mosquitto_cred</Setting> </Item> </Production> } } 此类使用所需参数配置业务服务、业务流程和业务操作,并将这些组件放在一起工作。 主要配置的参数有: URL:设置 MQTT Broker 地址。 主题:接收和发送 MQTT 消息的队列。 DeviceStatusInputTopic 用于业务服务,DeviceStatusOutputTopic 用于业务操作。 CredentialsName:使用用户名和密码设置凭据以连接 MQTT 代理。 ClientID:它是为 InterSystems IRIS 分配的逻辑名称,代理需要它来识别 MQTT 客户端。 如您所见,用于 MQTT 的 IRIS 互操作性适配器是一个非常简单且功能强大的工具,用于使用和生成 MQTT 消息以及自动化涉及 IoT 设备的业务流。所以享受它。 查看原贴由 @Yuri.Gomes 撰写
公告
Claire Zheng · 五月 18, 2023

创意社区新闻摘要#6 | InterSystems Ideas News#6

Hi 开发者社区的成员们,大家好! 欢迎关注我们第6期 InterSystems Ideas News! 本期分享如下: ✓ 社区成员上个月实施的创意 ✓ 如何在 InterSystems Ideas 上创建新创意 ✓ 最近产生的新创意 名人堂更新了实施社区创新想法的社区成员的名字: 将 IRIS 添加为 Apache Superset 的支持数据库,该创意由@Herman Slagman 提出,由 @Dmitry Maslennikov 实施 请添加 google oauth 授权以登录管理门户,该创意由 @Aleksandr Kolesov 提出,由 @Yuri Marx 实施 👏感谢您实践这些创意👏 新文章“ 如何在 InterSystems Ideas 上创建新创意”逐步描述了创意创建的过程。在向门户添加新想法时阅读它。 为了总结本期时事通讯,以下是自上次新闻公告以来发布的新想法列表 1. @Evgeny Shvarov : 转储 SQL 表2. @Dmitry Maslennikov :对 IRIS 的 Java Hibernate 支持3. @Evgeny Shvarov :为 ObjectScript 变量名添加合法的特殊符号分隔符 4.@Robert Cemper :允许取消“待批准” 5.@Robert Cemper :提供隐藏/取消隐藏帖子的开关。或修复重新发布6. @Scott Roth :Java 网关跟踪路由显示7.@John Murray :在开发者社区将动画 GIF 放在播放/暂停按钮后面8. @yurimarx Marx :在 GEO 仪表板上的数字社区9.@Robert Barbiaux :在 VSCode 中进行单元测试10. @Scott Roth :在消息搜索中保存搜索条件11. @yurimarx Marx :特色文章或问题 👏感谢您发布新想法👏 请继续关注下一期 InterSystems Ideas 新闻公告! 保持创意,在InterSystems Ideas上发布您的奇思妙想,对现有想法进行投票和评论!
公告
Michael Lei · 六月 3, 2023

InterSystems 硬件OS支持平台更新 2023年2季度

InterSystems 支持的硬件OS平台更新 2023年2季度 我们经常收到有关 InterSystems IRIS 数据平台支持的平台和框架列表最近和即将发生的变化的问题。此更新旨在分享最近的更改以及我们对即将发生的更改的已知的情况,但预测未来是一项棘手的工作,不应将其视为承诺的路线图。 话虽如此,关于更新…… IRIS 生产操作系统和 CPU 架构 红帽企业 Linux 近期变动 RHEL 9.2 和 RHEL 8.8 于 2023 年 5 月发布。Red Hat 计划为这些版本提供 4 年的支持。 InterSystems 计划通过我们称为“次要操作系统版本认证”的新流程对 RHEL 9.2 上的 IRIS 进行额外测试,该流程旨在提供额外的安全性,即次要操作系统更新不会破坏任何明显的内容。 随着 RHEL 9.2 的发布,Red Hat 终止了对 RHEL 9.1 的支持。这与 Red Hat 自 RHEL 8.0 以来一直使用的“奇数/偶数”支持周期一致。 RHEL 8.4 扩展维护将于 2023 年 5 月 31 日结束,这意味着 IRIS 也将在那时停止支持此次要版本。 即将发生的变化 RHEL 9.3 计划在今年晚些时候推出。这将是 Red Hat 的短期支持版本,因此 InterSystems 不会推荐将其用于生产部署。 以前的更新 IRIS 2022.1.2 添加了对RHEL 9.0的支持。 9.0 是一个主要的操作系统版本,将 Linux 内核更新到 5.14,将 OpenSSL 更新到 3.0,将 Python 更新到 3.9 IRIS 2022.2.0 移除了对 RHEL 7.x 的支持。 IRIS 的早期版本仍支持 RHEL 7.9。 进一步阅读: RHEL 发布页面 Ubuntu 近期变动 Ubuntu 22.04.02 LTS 于 2023 年 2 月 22 日发布。InterSystems 目前正在通过我们称为“次要操作系统版本认证”的新流程在 22.04.02 LTS 上对 IRIS 进行额外测试。到目前为止,一切都很好。 即将发生的变化 Ubuntu 的下一次重大更新定于 2024 年 4 月 以前的更新 IRIS 2022.1.1 增加了对Ubuntu 22.04 的支持。 22.04 是一个主要的操作系统版本,将 Linux 内核更新到 5.15,将 OpenSSL 更新到 3.0.2,将 Python 更新到 3.10.6 IRIS 2022.2.0 移除了对 Ubuntu 18.04 的支持。 IRIS 的早期版本仍然支持 Ubuntu 18.04。 IRIS 2022.1.1 及更高版本的容器基于 Ubuntu 22.04。 进一步阅读: Ubuntu 发布页面 SUSE 操作系统 即将发生的变化 SUSE Linux Enterprise Server 15 SP5 目前正在进行公测。我们预计 SUSE 将在第二季度末或第三季度初发布 15 SP5,并在此之后添加对 IRIS 的支持。 SP5 将包括 Linux 内核 5.14.21、OpenSSL 3.0.8 和 Python 3.11 SUSE 对 Linux Enterprise Server 15 SP3 的一般支持于 2022 年 12 月 31 日结束,但扩展的安全支持将持续到 2025 年 12 月。 以前的更新 IRIS 2022.3.0 增加了对SUSE Linux Enterprise Server 15 SP4的支持。 15 SP4 是一个主要的操作系统版本,将 Linux 内核更新到 5.14,将 OpenSSL 更新到 3.0,将 Python 更新到 3.9 延伸阅读: SUSE 生命周期 甲骨文Linux 即将发生的变化 根据他们的历史,Oracle Linux 9 将在 2023 年下半年的某个时候包含 RHEL 9.2。 以前的更新 IRIS 2022.3.0 添加了对Oracle Linux 9的支持。 Oracle Linux 9 是跟踪 RHEL 9 的主要操作系统版本,因此它也将 Linux 内核更新到 5.14,将 OpenSSL 更新到 3.0,将 Python 更新到 3.9 进一步阅读: Oracle Linux 支持政策 微软Windows 即将发生的变化 Windows Server 2012 的扩展支持将于 2023 年 10 月结束。如果您仍在该平台上运行,现在是计划迁移的时候了。 IRIS 2023.2 将不适用于Windows Server 2012。 以前的更新 自 IRIS 2022.1 中添加了 Windows Server 2022 以来,我们未对支持的 Windows 版本列表进行任何更改 进一步阅读: Microsoft 生命周期 AIX 即将发生的变化 InterSystems 正与 IBM 密切合作以增加对 OpenSSL 3.0 的支持。这不会包含在 IRIS 2023.2.0 中,因为 IBM 需要在进一步的 TL 版本中针对该功能。好消息是 IBM 正在寻求为 AIX 7.2 和 7.3 发布 OpenSSL 3.0,而且时间看起来应该与 IRIS 2023.3 保持一致。 以前的更新 自从在 IRIS 2022.1 中添加了 AIX 7.3 并删除了 7.1 以来,我们没有对受支持的 AIX 版本列表进行任何更改 进一步阅读: AIX 生命周期 容器 即将发生的变化 IRIS 容器将只标记年份和版本,例如“2023.2”,而不是我们过去一直使用的完整内部版本号。这样,您的应用程序可以默认获取您发布的最新维护版本。 我们还为最新的扩展维护和持续分发 IRIS 版本添加了“latest-em”和“latest-cd”标签。这些将有利于演示、示例和开发环境。 我们还将开始使用“-preview”标记预览容器,以便清楚哪个容器是最新的 GA 版本。 这些更改都将在 2023.2 GA 版本中生效。我们将在 6 月发布更多相关信息。 以前的更新 我们现在正在发布 IRIS 容器的多架构清单。这意味着拉取标记为2022.3.0.606.0的 IRIS 容器将为您的机器的 CPU 架构(Intel/AMD 或 ARM)下载正确的容器。 IRIS 开发操作系统和 CPU 架构 苹果系统 近期变动 我们在 IRIS 2023.1 中添加了对 MacOS 13 的支持 即将发生的变化 MacOS 14 将很快发布,预计将在今年晚些时候正式发布。 CentOS 我们正在考虑取消对 CentOS/CentOS Stream 的支持。请参阅下面的推理。 Red Hat 几年来一直在运行开发人员计划,该计划使开发人员能够获得非生产环境的免费许可证。鼓励当前使用 CentOS 的开发人员通过此程序切换到 RHEL。 CentOS Stream 现在是 RHEL 的“上游”,这意味着它具有 RHEL 尚未包含的错误和功能。它还每天更新,这可能会给平台上的开发人员带来问题(更不用说我们自己的测试人员了)。 自从我们在 IRIS 2022.1 中添加了对 CentOS 8-Stream 的支持并删除了对 CentOS 7.9 的支持后,我们没有对受支持的 CentOS 版本列表进行任何更改 InterSystems 组件 InterSystems API 管理器 (IAM) IAM 3.2 于本季度发布,其中包括对容器基础映像的更改,从 Alpine 到 Amazon Linux。 Caché & Ensemble 生产操作系统和 CPU 架构 以前的更新 Cache 2018.1.7 增加了对 Windows 11 的支持 InterSystems 支持的平台文档 InterSystems 支持的平台文档是支持技术的最终列表的来源。 IRIS 2020.1 支持的服务器平台 IRIS 2021.1 支持的服务器平台 IRIS 2022.1 支持的服务器平台 IRIS 2023.1 支持的服务器平台 Caché & Ensemble 2018.1.7 支持的服务器平台 以上就是全部内容。同样,如果您想了解更多信息,请给我们留言。
公告
Claire Zheng · 三月 15, 2023

创意社区新闻摘要#4 | InterSystems Ideas News#4

Hi 开发者社区的成员们,大家好! 欢迎关注我们第4期 InterSystems Ideas News! 我们将分享如下: 如何支持你们team的想法和投票。 在编程大赛中,用户实践Idea(创意)并获得技术奖励。 InterSystems 开发者社区的深色主题版本:是或否(Yay or Nay?)? 最近添加的Idea(创意)。 最重要的消息是,在上一届编程大赛中,有 5 名参赛者因实践InterSystems Ideas 门户网站的创意而获得加分!他们是: 开发者 应用名称 实施的Idea(创意) @Lorenzo Scalese OpenAPI-Suite 添加类似于 SOAP 向导的向导,以根据 OpenAPI 规范生成 REST 客户端 @José Roberto Pereira @Henrique Dias @Henry Pereira iris-tripleslash 添加有助于为 ObjectScript 类生成单元测试的项目 @Sergey Mikhailenko gateway-sql, apptools-admin 创建一个 UI,以便将项目(类、全局变量、应用程序、用户、角色、特权、授权、命名空间映射、SQL 网关、库等)方便、轻松地传输到其他系统实例以进行快速部署。 我们添加了一个新过滤器“我的组织(My organization)”。从现在开始,来自同一公司的人可以过滤来自同一组织的人的想法和投票。 前几天,@Guillaume Rongier 发布了关于为开发者社区添加深色主题的Idea(创意)。我们非常期待您参与 Ideas Portal 主页上的“民意测验”提供意见反馈,或对该想法进行投票和评论。 最近添加的想法 InterSystems Community 深色版本 为 DC 上的工作机会部分添加工作地点 新功能的可搜索索引 通过环境变量设置密码 安排在 DC 站点上发布文章 在 DC 文本编辑器上支持 JSON 支持 DC 文本编辑器上的 linux bash 语言 使用 SQL 命令将数据从 IRIS 捕获更改为 kafka 跨生产互操作消息、服务和操作 ISC 产品的附加数据类型 DTL、BPL 和规则集中 XData 的自动 XML 格式化 断言 CodeAssist 提示 OpenAI API 的 IRIS 类 在消息属性选项卡上显示 UserValues 内容 虹膜即服务 允许在 VS 代码中对互操作性组件 BPL、DTL 和业务规则进行图形编辑 为所有 IRIS 互操作性组件添加源代码控制 审计查找表 为 WRC 门票添加“观察名单”(问题、问题) 连接 InterSystems 文档和开发人员社区 在 npm 上发布适用于 Node.js 的 InterSystems IRIS Native SDK 像往常一样,在InterSystems Ideas上发布您的想法,对现有想法进行投票和评论,并实践Community Opportunity 的Idea(创意)。 请继续关注我们的下一个新闻公告!
公告
Claire Zheng · 六月 19, 2023

InterSystems 2023年度编程大奖赛(Grand Prix)技术奖励细则

大家好! InterSystems Grand Prix 2023 结合了 InterSystems IRIS 数据平台的所有主要功能! 因此,我们邀请您使用以下功能并收集额外的技术奖励,以帮助您赢得奖品! 如下: LLM AI 或 LangChain 用法:Chat GPT、Bard 等 - 6 InterSystems FHIR SQL Builder- 5 InterSystems FHIR-3 IntegratedML - 4 Native API - 3 嵌入式 Python - 4 互操作性 - 3 生产扩展(PEX)- 2 自适应分析 (AtScale) Cube的使用 - 3 Tableau、PowerBI、Logi 的使用 - 3 InterSystems IRIS BI - 3 列索引使用 - 1 Docker 容器使用 - 2 ZPM 包部署 - 2 在线演示 - 2 单元测试 - 2 实施 InterSystems Community Idea中的创意 - 4 在开发者社区发布的第一篇文章 - 2 在开发者社区发布的第二篇文章 - 1 代码质量通过 - 1 第一次贡献 - 3 YouTube 上的视频 - 3 LLM AI 或 LangChain 使用:Chat GPT、Bard 等 - 6 分 为构建使用LangChain库或大型语言模型(LLM)(例如 ChatGPT、Bard 和其他 AI 引擎(例如PaLM 、 LLaMA等)的解决方案会为您赢得 6 个专家奖励积分。 AutoGPT 的使用也很重要。 在 Open Exchange 中已经可以找到一些示例: iris-openai、 chatGPT telegram bot 。 这是一篇带有 langchain 使用示例的文章。 InterSystems FHIR SQL Builder - 5 分 InterSystems FHIR SQL Builder是 InterSystems IRIS for Health 的一项功能,有助于将 FHIR 资源映射到 SQL 表并通过应用程序中的 SQL 查询使用它。 在文档中了解更多信息。 在线课程。这是一个关于 Open Exchange 的例子。 注意:如果您实施 InterSystems FHIR SQL Builder,则不包括 InterSystems FHIR 即服务和 IRIS For Health 的 3 分奖励。 InterSystems FHIR 即服务和 IRIS For Health - 3 分 我们邀请所有开发人员使用InterSystems FHIR Server (FHIRaaS)构建新的或测试现有的应用程序。登录门户,进行部署并开始在您的编程竞赛应用程序中使用 AWS 上的 InterSystems FHIR 服务器。 您还可以使用 InterSystems IRIS for Health docker 版本构建 FHIR 应用程序。您可以使用IRIS-FHIR-Template ,它在 docker 镜像构建期间准备 FHIR 服务器。可以在此处找到 FHIR API 4.0.1 的文档。在InterSystems IRIS for Health 文档中了解更多信息。 IntegratedML 使用 - 4 分 1. 在您的 AI/ML 解决方案中使用 InterSystems IntegratedML。这是使用它的模板。 InterSystems IntegratedML 模板 2、数据导入工具: 数据导入向导 CSVGEN - CSV 导入工具 CSVGEN-UI - CSVGEN 的网络用户界面 3.文档: 使用 IntegratedML 4.在线课程和视频: 在 InterSystems IRIS 中学习 IntegratedML 为机器学习准备数据 使用机器学习工具包进行预测建模 IntegratedML 资源指南 IntegratedML 入门 使用 IntegratedML 和数据机器人进行机器学习 InterSystems Native API 使用 - 3 分 如果您使用任何 InterSystems Native API 选项( .NET 、 Java 、 Python 、 Node.js )访问全栈应用程序中的数据,您将获得此奖励。在这里了解更多。 嵌入式 Python - 4 分 在您的应用程序中使用嵌入式 Python并获得 4 分加分。您至少需要 InterSystems IRIS 2021.2。 注意:如果您还使用 Native API for Python,则只有 Embedded Python 才算奖励。 与 BPL 或 DTL 的互操作性生产 - 3 分 IRIS Interoperability Productions的主要特征之一是业务流程,可以用 BPL(业务流程语言)来描述。 在文档中了解有关业务流程的更多信息。 业务规则是一种无代码/低代码方法,用于管理互操作性生产的处理逻辑。在 InterSystems IRIS 中,您可以创建一个业务规则,您可以通过可视化或通过 ObjectScript 表示创建该规则。 如果您在互操作性产品中创建和使用业务流程或业务规则,您可以获得业务流程/业务规则奖励。 业务规则示例 在文档中了解有关业务规则的更多信息 生产扩展 (PEX) 使用 - 2 分 PEX 是互操作性产品的 Python、Java 或 .NET 扩展。 如果您在互操作性产品中将 PEX 与 Python、JAVA 或 .NET 结合使用,您将获得此奖励。 PEX演示。 在文档中了解更多关于 PEX 的信息。 InterSystems IRIS 具有Python Pex模块,该模块提供了从 Python 开发 InterSystems 互操作性产品的选项。使用它并为您的应用程序收集 3 个额外积分。也可以使用 Guillaume Ronguier 介绍的替代 python.pex 轮。 您还可以使用Python 互操作性,它是@Guillaume Rongier 提供的 Python 上 InterSystems IRIS 的 PEX 插件模块 这提供了在清晰的 python 中开发 InterSystems IRIS 互操作性解决方案的机会。 将 PEX 用于 Hugging Face 的文章,示例。 自适应分析 (AtScale) 多维数据集使用 - 3 分InterSystems Adaptive Analytics 提供创建和使用AtScale多维数据集的选项,用于分析解决方案。 您可以使用我们为比赛设置的 AtScale 服务器(可以在Discord 频道中收集 URL 和凭据)来使用多维数据集或创建一个新的多维数据集并通过 JDBC 连接到您的 IRIS 服务器。 使用 AtScale 的分析解决方案的可视化层可以使用 Tableau、PowerBI、Excel 或 Logi 制作。 文档, AtScale 文档 训练 Tableau、PowerBI、Logi 的使用 - 3 分 为您使用 Tableau、PowerBI 或 Logi 制作的可视化收集 3 分 - 每个 3 分。 可以通过直接 IRIS BI 服务器或通过与 AtScale 的连接进行可视化。 Logi 代表 InterSystems Reports 解决方案可用 - 您可以在InterSystems WRC 上下载作曲家。可以在discord channel中收集临时许可证。 文档 训练 InterSystems IRIS BI - 3 分 InterSystems IRIS 商业智能是 IRIS 的一项功能,它使您可以选择针对 IRIS 中的持久数据创建 BI 立方体和枢轴,然后使用交互式仪表板将此信息传递给用户。 了解更多 基本的iris-analytics-template包含 IRIS BI 多维数据集、数据透视表和仪表板的示例。 以下是 IRIS BI 解决方案的一组示例: 样品商务智能 Covid19分析 分析这个 权力的游戏分析 透视订阅 错误全局分析 使用 Docker 和 VSCode 创建 InterSystems IRIS BI 解决方案(视频) 可视化选择的自由:InterSystems BI (视频) InterSystems BI(DeepSee) 概述(在线课程) InterSystems BI(DeepSee) 分析器基础知识(在线课程) 列索引使用 - 1 分 列索引功能可以显着提高分析查询的性能。在您的解决方案的持久数据模型中使用列式索引并获得 1 个额外奖励积分。了解有关列索引的更多信息。 Docker 容器使用 - 2 分 如果应用程序使用在 docker 容器中运行的 InterSystems IRIS,则该应用程序将获得“Docker 容器”奖励。这是最简单的模板。 ZPM 包部署- 2 分 如果您做到以下措施,可以收集到奖励。为全栈应用程序构建和发布 ZPM(InterSystems Package Manager)包,这样它就可以通过以下方式部署: zpm "install your-multi-model-solution" 安装了 ZPM 客户端的 IRIS 上的命令。 ZPM客户端。文档。 项目的在线演示 - 2 分如果您将项目作为在线演示提供给云,则可额外获得 2 个奖励积分。您可以自己完成,也可以使用此模板- 这是一个 示例。这是有关如何使用它的视频。 单元测试 - 2 分 对 InterSystems IRIS 代码进行单元测试的应用程序将获得奖励。 在文档和开发人员社区中了解有关 ObjectScript 单元测试的更多信息。 实施Developer Opportunity Idea的创新理念 - 4 分 实施来自InterSystems Community Ideas 门户的处于具有“社区机会(Community Opportunity)”状态的任何创新想法。这将为您提供 4 个额外的奖励积分。 关于开发者社区的文章 - 2 分 在 Developer Community 上发表一篇文章,描述您的项目的功能,并为该文章收集 2 分。 开发者社区第二篇文章 - 1分 您可以为第二篇文章或有关申请的翻译获得额外的奖励积分。第 3 次及以上不会带来更多积分,但您仍将赢得所有关注。 代码质量通过且零错误 - 1 分 包括用于代码静态控制的代码质量 Github 操作,并使其显示 0 个 ObjectScript 错误。 首次贡献 - 3 分 如果您是第一次参加 InterSystems Open Exchange 竞赛,可获得 3 个奖励积分! YouTube 上的视频 - 3 分 制作演示您的产品的 Youtube 视频,每个视频可获得 3 分奖励积分。 奖励清单可能会发生变化。敬请持续关注!
公告
Claire Zheng · 七月 2, 2023

创意社区新闻摘要#7 | InterSystems Ideas News#7

Hi 开发者社区的成员们,大家好! 欢迎关注我们第7期 InterSystems Ideas News! 本期分享如下: ​​​​✓ 创意门户已收集了 200 多个创意 ✓ 由社区成员实施的创意 ✓ 在 Grand Prix 23 竞赛中实施一个创意并获得技术奖励 ✓ 最近发布的创意 自创意门户推出以来,已发布 204 个创意。目前已实施25项, 待实施17项。 @Kurro Lopez 被添加到名人堂,因为@Kurro Lopez 实施了由@Yuval Golan 提交的创意: IRIS classes for OpenAI API 👏感谢您实现了这个创意👏 参加InterSystems Grand Prix 23 年度编程大赛开发者可以通过实施 Community Opportunity 中的创意而获得 4 个技术奖励积分。 最新发布的创意 1.在下拉选择中添加“类型过滤”功能。 作者:@VICTORIA CASTILLO2.让数据转换 UI 自动猜测消息类型,作者:@Evgeny Shvarov3.让每个操作和服务公开其消息类 作者: @Evgeny Shvarov4.为医生定制可视化,作者:@Ikram Shah5. 引入 InterSystems IRIS 对 Apache Airflow 的支持 作者:@Evgeny Shvarov6.为 pdf.co 引入互操作性模块(适配器、操作),作者:@Evgeny Shvarov7.在 Visual Trace 中添加参数以查看 XML 或 JSON 中的消息内容 作者:@Sylvain Guilbaud8.每个数据库的特定缓存缓冲区,作者:@Yaron Munz 9.在开发环境中的 Production Export 提供模块部署支持,作者:@Alex Woodhead10.系统默认设置中的环境变量支持 作者:@Alex Woodhead11.设置应该是镜像的一部分 作者:@Scott Roth 12.为社区用户起昵称 作者:@Minoru Horita 13. 使所有生产项目设置在默认设置中可用 作者:@Stefan Cronje14.从管理门户选项添加到文档网页的超链接,作者:@Luis Angel Pérez Ramos 15.从 InterSystems 开发者社区删除草稿 作者:@yurimarx Marx 👏感谢您提交的新创意👏 不要忘记投票、评论和订阅这些创意来跟踪、影响其进展。 请继续关注下一期 InterSystems Ideas 新闻公告!
公告
Michael Lei · 一月 10

全球创新:2023 年欧洲医疗健康黑克松Hackathon InterSystems FHIR 挑战赛获胜数字健康项目

嗨,大家好, 我们想重点介绍 2023 年布拉格欧洲欧洲医疗健康黑克松Hackathon期间创建的一些杰出项目。IKEM 和阿斯利康向参与者提出了九个现实世界的医疗保健挑战。 InterSystems 向参与者介绍了使用 FHIR 存储库并通过在 AWS 上提供 FHIR 云服务来在其解决方案中执行 FHIR 可用性的机会。 来认识一下我们挑战的获胜者: 第一名Čarodějové (PathoSync) “PathoSync 软件是复杂病理学家平台的坚实基础。通过使用自定义映射,任何实验室都可以将其数据投影到 FHIR7 标准,该标准很快将在全球范围内强制执行。这使得数字化过程更加顺利。与 InterSystems 的连接确保了质量并实现了很多医疗保健功能。此外,使用位于欧洲的FHIR服务器严格遵循GDPR规范,因此软件的使用遵循欧洲标准。 项目详情|视频演示| GitHub链接 1链接 2 第二名ICU SPYEYES(生命视力Vital Vision) “ICU 需要一个系统来自动记录视频循环,捕捉患者和人员移动等关键活动。该系统将允许人进行回顾性注释、预先注释和识别人员,并可选择模糊患者面部。它的目的是收集数据以用于开发未来医院中的患者监控算法。 我们为 ICU 开发了一个系统,该系统利用运动检测、LLM 和标准 CV 技术进行视频分析。它构建了一个带注释的视频数据库,对于专注于患者监护的训练算法至关重要。我们的解决方案生成通过 FHIR 共享的结构化报告和视频,确保高效的数据处理。通过开源平台 CVAT 进行手动审核,质量得到提高,优化了我们用于监测患者康复情况的实时警报系统。” 项目详情|视频演示| GitHub 第三名 VariantCall (PathoX) “端到端解决方案 PathoX 是一个可轻松进行数据摄取、特征提取和映射的平台,可增强病理学家的工作流程。导入器工作流程支持列映射并通知用户缺失的信息。我们使用 FHIR 来保证未来的互操作性和合规性与未来的立法。病理学家还可以像平常的工作流程一样突出显示数据并留下评论,并查看所有文件的分析。” 项目详情|视频演示| GitHub 大家都很棒,恭喜!希望能对大家有所启发,我们也期待看到您的项目如何发展成为创新且有影响力的初创企业!