文章 姚 鑫 · 十一月 30, 2021 1m read

第一章 SQL谓词的概述(一)

描述计算结果为真或假的逻辑条件。

使用谓词

谓词是一个条件表达式,其计算结果为布尔值(truefalse)。

谓词可以如下使用:

  • SELECT语句的WHERE子句或HAVING子句中确定哪些行与特定查询相关。 注意,不是所有谓词都可以在HAVING子句中使用。
  • JOIN操作的ON子句中确定哪些行与连接操作相关。
  • UPDATEDELETE语句的WHERE子句中,确定要修改哪些行。
  • WHERE CURRENT OF语句的AND子句中。
  • CREATE TRIGGER语句的WHEN子句中确定何时应用触发操作代码。

谓词列表

每个谓词包含一个或多个比较操作符,可以是符号,也可以是关键字子句。 SQL支持以下比较操作符:

  • = (equals) ,<> (does not equal),!= (does not equal),> (is greater than),>= (is greater than or equal to),< (is less than),<= (is less than or equal to) - 比较条件。 可用于数字比较或字符串排序顺序比较。 对于数值比较,空字符串值(")被计算为0。 在任何相等比较中,NULL总是返回空集; 请使用IS NULL谓词。
  • IS [NOT] NULL - 测试字段是否有未定义(NULL)值。
0
0 120
文章 Weiwei Gu · 十一月 29, 2021 3m read

不是所有的多模型数据库都是相同的

作者:David Menninger

今天,许多现代应用程序需要的数据库管理能力往往不能通过一种方式就能实现。例如,当我建立一个支持旅游推荐和预订业务的应用程序时,我可能需要使用一些不同类型的数据库,包括用于用户会话的键值存储,用于产品目录的文档数据库,用于推荐的图形数据库,以及用于财务数据的关系数据库。

0
0 197
文章 Michael Lei · 十一月 25, 2021 8m read

关于 "智慧医院 "的真正内涵,有很多误解在流传。术语 "智慧Smart "已经成为 "自动化 " "数字设备 "的同义词。然而,事实是,增加技术、设备和传感器并不一定能使建筑或者医院变得'智慧'。而且,在某些情况下,数字创新被强加于医院,而没有真正考虑到其效果。

这种情况导致了一系列的复杂性和矛盾。例如,一方面,人们对医院采用数字技术的期望越来越高,但另一方面,人们越来越担心数字医疗解决方案正在创造更多离散的、孤岛的生态系统。同样,尽管医院面临着实现实时医疗系统的更大压力,但往往受制于其运营模式的孤岛性质或围绕各种医疗信息系统的互操作性问题。

这些相互冲突的压力表明,需要一种更协同、更集成、更综合、更全面的数字化转型方法--一种将系统整合在一起并从各个角度考虑影响的方法。

智慧医院数字孪生的出现,证明了这一技术为解决这些日益严峻的挑战提供了可行的手段。

在过去的几年里,数字孪生已经有了很大的发展,成为一项值得期待的技术。然而,尽管数字孪生被炒得沸沸扬扬,但对于数字孪生是什么(不是什么)以及它是否能实现其承诺,仍然存在相当大的困惑。像许多新技术一样,数字孪生正在 "幻觉破灭 "中挣扎并且在某些情况下被错误地描述。

在本文中,我们将通过回答这六个关键问题来正面解决这种困惑。

1
0 834
文章 姚 鑫 · 十一月 28, 2021 2m read

第九十章 SQL命令 WHERE CURRENT OF

使用游标指定当前行的UPDATE/DELETE子句。

大纲

WHERE CURRENT OF cursor

参数

  • cursor - 指定在光标的当前位置执行操作,光标是指向表的光标。

描述

WHERE CURRENT OF子句可用于基于游标的嵌入式SQL UPDATEDELETE语句,以指定位于要更新或删除记录上的游标。 例如:

   &sql(DELETE FROM Sample.Employees WHERE CURRENT OF EmployeeCursor)

删除最后一个FETCH命令从“EmployeeCursor”游标获得的行。

嵌入式SQL UPDATEDELETE可以使用WHERE子句(不带游标)或WHERE CURRENT OF(带声明游标),但不能同时使用两者。 如果指定的UPDATEDELETE既不带WHERE也不带WHERE CURRENT OF,则会更新或删除表中的所有记录。

更新的限制

当使用WHERE CURRENT OF子句时,不能使用当前字段值更新字段以生成更新的值。 例如,SET Salary=Salary+100SET Name=UPPER(Name)

0
0 114
文章 姚 鑫 · 十一月 27, 2021 4m read

第八十九章 SQL命令 WHERE(二)

相等比较谓词

下面是可用的相等比较谓词:

Predicate Operation
= Equals
<> Does not equal
!= Does not equal
> Is greater than
< Is less than
>= Is greater than or equal to
<= Is less than or equal to

例如:

SELECT Name, Age FROM Sample.Person
WHERE Age < 21

SQL根据排序规则(值的排序顺序)定义了比较操作。 如果两个值以完全相同的方式排序,则它们相等。 如果一个值排在第二个值之后,则该值大于另一个值。 字符串字段排序规则接受字段的默认排序规则。 IRIS默认排序规则不区分大小写。 因此,两个字符串字段值的比较或字符串字段值与字符串文字的比较(默认情况下)是不区分大小写的。 例如,如果Home_State字段值是两个字母的大写字符串:

Expression Value
'MA' = Home_State TRUE for values MA.
'ma' = Home_State TRUE for values MA.
0
0 100
文章 姚 鑫 · 十一月 26, 2021 2m read

第八十八章 SQL命令 WHERE(一)

指定一个或多个限制性条件的SELECT子句。

大纲

SELECT fields
FROM table
WHERE condition-expression

参数

  • condition-expression - 由一个或多个布尔谓词组成的表达式,该谓词控制要检索的数据值。

描述

可选的WHERE子句可以用于以下目的:

  • 指定限制要返回哪些数据值的谓词。
  • 指定两个表之间的显式连接。
  • 指定基表和另一个表中的字段之间的隐式连接。

WHERE子句最常用于指定一个或多个谓词,这些谓词用于限制SELECT查询或子查询检索到的数据(过滤出行)。 还可以在UPDATE命令、DELETE命令或INSERT(或INSERT or UPDATE)命令的结果集中使用WHERE子句。

WHERE子句限定或取消查询选择中的特定行。 符合条件的行是那些条件表达式为真的行。 条件表达式可以是一个或多个逻辑测试(谓词)。 多个谓词可以通过ANDOR逻辑操作符链接。

如果谓词包含除法,并且数据库中有任何值可以生成值为零或NULL的除法,则不能依赖求值顺序来避免被零除法。 相反,使用CASE语句来抑制风险。

WHERE子句可以指定包含子查询的条件表达式。子查询必须用圆括号括起来。

WHERE子句可以使用=(内部连接)符号连接操作符指定两个表之间的显式连接。

0
0 183
文章 姚 鑫 · 十一月 25, 2021 4m read

第八十七章 SQL命令 VALUES

指定字段中使用的数据值的INSERT/UPDATE子句。

大纲

(field1{,fieldn})
     VALUES (value1{,valuen})

参数

  • field - 字段名或以逗号分隔的字段名列表。
  • value - 值或以逗号分隔的值列表。 每个值被赋给相应的字段。

描述

VALUES子句用于INSERTUPDATEINSERT or UPDATE语句中,以指定要插入到字段中的数据值。 通常:

  • INSERT查询使用以下语法:
INSERT INTO tablename (fieldname1,fieldname2,...)
     VALUES (value1,value2,...)
  • UPDATE查询使用以下语法:
UPDATE tablename (fieldname1,fieldname2,...)
     VALUES (value1,value2,...)

VALUES子句中的元素依次对应于表名后面指定的字段。 注意,如果在VALUES子句中只指定了一个value元素,则没有必要将

0
0 160
文章 姚 鑫 · 十一月 24, 2021 2m read

第八十六章 SQL命令 USE DATABASE

设置当前名称空间和数据库。

大纲

USE [DATABASE] dbname

参数

  • dbname - 当前进程将使用的名称空间和相应的数据库作为当前名称空间。

描述

USE DATABASE命令将当前进程切换到指定的名称空间及其关联的数据库。 这允许在SQL中更改名称空间。 DATABASE关键字是可选的。

指定的dbname是所需的命名空间和包含数据库文件的对应目录的名称。 指定dbname作为标识符。 命名空间名称不区分大小写。

由于USERSQL保留字,因此必须使用分隔标识符来指定用户命名空间,如下面的SQL Shell示例所示:

USER>>USE DATABASE Samples
SAMPLES>>USE DATABASE "User"
USER>>

如果指定的dbname不存在,IRIS将发出SQLCODE -400错误。

USE DATABASE命令是一个特权操作。 在使用USE DATABASE之前,必须以具有适当权限的用户身份登录。 如果不这样做,将导致SQLCODE -99错误(特权冲突)。

使用$SYSTEM.Security.Login()方法为用户分配适当的权限:

   DO $SYSTEM.Security.
0
0 127
文章 姚 鑫 · 十一月 23, 2021 3m read

第八十五章 SQL命令 UPDATE(四)

示例

本节中的示例更新SQLUser.MyStudents表。 下面的示例创建SQLUser.MyStudents表,并用数据填充它。 因为这个示例的重复执行会积累具有重复数据的记录,所以它使用TRUNCATE TABLE在调用INSERT之前删除旧数据。 在调用UPDATE示例之前执行这个示例:

ClassMethod Update1()
{
CreateStudentTable
	s stuDDL = 5
	s stuDDL(1) = "CREATE TABLE SQLUser.MyStudents ("
	s stuDDL(2) = "StudentName VARCHAR(32),StudentDOB DATE,"
	s stuDDL(3) = "StudentAge INTEGER COMPUTECODE {SET {StudentAge}="
	s stuDDL(4) = "$PIECE(($PIECE($H,"","",1)-{StudentDOB})/365,""."",1)} CALCULATED,"
	s stuDDL(5) = "Q1Grade CHAR,Q2Grade CHAR,Q3Grade CHAR,FinalGrade VARCHAR(2))"
	s tStatement = ##class(%SQL.
0
0 103
公告 Jeff Liu · 十一月 23, 2021

大家好, 

今天分享关于Nora,Microsoft Teams 与 Northwell Health 的联合创新的成功故事

<iframe allowfullscreen="true" border="0" frameborder="no" framespacing="0" scrolling="no" src="//player.bilibili.com/player.html?aid=506782449&bvid=BV1Zg411P71E&cid=447562014&page=1" width="700" height="500" align="middle"></iframe>
0
0 301
文章 姚 鑫 · 十一月 22, 2021 6m read

第八十四章 SQL命令 UPDATE(三)

参照完整性

如果没有指定%NOCHECK, IRIS将使用系统范围的配置设置来确定是否执行外键引用完整性检查; 默认值是执行外键引用完整性检查。 可以在系统范围内设置此默认值,如外键引用完整性检查中所述。 要确定当前系统范围的设置,调用$SYSTEM.SQL.CurrentSettings()

此设置不适用于用NOCHECK关键字定义的外键。

UPDATE操作期间,对于每个具有更新字段值的外键引用,都会在被引用表中的旧(更新前)引用行和新(更新后)引用行上获得共享锁。 这些行在执行引用完整性检查和更新行时被锁定。 然后释放锁(直到事务结束才持有锁)。 这确保了引用的行不会在引用完整性检查和更新操作完成之间发生更改。 锁定旧行可以确保在可能的UPDATE回滚之前不会更改所引用的行。 锁定新行可以确保引用的行不会在引用完整性检查和更新操作完成之间发生更改。

如果对CASCADESET NULLSET DEFAULT定义的外键字段执行了带有%NOLOCKUPDATE操作,则相应的更改外键表的引用操作也会使用%NOLOCK

原子性

默认情况下,UPDATEINSERTDELETETRUNCATE TABLE是原子操作。 UPDATE要么成功完成,要么回滚整个操作。

0
0 170
文章 姚 鑫 · 十一月 21, 2021 9m read

第八十三章 SQL命令 UPDATE(二)

显示到逻辑数据转换

数据以逻辑模式格式存储。 例如,日期存储为整数天数,时间存储为从午夜开始的秒数,%List存储为编码字符串。 大多数其他数据,如字符串和数字,不需要转换; 无论当前模式如何,它们都以相同的格式输入、更新和存储。

对于已转换的数据,可以在LOGICAL模式(默认)中更新数据值,或者通过指定选择模式,使用更易于阅读的格式(DISPLAY模式或ODBC模式)更新数据值。 例如,通过指定选择模式,可以以DISPLAY格式(例如2/22/2018)、ODBC格式(例如2018-02-22)或逻辑格式(例如64701)更新日期。 对于某些数据类型,还可以在ODBC或DISPLAY选择模式下以LOGICAL格式指定数据。

列表结构

IRIS支持列表结构数据类型%list(数据类型类%Library.List)。 这是一种压缩的二进制格式,并不映射到 SQL的相应本机数据类型。 它对应的数据类型为VARBINARY,默认MAXLEN32749。 因此,动态SQL不能使用UPDATEINSERT来设置类型为%List的属性值。

0
0 105
文章 Johnny Wang · 十一月 21, 2021 5m read

    当我和加州大学戴维斯分校健康中心的同事着手简化提供者对基因组数据报告的访问时,我们希望这些信息能帮助临床医生提供更好、更个性化的护理。 我们的基因组数据没有操作界面,既不可搜索,也不与患者图表相关联。 如果我们可以在 FHIR(快速医疗互操作性资源)连接器上利用SMART原则在平台之间实现单点登录,我们的护理团队就可以更早地获得数据,患者将能够更好地得到照顾,并在与癌症的斗争中取得积极成果。

    而这也是正在实现的事情。 我们支持基因组数据报告的工作为临床医生带来了 50 个离散数据点,这意味着医生用于搜索报告的时间更少,也拥有了更多具有重要洞察力的离散数据,简化了对临床试验信息的访问,最终患者也得到了及时的护理。

    但我们并没有停下脚步,这不过是迈向更广阔数字领域的第一步。在 InterSystems 的帮助下,我们拥有了规模越来越大、类型更多样的数据集。

0
0 211
文章 Johnny Wang · 十一月 21, 2021 3m read

 

    在医疗领域,开发创新可以挽救更多的生命。

 

    这也是为什么我们更需要去倾听负责构建未来的人:开发人员。 他们需要什么工具才能更有效地使应用程序更加高效? 他们面对着什么样的障碍?

    InterSystems 不想去做无用的猜测,因此我们推动进行了一项研究,该研究综合了 200 名医疗行业开发者的反馈,深入了解了他们的最大需求。我们认为,这些研究结果为医疗单位和医疗技术公司提供了一个机会,可以帮助他们的开发团队为业务带来新机遇,同样也为临床医生和患者带来更光明的未来。

    以下是三个关键要点:

 

    1. 开发人员想要一个统一的医疗平台。

    在接受本次研究采访的 200 名开发人员中,有88% 的受访者表示他们是医疗 IT 领域的专家或该领域的技术人员——他们都希望能有最好的、为他们的行业量身定制的开发工具。 这就是为什么一半的受访者将统一的、专注于医疗的数据平台列为购买新开发工具的关键原因。

    一个合适的医疗行业开发平台应该包括互操作性/集成引擎、分析工具、面向医疗行业的自然语言处理功能、机器学习工具和 FHIR 服务器,以及其他组件。

    如果一家公司能够提供一个包含所有上述组件的平台,那么超过 90% 的开发人员将对这项技术非常感兴趣。

 

    2.

0
0 270
文章 姚 鑫 · 十一月 20, 2021 8m read

第八十二章 SQL命令 UPDATE(一)

为指定表中的指定列设置新值。

大纲

UPDATE [%keyword] table-ref [[AS] t-alias]
   value-assignment-statement 
   [FROM [optimize-option] select-table [[AS] t-alias]
         {, select-table2 [[AS] t-alias]} ]
   [WHERE condition-expression]

UPDATE [%keyword] table-ref [[AS] t-alias]
   value-assignment-statement
   [WHERE CURRENT OF cursor]

value-assignment-statement ::=
   SET column1 = scalar-expression1 {,column2 = scalar-expression2} .  |
   [ (column1 {,column2} .
0
0 173
文章 姚 鑫 · 十一月 19, 2021 2m read

第八十一章 SQL命令 UNLOCK

解锁表

大纲

UNLOCK [TABLE] tablename IN EXCLUSIVE MODE [IMMEDIATE]

UNLOCK [TABLE] tablename IN SHARE MODE [IMMEDIATE]

参数

  • tablename - 要解锁的表的名称。 Tablename必须是已经存在的表。 表名可以是限定的(schema.table),也可以是非限定的(table)。 非限定表名接受默认模式名。 模式搜索路径被忽略。
  • IN EXCLUSIVE MODE / IN SHARE MODE - IN EXCLUSIVE MODE关键字短语释放常规的IRIS锁。 IN SHARE MODE关键字短语在IRIS级别释放共享锁。

描述

UNLOCK命令用来解锁被LOCK命令锁定的SQL表。 此表必须是已存在的表,您对其具有必要的特权。 如果tablename是临时表,则命令执行成功,但不执行任何操作。 如果tablename是视图,则命令失败,并出现SQLCODE -400错误。

UNLOCKUNLOCK TABLE是同义词。

UNLOCK命令用来反转LOCK操作。 即使没有锁被持有,UNLOCK命令也会成功完成。 可以使用LOCK多次锁定一个表; 必须显式解锁表,解锁次数为表被显式锁定的次数。

权限

该命令为特权操作。

0
0 168
文章 姚 鑫 · 十一月 18, 2021 9m read

第八十章 SQL命令 UNION

组合两个或多个SELECT语句。

大纲

select-statement {UNION [ALL] [%PARALLEL] select-statement}

select-statement {UNION [ALL]  [%PARALLEL] (query)}

(query) {UNION [ALL]  [%PARALLEL] select-statement}

(query) {UNION [ALL]  [%PARALLEL] (query)}

参数

  • ALL - 可选——关键字字面量。 如果指定,则返回重复的数据值。 如果省略,重复的数据值将被抑制。
  • %PARALLEL - 可选—%PARALLEL关键字。 如果指定,则union的每一边都作为单独的进程并行运行。
  • select-statement - 从数据库中检索数据的SELECT语句。
  • query - 组合一个或多个SELECT语句的查询。

描述

UNION将两个或多个查询组合为一个查询,该查询将数据检索到结果中。 由UNION组合的查询可以是由单个SELECT语句组成的简单查询,也可以是复合查询。

为了在SELECT语句之间实现联合,每个分支中指定的列数必须匹配。 指定具有不同列数的select将导致SQLCODE -9错误。

0
0 197
公告 Claire Zheng · 十一月 18, 2021

亲爱的社区开发者们,大家好!

我们欢迎您来参加 2021年欧洲医疗编程马拉松 ,这一赛事时间为2021年11月19日-21日,免费参赛,线上赛道(On-line Track)的申请截止日期延长至11月15日。

我们将有一个InterSystems的挑战:“用FHIR创新”。InterSystems赛道的奖金设置如下:

🥇第一名: 1500 EUR
🥈第二名: 1000 EUR
🥉第三名: 500 EUR
我们为所有参加InterSystems挑战的人准备了奖品!
参考下图,了解我们的挑战细节:)你愿意参加吗?请在下面的投票中告诉我们!

 

0
0 132
文章 Hao Ma · 十一月 17, 2021 5m read

REF: https://docs.intersystems.com/healthconnectlatest/csp/docbook/Doc.View.cls?KEY=GREST

REF: https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_rest#AFL_C4838

开发REST服务有两个方式, 一个是生生的写代码, 定义接口的标准,被称为"Manually Coding"。第2个方式是目前越来越流行的"Sepcification-first",也就是使用描述性的语言定义接口规范,然后通过这个规范生成接口代码。第2种方式更快捷,但这里我还是从第一种介绍起,对理解里面的代码层次更容易一些,而这是调试一个接口必须的。

从代码开发REST服务

不同于HTTP和SOAP, Ensemble里面没有REST的inbound Adaptor,也没有可用的BS组件。在Production里开发一个REST服务的步骤是:

  1. 开发一个REST Service, 这个Service是一个CSP Page, 是一个网页服务,和Ensemble没关系。要在Production中使用这个服务,您需要在这个服务里调用一个Production的业务服务BS。
0
1 358
文章 Louis Lu · 十一月 16, 2021 2m read

内容摘自英文社区,原文见这里。主要解答了如何对于JSON对象中的某个字段创建索引。

在解答中Robert Cemper给出了下面示例

主要思路是将%Stream --> %DynamicObject --> 提取索引字段内容保存到计算字段内

Property JSON As %Stream.GlobalCharacter;

Property FirstName As %String [ Calculated, SqlComputed , SqlComputeCode = { set {*}=.GetDyn({ID},"FirstName") } ];

Property LastName As %String [ Calculated, SqlComputed , SqlComputeCode = { set {*}=.GetDyn({ID},"LastName") } ];

Index fn on FirstName; Index ln on LastName;

ClassMethod GetDyn(ID As %Integer, item = "") As %String
{    
  set JSON=.%OpenId(ID).JSON    
  do JSON.
0
0 133
文章 姚 鑫 · 十一月 16, 2021 4m read

第七十八章 SQL命令 TUNE TABLE

基于代表性数据调优表。

大纲

TUNE TABLE tablename [ tune_options ]

参数

  • tablename - 要调优的现有表的名称。 表名可以是限定的(schema.table),也可以是非限定的(table)。 非限定表名接受默认模式名。
  • tune_options - 可选—如果指定,一个或多个TUNE TABLE选项,以任意顺序指定,由空格分隔。 这些tune_options不区分大小写。

描述

TUNE TABLE命令根据表中当前的数据对现有表进行调优。 该数据应该代表表完全填充时所期望的数据。

TUNE TABLE根据代表性数据计算和设置表的块大小、选择性和范围大小。 通常,TUNE TABLE设置一个或多个这些值,并清除所有使用这个持久类(表)的缓存查询,以便查询将使用这些新值。 但是,如果TUNE TABLE没有更改这些值(例如,自上次对该表运行TUNE TABLE以来数据没有更改),则缓存查询不会被清除,该表的类定义也不会被标记为需要重新编译。

TUNE TABLE更新SQL表定义(因此需要特权来更改表定义)。 通常,TUNE TABLE还会更新相应的持久类定义。 这允许查询优化器使用调优后的值,而不需要进行类编译。

0
0 135
文章 Michael Lei · 四月 24, 2021 6m read

欢迎大家将相关的经验在这个讨论区分享。



板块 文章列表
征文大赛作品集锦

2022年首届InterSystems 技术征文大赛集锦

2023年第二届InterSystems 技术征文大赛集锦

官方文档

我司即将推出中文官方文档门户,欢迎大家把需要的官方文档发在评论区,我们会优先发布。谢谢!

1
3 1085
文章 姚 鑫 · 十一月 15, 2021 6m read

第七十七章 SQL命令 TRUNCATE TABLE

从表中删除所有数据并重置计数器。

大纲

TRUNCATE TABLE [restriction] tablename

参数

  • restriction - 可选—以下限制关键字中的一个或多个,用空格隔开:%NOCHECK%NOLOCK
  • tablename - 要从中删除所有行的表。 还可以指定一个可更新视图,通过该视图可以删除表中的所有行。 表名(或视图名)可以是限定的(schema.table)或非限定的(table)。 使用模式搜索路径(如果提供的话)或默认模式名将非限定名称匹配到其模式。

描述

TRUNCATE TABLE命令从表中删除所有行,并重置所有表计数器。 可以直接截断表,也可以通过视图截断表。 通过视图截断表会受到删除要求和限制,如CREATE view中所述。

TRUNCATE TABLE重置用于生成RowID字段、IDENTITY字段和SERIAL (%Library.Counter)字段连续整数值的内部计数器。 IRIS为插入到TRUNCATE表后的表中的第一行中的这些字段赋值为1。 对表的所有行执行DELETE操作不会重置这些内部计数器。

TRUNCATE TABLE重置用于在数据插入到流字段时生成流字段OID值的内部计数器。 对表的所有行执行DELETE操作不会重置此内部计数器。

0
0 147
文章 Nicky Zhu · 十一月 15, 2021 12m read

查看原文

近日,国家卫健委统计信息中心发布了两则通知——

2021年10月25日,国家卫健委统计信息中心发布《关于开展国家医疗健康信息互联互通标准化成熟度评测工作的通知》,这意味着新一年的评测工作开始启动。

2021年11月5日,国家卫健委统计信息中心发布了“关于2020年度国家医疗健康信息互联互通标准化成熟度测评结果(第二批)公示的通知”,公布了第二批10个区域和92家医院的测评结果。

这两则通知,再次将“互联互通”带到了医疗IT人的面前。而每每谈到互联互通,就不可避免地要谈到集成平台、信息平台和数据中台等项目建设问题,本文将从供应商选择、技术选型等从八个核心问题,浅谈关于平台和中台的那些事。

 


一、如何选择供应商?


 

如上图所示,如果我们把平台/中台项目的实施方称作解决方案提供商,那么每一家解决方案提供方背后还会有一家产品技术提供方解决方案,因为解决方案提供方往往需要借助成熟的产品来实现信息平台和数据中台项目,以聚焦所服务医院客户的具体需求,并加速实施效率,所以一个平台/中台供应链条相对比较长。也因此,医院/医疗集团需要花费更多的精力在产品和解决方案的组合中进行选型。选型的标准也成为许多信息中心或者CIO们关注的首要问题。

0
1 301
公告 Claire Zheng · 十一月 14, 2021

亲爱的开发者们,我们很高兴地跟大家分享一个好消息!

我们的社区全球注册会员突破10000名!中国开发者社区不到一年时间突破270人!增速全球第一!这是一个了不起的成就!感谢大家的支持🎊

在InterSystems,我们相信社区的力量。所以我们非常感谢你们在过去六年里所做的贡献,并期待未来的道路!

0
0 131
文章 姚 鑫 · 十一月 14, 2021 8m read

第七十六章 SQL命令 TOP

指定返回多少行的SELECT子句。

大纲

SELECT  [DISTINCT clause] 
  [TOP {[((]int[))] | ALL}]
  select-item{,select-item}

参数

  • int - 限制返回到指定整数的行数。 int参数可以是一个正整数、一个动态SQL输入参数(?)或一个解析为正整数的嵌入式SQL主机变量(:var)。在动态SQL中,int值可以选择用单括号或双括号括起来(双括号是首选语法); 这些括号禁止在相应的缓存查询中对int值进行文字替换。
  • ALL - TOP ALL仅在子查询或CREATE VIEW语句中有意义。 它用于在这些情况下支持使用ORDER BY子句,满足在子查询或CREATE VIEW中使用的查询中ORDER BY子句必须与TOP子句配对的要求。 TOP ALL不限制返回的行数。

描述

可选的TOP子句出现在SELECT关键字和可选的DISTINCT子句之后,以及第一个选择项之前。

TOP关键字用于动态SQL和基于指针的嵌入式SQL。 在非游标嵌入式SQL中,TOP关键字的唯一有意义的用法是TOP 0。 任何其他TOP int(其中int是任何非零整数)都是有效的,但没有意义,因为非游标嵌入式SQL中的SELECT总是最多返回一行数据。

0
0 230