#InterSystems IRIS for Health

0 关注者 · 898 帖子

InterSystems IRIS for Health™ 是全球第一个也是唯一一个专门为医疗应用程序的快速开发而设计的数据平台,用于管理全世界最重要的数据。它包括强大的开箱即用的功能:事务处理和分析、可扩展的医疗保健数据模型、基于 FHIR 的解决方案开发、对医疗保健互操作性标准的支持等等。所有这些将使开发者能够快速实现价值并构建具有突破性的应用程序。了解更多信息

文章 姚 鑫 · 八月 12, 2024 2m read

第八章 指定自定义 HTTP 请求

默认情况下,Web 客户端使用 HTTPSOAP 消息传输到 Web 服务并接收响应。Web 客户端会自动创建并发送 HTTP 请求,但可以创建自定义 HTTP 请求。为此,请使用以下步骤:

  1. 在创建 %Net.HttpReques 的实例并根据需要设置属性。有关此类的信息,请参阅使用 Internet 实用程序或 %Net.HttpRequest类文档。
  2. Web 客户端的 HttpRequest 属性设置为等于此实例。

如果希望在同一会话中支持对 SOAP 服务的多次调用,这尤其有用。默认情况下, Web 客户端不支持使用同一会话对 SOAP 服务进行多次调用。要解决此问题,创建一个新的 %Net.HttpRequest 实例,并将其用作 Web 客户端的 HttpRequest 属性。此更改强制对所有调用重复使用相同的 HTTP 请求,这将在对下一个请求的响应中返回所有 cookie

自定义 Web 客户端的回调

可以通过覆盖其回调方法来定制 Web 客户端的行为:

%OnSOAPRequest()

Method %OnSOAPRequest(mode As %String, 
                      client As %SOAP.
0
0 141
文章 姚 鑫 · 八月 11, 2024 2m read

第七章 解析时使用进程私有全局变量

默认情况下, Web 客户端在解析请求或响应时通常使用本地数组内存。可以强制它改用进程私有全局变量;这使 Web 客户端能够处理非常大的消息。

为此,请指定 Web 服务类的 USEPPGHANDLER 参数,如下所示:

Parameter USEPPGHANDLER = 1;

如果此参数为 1,则 Web 客户端在解析请求或响应时始终使用进程私有全局变量。如果此参数为 0,则 Web 客户端始终使用本地数组内存来实现这些目的。如果未设置此参数,则 Web 客户端使用默认值,通常是本地数组内存。

可以在运行时覆盖此参数。为此,请设置 Web 客户端实例的 UsePPGHandler 属性。

创建自定义 SOAP 消息

在特殊情况下,可能希望 Web 客户端发送自定义 SOAP 消息。基本要求如下:

  1. 创建 %SOAP.WebRequest的子类并设置其 LOCATION 参数或 Location 属性。
  2. 在此子类中,创建一个方法来发送 SOAP 消息。此方法必须创建 %Library.CharacterStream的实例,并将要发送的 SOAP 消息放入其中。有责任确保消息格式正确。
0
0 92
文章 姚 鑫 · 八月 10, 2024 2m read

[toc]

第六章 定义单向 Web 方法

通常,当 Web 客户端调用 Web 服务时,会返回 SOAP 消息,即使该方法没有返回类型并且在 数据平台中执行时不返回任何内容。

在极少数情况下,可能需要将 Web 方法定义为单向的。此类方法不得返回任何值,并且消息不需要 SOAP 响应。

注意:通常不应使用单向方法。请求-响应对更为常见、更受支持且更受期待 — 即使对于没有返回类型的方法也是如此。

要定义单向 Web 方法,请将该方法的返回类型定义为 %SOAP.OneWayWSDL 未定义此 Web 方法的输出,并且 Web 服务不返回 SOAP 消息。

向二进制数据添加换行符

可以使 Web 服务在新选项卡中为 %Binary 类型属性中为 %xsd.base64Binary 类型属性添加自动换行符。为此,请执行以下操作之一:

  • Web 服务类中将 BASE64LINEBREAKS 参数设置为 1
  • 对于 Web 服务类实例,将 Base64LineBreaks 属性设置为 1。此属性的值优先于 BASE64LINEBREAKS 参数设置的值。

对于参数和属性,默认值为 0;默认情况下, Web 服务不包括新选项卡中 %Binary类型属性或中 %xsd.base64Binary类型的属性的自动换行符。

0
0 84
文章 姚 鑫 · 八月 9, 2024 2m read

第五章 引用 SOAP 操作(仅限 SOAP 1.1)

引用 SOAP 操作(仅限 SOAP 1.1

SOAP 1.1 请求消息中,HTTP 标头包含如下 SOAPAction 行:

POST /csp/gsop/GSOP.DivideWS.cls HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; InterSystems IRIS;)
Host: localhost:8080
Connection: Close
Accept-Encoding: gzip
SOAPAction: http://www.mynamespace.org/GSOAP.DivideWS.Divide
Content-Length: 397
Content-Type: text/xml; charset=UTF-8

...

默认情况下,SOAPAction的值不带引号。要将此值放在引号中,请在 Web 客户端类中将 SOAPACTIONQUOTED 指定为 1。然后请求消息的 HTTP 标头将如下所示:

POST /csp/gsop/GSOP.DivideWS.cls HTTP/1.
0
0 113
文章 Michael Lei · 八月 6, 2024 5m read

数据收集

这篇分步说明指南将讲解如何创建任务来收集 InterSystems 数据库及其全局变量的相关数据(如关联的 Open Exchange App 所示,其中包含所有相关代码)

免责声明:此软件仅用于测试/演示目的。 InterSystems 不支持将此代码作为任何发布产品的一部分。 它由 InterSystems 提供,作为特定产品和版本的演示/测试工具。 用户或客户全权负责此软件交付后的维护和测试,InterSystems 对此代码的错误或误用不承担任何责任

  1. 首先,通过管理门户导入文件“DataCollection.xml”,并确保没有错误。 如果存在错误,则可能是版本问题,请发送电子邮件至 ari.glikman@intersystems.com 联系 Ari Glikman 获取适合你的版本的支持。 另外,确保将数据导入到你想要收集其内部数据以供后续检查的命名空间中。

  2. 导入完成后,应该看到 Sample 软件包以及几个子软件包 image

如果服务器上已经存在 Sample 软件包,那么你仍然应该可以看到新的子软件包以及先前存在的其他文件夹。

  1. 现在,运行单元测试以确保一切正常运行。

a. 创建可以被 InterSystems Terminal 读取的名为 Unit Tests 的文件夹,例如,由于我有一个本地安装,我需要在 C 盘中创建一个文件夹。

image

b.

3
0 150
文章 姚 鑫 · 八月 8, 2024 2m read

第四章 控制编码格式的内联引用的使用

控制编码格式的内联引用的使用

采用编码格式,任何对象值属性都作为引用包含在内,并且引用的对象作为单独的元素写在 SOAP 消息中。

要以内联方式写入编码对象,请在 Web 客户端中将 REFERENCESINLINE 参数或 ReferencesInline 属性指定为 `1。属性优先于参数。

指定信封前缀

默认情况下, Web 客户端在其发送的 SOAP 消息的信封中使用前缀 SOAP-ENV。可以指定不同的前缀。为此,请设置 Web 客户端类的 SOAPPREFIX 参数。例如,如果将此参数设置为 MYENV,则 Web 客户端会在其消息中包含此前缀,而不是 SOAP-ENV

将命名空间声明添加到 SOAP 信封

要将命名空间声明添加到给定 Web 客户端返回的 SOAP 响应的 SOAP 信封(<SOAP-ENV:Envelope>元素)中,请在调用 Web 方法之前调用 Web 客户端的 %AddEnvelopeNamespace() 方法。

0
0 124
文章 Michael Lei · 八月 7, 2024 6m read

表的图形显示

在这里,我们将说明如何以图形方式显示数据收集的结果。 项目的输出将如下所示:

image

我使用的是本地计算机。 如果你在服务器上,注意使用正确的 IP 地址。

首先,导入需要的三个类(注意,我们将晚些时候编辑它们):

你可以使用 xml 并将其导入系统。

规范将创建调度类和实现模板。 如果你想详细了解此过程,可以读一读我同事 Eduard Lebedyuk 写的文章

设置 API

注意,在此演示中我们将使用 Basic Authorization。 我们还假设 Sample_DBExpansion_Data.DBAnalysisInfo 和 Sample_DBExpansion_Data.GlobalAnalysisInfo 表中已经有数据。 如果没有,返回数据收集获取数据。

  1. 首先,创建一个可以让我们访问数据的端点: image

填写相同的名称,除非你打算为 react 应用自行定制代码。

  1. 点击 Save,然后测试我们的 API。
0
0 131
文章 Michael Lei · 八月 7, 2024 3m read

数据分析

这是数据收集的续集。 如果你还没有安装,请先完成安装。

这里提供的是对先前收集的数据的分析。

你需要导入构成此仓库的 xml,与先前仓库中的操作大致相同。

最顶层有一个任务:

InvestigateInfoTask

这个任务将允许我们设置将要监控的参数, 如下所示:

image

GrowthPercentageWarning:对于Global增长来说,“可接受的”百分比增长。

PeriodWarning:Global在多少天内实现增长是合理的?

HistoryLength:回溯 Sample_DBExpansion_Data.GlobalAnalysisInfo 表的时长。

默认设置为 7 天内增长 5%,回溯过去 30 天。 设置参数后,即使任务已经运行一次或多次,你仍然可以再次编辑。 转到任务详细信息,点击 Edit,然后根据需要更改。

该任务会调用 Sample.DBExpansion.DBSizeAnalysis.InvestigateInfo 类的 CreateReport 方法。

CreateReport 将填充两个表,如下所述:

  1. GlobalInvestigationReport
  • 这个表将保存分析 Sample_DBExpansion_Data.GlobalAnalysisInfo 表的“报告”。 我们可以通过多个字段用不同的参数来衡量增长。
0
0 122
文章 Michael Lei · 八月 6, 2024 2m read

开发新的互操作性Production时,最初在Production中添加设置是很自然的做法。

不过,一旦要将Production从开发环境移动到测试或其他环境,你就会发现 HTTP 服务器、IP 地址和/或端口之类的设置都需要更改。 为了避免这些设置在后续重新部署时被覆盖,必须将这些设置从Production得设置中移动到系统默认设置(System Default Settings)。

虽然系统默认设置可以手动创建,但是当生产中有大量业务组件时会难以处理。 因此,@Wietze Drost 让我开发一个工具自动执行此流程,通过筛选表达式指定哪些设置必须创建为系统默认设置。

  • 这个表达式可以定义为“*:HTTPServer,SSLConfig*”,其中“\*”表示“为任何主机类名”。 冒号后面是需要移动的设置列表。 所以,这个表达式的意思是“为所有名为 HTTPServer 和 SSLConfig 的设置创建或更新系统默认设置”。
1
0 127
文章 姚 鑫 · 八月 6, 2024 2m read

第二章 使用代理服务器

使用代理服务器

Web 客户端可以通过代理服务器与 Web 服务通信。要进行设置,请指定 Web 客户端实例的属性以指示要使用的代理服务器。这些属性如下:

HttpProxyServer

指定要使用的代理服务器的主机名。如果此属性不为空,则 HTTP 请求将定向到此计算机。

HttpProxyPort

指定代理服务器上要连接的端口。

HttpProxyHTTPS

如果使用代理服务器并且该代理服务器支持 HTTPS,则将其指定为 true

请注意,如果使用 HTTPS,则还必须将客户端的 SSLConfiguration 属性设置为 SSL/TLS 配置的名称;有关更多详细信息,请参阅配置客户端以使用 SSL

HttpProxyAuthorization

如果 Web 客户端需要向代理服务器验证自身身份,请将其指定为所需的 Proxy-Authorization 标头字段。

HttpProxyTunnel

如果 Web 客户端应通过代理建立到目标 HTTP 服务器的隧道,请将其指定为 true。如果为 true,请求将使用 HTTP CONNECT 命令建立隧道。代理服务器的地址取自 HttpProxyServerHttpProxyPort 属性。如果端点 URL 具有 https: 协议,则一旦建立隧道, IRIS 就会协商 SSL 连接。

0
0 93
文章 姚 鑫 · 八月 5, 2024 2m read

第一章 修改 Web 客户端

修改 Web 客户端

生成 Web 客户端类后,通常不需要编辑该类。相反,需要编写代码来创建该类的实例并提供客户端错误处理。本主题讨论了微调 Web 客户端的各种方法,可以通过修改 Web 客户端实例或(不太常见)修改生成的类来实现。

注意:不要创建生成的 Web 客户端类的子类。编译器不会生成正常运行所需的支持类,因此子类将无法使用。

禁用 Web 客户端的 Keep-Alive

默认情况下,如果重复使用 Web 客户端实例来发送多条请求消息,IRIS 会在一次 HTTP 传输中发送所有消息(使用 HTTP 1.1 保持活动连接)。具体来说,IRIS 保持 TCP/IP 套接字打开,这样 IRIS 就无需关闭并重新打开它。要禁用此保持活动行为,请执行以下操作之一:

  • 终止 Web 客户端实例并创建并使用一个新的。
  • 发送第一条消息后,将客户端的 HttpRequest.SocketTimeout 属性设置为 0。例如:
Set client.HttpRequest.SocketTimeout=0

注意:如果正在使用 WS-ReliableMessaging 并使用 SSL/TLSWeb 服务通信,请不要禁用保持活动。有关 WS-ReliableMessaging 的信息,请参阅保护 Web 服务。

0
0 94
文章 姚 鑫 · 八月 4, 2024 2m read

[toc]

第十二章 在 Web 服务中定义自定义处理 - 实现 ProcessBody()

实现 ProcessBody()

ProcessBody() 方法具有以下签名:

method ProcessBody(action As %String, requestBody As %CharacterStream, 
                   ByRef responseBody As %CharacterStream) as %Boolean

其中:

  • action 是入站消息中指定的 SOAP 操作。
  • requestBody%Library.CharacterStream 的一个实例,包含 SOAP <Body> 元素。该流包含 XML 片段,而不是完整的 XML 文档。
  • responseBody,是序列化为 %Library.CharacterStream 实例的响应主体。此流通过引用传递,最初为空。

如果在 Web 服务中实现此方法,则该方法应执行以下操作:

  1. 检查操作并相应地分支。例如:
 if action["action1" { 
  //details
 }
  1. 使用 requestBodyRead() 方法获取 SOAP <Body>。例如:
 set request=requestBody.Read()
  1. 使用 $EXTRACT 等工具解析此流。
0
0 121
文章 Michael Lei · 八月 1, 2024 4m read

随着 IRIS 中向量数据类型和向量搜索功能的引入,应用程序的开发正在开启一个充满各种可能性的全新世界,其中一个应用程序示例是我最近在巴伦西亚卫生局的一次公开竞赛中看到的应用程序,他们要求提供一种工具,能够使用 AI 模型协助进行 ICD-10 编码。

我们如何实现与所要求的应用程序类似的应用程序? 我们来看看需要什么:

  1. ICD-10 代码列表,我们将使用它作为 RAG 应用程序的上下文,在纯文本中搜索诊断结果。
  2. 经过训练的模型,它会将文本向量化,我们将在其中查找 ICD-10 代码中的对应项。
  3. Python 库,用于对 ICD-10 代码和文本进行摄取和向量化。
  4. 一个支持文本的友好前端,我们会在其中查找可能的诊断结果。
  5. 从前端接收的请求的编排。

IRIS 为我们提供哪些功能来满足上述需求?

  1. CSV 导入,可以使用 RecordMapper 功能,也可以直接使用嵌入式 Python。
  2. 嵌入式 Python 使我们能够实现使用所选模型生成向量所需的 Python 代码。
  3. 发布将从前端应用程序调用的 REST API。
  4. 互操作性生产,以允许在 IRIS 中跟踪信息。

我们只需要看看开发的示例:

d[IA]gnosis

在本文中,您可以访问开发的应用程序,在后续文章中,我们将详细了解如何实现每个功能,包括模型的使用、向量的存储和向量搜索的使用。

0
0 127
文章 姚 鑫 · 七月 30, 2024 3m read

第九章 使用进程私有全局变量来支持非常大的消息

使用进程私有全局变量来支持非常大的消息

默认情况下、 Web 服务在解析请求或响应时通常使用本地数组内存。可以强制它改用进程私有全局变量;这使 Web 服务能够处理非常大的消息。

为此,请指定 Web 服务类的 USEPPGHANDLER 参数,如下所示:

Parameter USEPPGHANDLER = 1;

如果此参数为 1,则 Web 服务在解析请求或响应时始终使用进程私有全局变量。如果此参数为 0,则 Web 服务始终使用本地数组内存来实现这些目的。如果未设置此参数,则 Web 服务使用默认值,通常是本地数组内存。

自定义 Web 服务的回调

可以通过覆盖其回调方法来定制 Web 服务的行为:

OnRequestMessage()

如果没有安全错误,则在 Web 服务收到请求消息时调用;如果出现安全错误,则不会调用此回调。系统在执行安全处理、检查信封是否有错误以及处理 WS-Addressing 标头中指定的操作(如果有)后调用此回调。此回调对于记录原始 SOAP 请求等任务很有用。

此方法具有以下签名:

Method OnRequestMessage(mode As %String, action As %String, request As %Stream.Object)

其中:

  • mode 指定 SOAP 请求的类型。
0
0 98
文章 姚 鑫 · 七月 25, 2024 2m read

第四章 覆盖 HTTP SOAP 操作和请求消息名称

覆盖 HTTP SOAP 操作和请求消息名称

当通过 HTTP 调用 Web 方法时,HTTP 标头必须包含 SOAP 操作,该操作是指示 SOAP HTTP 请求意图的 URI。对于 SOAP 1.1SOAP 操作作为 SOAPAction HTTP 标头包含在内。对于 SOAP 1.2,它包含在 Content-Type HTTP 标头中。

SOAP 操作指示 SOAP HTTP 请求的意图。该值是一个标识意图的 URI;它通常用于路由入站 SOAP 消息。例如,防火墙可以使用此标头适当地过滤 HTTP 中的 SOAP 请求消息。

对于 Web 服务中的 Web 方法,SOAPAction HTTP 标头默认具有以下形式(对于 SOAP 1.1):

SOAPAction: NAMESPACE/Package.Class.Method

其中 NAMESPACEWeb 服务的 NAMESPACE 参数的值,Package.Class.Method 是用作 Web 方法的方法的名称。例如:

SOAPAction: http://www.myapp.org/GSOAP.WebService.GetPerson

要覆盖此设置,请在 Web 方法的定义中为 SoapAction 方法关键字指定一个值。

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

InterSystems 常见问题FAQ 

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

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

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

[示例 2] 编译所有类 

 do $system.OBJ.CompileAll("/mapped") 
0
0 134
文章 Michael Lei · 七月 18, 2024 2m read

InterSystems 常见问题系列

使用 ErrorList 查询 SYS.ApplicationError 类.

  • 注 1: 在 %SYS 命名空间中运行.
  • 注 2: 这是个非存储的utility, 所以我们用 %ResultSet 类而不用 %SQL.Statement.

执行命令的例子如下.

USER>set $namespace="%SYS"   //equal to zn "%SYS"
%SYS>set rset=##class(%ResultSet).%New()

%SYS>set rset.ClassName="SYS.ApplicationError"
%SYS>set rset.QueryName="ErrorList"
// The first argument of the query is the namespace name, the second argument is the date (in MM/DD/YYYY format).
%SYS>do rset.Execute("USER","08/17/2020")

// To display the results on the screen, execute the %Display() method.
%SYS>do rset.
0
0 153
文章 Michael Lei · 七月 18, 2024 1m read

InterSystems 常见问题系列

可以通过 TRY-CATCH 来完成:

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

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

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

0
0 146
文章 Jingwei Wang · 八月 30, 2022 3m read

InterSystems IRIS 允许从任何符合DB-API的Python应用程序对InterSystems IRIS 进行快速、无缝地访问。Python DB-API驱动是对PEP 249 v2.0(Python数据库API规范 v2.0)的完整兼容。

 

步骤

  1. 前提是要有一个Python的开发环境。
    本示例使用vs code 如下所示创建一个dbapi.py文件。
    dbapi.py :
    # Embedded Python examples from summer 2022
    import iris as dbapi
    ​
    mytable = "mypydbapi.test_things"
    conn = dbapi.connect(hostname='localhost', port=1972, namespace='IRISAPP', username='superuser', password='iris')
    ​
    # Create table
    cursor = conn.cursor()
    try:
     cursor.
1
0 405
文章 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证书的环境:




CA根服务器 

DBServer

ECPApp

10.1.30.231 10.1.30.231 10.1.30.232
CARoot.cer DataSever.cer ECPApp.cer
CARoot.key DataSever.key ECPApp.
5
3 426
文章 Michael Lei · 七月 11, 2024 1m read

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

主要功能

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

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

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

软件试用

目标使用者--临床医生

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

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

FHIR 版本--R4

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

0
0 251
文章 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 156
文章 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 218
文章 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 131
文章 Michael Lei · 七月 7, 2024 4m read

InterSystems  常见问题系列FAQ

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

USER>do ^%GSIZE
 
Directory name: c:\intersystems\ensemble\mgr\user\ =>
All Globals? No => Yes
^DeepSee.ActiveTasks contains no data
Include it anyway? No => Y
Include any other similar globals without asking again? Yes =>
^DeepSee.ActiveTasks contains no data
Include it anyway? No => Yes
Include any other similar globals without asking again?
0
0 164
文章 Michael Lei · 七月 7, 2024 2m read

InterSystems 常见问题系列FAQ

流程如下

1. 上传到 FTP server

 set tmpfile="c:\temp\test.jpg"
 set ftp=##class(%Net.FtpSession).%New() 
 // connect to FTP server
 do ftp.Connect("","<username>","<password>")
 // set transfer mode to BINARY
 do ftp.Binary()
 // Move to the directory to upload
 do ftp.SetDirectory("/temp/upload")
 // Prepare a stream of files to upload  
 set file=##class(%File).%New(tmpfile)
 do file.Open("UK\BIN\")
 // upload file
 // 1st argument: File name to create at upload destination
 // 2nd argument: File stream to upload
 do ftp.Store("test.jpg",file)
 // Logout from ftp server
 do ftp.
0
0 151
文章 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 244