文章 Michael Lei · 七月 25, 2024 1m read

InterSystems 常见问题FAQ 

要编译包含映射修饰符的类rountine,请指定编译器修饰符“/mapped=1”或“/mapped”。例如,执行以下操作:

[示例 1] 获取类列表并编译

do$System.OBJ.GetClassList(.list,"/mapped")
 // build your classes starting from .listdo$System.OBJ.Compile(.list) 

[示例 2] 编译所有类 

do$system.OBJ.CompileAll("/mapped") 
0
0 121
文章 光辉 赵 · 七月 23, 2024 6m read

FHIR是标准,是规范,使用FHIR使大家可以使用同一种语言、语义进行交流,名称、API都是统一的,只要符合FHIR标准,任何系统都可交互。对业务开发者来说,大部分接口交互的定义交给FHIR来处理,效率大大提高。

1
0 203
文章 Michael Lei · 七月 18, 2024 1m read

InterSystems 常见问题系列

可以通过 TRY-CATCH 来完成:

#dim ex As%Exception.AbstractExceptionTRY {
    //Code that causes an error
  }
  CATCH ex {
     do ex.Log()
  }

如果用了 ^%ETN, 从BACK 接入点 (BACK^%ETN)处调用.

请参考另外一篇文章: 如何使用命令获得应用错误 (^ERRORS)

0
0 133
文章 Hao Ma · 三月 25, 2021 8m read

关键字:PyODBC,unixODBC,IRIS,IntegratedML,Jupyter Notebook,Python 3

目的

几个月前,我简单谈到了关于“将 Python JDBC 连接到 IRIS”的话题。我后来频繁提起它, 因此决定再写一篇 5 分钟的笔记,说明如何“将 Python ODBC 连接到 IRIS”。

在 Windows 客户端中通常很容易设置 ODBC 和 PyODBC,不过我每次在 Linux/Unix 风格的服务器中设置 unixODBC 和 PyODBC 客户端时,都会遇到一些麻烦。

有没有一种简单连贯的方法,可以不安装任何 IRIS,在原版 Linux 客户端中让 PyODBC/unixODBC 针对远程 IRIS 服务器运行?

范围

最近,我花了点时间研究如何在 Linux Docker 环境的 Jupyter Notebook 中从头开始让一个 PyODBC 演示运行起来, 记录下这篇稍微有些繁琐的笔记,以供日后快速参考。  

范围内: 

这篇笔记将涉及以下组件:

  • PyODBC over unixODBC 
  • 安装了 TensorFlow 2.2 和 Python 3 的 Jupyter Notebook 服务器
  • 带有 IntegratedML 的 IRIS2020.3 CE 服务器,包括示例测试数据。
  • 在此环境中

    1
    0 514
    问题 y g · 七月 16, 2024

    ubuntu系统中,查询到的数据都是空字符串

     python3 httpTest2.py
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')
    ('', '', '', '', None, '')

    代码如下
    import pyodbc
    import requests

    driver = '/usr/irisodbc/bin/libirisodbc35.so'
    server = 'xx'
    database = 'xx'
    username = 'xx'
    password = 'xx'
    port = 'xx'

    0
    0 84
    文章 Yongfeng Hou · 十一月 23, 2023 3m read

            IRISHealth以其完备且系统化的安全特性在医疗行业的数据库中独树一帜,这些特性包括安全认证、安全授权、安全审计、数据加密以及安全配置。其中数据传输无疑是其中最重要的一环。为此,IRISHealth采用了SSL/TLS技术来对传输的数据进行加密,有效保障了从IRIS数据平台的超级服务数据传输、Telnet服务数据传输、java/.net/Studio客户端的访问数据传输、MIRROR与DB的数据传输,到DBServer和ECPApp之间的数据传输的安全性。


            本文是在两个IRISHealth2021实例之间进行ECP服务通信的示例,一个作为DBServer,一个作为ECPApp,两个实例之间通过使用SSL/TLS的ECP协议进行TCP的加密传输通信。

    1.IRIS的DB和ECP环境:

    DBServer 

    ECPApp

    10.1.30.231  10.1.30.232

     

    2. CA证书的环境:

    5
    3 413
    文章 liu bo · 七月 7, 2024 1m read

    问题:锁管理里边包含很多WorkQueueMgr的锁,我想批量去移除,比较多,一个一个移除比较慢

    解决:查询所有的进程,过滤routine不包含某个routine的进程,进行终止

    代码:

    ClassMethod BatchTerminalProcessQuery()
    {     Set Rset = ##class(%ResultSet).%New("%SYS.ProcessQuery:ListPids")
    Rset.Execute()
    While Rset.Next() {
       CurrentLineAndRoutine=""
       &sql(SELECT CurrentLineAndRoutine INTO :CurrentLineAndRoutine FROM %SYS.ProcessQuery WHERE Pid = :Rset.GetData(1))
       continue:CurrentLineAndRoutine'[".WorkQueueMgr"
       CurrentLineAndRoutine,!
       pid=Rset.GetData(1)
       sc= $System.Process.Terminate(pid)
       sc,!
       ;w $ZU(4,pid,1)
    }
    Rset.Close()
    }

    1
    0 210
    文章 Michael Lei · 七月 11, 2024 1m read

    在当今充满活力的医疗保健行业,获取全面、精简的医疗记录对于做出明智的决策至关重要。人工智能驱动的健康图表应用程序是一个开创性的解决方案,旨在为医生提供一种获取和理解健康数据的有效方式。

    主要功能

    - 全面的数据检索: 健康图表应用程序通过提取各种健康数据,包括过敏症、病情、手术、免疫接种、药物、家族史、社会史、生命体征和化验结果,超越了传统记录。这种全面的视角可以让人们深入了解患者的健康历程。

    - 通过人工智能增强洞察力:通过利用人工智能的力量,Health Chart 应用程序可以智能处理数据。人工智能引擎将原始信息转化为可操作的洞察,生成健康摘要和风险评估。这不仅节省了医生的宝贵时间,还提高了患者护理质量。

    公司介绍:https://www.prairiebyte.com

    软件试用

    目标使用者--临床医生

    类别--护理协调, 数据可视化, 疾病管理/基层医疗

    应用程序类型--SMART ON FHIR应用程序

    FHIR 版本--R4

    支持的电子病历系统--Cerner、Epic等支持FHIR API的软件系统

    0
    0 243
    文章 Michael Lei · 七月 9, 2024 1m read

    Abstractive Health是一款医生人工智能助手,可帮助医生创建最佳病历。我们直接与国家 HIE 和 EHR 集成。我们的医疗摘要可用于门诊、住院和急诊护理,实现临床笔记的自动化,如 SOAP 笔记、进展笔记、护理过渡、ED Provider 笔记和出院摘要。我们使用生成式人工智能和 LLM 来压缩数百页的医疗笔记,从而节省您的时间,让您可以专注于病人护理。

    公司介绍:https://www.abstractivehealth.com

    软件试用

    目标使用者--临床医生

    类别--护理协调, 数据可视化, 人口健康

    应用程序类型--SMART ON FHIR应用程序

    FHIR 版本--R4

    支持的电子病历系统--Allscripts、Athena Health、Cerner、Epic等支持FHIR API的软件系统

    安全和隐私政策: https://www.abstractivehealth.com/security-and-privacy

    0
    0 148
    文章 Michael Lei · 七月 7, 2024 1m read

    InterSystems 常见问题系列FAQ

    如果要让超时功能失效, 在DSN设置查询超时为disabled:

    Windows Control Panel > Administrative Tools > Data Sources (ODBC) > System DSN configuration

    如果勾选了Disable query timeout , 超时就会失效.

    如果想在应用侧修改,你可以在ODBC API 层设置:在连接数据源之前,调用ODBC SQLSetStmtAttr功能设置SQL_ATTR_QUERY_TIMEOUT 属性 

    0
    0 195
    文章 Michael Lei · 七月 7, 2024 1m read

    InterSystems 常见问题FAQ

    如果您想在InterSystems 产品启动时执行一个操作系统可执行文件,命令或者程序,可以在SYSTEM^%ZSTART routine里面写明流程 ( %ZSTART routine在 %SYS 命名空间里面创建).

    在 SYSTEM^%ZSTART 里面写代码之前, 请确保他可以在任何情况下能正常工作

    如果 ^%ZSTART routine 写的不对,或者没有响应或者发生错误,InterSystems 产品可能会无法启动。

    更多信息,请参考一下文档。

    About writing %ZSTART and %ZSTOP routines [IRIS]
    About writing %ZSTART and %ZSTOP routines

    0
    0 124
    文章 Michael Lei · 七月 7, 2024 4m read

    InterSystems  常见问题系列FAQ

    InterSystems 产品里数据 (表、对象、实例数据) 是存在global 变量里的。
    每个global 的数据大小可以从管理门户中中点击属性查看Management Portal > System > Configuration > Local Database > Globals page, 然后在global 属性页点击计算大小Calculate Size 按钮。
    你可以在终端上调用^%GSIZE  来在命名空间里显示数据大小,方法如下.

    0
    0 153
    文章 Louis Lu · 七月 1, 2024 2m read

    在 OEX 最近一次编程竞赛之后,我有一些令人惊讶的发现。
    几乎所有的应用程序都是基于人工智能与预制 Python 模块的结合。
    但深入研究后发现,所有示例都使用了 IRIS 的相同技术组件。

    从 IRIS 的角度来看,无论是搜索文本还是搜索图像或其他模式都是一样的。 其底层基本都是一样的。

              这让我想起了我家里的情况。我的妻子和女儿对家里的大量裙子、衬衫和其他衣服的信息进行了整理。
              但无论如何进行整理、分类、归档,我依然通过和我的妻子和女儿说话,来确定我的穿着。
               无论怎样包装,其结果都是如此。

    回到这次竞赛比赛:
    同样的 IRIS 技术内容,却有很多花哨的包装。
    每个人都在同一条高速公路上奔跑。没有人提到它有什么限制。

    于是我试着深入挖掘,找出新数据类型 VECTOR 的使用限制。
    所有向量都有两个基本参数
      - 静态 DATATYPE:"整型integer"(或 "int")、"double"、"十进制decimal"、"字符串 "和 "时间戳"。
      - 半动态 LEN(gth): > 0 通常也称为 POSITION;纯整数。

    0
    0 122
    文章 Louis Lu · 七月 1, 2024 4m read

    迄今为止,我看到的大多数使用向量vector的示例,将它只作为 SQL 中的一种功能,尤其是围绕 VECTOR_Search 的 3 个函数。
    * TO_VECTOR()
    * vector_dot_product ()
    * vector_cosine ()

    iris-vector-search 演示包中隐藏着一个非常有用的摘要。
    从那里,你可以通过多个链接找到所需的一切。

    我还缺少更多的 VECTOR 方法,于是在 Idea Portal 上提出了相关请求。

    接着,我想起每个 SQL 方法或存储过程都有一堆 ObjectScript 代码。
    于是我开始搜索,下面就是我的研究的一些总结:

    %Library.Vector 是对新数据类型的核心描述
          这是一种复杂的结构,就像对象或 %DynamicObjects 或 $Bit Expressions 一样,需要特定的方式去访问。
    我们还可以看到 2 个必备参数: 
          * DATATTYPE - 一旦设置就不能更改。 可接受的类型:  "整数integer"(或 "int")、"双精度浮点double"、"十进制decimal"、"字符串 "和 "时间戳"。
          * LEN >0 时,可以增长,但绝对不能缩小

    0
    0 130
    文章 Louis Lu · 六月 30, 2024 1m read

    你可以使用List query 对 %SYS.Audit 查询审计日志,代码如下:

    Set statement=##class(%SQL.Statement).%New()  
     Set status=statement.%PrepareClassQuery("%SYS.Audit","List")
     Set rs=statement.%Execute()  
     Set tab = $char(9)
     While rs.%Next() {    
       Write rs.%Get("TimeStamp")_tab_rs.%Get("Event")_tab_rs.%Get("Username"),!      
     }
    0
    0 97
    文章 Jeff Liu · 六月 30, 2024 7m read
    Purpose of this article

    有两篇很棒的有关删除消息关联的孤儿记录的内容以及如何处理孤儿的问题的WRC议最佳实践文章Ensemble Orphaned Messages | InterSystems Developer Community | Best DeleteHelper - A Class to Help with Deleting Referenced Persistent Classes (intersystems.com)
    本文并不是要取代 Intersystems 专业人员撰写的这些文章,而是要在此基础上介绍我们如何利用这些信息和其他讨论(包括我们实际清理这些数据的方法)来帮助我们的数据库变得更加紧凑。

    情况说明:

    我们的备份越来越多。年初的时候,我们遇到过一台服务器被强制故障的情况,需要进行还原。由于数据库庞大,即使复制这个数据库也需要很长时间,更不用说还原重建shadow服务器了。因此,我们不得不决定最终解决这一增长问题。最初的原因已经确定 

    1. 开箱即用的任务或者在某些时候假定已运行,但没有勾选信息体。这是因为在查询其中一个消息体时,我们得到了来自 10 多年前的 ID 1。该任务是最佳实践中提到的默认 Ens.Util.Tasks.Purge。这就引出了流程中的提示 1 

    理解你的数据

    0
    0 233
    文章 Nicky Zhu · 六月 29, 2024 8m read

    通过 REST API 将前端 React 应用程序与 IRIS 数据库等后端服务集成,是构建健壮网络应用程序的强大方法。但是,开发人员经常遇到的一个障碍是跨源资源共享(CORS)问题,由于网络浏览器强制执行的安全限制,该问题可能会阻止前端访问后端的资源。在本文中,我们将探讨在将 React Web 应用程序与 IRIS 后端服务集成时如何解决 CORS 问题。

    创建Schema

    我们首先定义一个名为 Patients 的简单Schema:

    Class Prototype.DB.Patients Extends %Persistent [ DdlAllowed ]
    {
    
    Property Name As %String;
    
    Property Title As %String;
    
    Property Gender As %String;
    
    Property DOB As %String;
    
    Property Ethnicity As %String;
    }
    

    您可以在表中插入一些虚假数据进行测试。我个人认为 Mockaroo 在创建假数据时非常方便。它可以让你把虚拟数据下载为 .csv 文件,直接导入管理门户。

    定义 REST 服务

    然后,我们定义几个 REST 服务

    0
    0 255
    文章 Jingwei Wang · 六月 23, 2024 8m read

    低代码挑战

    想象一下那个场景。您正在 Widgets Direct 愉快地工作,这是互联网上首屈一指的小部件和小部件配件零售商。您的老板有一些毁灭性的消息,一些客户可能对他们的小部件不太满意,我们需要一个帮助台应用程序来跟踪这些投诉。为了让事情变得有趣,他希望代码占用非常小,并挑战您使用 InterSystems IRIS 以少于 150 行代码交付应用程序。这可能吗?

    免责声明:本文记录了一个非常基本的应用程序的构建,为了简洁起见,省略了安全性和错误处理等细节。该应用程序仅供参考,不得用于任何生产应用。本文使用IRIS 2023.1作为数据平台,并非所描述的所有功能在早期版本中都可用

    第 1 步 - 定义数据模型

    我们首先定义一个新的干净的命名空间 - 带有代码和数据数据库。虽然所有内容都可以位于 1 个数据库中,但将它们拆分以便于数据刷新。

    我们的帮助台系统需要 3 个基本类:一个 Ticket 对象,它可以包含用于记录员工顾问 UserAccount 和客户联系人 UserAccount 之间交互的操作。让我们用一些基本属性来定义它们:

    0
    0 183