清除过滤器
文章
Vivi Zhu · 五月 7, 2022
从数据上看,2022年Epic的市场份额遥遥领先,而Cerner的市场却在不断被蚕食。
非常骄傲的是Epic电子病历是基于InterSystems数据平台构建,早在2020年Epic就将其数据库从Cache升级到InterSystems IRIS。
关于KLASKLAS是一家全球性数据驱动型公司,旨在通过提升医疗机构和保险公司的话语权来改善医疗服务水平和质量。KLAS与数以千计的医疗领域专业人员携手合作,收集对软件、服务和医疗设备的相关见解与反馈,并发布相应的行业报告、发展趋势和统计概况。KLAS如实提供准确且公正的数据,这种调研直接反映了医疗领域专家的声音,并帮助医疗行业的供应商提高业绩。更多详情,请登录:https://klasresearch.com/
报告原文也可以从网上获取。 V总第一篇!
文章
姚 鑫 · 二月 2, 2022
# 第四十二章 SQL函数 DATEADD
一个日期/时间函数,它返回一个时间戳,计算方法是在一个日期或时间戳中添加或减去若干日期部件单位(如小时或天)。
# 大纲
```java
DATEADD(datepart,integer-exp,date-exp)
```
# 参数
- `datepart` - 日期或时间部分的名称(或缩写)。
可以用大写或小写指定该名称,也可以不加引号。
可以将`datepart`指定为文字或主机变量。
- `integer-exp` - 任意数字类型的数字表达式。
该值被截断为整数(正或负)。
该值指示将添加到(或从)`date-exp`中减去的`datepart`单元的数量。
- `date-exp` - 要修改的日期/时间表达式。它可以是日期字符串,也可以是时间戳字符串(`%PosiTime`或`%Timestamp`数据类型),也可以是`CURRENT_DATE`之类的函数。返回的值始终是时间戳,数据类型格式为`%PosiTime`或`%Timestamp`。
# 描述
`DATEADD`函数通过将指定的日期部分递增指定的单元数来修改日期/时间表达式。
例如,如果`datepart`为`“month”`且整数`-exp`为`5`,则`DATEADD`将`date-exp`递增`5`个月。
还可以通过为`integer-exp`指定一个负整数来减少日期部分。
计算出的日期将作为完整的日期/时间表达式(时间戳)返回。返回的数据类型取决于`Date-EXP`的数据类型。如果`Date-EXP`为`%Library.PosiTime`(编码的`64`位有符号整数),则`DATEADD`返回数据类型`%Library.PosiTime`。否则,`DATEADD`返回数据类型`%Library.TimeStamp(yyyy-mm-dd hh:mm:ss.fff)`。
`DATEADD`始终返回有效日期,并考虑一个月的天数,并计算闰年。例如,将1月31日递增一个月将返回2月28日(该月中的最高有效日期),除非指定的年份是闰年,在这种情况下将返回2月29日。将闰年日期2月29日递增一年将返回2月28日。将闰年日期2月29日递增四年返回2月29日。
如果指定包含小数秒的`date-exp`,则返回值也包括小数秒。如果省略`date-exp`的时间部分,`DATEADD`将返回默认时间`00:00:00`。如果省略`date-exp`的日期部分,`DATEADD`将返回默认日期`1900-01-01`。
`DATEADD`和`TIMESTAMPADD`处理季度(`3`个月间隔);`DATEDIFF`和`TIMESTAMPDIFF`不处理季度。
可以使用`TIMESTAMPADD ODBC`标量函数执行类似的时间/日期修改操作。
也可以使用`DATEADD()`方法调用从ObjectScript调用此函数:
```java
$SYSTEM.SQL.Functions.DATEADD(datepart,integer-exp,date-exp)
```
# Datepart Argument
日期部分参数可以是以下日期/时间组件之一:全名(日期部分列)或其缩写(缩写列)。这些日期部分组件名称和缩写不区分大小写。
Date Part| Abbreviations |integer-exp = 1
---|---|---
year| yyyy, yy| Increments year by 1.
quarter |qq, q| Increments month by 3.
month |mm, m| Increments month by 1.
week| wk, ww| Increments day by 7.
weekday |dw| Increments day by 1.
day |dd, d| Increments day by 1.
dayofyear |dy, y| Increments day by 1.
hour |hh| Increments hour by 1.
minute |mi, n| Increments minute by 1.
second |ss, s| Increments second by 1.
millisecond |ms| Increments by .001 of a second.
microsecond |mcs| 0–999999 (with precision of 6)
nanosecond| ns| 0–999999999 (with precision of 9)
递增或递减日期部分会导致适当修改其他日期部分。例如,午夜过后的小时递增会自动递增日期,这又可能会递增月份,依此类推。
日期部分可以指定为带引号的字符串或不带引号。这些语法变体执行的操作略有不同:
- `QUOTES`:`DATEADD('month',12,$HOROLOG)`:在创建缓存查询时,日期部分被视为文字。 SQL执行文字替换。这会产生更普遍可重用的缓存查询。
- 无引号:`DATEADD(MONTH,12,$HOROLOG)`:在创建缓存查询时,日期部分被视为关键字。没有文字替换。这会产生更具体的缓存查询。
如果将无效的日期部分值指定为文字,则会发出`SQLCODE-8`错误代码。但是,如果提供无效的日期部件值作为主机变量,则不会发出`SQLCODE`错误,并且`DATEPART`函数返回值为`NULL`。
# 日期表达式格式
`Date-exp`参数可以采用以下任何格式,并且可以包括或省略小数秒:
- %Date logical value (+$H)
- %PosiTime(%Library.PosiTime)逻辑值(编码的64位有符号整数)
- (%Library.TimeStamp)逻辑值(YYYY-MM-DD HH:MM:SS)
- %String(或兼容)值
%STRING(或COMPATIBLE)值可以采用以下任何格式:
- 99999,99999 ($H format)
- /SQL-Server-date Sybase/SQL-Server-time
- Sybase/SQL-Server-time Sybase/SQL-Server-date
- Sybase/SQL-Server-date (default time is 00:00:00)
- Sybase/SQL-Server-time (default date is 01/01/1900)
Sybase/SQL-Server-Date是以下五种格式之一:
```
mmdelimiterdddelimiter[yy]yy dd Mmm[mm][,][yy]yy dd [yy]yy Mmm[mm] yyyy Mmm[mm] dd yyyy [dd] Mmm[mm]
```
其中,分隔符是斜杠(`/`)、连字符(`-`)或句点(`.`)。
`Sybase/SQL-Server-Time`表示以下三种格式之一:
```
HH:MM[:SS:SSS][{AM|PM}] HH:MM[:SS.S] HH['']{AM|PM}
```
请注意,提供`DATEADD`是为了与`Sybase`和`Microsoft SQL Server`兼容。
# 范围和值检查
`DATEADD`对输入值执行以下检查。如果值未通过检查,则返回空字符串。
- 日期字符串必须完整且格式正确,包含适当数量的元素和每个元素的数字,以及适当的分隔符。年份必须指定为四位数。
- 日期值必须在有效范围内。年份:`0001`到`9999`。月份:`1到12天`:`1到31`。时间:`0点到23点`。分钟:`0到59分钟`。秒:`0到59`。
- 返回的递增的`year`值必须在`0001`到`9999`之间。
超出此范围将返回``。
- 一个月中的天数必须与月和年相匹配。
例如,日期`“02-29”`仅在指定的年份为闰年时有效。
- 小于`10`的日期值可以包括或省略前导零。
不允许使用其他非规范整数值。
因此,`Day`值为`“07”`或`“7”`是有效的,但`“007”`、`“7.0”`或`“7a”`无效。
下面的例子为指定的日期添加了1周:
```sql
SELECT DATEADD('week',1,'2018-02-26') AS NewDate
2018/3/5 0:00:00
```
它返回`2018-03-05 00:00:00`,因为增加1周会增加7天。
注意,`DATEADD`提供了省略的时间部分。
下面的例子为时间戳添加了`5`个月:
```sql
SELECT DATEADD(MM,5,'2017-11-26 12:00:00') AS NewDate
2018/4/26 12:00:00
```
它返回`2018-04-26 12:00:00`,因为增加`5`个月也会增加一年。
下面的例子也在时间戳上增加了`5`个月:
```sql
SELECT DATEADD('mm',5,'2018-01-31 12:00:00') AS NewDate
2018/6/30 12:00:00
```
它返回`2018-06-30 12:00:00`。
这里`DATEADD`修改了日值和月值,因为简单地增加月值将导致6月31日,这是一个无效的日期。
下面的例子为时间戳添加了`45`分钟:
```sql
SELECT DATEADD(MI,45,'2018-02-26 12:00:00') AS NewTime
2018/2/26 12:45:00
```
下面的示例还为时间戳添加了`45`分钟,但在本例中,添加的内容增加了日,从而增加了月:
```sql
SELECT DATEADD('mi',45,'2018-02-28 23:30:00') AS NewTime
2018/3/1 0:15:00
```
下面的例子将原始时间戳减去`45`分钟:
```sql
SELECT DATEADD(N,-45,'2018-01-01 00:10:00') AS NewTime
2017/12/31 23:25:00
```
下面的例子为当前日期添加了`60`天,并根据月份的不同长度进行调整:
```sql
SELECT DATEADD(D,60,CURRENT_DATE) AS NewDate
2022/4/4 0:00:00
```
在下面的例子中,第一个`DATEADD`为指定的日期添加了`92`天,第二个`DATEADD`为指定的日期添加了`1 / 4`天:
```sql
SELECT DATEADD('dd',92,'2018-12-20') AS NewDateD,
DATEADD('qq',1,'2018-12-20') AS NewDateQ
```

第一季将于`2019-03-22 00:00:00`回归;
第二季将于`2019-03-20 00:00:00`回归。
每增加`1 / 4,month`字段就会增加`3`,如果需要,还会增加`year`字段。
它还校正给定月份的最大天数。
上面的例子都使用日期部分的缩写。
但是,也可以用它的全名来指定日期部分,就像下面的例子一样:
```sql
SELECT DATEADD('day',92,'2018-12-20') AS NewDate
2019/3/22 0:00:00
```
下面的嵌入式SQL示例使用主机变量来执行与前面示例相同的`DATEADD`操作:
```java
ClassMethod DateAdd()
{
s x="day"
s datein="2019-12-20"
&sql(SELECT DATEADD(:x,92,:datein)
INTO :dateout)
w "in: ",datein,!,"out: ",dateout
}
```
```java
DHC-APP>d ##class(PHA.TEST.SQLCommand).DateAdd()
in: 2019-12-20
out: 2020-03-21 00:00:00
DHC-APP>
```
文章
Louis Lu · 四月 15, 2021
我们刚刚结束了第二天的专题会议,会议内容精彩纷呈!虽然大家无法同时观看多个平行会议,但是线上会议有一个优势,那就是您可以根据自己的需要回看错过的内容!
在昨天的博客文章(第一天会议亮点)中,我介绍了大部分值得关注的公告,如 InterSystems IRIS Adaptive Analytics 和FHIR加速器服务等。所以,今天我想更宽泛地讨论一些战略主题。
运营和系统管理
现在,越来越多的客户业务已经运行在云端,也有越来越多的人开始在本地部署现代部署策略。Mark Bolinsky今天主持了两场背靠背会议:CL003 云存储策略和CL004 云备份策略,为使用云端生产工作的用户带来了很多技术细节。我们新推出的系统警报和监控(SAM)模块也得到了不错的反馈。相关内容请查看DEV007 系统警报和监控和CL005 分布式部署。另一个另广大开发者兴奋的消息是,集群监控现在可以轻松实现。在此感谢所有参与并提出问题的与会者!
安全性
在安全性方面,InterSystems一直受到客户和分析师的高度好评,不过大多数人会认为这样做是为了保持自身产品的安全。这当然是我们的一个目标,但是我们还添加了许多新的安全特性。今天的SEC000 OCSP装订就是一个典型的例子。虽然OCSP(在线证书状态协议)可提供更强的安全性,但也会影响浏览器性能。使用OCSP装订功能后,服务器会检查X.509证书的有效性,并将状态进行装订响应给浏览器,从而大幅缩短响应时间,并增强安全性。
机器学习
去年,我们发布了一款纯SQL的嵌入式机器学习工具——IntegratedML。现在,这一工具已被广泛应用。今天,Tom Dyar向大家介绍了这款工具的入门教程,并深入探讨了H2O和DataRobot的合作。昨天的内容还包括我们的早期采用者Baystate的用例。更多关于机器学习平台的最佳实践的内容将在明天为大家揭晓!
数据仓库和商业智能
为了让InterSystems IRIS能够更加成功地应用于分析用例中,我们做了大量投资,新的自适应分析产品只是其中的一项。Benjamin De Boe在会上概述了公司在数据仓库技术方面所做出的努力,并向大家介绍了我们SQL引擎的一些内部结构。在终端用户方面,Mark Massias介绍了我们为用户提供的自由选择——用户可以自由选择商业智能和报告工具,以便将数据仓库中的数据可视化。最后,Carmen Logue介绍了我们的合作伙伴——来自BioReference Labs的Mike Senatore,他们采用了我们新的“Selective Cube Build”功能,以最大限度地提高其InterSystems IRIS BI环境的可用性。明天会介绍关于我们与新技术合作伙伴Altheryx在该领域的更多合作内容!
开发人员对话
在今天的几个会议中,我们的开发人员介绍了几款将数据和应用程序导入IRIS数据平台的强大工具。Harry介绍了如何使用Change Data Capture这一现代技术在数据库之间进行数据迁移。如果您想要构建客户端应用程序,请查看Bob Kuszewki的指南:对象、关系和本机客户端Java API。说到应用程序开发,如果您想要构建和部署IRIS应用程序,那么Tim Leavitt主持的ZPM软件包管理器专题会议不容错过。
互操作性和FHIR
Matt Spielman在FHIR展望专题会议中回顾了自2014年开始的InterSystems对FHIR技术的研究历史。他概述了未来两年的FHIR路线图,包括bulk FHIR和FHIR分析。随着FHIR的发展,FHIR的需求增长越来越多地来自客户,而InterSystems工程师的推动作用越来越小。
InterSystems在增强X12支持方面将继续投入大量资金。IP004:新的X12增强功能展示专题会议简短介绍了X12的新功能,并演示了一些值得关注的功能,包括SNIP Level 1和2验证以及专门针对X12的合并DTL支持功能。
Stefan Wittmann在IP003:HL7 Feeds助力高效运行专题会议中提前展示了HL7生产力工具包的最新功能。InterSystems IRIS现在能够根据入站和出站HL7v2消息生成DTL存根,支持接口开发人员采用迭代模式改进DTL和重新测试。我们希望此功能可以进一步提高生产力。另一个功能是将用户跨命名空间或安装实例对production进行修改成为可能,从而显着降低升级成本。
自InterSystems API Manager(IAM)问世一年多以来,许多合作伙伴已经使用了InterSystems IRIS数据库平台的这一新功能。所以今天的会议对IAM进行了更深入的介绍。IP002:快速入门InterSystems API Manager 为尚未探索IAM的人士提供了一次快速了解IAM主要功能的机会,并介绍了下一版本IAM 1.5.0.3将包含的新特性。Stefan还在IP001:IAM的最佳实践专题会议中探讨了实现高可用性并对API流量提供最佳粒度控制的方法。
未来活动
专题会议将于明天结束,我们期待会议取得圆满成功。会后大家仍然可以通过多种方式与我们互动。欢迎通过VS2020questions@InterSystems.com发送您的问题和反馈。您还可以在当天结束时参与现场问答环节,充分利用下周的学习和工作时间。
如果想深入了解您感兴趣的话题,最好的途径是参与我们的咨询专家活动。欢迎提前预约10月30日或11月2日由专家或培训师主持的相关会议!
今天的线上峰会上您最喜欢的内容是什么?请在下方的评论中告诉我们。
祝明天的会议顺利!
Jeff
问题
Michael Lei · 一月 11, 2023
当我在 Intersystems Studio 中编写代码时,代码完成与在 VS Code 中不同。如果 VS Code 在代码完成时以相同的方式做出反应,那就太好了。Studio是这样的:
在 VS Code 中执行此操作时,它不显示对象但显示 “所有可能的项目”吗?
欢迎大家参与讨论,也欢迎大家参考英文社区的讨论内容:https://community.intersystems.com/node/531651
文章
姚 鑫 · 六月 10, 2021
# 第三章 指定输出的字符集
# 指定输出的字符集
若要指定要在输出文档中使用的字符集,可以设置Writer实例的Charset属性。选项包括`“UTF-8”`、`“UTF-16”`以及InterSystems IRIS支持的其他字符集。
# Writing the Prolog
XML文件的序言(根元素之前的部分)可以包含文档类型声明、处理指令和注释。
## 影响Prolog的属性
在`writer`实例中,以下属性会影响`prolog`:
### Charset
控制两件事`:XML`声明中的字符集声明和(相应的)输出中使用的字符集编码。
### NoXmlDeclaration
控制输出是否包含XML声明。在大多数情况下,默认值是0,这意味着已经编写了声明。如果没有指定字符集,并且输出定向到字符串或字符流,则默认为1,并且不写入任何声明。
## 生成文档类型声明
在根元素之前,可以包含文档类型声明,该声明声明了文档中使用的模式。
要生成文档类型声明,需要使用`WriteDocType()`方法,该方法有一个必选参数和三个可选参数。
就本文档而言,文档类型声明包括以下可能的部分:
```java
```
如这里所示,文档类型有一个名称,根据XML规则,该名称必须是根元素的名称。
声明可以包含外部子集、内部子集或两者。
external_subset 部分指向其他地方的DTD文件。
本节的结构是以下任何一种:
```java
PUBLIC public_literal_identifier
PUBLIC public_literal_identifier system_literal_identifier
SYSTEM system_literal_identifier
```
这里`public_literal_identifier`和`system_literal_identifier`是包含DTD uri的字符串。
注意,DTD可以同时具有公共标识符和系统标识符。
下面是一个文档类型声明示例,它包含一个同时使用公共标识符和系统标识符的外部子集:
```java
```
internal_subset部分是一组实体声明。
下面是一个文档类型声明的示例,它只包含一组内部声明:
```java
!ENTITY city (#PCDATA)>
!ENTITY player (#PCDATA)>
] >
```
`WriteDocType()`方法有四个参数:
- 第一个参数指定文档类型的名称,用于在这个XML文档中使用。
这是必需的,而且必须是有效的XML标识符。
还必须将此名称用作本文档中根级别元素的名称。
- 可选的第二个和第三个参数指定声明的外部部分,如下所示:
WriteDocType参数
第二个参数 | 第三个参数| 其他部分
---|---|---
“publicURI” |null| PUBLIC “publicURI”
“publicURI” |“systemURI”| PUBLIC “publicURI” “systemURI”
null |“systemURI”| SYSTEM “systemURI”
- 可选的第四个参数指定声明的内部部分。如果此参数非空,则将其括在方括号`[]`中,并适当地放在声明的末尾。没有添加其他字符。
## 编写处理指令
要将处理指令写入`XML`,请使用`WriteProcessingInstruction()`方法,该方法有两个参数:
1. 处理指令(也称为目标)的名称。
2. 指令本身是一个字符串。
该方法将以下内容写入XML:
```java
```
例如,要编写以下处理指令:
```java
```
为此,可以按如下方式调用`WriteProcessingInstruction()`方法:
```java
set instructions="type=""text/css"" href=""mystyles.css"""
set status=writer.WriteProcessingInstruction("xml-stylesheet", instructions)
```
## 指定默认命名空间
在编写器实例中,可以指定默认命名空间,该命名空间仅应用于没有`Namespace`参数设置的类。有几个选项:
- 可以在输出方法中指定默认命名空间。四个主要的输出方法(`RootObject()`、`RootElement()`、`Object()`或`Element()`)都接受名称空间作为参数。只有在类定义中未设置`Namespace`参数时,才会将相关元素分配给`Namespace`。
- 可以为编写器实例指定总体默认命名空间。为此,请为编写器实例的`DefaultNamespace`属性指定值。
```java
Class Writers.BasicDemoPerson Extends (%RegisteredObject, %XML.Adaptor)
{
Parameter XMLNAME = "Person";
Property Name As %Name;
Property DOB As %Date;
}
```
默认情况下,如果我们只是导出此类的对象,我们会看到如下所示的输出:
```java
Persephone MacMillan
1976-02-20
```
相反,如果我们在编写器实例中`将DefaultNamespace`设置为`"http://www.person.org",`然后导出一个对象,则会收到如下所示的输出:
```java
Persephone MacMillan
1976-02-20
```
在本例中, `` 元素使用默认名称空间,否则不会分配给名称空间。
文章
Lele Yang · 二月 2, 2023
正如之前在 2022 年全球峰会上宣布的那样,InterSystems 将停止交付或安装基于 Apache 的web服务器(通常称为私有web服务器或 PWS);此更改目前计划用于 InterSystems IRIS 2023.2。
使用这种新方法,您可以完全控制选择最适合您目的的 Web 服务器,以及如何配置、维护和更新它。这一变化的一个主要好处是您将不再需要等待 InterSystems 的更新套件来获得最新版本,这在安全漏洞情况下尤其重要。 InterSystems 将提供可用于帮助配置 Apache 或 IIS 的工具。 (请注意,InterSystems IRIS Community Edition 将继续安装 PWS。)
安装 Web 服务器是一个常见的过程,通常很容易 - 各个 Web 服务器供应商都有详细的文档记录。
以下是适用于 Ubuntu、Windows 和 macOS 的示例。它们演示了快速安装,因此您可以看到当 InterSystems 产品不包含或安装 Web 服务器时的新行为。 (请注意,此代码按原样提供,不受支持,也不足以托管关键任务或数据敏感的应用程序。)
提供了常见问题解答,其中提供了更多信息并可访问用于尝试此新过程的工具包。请参阅本文末尾链接的 PDF 以获取常见问题解答,或者如果您想添加到讨论中,请访问https://community.intersystems.com/post/discontinue-apache-web-server-installations-faq 。
安装 Web 服务器通常有多种方法,请选择您熟悉且最适合您的方法。
已为希望试用不包含 PWS 的新安装程序的客户创建了一个新的抢先体验计划 (EAP)。如果您希望成为此 EAP 的一部分并访问这些工具包,请发送电子邮件至 nopws@InterSystems.com 。
如需反馈或疑虑,请通过nopws@InterSystems.com联系我们。
以下是 Microsoft Windows 的示例:
使用 Microsoft Windows 安装 IIS。
安装后,您可以安装 InterSystems IRIS,它将询问用户是否应配置 IIS。
下面是一个使用 Ubuntu 的例子:
先决条件:允许用户使用 sudo,Ubuntu 操作系统,未安装 PWS
对于 Ubuntu,Apache 的官方存储库可以与 apt-get 命令一起使用。
更新存储库
$ sudo apt-get update
安装Apache
$ sudo apt-get install apache2
验证是否已安装
$apache2 -v
安装 InterSystems IRIS
使用 SMP 进行测试 ( http://localhost/iris/csp/sys/UtilHome.csp )
如果您只是出于测试目的安装了 apache2,您可以使用以下命令删除 apache2:
$ sudo apt-get remove apache2
这是一个使用 macOS 的示例:
安装
$ brew install apache-httpd
在升级或安装后重新启动 httpd:
$ brew services restart httpd
通过使用启动它
sudo apachectl -k start
或使用重新启动它
$ sudo apachectl -k restart
测试它是否通过将您的浏览器定位到
http://localhost:8080
它应该显示:"It works"
安装 IRIS(请注意新的安装对话框,因为它是新的)
重新启动web服务器
$ sudo apachectl -k restart
使用 SMP 进行测试 ( http://localhost:8080/iris/csp/sys/UtilHome.csp )
如果您只是出于测试目的安装了 apache-http,您可以使用以下命令删除 apache-http:
$ brew remove apache-httpd
删除 Apache 相关设置或安装
请小心删除设置或配置,并自行承担使用风险。
删除单个实例的 apache httpd 配置。
找到 Apache httpd.conf 文件。它的位置取决于平台:
macOS:/usr/local/etc/httpd/httpd.conf
SuSE Linux: /etc/apache2/httpd.conf
红帽 Linux:/etc/httpd/conf/httpd.conf
Ubuntu Linux: /etc/apache2/apache2.conf
AIX:/opt/freeware/etc/httpd/conf/httpd.conf_64(如果使用 64 位 httpd)
/opt/freeware/etc/httpd/conf/httpd.conf(如果使用 32 位 httpd)
以 root 身份编辑 httpd.conf 并在文件末尾删除以下部分,从
#### 开始-ApacheCSP-SECTION-<INSTANCENAME> ####
开始结束于
#### 开始-ApacheCSP-SECTION-<INSTANCENAME> ####。
使用命令“sudo apachectl -k restart”重新启动 Apache
要删除单个实例的 Web Gateway 配置:
如果更改了 WebGateway 安装目录的默认目录,请使用以下说明中的适当路径。
以 root 身份编辑 /opt/webgateway/conf/CSP.ini 并删除以下行:
在“[SYSTEM_INDEX]”部分中删除行 <INSTANCENAME>=Enabled
在“[APP_PATH_INDEX]”部分中删除行“/<nstancename>=Enabled”
删除部分“[APP_PATH:/<instancemame>]”
从所有 IRIS 实例中清除 Apache httpd:
Apache配置
找到 Apache httpd.conf 文件。它的位置取决于平台:
macOS:/usr/local/etc/httpd/httpd.conf
SuSE Linux: /etc/apache2/httpd.conf
红帽 Linux:/etc/httpd/conf/httpd.conf
Ubuntu Linux: /etc/apache2/apache2.conf
AIX:/opt/freeware/etc/httpd/conf/httpd.conf_64(如果使用 64 位 httpd)
/opt/freeware/etc/httpd/conf/httpd.conf(如果使用 32 位 httpd)
以 root 身份编辑 httpd.conf 并在文件末尾删除以下所有部分,以
#### 开始-ApacheCSP-
开始并结束于
#### 结束 ApacheCSP
使用命令“sudo apachectl -k restart”重新启动 Apache
要从所有 IRIS 实例中清除 Web Gateway:
要删除单个实例的 Web Gateway 配置:
如果更改了 WebGateway 安装目录的默认目录,请使用以下说明中的适当路径。
sudo rm -rf /opt/webgateway
sudo rm -f /usr/local/etc/irissys/CSP_options
PWS Removal FAQ
文章
Louis Lu · 一月 7, 2021
本文介绍了 InterSystems 客户围绕 SDDC 和 HCI 解决方案的注意事项。
采用软件定义数据中心 (SDDC) 和超融合基础架构 (HCI) 解决方案的 InterSystems 客户需要重点关注的事项
越来越多的 IT 组织正在探究使用SDDC 和 HCI 解决方案的可行性。 这些解决方案看上去很有吸引力,其市场定位为跨异构数据中心和云基础设施可以使得 IT 管理更容易、投入的成本花费更少。 对于 IT 组织来说,潜在的好处是巨大的,许多 InterSystems 客户正在拥抱 SDDC、HCI 或两者兼有。
如果您正在考虑 SDDC 或 HCI 解决方案,请联系您的销售客户经理或销售工程师,安排与技术架构师的通话。 这对于确保成功非常重要。
这些解决方案具有高度的可配置性,组织可以从许多软件和硬件的组合中自由选择。 我们看到了我们的客户使用各种 SDDC 和 HCI 解决方案,通过这些经验,我们意识到,仔细考虑解决方案配置以避免风险是非常重要。 在某些情况下,有些客户的实施不符合关键事务型数据库系统所需的性能和弹性需求。 这导致了应用性能不佳和意外停机的出现。 如果客户的目标是为关键事务型数据库系统提供高弹性和低延迟的存储能力,则组件的选择和配置需要针对您的情况进行仔细考虑和规划,包括:
* 选择适当的组件
* 正确配置这些组件
* 使用适当的操作步骤
SDDC 和 HCI 提供了灵活性和易管理性,它们在操作系统和物理存储层之间的管理程序层内或旁路运行。 这会增加不同程度的开销。 如果配置错误,会从根本上影响磁盘延迟,这对于应用的性能而言是灾难性的。
InterSystems IRIS、Caché 和 Ensemble 的设计注意事项
以下最低要求和设计注意事项列表基于我们对 SDDC 和 HCI 解决方案的内部测试。 请注意,这不是一个参考架构,意味着您的应用需求将根据您的实际情况和性能目标有所更改。
网络
* 每节点拥有两个或更多的 10Gb NIC 接口,专门用于存储流量。
* 本地两台无阻塞速率 10Gb 交换机,实现交换机的弹性连接。
* 当然也可以选择 25、40、50 或 100Gb 而不是 10Gb速率,将其作为对 HCI 的前瞻性投资,以满足特定基准和测量应用程序的要求。
**计算**
* 至少一个六节点群集,以便在维护和故障期间提供更高的弹性和可预测的性能。
* 英特尔可扩展 Gold 或 Platinum 处理器或更高版本,2.2Ghz 或更高主频。
* 以每个 CPU 插槽 6 个 DDR4-2666 DIMM 为一组的形式安装 RAM(最少 384GB)。
存储
* 全闪存存储。 这是唯一推荐的存储选项。 InterSystems 强烈建议不要将混合或分层 HCI 存储用于生产工作负载。
* 每个物理节点至少两个磁盘组。 每个磁盘组应支持至少三个大容量驱动器。
* 独占使用写入密集型 12Gbps SAS SSD 或 NVMe SSD。
* 对于具有缓存和容量层的全闪存解决方案,建议将 NVMe 用于缓存层,将写入密集型 12Gbps SAS 用于容量层。
* 对 Linux 虚拟机使用 LVM PE 条带化,从而将 IO 分布在多个磁盘组(请联系 InterSystems 获得指南)。
* 对于 Linux 虚拟机上的所有数据库和写入映像日志 (WIJ) 文件使用异步 IO 及 rtkaio 库。 这样可以绕过文件系统缓存并降低写入延迟(请参见[文档](http://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls)或与 WRC 联系以获取有关在 Linux 上正确启用异步 IO 的帮助)。
这些最低要求建议已证明可以减轻 SDDC 和 HCI 的开销,但并不确保应用性能。 与任何新技术一样,测试您自己的应用的性能和弹性对于任何成功部署都是至关重要的。
重申一次,如果您正在考虑 SDDC 或 HCI 解决方案,请联系您的销售客户经理或销售工程师,他们会为你安排与技术架构师的通话。这对于确保成功至关重要。
公告
Claire Zheng · 五月 24, 2021
5月27日,CHIMA大讲堂第十九期邀请医院信息化专家和InterSystems技术专家,共同探讨集成平台赋能智慧医院建设这一话题。欢迎大家围观参会!InterSystems专家演讲概要如下:
演讲人
李岩 ( @Li.Yan ),InterSystems中国业务拓展经理演讲主题构建更智慧的医院信息平台演讲概要在需求的拉动下和政策、标准的推动下,为了给患者提供更好的就医体验,给医务人员提供更好的临床服务,给管理者提供更好参考和手段,智慧医院的建设如火如荼地发展起来了。智慧医院的建设并不是某一应用、某一系统的点状建设,而是打通各个环节、各个系统的全面的建设。
作为医院系统互通的核心的医院信息平台,如何更加“智慧”,如何更好地赋能智慧医院建设?希望本期分享能为您带来一些启发。
演讲人
乔鹏 (@Qiao.Peng) ,InterSystems中国技术总监演讲主题从集成平台到医院信息平台演讲概要当前医院信息化建设是否需要一个集成平台?是不是仅仅因为互联互通才需要集成平台?
集成平台是否只是一个过渡性的产品?医院信息平台是集成平台的发展方向吗?
此次分享将和大家一起讨论这些问题,探究集成平台出现的原因、它的价值和不足,以及目前医疗信息化建设对集成平台的挑战。探讨医院信息平台作为集成平台的未来,它的核心价值、能力、设计思路和实施路径。
完整日程如下:
手机端请扫描图片中二维码,电脑端请复制下方链接观看。https://djt.chima.org.cn/
欢迎大家报名、围观、参会!
陆主任会从目前平台建设存在的问题、平台框架选择、平台建设注意事项等全方位,多角度的介绍广医二院的医疗信息平台建设
文章
Johnny Wang · 二月 6, 2022
本文是上一篇关于如何从流行数据库(如 PostgreSQL 和 MySQL)迁移到 IRIS 的后续文章。
我们将使用与从 PostgreSQL 迁移相同的过程。 但是,您会发现它更容易,因为 MySQL 中的数据类型与 IRIS 非常相似。 这就是为什么我们不需要在列中创建转换规则。
获取示例数据到迁移过程
在 GitHub 中,可以下载 docker-compose 项目来构建和运行 2 个数据库:
源数据库:带有示例数据库的 MySQL 数据库 Docker 实例。
目标数据库:InterSystems IRIS 数据平台 Docker 实例,具有用于接收源数据库的现成模式。
要获取示例并运行它,请执行以下步骤:
转到 git 存储库 https://github.com/yurimarx/migration-mysql-iris。 克隆项目:https://github.com/yurimarx/migration-mysql-iris.git。 转到项目文件夹migration-mysql-iris。 进行构建:docker-compose build。 执行容器:docker-compose up -d。 如果一切正常,请使用实例检查您的 docker 桌面:
关于要迁移的数据
要迁移的数据与第一部分中使用的数据模型相同,在这里表示:
所以,从 MySQL 到 IRIS 的迁移过程会迁移:
8张表
5000行销售数据。
2500 行用户数据。
200 行产品数据。
50行商店数据。
100行国家数据。
30行城市数据。
5 行 status_name。
迁移目标将是 InterSystems IRIS 数据库中 USER 命名空间内的 dc_test 模式。
从 MySQL 迁移到 IRIS 的开源工具:DBeaver
在第一部分中,我们使用 DBeaver 社区版进行迁移。 我们将再次使用它。
DBeaver 是一个数据库工具,用于连接、创建、删除、选择、更新和删除市场上主要数据库产品中的数据对象。 从以下网址下载:https://openexchange. intersystems.com/package/DBeaver。 现在按照安装说明将这款出色的产品安装到您的笔记本电脑或台式机中。
DBeaver 可用于在数据库连接之间迁移数据,即使它们来自不同的制造商和版本。
使用 DBeaver 连接源数据库和目标数据库
现在我们将设置要迁移的数据库连接。
设置 MySQL 到 DBeaver 的连接: 1. 在 DBeaver 中,转到文件 > 新建。 2. 选择数据库连接并单击下一步:
3. 选择 SQL 选项卡 > MySQL,然后单击下一步:
4. 填写 Main 选项卡中的 MySQL 连接字段,如下图所示:
主机:本地主机
端口:3306
数据库:db
用户名:user
密码:密码
5. 转到驱动程序属性选项卡并将 allowPublicKeyRetrieval 设置为值 TRUE:
6. 在驱动程序属性选项卡中继续,并将 useSSL 设置为值 FALSE:
7. 如果 DBeaver 请求下载 MySQL 驱动程序,请按 Yes 或 OK。
8. 单击完成。
设置 InterSystems IRIS 与 DBeaver 的连接:
在第一部分中,您配置了 IRIS 连接,但如果您没有保存它,请执行以下操作: 1. 在 DBeaver 中,转到文件 > 新建。 2. 选择数据库连接并单击下一步:
3. 选择 SQL 选项卡 > InterSystems IRIS 并单击下一步:
4. 如果 DBeaver 请求下载 InterSystems IRIS 驱动程序,请按 Yes 或 OK。 5. 设置 InterSystems IRIS 连接字段,如下图所示:
主机:本地主机
数据库/架构:用户
用户名:_SYSTEM
密码:SYS
单击文本连接并完成。
连接(db 和 user)在 Database Navigator 中可用:
进行迁移
迁移过程与第一部分中描述的非常相似。只需按照以下步骤操作:
1. 展开 db connection > Databases > db > Tables 并选择所有表。 在选定的表上单击鼠标右键,然后选择导出数据,如下图所示:
2. 选择数据库,如图所示,然后单击下一步:
3. 单击选择按钮:
4. 选择 dc_test 并点击 OK(注:如果您需要在目标和源列之间创建高级转换,请点击 Columns 按钮)。
5. 现在,单击下一步。
6. 将 Fetch size 设置为 1000000,然后单击下一步。
7. 接受数据加载设置中的默认值,然后单击下一步。
8. 在确认中单击继续。
9. 现在,如果您打开 Database Navigator,您将能够看到 InterSystems IRIS dc_test 模式中的所有 MySQL 表。
就像 PostgreSQL 迁移一样,MySQL 迁移过程对于表来说非常简单。 但是,对于视图、函数、触发器和存储过程,您需要使用 ObjectScript 或 SQL 重写 SQL 源代码。
请跟第一篇连起来形成系列,谢谢!
文章
姚 鑫 · 九月 13, 2022
[toc]
# 第三十一章 管理许可(四)
## 显示本地许可证信息的方法
下面列出的子例程转储实例共享内存中本地包含的许可证表的内容。一般来说,他们识别客户:
`$System.License.DumpLocalAll` 将所有本地许可证表条目转储到当前目录中的 `all.dmp` 文件中:
```java
USER> Do $System.License.DumpLocalAll()
25 条目转储到 c:\intersystems\irishealth\mgr\user\all.dmp
```
`all.dmp` 文件的内容示例:

`$System.License.DumpLocalInUse` 将所有正在使用的本地许可证表条目转储到当前目录中的 `inuse.dmp` 文件:
```java
USER> Do $System.License.DumpLocalInUse()
2 条目转储到 c:\intersystems\irishealth\mgr\user\inuse.dmp
```
`inuse.dmp` 文件内容示例:

`$System.License.DumpLocalPID` 将进程 `ID` 使用的本地许可证表转储到当前目录中的 `piduse.dmp` 文件中:
```java
USER> Do $System.License.DumpLocalPID()
33 条目转储到 c:\intersystems\irishealth\mgr\user\piduse.dmp
```

## 显示许可证服务器信息的方法
以下子例程转储许可证服务器维护的许可证表的内容。输出文件位于运行活动许可证服务器的主机上的指定目录中。
`$System.License.ShowSummary` 显示许可证服务器上的许可证信息摘要。分布式许可证使用部分提供许可证服务器当前支持的所有 `IRIS` 实例的许可证使用的集体视图。本地许可证使用部分展示了运行程序的单个 `IRIS` 实例的许可证使用视图:
```java
USER> Do $System.License.ShowSummary()
软件许可服务器活动密钥摘要视图.
分布式软件许可使用:
当前使用的软件许可单元 = 2
使用的最大软件许可单元数 = 2
授权的软件许可单元 = 25
本地软件许可使用:
当前连接 = 2 最大连接数 = 6
当前用户 = 2 最大用户数 = 3
```
`$System.License.DumpServer` 将与运行此例程的服务器相关的许可服务器数据库信息转储到运行许可服务器的主机上的文件 `dumpserver.txt` 中:
```java
USER> Do $System.License.DumpServer()
License server database dumped to: c:\intersystems\irishealth\mgr\dumpserver.txt at LAPTOP-ARLL3DSO
```

`$System.License.DumpServers` 将所有已知服务器的许可证服务器数据库信息转储到运行许可证服务器的主机上的文件 `dumpservers.txt` 中:
```java
USER> Do $System.License.DumpServers()
1 server database[s] dumped to: c:\intersystems\irishealth\mgr\dumpservers.txt at LAPTOP-ARLL3DSO
```

`$System.License.DumpKey` 将此实例和共享它的实例使用的密钥转储到运行许可证服务器的主机上的文件 `dumpkey.txt` 中:
```java
USER> Do $System.License.DumpKey()
License server Client data dumped to: c:\intersystems\irishealth\mgr\dumpkey.txt at LAPTOP-ARLL3DSO
```

`$System.License.DumpKeys` 转储所有密钥,将使用它们的实例和客户端显示到运行许可证服务器的主机上的文件 `dumpkeys.txt` 中:
```java
USER> Do $System.License.DumpKeys()
License server Client data (1 key[s]) dumped to: c:\intersystems\irishealth\mgr\dumpkeys.txt at LAPTOP-ARLL3DSO
```

注意:请注意,本地许可方法显示的信息比许可服务器方法显示的信息更新;许可证服务器只定期更新,而本地数据是实时的。
可能会暂时超出许可限制,因为登录是在本地控制的,但许可服务器会强制执行该限制。每个实例根据其在实例共享内存中维护的本地许可证表允许或拒绝登录。每个实例都会定期向许可证服务器发送更新,描述本地许可证表的更改。如果所有实例的组合许可证使用超过限制,则许可证服务器将发送否定确认以更新来自每个实例的消息。
这种否定确认会导致每个实例拒绝新的登录,因为没有额外的许可单元可用。当尝试启动的 `IRIS` 进程的许可用户 `ID` 与任何当前进程的许可用户 `` 不匹配时,登录被视为新登录。这种状态一直持续到所有实例的组合使用量低于授权限制,此时许可证服务器开始发送肯定确认以响应实例更新。然后各个实例允许新的登录。
公告
Michael Lei · 四月 29, 2022
我们很高兴向您介绍我们新的反馈门户网站--InterSystems Ideas!
我们的目标是改善我们的反馈机制,使您可以建议我们的产品如何发展以满足您的业务挑战。在开发者社区提问是与您的同行就特定的代码问题进行互动的好方法,而我们的客户支持网站WRC则一如既往地是解决实时问题的方法。
这个新的门户是为了获得您更高层次的想法。不是关于今天如何,更多是关于未来,您想看到我们的产品在未来如何更好地工作。您可以发布您自己的反馈,也可以对其他人提供的反馈进行评论/投票。InterSystems将查看你提交的任何反馈,直接回应你的反馈,并且如果您的建议有了任何进展,我们将及时更新状态。
所以,欢迎提出您的想法,为了我们共同的未来!谢谢!
公告
Claire Zheng · 六月 16, 2021
为了解国内外最新的互联互通标准,共同助推我国卫生信息互联互通标准化成熟度测评工作,指导各地医院信息平台的建设,《中国卫生信息管理杂志》社决定召开国内外互联互通标准解读与实践线上交流会。会议由《中国卫生信息管理杂志》社主办,InterSystems中国协办,欢迎报名参会!
公告
Claire Zheng · 二月 22, 2021
大家好!
InterSystems开发者社区中文版正在招募版主,以更好地推动中文社区建设,期待每一位开发者的积极参与,共同打造一个高效沟通的技术社区!
欢迎点击报名(或扫描下方二维码),审核通过后,我们会与您详细沟通版主权益及义务。
- 已经停止收集拉 没有停止收集,请直接扫码报名
文章
Lilian Huang · 十二月 31, 2022
在上一篇文章中,我们讨论了标准 HL7v2 的起源、结构和消息类型。现在让我们看一下最常用的消息类型之一及其结构示例。我说的是 ADT。
HL7 ADT 消息(入院、出院、转院)用于在医疗机构传达基本患者信息、就诊信息和患者状态。 ADT 消息是使用最广泛且容量最大的 HL7 消息类型之一,因为它为许多触发事件提供信息,包括患者入院、注册、取消、更新、出院、患者数据合并等。
所有患者信息都输入到医疗机构的医院信息系统 (HIS) 或电子病历 (EMR) 中。这些系统中的新患者或更新通过 ADT 消息分发到辅助系统,以保持当前患者数据的同步。
此消息有很多子类型,具体取决于情况和要采取的操作。这里是其中的一些。
子类型
描述
ADT^A01
病人入院/就诊
ADT^A02
病人转运
ADT^A03
病人出院
ADT^A04
患者登记
ADT^A05
患者入院前
ADT^A08
患者信息更新
ADT^A11
取消入院
ADT^A12
取消患者转运
ADT^A13
取消患者出院
如果我们查看此类消息的一般结构,它将由以下部分组成。考虑到 HL7v2 的不同版本支持向后兼容,在更高的版本中你可能有更多的字段。
HL7 ADT 的片段
段
描述
MSH
消息头:每条消息都必须包含一个消息头,在 ADT 中称为 MSH 段。标头包含有关发送系统和位置、接收系统和位置、创建消息的日期和时间、正在通信的触发事件类型以及正在使用的 HL7 消息版本的信息。
EVN
事件类型:传达为了生成消息而发生的事件。该段是数据流的关键部分,因为它根据事件类型指示消息发送的位置和时间。
PID
患者识别:重要的患者身份信息,包括患者人口统计信息。
[{NK1}]
近亲联系信息:患者最亲近的亲属的联系信息,以备需要联系时使用。必要时可以重复此部分。
PV1
患者就诊:有关患者帐户的信息或任何特定访问的详细信息,例如服务设施、主治医生和访问 ID 都保存在该部分中。
[PV2]
患者就诊 - 附加信息:该部分是患者就诊具体信息的延续,并且是传达入院原因的部分。如果消息中包含 DG1 段,则它是可选段。如果没有 DG1 段,则需要 PV2 段。
[{OBX}]
观察/结果:每个 OBX 段都包含有关单个医学观察或结果的信息。此段在 ORU(观察报告)消息中更常用。必要时可以重复。
[{AL1}]
过敏信息:包含有关患者过敏的信息,包括过敏原类型、反应和严重程度。必要时可以重复此部分。
[{DG1}]
诊断信息:该部分包含有关患者诊断的信息,并使用 ICD 编码标准来传达特定疾病、体征、症状、异常、患者投诉等。
[{PR1}]
程序:保存有关可以对患者执行的各种程序的信息,并且可以重复以传达有关多个程序的信息。
[{ROL}]
角色:从患者记录中添加、更新、更正和删除所需的人员和事件涉及信息。
[{GT1}]
担保人信息:有关患者担保人(即对患者帐户负有财务责任的人)的信息保存在该部分中。该段在与保险计费应用程序通信时特别有用。
[{IN1..2..3}]
保险信息:生成患者和保险账单所必需的保险单覆盖信息,例如计划和提供者标识符。
[ ] = 可选段,{ } = 重复段
现在我们知道了此类消息的构建块,让我们看一个示例。
HL7 ADT^A04 消息示例
假设我们有以下消息:
MSH |^~\&| EPIC | EPICADT | SMS | SMSADT |202211031408| CHARRIS | ADT ^ A04 |1817457| D |2 .5 | EVN ||202211030800||||202211030800 PID ||0493575^^^2^ ID 1|454721|| DOE ^ JOHN ^^^^| DOE ^ JOHN ^^^^|19480203| M || B |254 MYSTREET AVE ^^ MYTOWN ^ OH ^44123^ USA ||(216)123 -4567 ||| M | NON |400003403~1129086| NK1 || ROE ^ MARIE ^^^^| SPO ||(216)123 -4567 || EC ||||||||||||||||||||||||||| PV1 || O |168 ~219~ C ~ PMA ^^^^^^^^^||||277^ ALLEN MYLASTNAME ^ BONNIE ^^^^|||||||||| ||2688684|||||||||||||||||||||||||202211031408||||||002376853
在此示例中,您会注意到我们有 5 个不同的段,由回车符分隔: MSH 、 EVN 、 PID 、 NK1和PV1 。
您还会注意到每个段都包含许多复合材料。例如,在第一行中,竖线字符 (|) 分隔 SMS 和 SMS ADT 段。
最后,在第二行,名字子字段 JOHN 与姓氏 DOE 使用 ^ 字符分隔。
此外,始终有一个所用 HL7v2 标准版本的指示符,以便接收应用程序知道在哪个字段中期望什么。在本例中,版本为 2.5。
现在让我们看看这条消息的每一段,了解它携带的信息。
段MSH
MSH|^~\&|EPIC|EPICADT|SMS|SMSADT|202211031408|CHARRIS|ADT^A04|1817457|D|2.5|
场地
长度
选择性
价值
MSH.1
字段分隔符
1个
必需的
|
MSH.2
编码字符
4个
必需的
^~\&
MSH.3
发送申请
227
选修的
史诗
MSH.4
发送设备
227
选修的
EPICADT
MSH.5
接收申请
227
选修的
短信
MSH.6
接收设施
227
选修的
短消息ADT
MSH.7
消息日期/时间
26
必需的
202211031408
MSH.8
安全
40
选修的
查理斯
MSH.9
消息类型
15
必需的
ADT^A04
MSH.10
消息控制 ID
20
必需的
1817457
MSH.11
处理编号
3个
必需的
丁
MSH.12
版本号
60
必需的
2.5
MSH.13
序列号
15
选修的
MSH.14
延续指针
180
选修的
MSH.15
接受确认类型
2个
选修的
MSH.16
申请确认类型
2个
选修的
MSH.17
国家代码
3个
选修的
MSH.18
字符集
16
选修的
MSH.19
消息的主要语言
250
选修的
MSH.20
备用字符集处理方案
20
选修的
MSH.21
消息配置文件标识符
427
选修的
段EVN
EVN||202211030800||||202211030800
场地
长度
选择性
价值
EVN.1
事件类型代码
3个
向后兼容性
EVN.2
记录日期/时间
26
必需的
202211030800
EVN.3
日期/时间计划事件
26
选修的
EVN.4
事件原因代码
3个
选修的
EVN.5
操作员编号
250
选修的
EVN.6
事件日期/时间
26
选修的
202211030800
EVN.7
活动设施
241
选修的
段PID
PID||0493575^^^2^ID 1|454721||DOE^JOHN^^^^|DOE^JOHN^^^^|19480203|M||B|254 MYSTREET AVE^^MYTOWN^OH^44123^USA ||(216)123-4567|||男|非|400003403~1129086|
场地
长度
选择性
价值
PID.1
设置 ID - PID
4个
选修的
PID.2
患者编号
20
向后兼容性
0493575^^^2^
PID.3
患者标识符列表
250
必需的
1
PID.4
备用患者 ID - PID
20
向后兼容性
454721
PID.5
患者姓名
250
必需的
能源部^约翰^^^^
PID.6
母亲的娘家姓
250
选修的
能源部^约翰^^^^
PID.7
出生日期/时间
26
选修的
19480203
PID.8
行政性
1个
选修的
米
PID.9
患者别名
250
向后兼容性
PID.10
种族
250
选修的
乙
PID.11
患者地址
250
选修的
254 MYSTREET AVE^^MYTOWN^OH^44123^美国
PID.12
县代码
4个
向后兼容性
PID.13
N电话号码 - 主页
250
选修的
(216)123-4567
PID.14
电话号码 - 业务
250
选修的
PID.15
主要语言
250
选修的
PID.16
婚姻状况
250
选修的
米
PID.17
宗教
250
选修的
非
PID.18
患者帐号
250
选修的
400003403~1129086
PID.19
SSN 号码 - 患者
16
向后兼容性
PID.20
驾照号码 - 患者
25
向后兼容性
PID.21
母亲的身份证明
250
选修的
PID.22
民族
250
选修的
PID.23
出生地
250
选修的
PID.24
多胞胎指标
1个
选修的
PID.25
出生顺序
2个
选修的
PID.26
国籍
250
选修的
PID.27
退伍军人军人身份
250
选修的
PID.28
国籍
250
向后兼容性
PID.29
患者死亡日期和时间
26
选修的
PID.30
患者死亡指标
1个
选修的
PID.31
身份未知指示器
1个
选修的
PID.32
身份可靠性代码
20
选修的
PID.33
最后更新日期/时间
26
选修的
PID.34
最后更新工具
241
选修的
PID.35
物种代码
250
有条件的
PID.36
品种代码
250
有条件的
PID.37
拉紧
80
选修的
PID.38
生产类代码
250
选修的
PID.39
部落公民身份
250
选修的
NK1段
NK1||ROE^MARIE^^^^|SPO||(216)123-4567||EC|||||||||||||||||||||||||
场地
长度
选择性
价值
NK1.1
套装 ID - NK1
4个
必需的
NK1.2
NK名称
250
选修的
ROE^MARIE^^^^
NK1.3
关系
250
选修的
SPO
NK1.4
地址
250
选修的
NK1.5
电话号码
250
选修的
(216)123-4567
NK1.6
公司电话号码
250
选修的
NK1.7
联系人角色
250
选修的
欧共体
NK1.8
开始日期
8个
选修的
NK1.9
结束日期
8个
选修的
NK1.10
近亲/关联方职称
60
选修的
NK1.11
近亲/关联方职位代码/类别
20
选修的
NK1.12
近亲/关联方雇员编号
250
选修的
NK1.13
组织名称 - NK1
250
选修的
NK1.14
婚姻状况
250
选修的
NK1.15
行政性
1个
选修的
NK1.16
出生日期/时间
26
选修的
NK1.17
生活依赖
2个
选修的
NK1.18
动态状态
2个
选修的
NK1.19
国籍
250
选修的
NK1.20
主要语言
250
选修的
NK1.21
生活安排
2个
选修的
NK1.22
公示码
250
选修的
NK1.23
保护指示灯
1个
选修的
NK1.24
学生指标
2个
选修的
NK1.25
宗教
250
选修的
NK1.26
母亲的娘家姓
250
选修的
NK1.27
国籍
250
选修的
NK1.28
民族
250
选修的
NK1.29
联系原因
250
选修的
NK1.30
联络人姓名
250
选修的
NK1.31
联络人电话
250
选修的
NK1.32
联络人地址
250
选修的
NK1.33
近亲/关联方的标识符
250
选修的
NK1.34
工作现状
2个
选修的
NK1.35
种族
250
选修的
NK1.36
差点
2个
选修的
NK1.37
联系人社会安全号码
16
选修的
NK1.38
近亲出生地
250
选修的
NK1.39
贵宾指标
2个
选修的
段 PV1
PV1||O|168 ~219~C~PMA^^^^^^^^^||||277^ALLEN MYLASTNAME^BONNIE^^^^||||||||| ||2688684|||||||||||||||||||||||202211031408||||||002376853
场地
长度
选择性
价值
PV1.1
设置 ID - PV1
4个
选修的
PV1.2
病人等级
1个
必需的
欧
PV1.3
分配的患者位置
80
选修的
168~219~C~PMA^^^^^^^^^
PV1.4
录取类型
2个
选修的
PV1.5
预准号码
250
选修的
PV1.6
先前的患者位置
80
选修的
PV1.7
主治医生
250
选修的
277^艾伦我的姓氏^邦尼^^^^
PV1.8
推荐医生
250
选修的
PV1.9
咨询医生
250
复古兼容性
PV1.10
医院服务
3个
选修的
PV1.11
临时位置
80
选修的
PV1.12
准考前测试指示器
2个
选修的
PV1.13
重新接纳指标
2个
选修的
PV1.14
承认来源
6个
选修的
PV1.15
动态状态
2个
选修的
PV1.16
贵宾指标
2个
选修的
PV1.17
录取医生
250
选修的
PV1.18
患者类型
2个
选修的
PV1.19
访问次数
250
选修的
2688684
PV1.20
金融类
50
选修的
PV1.21
收费价格指标
2个
选修的
PV1.22
礼遇守则
2个
选修的
PV1.23
信用评级
2个
选修的
PV1.24
合约代码
2个
选修的
PV1.25
合约生效日期
8个
选修的
PV1.26
合同金额
12
选修的
PV1.27
合同期
3个
选修的
PV1.28
兴趣代码
2个
选修的
PV1.29
转移到坏账代码
4个
选修的
PV1.30
转移到坏账日期
8个
选修的
PV1.31
坏账代理代码
10
选修的
PV1.32
坏帐转移金额
12
选修的
PV1.33
坏账回收金额
12
选修的
PV1.34
删除账户指标
1个
选修的
PV1.35
删除帐户日期
8个
选修的
PV1.36
出院处置
3个
选修的
PV1.37
出院地点
47
选修的
PV1.38
饮食类型
250
选修的
PV1.39
维修设施
2个
选修的
PV1.40
床位状况
1个
复古兼容性
PV1.41
帐户状态
2个
选修的
PV1.42
待定地点
80
选修的
PV1.43
先前的临时位置
80
选修的
PV1.44
承认日期/时间
26
选修的
202211031408
PV1.45
出院日期/时间
26
选修的
PV1.46
当前患者余额
12
选修的
PV1.47
总费用
12
选修的
PV1.48
总调整
12
选修的
PV1.49
总付款
12
选修的
002376853
PV1.50
备用访问 ID
250
选修的
PV1.51
访问指标
1个
选修的
PV1.52
其他医疗保健提供者
250
选修的
现在就是这样。在官方门户网站上找到有关 HL7v2 的更多信息。
欢迎在评论部分提出任何意见/建议。
文章
Jingwei Wang · 三月 24, 2022
REST是一种架构风格,而不是一种格式。尽管REST经常使用HTTP来传输消息,使用JSON来传递数据,但你也可以用XML或纯文本来传递数据。REST利用了现有的网络标准,如HTTP、URL、XML和JSON。
虽然它可以使用XML来描述数据,但它更常使用JSON,这是一个轻量级的数据封装器。
InterSystems REST服务
InterSystems REST服务由以下组件组成:
规范类(%REST.Spec的一个子类):这个类包含了REST服务的OpenAPI 2.0规范(Swagger)。InterSystems支持几个扩展属性,你可以在规范中使用。
调度类(%CSP.REST的一个子类):这个类负责接收HTTP请求并在实现类中调用合适的方法。
实现类(%REST.Impl的子类):这个类定义了实现REST调用的方法。
Web应用程序:它通过InterSystems Web Gateway提供对REST服务的访问。
使用API 管理工具创建REST服务 - 基于 OpenAPI 2.0规范
/api/mgmnt/
可以使用/api/mgmnt服务来创建、更新和删除REST服务。
使用/api/mgmnt创建 .disp .impl 和 .spec 类
使用http://localhost:52773/api/mgmnt/v2/namespace/myapp
注意: 命名空间必须已经存在,myapp可以自己定义,使用POST。
生成成功消息:
{
"msg": "New application myapp created"
}
创建Web应用程序 名字:/csp/namespace 分派类:myapp.disp 应用角色: %DB_%DEFAULT
补全实现类中的方法
使用^%REST Routine创建REST服务 - 基于 OpenAPI 2.0规范
do ^%REST
使用%REST.API类创建REST服务 - 基于 OpenAPI 2.0规范
可以用它来发现服务器上的REST服务,为这些REST服务生成OpenAPI 2.0规范,并在服务器上创建、更新、或删除REST服务。
使用%REST.API 创建 .disp .impl 和 .spec 类
set file="c:/temp/swagger.json"
set obj = ##class(%DynamicAbstractObject).%FromJSON(file)
do ##class(%REST.API).CreateApplication("petstore",.obj,,.new,.error)
//examine error and decide how to proceed...
...
创建Web应用程序
名字:/csp/namespace
分派类:myapp.disp
应用角色: %DB_%DEFAULT
补全实现类中的方法
基于%CSP.REST 手动创建REST 服务 - 不需要定义OpenAPI 2.0规范
创建REST 分派类,继承 %CSP.REST 类
定义URL map
Class REST.Interface.RestHandler Extends %CSP.REST
{
Parameter CONTENTTYPE = "application/json";
Parameter CONVERTINPUTSTREAM = 1;
Parameter CHARSET = "utf-8";
XData UrlMap
{
<Routes>
<Map Prefix="/coffee/sales" Forward="MyLib.coffee.SalesREST"/>
<Map Prefix="/coffee/repairs" Forward="MyLib.coffee.RepairsREST"/>
<Map Prefix="/coffee" Forward="MyLib.coffee.MiscREST"/>
</Routes>
}
}
创建REST 服务类,继承 %CSP.REST 类
REST 服务类URL map 定义,例如MyLib.coffee.SalesREST类中URL map定义REST 服务类
Class MyLib.coffee.SalesREST Extends %CSP.REST
{
Parameter HandleCorsRequest = 1;
XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
<Route Url="/request" Method="GET" Call="Request" />
<Route Url="/request" Method="POST" Call="Request" />
</Routes>
}
/// 根据文档号,输出其HTML格式
/// pDocNo:文档编号
ClassMethod Request() As %Status
{
#dim tSC As %Status = $$$OK
#dim e As %Exception.AbstractException
Try
{
Set tSC = ##class(REST.Util).GetSales(pName)
W tSC
}
Catch (e)
{
Set tSC=e.AsStatus()
}
Return tSC
}
}
创建Web应用程序
名字:/csp/namespace 或其他名字 分派类:REST.Interface.RestHandler 应用角色: %DB_%DEFAULT