搜索​​​​

清除过滤器
公告
Claire Zheng · 五月 19, 2022

5月27日 | 极客俱乐部:集成平台赋能业务流程再造与创新

在集成平台建设如火如荼的今天,如何能最大程度发挥集成平台价值,让集成平台不再止步于业务系统接口的打通,而是真正作为医院的IT基础架构,释放出更大价值?5月27日,InterSystems技术总监乔鹏 ( @Qiao.Peng )和InterSystems销售工程师王菁伟( @Jingwei.Wang )将针对集成平台建成后的应用价值,围绕“业务流程再造”角度,探讨以低代码方式梳理并再造业务闭环流程、从而赋能业务创新并促进医院精细化管理和高质量发展。点击链接或扫描报名。
文章
Claire Zheng · 七月 8, 2021

2021 CHITEC | InterSystems IRIS医疗版互联互通套件:六大能力助力医院互联互通建设

2021年7月9日-11日,2021(16th) 中国卫生信息技术/健康医疗大数据应用交流大会暨软硬件与健康医疗产品展览会(CHITEC)在武汉国际博览中心(湖北省武汉市汉阳区鹦鹉大道619号)盛大召开,欢迎莅临InterSystems展位A6-16,了解备受瞩目的InterSystems IRIS医疗版互联互通套件。 InterSystems致力于部署、创建互联互通医疗解决方案,为医院数字化转型提供技术支持。针对医院信息互联互通标准化成熟度测评指标要求,InterSystems IRIS 医疗版互联互通套件从安全管理、监控、数据管理、互联互通文档、互联互通服务、集成与交换六大方面助力医院互联互通建设,以满足医疗机构内部标准化的要求,使医院可基于信息平台提供较为完善的临床决策支持、闭环管理,实现丰富的人工智能和大数据应用,实现丰富的跨机构的业务协同和互联互通应用。 如果您希望进一步了解详细信息,欢迎莅临展位(A6-16),或通过下方二维码联系小助手,添加时注明“CHITEC预约沟通”,确认您的专属预约沟通时段,如果您完成预约并与专家实现现场沟通,将有机会获得神秘礼品! InterSystems IRIS医疗版互联互通套件具备如下优点: 专——专注医疗领域40余年,针对中国医疗信息化市场量身定制,遵循国家卫生信息标准,公立医院互联互通标准化成熟度测评需求的基石;加强健康数据标准应用,提高数据质量;全——全面支持2020最新版医院互联互通标准化成熟度测评规定的文档、监控、服务、Schema 等组件;快——卓越的互操作性助力医疗机构快速落地互联互通标准化成熟度测评标准化改造;省——有效缩短实施周期,降低实施成本,超高性能有效降低硬件成本;稳——稳定高效,连续多年支持超百家大型公立医院海量数据稳定运行。主流 PC 服务器单实例下,支持日消息吞吐量可达 27亿;目前已知支持国内公立医院日消息吞吐量高达1200万/天(非集群);强——功能强大,该套件具备持久化数据能力,可全面助力医院快速实现创新型数据应用,包括数据库管理、敏捷开发、 API 管理、FHIR资源仓库、分布式扩展、一体化机器学习、自适应分析等;广——广泛专业的本土化生态合作伙伴,具备丰富的互联互通成熟度测评经验与强大的落地能力。 截至2020 年,InterSystems已助力中南大学湘雅医院(五级乙等)、河南省人民医院(五级乙等)、安徽省立医院(五级乙等)、武汉中心医院(五级乙等)、四川大学华西第二医院(五级乙等)、深圳市宝安区妇幼保健院(五级乙等)、广州医科大学附属第二医院(五级乙等)、吉林大学中日联谊医院(五级乙等)、浙江大学医学院附属第四医院(五级乙等)、北京协和医院(四级甲等)等一百余家医院通过互联互通标准化成熟度测评,在全国大型医院中市场份额最高。 2021 CHITEC (7月9日-11日)期间,转发这篇文章到微信朋友圈,可以到InterSystems展位领取小礼品哦~
公告
Michael Lei · 五月 8, 2021

Intersystems IRIS for Health 数据平台医疗版最新在线培训课程--涉及多个Docker 容器的应用开发

在这个一小时的互动课程中,用户可以参与了涉及多个Docker容器的复合应用程序的开发。此外,学员们还学习如何创建数据转换和业务规则,使用业务流程设计器来建立病人护理的逻辑,并使用Spark和PMML将业务操作与机器学习模型连接起来。 赶快来参加我们的线上课程吧: https://learning.intersystems.com/course/view.php?id=1662&ssoPass=1 只有受众组'1.0 HealthShare Content Access'的成员可以自主选课 请问您的账户可以看其他课程吗?
公告
Michael Lei · 一月 10, 2024

全球创新: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 大家都很棒,恭喜!希望能对大家有所启发,我们也期待看到您的项目如何发展成为创新且有影响力的初创企业!
文章
Claire Zheng · 八月 29

直播回放 | 以医疗AI枢纽构建智能协同生态:InterSystems IRIS AI 组件注册中心

8月29日14:00,我们邀请了InterSystems高级销售工程师 @Lin.Zhu (祝麟)分享了“以医疗 AI 枢纽构建智能协同生态”话题,聚焦 “医疗 AI 枢纽” 建设,以 InterSystems IRIS 为核心,深度解析医疗 AI 面临的核心挑战 —— 从开放数据可用性、研究可及性到部署基础设施瓶颈,结合国际电信联盟(ITU)AI 就绪框架,剖析行业痛点。 关于该主题详情,欢迎查看这篇帖子。 直播回放现已准备就绪,欢迎👉点击查看!(如您未注册过,需要注册后观看) 您将在此次分享中了解到: 针对 AI 组件注册中心架构的系统介绍:依托多模型数据存储( relational+object+K/V+doc+vector )、FHIR 等行业标准协议,实现院内信息能力的一体化整合,通过能力支撑AI应用。 门诊助手实战案例分享:直观展示如何通过 AI 组件注册中心实现执行规划 Agent、上下文感知 Agent 等工具的协同,降低资源整合成本、提升 AI 能力投放效率。 展望医疗 AI 演进趋势:探讨从对话机器人到网络化应用的转型路径,以及 Agent、工具与流程编织的未来方向。 无论您是医疗信息化从业者、AI 技术开发者还是行业决策者,都能在本次研讨会中获取医疗 AI 落地的实战经验、技术架构设计思路与前沿趋势洞察,助力推动医疗 AI 生态的协同创新。我们期待与您的进一步互动。 1. 留言互动 在会议进行过程中,如果您有任何疑问,或者希望与我们进一步讨论,可以在屏幕上方点击“提问”按钮,提交您的问题,我们会在分享结束后整理问题,并通过邮件向您回复。 2. 有奖调研 参会期间,点击屏幕右上角“有奖调研”完成问卷,将有机会获得定制小礼品。 快来加入我们吧٩(๑>◡<๑)۶ 👉点击查看
公告
Claire Zheng · 八月 25

线上研讨会 | 以医疗AI枢纽构建智能协同生态:InterSystems IRIS AI 组件注册中心

在医疗 AI 快速发展的今天,数据孤岛、标准不统一、部署效率低等问题日益凸显,如何打破壁垒、实现 AI 能力的高效整合与落地成为行业关键课题。 8月29日14:00,我们邀请InterSystems高级销售工程师 @Lin.Zhu (祝麟) 举办题为“以医疗 AI 枢纽构建智能协同生态”的线上研讨会,聚焦 “医疗 AI 枢纽” 建设,以 InterSystems IRIS 为核心,深度解析医疗 AI 面临的核心挑战 —— 从开放数据可用性、研究可及性到部署基础设施瓶颈,结合国际电信联盟(ITU)AI 就绪框架,剖析行业痛点。 👉点击报名 您将在此次分享中了解到: 针对 AI 组件注册中心架构的系统介绍:依托多模型数据存储( relational+object+K/V+doc+vector )、FHIR 等行业标准协议,实现院内信息能力的一体化整合,通过能力支撑AI应用。 门诊助手实战案例分享:直观展示如何通过 AI 组件注册中心实现执行规划 Agent、上下文感知 Agent 等工具的协同,降低资源整合成本、提升 AI 能力投放效率。 展望医疗 AI 演进趋势:探讨从对话机器人到网络化应用的转型路径,以及 Agent、工具与流程编织的未来方向。 无论您是医疗信息化从业者、AI 技术开发者还是行业决策者,都能在本次研讨会中获取医疗 AI 落地的实战经验、技术架构设计思路与前沿趋势洞察,助力推动医疗 AI 生态的协同创新。我们期待与您的进一步互动。 1. 留言互动 在会议进行过程中,如果您有任何疑问,或者希望与我们进一步讨论,可以在屏幕上方点击“提问”按钮,提交您的问题,我们会在分享结束后整理问题,并通过邮件向您回复。 2. 有奖调研 参会期间,点击屏幕右上角“有奖调研”完成问卷,将有机会获得定制小礼品。 快来加入我们吧٩(๑>◡<๑)۶ 👉点击报名
文章
Claire Zheng · 五月 18, 2023

【视频】对话:“数据二十条”与FHIR标准

“数据二十条”体现了怎样的制度创新和政策智慧?FHIR将如何发挥作用?来看InterSystems亚太区总经理老卢(Luciano Brustia)与CHIMA主任委员王才有的精彩探讨!
文章
jingqi LIu · 三月 3, 2021

酒店行业的第一个Iris应用

在InterSystems IRIS中使用ObjectScript构建REST API。 开发的API可以遵循OPEN API规范,可以使用Docker和VSCode开发,可以部署为ZPM模块,同时也可用作酒店超售系统的Data API。 什么是酒店超售管理系统? 超售管理系统结合了酒店的独特条件,例如房价,订购渠道,客户需求等。系统使用机器学习算法(例如:KNN / ES-RNN ...)来准确预测酒店的每日未入住和入住率,并进一步与收益方程式结合以找到最佳的最大客房销售量,从而可以大大增加酒店的边际收益。 来看看我们的Repo! https://github.com/BroadCastAir/hotel_api 和 https://github.com/BroadCastAir/Hotel_OverBooking_Sys 投票支持我们的应用程序! InterSystems IRIS不仅在医疗保健行业,在零售和酒店业中也具有广阔的发展前景。 InterSystems IRIS不仅在医疗保健行业,在零售和酒店业中也具有广阔的发展前景。说的好! 了解了,行业的应用证明了系统的可用性 希望多支持! 这是应用在其他行业中的典型案例,很棒! 看到了酒店行业应用,棒👍
公告
Claire Zheng · 十月 9, 2022

如何为你喜欢的征文投票?来帮助你喜欢的作者赢得“开发者社区奖”!

2022年9月5日-10月24日(北京时间),我们正在举办🏆InterSystems开发者社区中文版首届技术征文大赛🏆(←点击链接进入参赛页面,浏览所有参赛文章)!投票截止至10月23日,你的支持与喜爱,是作者获得“开发者社区奖”的关键!如何为你喜欢的作品投票呢? 第一步,你需要成为开发者社区的活跃用户(Active User) 成功注册后,在社区发帖、点赞、回复问题等,接下来需要……等24小时。因为我们的系统会每天进行一次active user的更新。 成为Active user后,就可以给你心仪的项目投票啦! 第二步,点击进入参赛页面🏆InterSystems开发者社区中文版首届技术征文大赛🏆 第三步,在参赛页面查看所有文章,看到感兴趣的文章,就可以点赞点赞,你可以为你喜欢的每篇文章点赞一次。 10月24日,我们将宣布获奖名单! 欢迎大家积极投稿、点赞、分享、学习! 欢迎关注InterSystems开发者社区中文版首届技术征文大赛
文章
Michael Lei · 一月 27, 2022

轻松一下,完成冬奥小调查,赢积分,抽奖品!

欢迎到我们Global Master 网站完成冬奥小游戏,赢积分,抽奖品(雨伞/保温杯/T-Shirt)。 https://globalmasters.intersystems.com/channels/72 不知道如何玩转Global Master, 请参考:认识Global Masters 倡导中心,从这里开始! | InterSystems Developer Community | Global
文章
Qiao Peng · 二月 18, 2022

SQL语句与数据模式(Select Mode)

在InterSystems IRIS和InterSystems Caché 里,是否您遇到过执行一个SQL Insert/Update语句,明明给的是正确的日期值,但被告知“值‘2022-01-01’ 校验失败”的类似情况,并感到困惑? 如果有,那么您需要了解一下InterSystems IRIS和InterSystems Caché保存和显示数据的模式。 一 数据模式 InterSystems IRIS和InterSystems Caché里,数据有3种模式,称之为SELECT MODE:逻辑模式:这是数据被保存到InterSystems IRIS和InterSystems Cache'时的格式。例如,%Date类型的数据,在数据库里被保存为一个整数,即从1840年12月31号到这个日期的天数,而不是YYYY-MM-DD的格式。 ODBC模式:这是ODBC对数据定义的格式。在这个模式下,%Date类型的数据就会显示为YYYY-MM-DD的格式。 显示模式:这是数据在InterSystems IRIS和InterSystems Caché里默认的显示格式。例如在美国语言环境下,%Date的默认显示格式是DD/MM/YYYY格式。 InterSystems IRIS和InterSystems Caché只会使用逻辑模式保存数据,但可以以任何模式显示数据。 二 数据类型与数据模式 大多数数据类型在3种数据模式下的格式是一样的,例如%String、%Integer等。但有些情况下,数据在不同数据模式下的格式是不一样的: 时间、日期类型的数据 InterSystems提供多种时间、日期数据类型,包括%Date、%Time、%PosixTime、%TimeStamp 和%MV.Date。除了%TimeStamp,这些时间日期数据类型的3种数据模式下的格式都是不同的。 列表类型的数据 作为一个多模型数据库,可以指定数据为列表类型(%ListOfDataTypes)。列表类型数据的在不同数据模式下的格式也是不同的。例如一个定义为list of %String的属性/字段,中文数据以显示模式和ODBC模式看,数据显示是没问题的,但逻辑模式下看似乱码(其实并非乱码)。 指定了VALUELIST 和 DISPLAYLIST的数据 例如在建立患者模型时,我们指定其性别数据类型为%String,但通过VALUELIST限定它的值只可以是0、1、2、9,通过DISPLAYLIST设置这4个值的显示值为“未知的性别"、 "男性"、"女性"、"未说明的性别"。这样,数据被保存到数据库时,保存的是0、1、2、9,而显示值和ODBC值都是中文说明。 空字符串和空字符流数据 在逻辑模式下,空字符串和 空BLOB 由不可显示的字符 $CHAR(0) 表示。在显示模式下,它们由一个空字符串 ("") 表示。 三 SQL与数据模式 InterSystems提供很多种SQL操作的方式,而其当使用SQL操作数据的时候,很多操作和数据模式有关,例如数据排序。 SQL操作的方式 您是如何使用SQL的?是通过ODBC/JDBC,还是在Object Script里通过嵌入式SQL或动态SQL,抑或是通过Terminal或管理门户的SQL操作页面? 1. ODBC/JDBC 通过ODBC/JDBC连接到InterSystems数据库时,问题很简单:无论是插入或更新数据,还是查询数据,作为值、查询条件的数据和返回的数据显示结果都是按ODBC格式的。也就是说,这种情况下,您不需要关心数据模式。 2. 嵌入式SQL 如果您在使用嵌入式SQL(&SQL)操作数据,那么就需要留心数据模式了。可以通过#SQLCompile Select这个预处理器指令设置需要的数据模式,例如设置为ODBC模式: ClassMethod Test(pDocNo = "Doc123456") { #SQLCompile Select=ODBC &SQL(Insert into Test.Table( DocumentNo, DOB, name_Value) values( :pDocNo, '2001-10-10', '预防接种史描述') ) } #SQLCompile Select可以设置为逻辑模式(Logical)、显示模式(Display)、 ODBC模式(ODBC)或 运行时模式(RuntimeMode)。而RuntimeMode默认为逻辑模式。 3. 动态SQL 如果是使用动态SQL,对于%SQL.Statement,它有一个属性%SelectMode,可以用来设置数据模式。它的可选值为:0 (逻辑模式)、1 (ODBC模式) 、2(显示模式),0(逻辑模式)是默认值。 例如下面的例子将数据模式设置为逻辑模式: SET myquery = 3 SET myquery(1) = "SELECT {t '12:04:29'} AS time1," SET myquery(2) = "{t '12:4:29'} AS time2," SET myquery(3) = "{t '12:04:29.00000'} AS time3" SET tStatement = ##class(%SQL.Statement).%New() SET tStatement.%SelectMode=0 SET tStatus = tStatement.%Prepare(.myquery) SET rset = tStatement.%Execute() DO rset.%Display() 4. Terminal的SQL shell 当使用Do $System.SQL.Shell()进入Terminal的SQL操作环境时,可以使用SET SELECTMODE命令来查询和设置数据模式。 直接使用SET SELECTMODE命令,返回的是当前数据模式。要设置数据模式,使用SET SELECTMODE=odbc/logic/display,例如SET SELECTMODE=odbc将当前SQL操作环境的数据模式设置为ODBC模式。 注意:SET SELECTMODE=odbc,等号前后不能有空格! 5. 管理门户的SQL操作页面 在管理门户的SQL操作页面中,通过下拉列表来选择当前的数据模式。 例如下面的逻辑模式的数据显示结果: 这是相同的数据在显示模式下的数据显示结果: 6. 在同一个SQL语句中显示不同的数据模式 有可能出于某种原因,你希望在SQL语句中对不同的字段使用不同的数据模式。这时,可以使用SQL函数:%EXTERNAL、%INTERNAL和 %ODBCOUT 来控制输出模式。 %EXTERNAL:按显示模式输出表达式结果%INTERNAL:按逻辑模式输出表达式结果 %ODBCOUT :按ODBC模式输出表达式结果 例如对于相同的数据,我们采用不同的数据模式输出: 那么除了显示和赋值,哪些操作和数据模式相关呢? 和数据模式相关的操作 1. 比较谓语 在where子句中进行比较的谓语,包括=、>、<、BETWEEN和 IN,这些比较谓语操作时,都会用逻辑模式的值进行比较操作,但可以通过SQL函数做其他数据模式到逻辑模式的数据转换。 例如,我们做日期类型的比较,当前的数据模式是ODBC模式,mydate是ODBC模式,比较条件值也应该是ODBC模式,可以这样写: ... WHERE mydate > '2010-01-01' 而如果数据模式是逻辑数据模式,上面的SQL写法将不会得到你想要的结果,因为这时mydate是逻辑模式的值。你可以用SQL函数TO_DATE将ODBC格式的日期值转为逻辑值: ... WHERE mydate>TO_DATE('2010-01-01','YYYY-MM-DD') 2. 模式谓语在where子句中进行模式分析的谓语,包括%INLIST、 LIKE、 %MATCHES、 %PATTERN、 %STARTSWITH、 [ (包含操作符) 和 ] (跟随操作符),这些模式分析操作也是用逻辑值进行比较,但不能用SQL函数进行其他模式到逻辑模式的转换。 当然,你可以考虑用模式转换函数将数据转换为字符串进行模式分析,例如下面的SQL使用%ODBCOUT将mydate转为ODBC格式的字符串,并看其模式是否满足以“2010-”开头。 ...WHERE %ODBCOut(mydate) %STARTSWITH '2010-' 注意,这时SQL引擎不会使用mydate上的索引,有可能造成性能降低。 3. 排序操作 无论使用哪种数据模式,ORDER BY 都使用逻辑模式的值进行排序。
文章
Hao Ma · 三月 25, 2021

使用DBeaver连接IRIS数据库

在Caché时代, 比较受欢迎的IRIS数据库客户端是Sqldbx和Winsql, 这两者的共同点是提供ODBC兼容的连接,而且免费。限制也差不多:只能用于Windows环境,只能用ODBC连接。 DBeaver是我最近使用的免费SQL客户端, 推荐给各位。它有几个好处: 1. 支持各种操作系统:Windows, Linux, Mac. 2. 内置Caché和IRIS的JDBC driver, 可以简单配置到Caché 或者IRIS的连接。 3. 免费 下面说说配置的一些小细节: - 连接IRIS 下图中的配置项都很简单,需要的信息无非是数据库IP地址, 端口,数据库的名称,以及账号密码。值得一说的是下面下拉栏里的InterSystems IRIS driver. 初始安装DBeaver时这个driver不是默认安装好的, 你需要到"Edit Driver Setting"的"Libraries"页面去下载,按钮是"Download/Update". 下载的地址是https://github.com/intersystems-community/iris-driver-distribution/raw/main/intersystems-jdbc-3.1.0.jar。 讨厌的是,这个页面的响应速度有点慢,因此您很可能会被timeout。我的解决方法是拷贝这个网址,从浏览器把这个包下来,然后放到DBeaver指定的路径去。上述地址和要放的文件路径都可以在”Driver Setting"的"information"页面得到。 -连接Caché 这个就容易多了。 虽然也有可能要下载driver, 但Caché的driver是已经存在Dbeaver网站的repo里面了,不会有下载和更新timeout的问题。 (我相信用不了多久IRIS的driver也会放进DBeaver的repo的) happy coding 马老师好,请教个问题,就是我按照步骤操作之后,连接还是提示Connection refused: connect,驱动我是从本地安装目录拷贝出来的(D:\IRIS-HealthConnect\dev\java\lib\JDK18\intersystems-jdbc-3.1.0.jar),这个可能会是什么问题
文章
姚 鑫 · 一月 22, 2022

第三十一章 SQL函数 CONVERT

# 第三十一章 SQL函数 CONVERT 将给定表达式转换为指定数据类型的函数。 ```java CONVERT(datatype,expression[,format-code]) {fn CONVERT(expression,datatype)} ``` # 参数 - `expression` - 要转换的表达式。 - `datatype` - 要将表达式转换为的数据类型。 - `format` - 可选-指定日期和时间格式的整数代码,用于在日期/时间/时间戳数据类型和字符数据类型之间进行转换。 此参数仅用于通用标量语法形式。 # 描述 这里描述了`CONVERT`函数的两种不同实现。 两者都将一种数据类型中的表达式转换为另一种数据类型中的相应值。 两者都执行日期和时间转换。 注意:这两个`CONVERT`实现中的参数以不同的顺序表示。 第一个是与MS SQL Server兼容的通用 IRIS标量函数,它接受三个参数。 第二个是带有两个参数的 ODBC标量函数。 下面的文本将分别处理这两种形式的`CONVERT`。 - `CONVERT(datatype,expression)`支持流数据的转换。 例如,可以将字符流字段的内容转换为数据类型为`VARCHAR`的字符串。 - `{fn CONVERT(expression,datatype)}`不支持流数据的转换; 指定要表达的流字段将导致`SQLCODE -37`错误。 为两个版本的`CONVERT`指定一个无效值将导致`SQLCODE -141`。 如果表达式没有定义的数据类型(例如ObjectScript提供的主机变量),则其数据类型默认为字符串数据类型。 # CONVERT(datatype,expression,format-code) 可以通过执行`VARCHAR-to-VARCHAR`转换来截断字符串,指定输出字符串长度小于表达式字符串长度。 在使用`CONVERT`(或`CAST`)时,如果字符数据类型(如`CHAR`或`VARCHAR`)没有指定长度,则默认的最大长度为`30`个字符。 如果二进制数据类型(如`binary`或`VARBINARY`)没有指定长度,则默认的最大长度为`30`个字符。 否则,这些没有指定长度的数据类型将被映射到一个`1`个字符的`MAXLEN`,如`data types`表所示。 可以执行`BIT`数据类型转换。 允许的值为`1`、`0`或`NULL`。 如果指定任何其他值,IRIS将发出`SQLCODE -141`错误。 在下面的嵌入式SQL示例中,两者都是一个`NULL`的`BIT`转换: ```java ClassMethod Convert() { s a="" &sql( SELECT CONVERT(BIT,:a), CONVERT(BIT,NULL) INTO :x,:y) w !,"SQLCODE=",SQLCODE w !,"the host variable is:",x w !,"the NULL keyword is:",y } ``` 可选的`format-code`参数指定日期、`datetime`或时间格式。 该格式既可用于定义从日期/时间/时间戳数据类型转换为字符串时的输出,也可用于定义从字符串转换为日期/时间/时间戳数据类型时的输入。 支持以下格式代码; 输出两位数年份的格式代码列在第一列; 输出四位数年或不输出年的格式列在第二列: Two-digit year codes| Four-digit year codes| Format ---|---|--- |0 or 100 |Mon dd yyyy hh:mmAM (or PM) 1| 101 |mm/dd/yy 2| 102 |yy.dd.mm 3| 103 |dd/mm/yy 4| 104 |dd.mm.yy 5| 105 |dd-mm-yy 6| 106 |dd Mon yy 7| 107 |Mon dd, yy (no leading zero when dd < 10) | 8 or 108| hh:mm:ss | 9 or 109| Mon dd yyyy hh:mm:ss:nnnAM (or PM) 10| 110 |mm-dd-yy 11| 111 |yy.mm.dd 12| 112 |yymmdd |13 or 113| dd Mon yyyy hh:mm:ss:nnn (24 hour) |14 or 114| hh:mm:ss.nnn (24 hour) |20 or 120| yyyy-mm-dd hh:mm:ss (24 hour) |21 or 121| yyyy-mm-dd hh:mm:ss.nnnn (24 hour) |126| yyyy-mm-ddThh:mm:ss,nnnn (24 hour) |130| dd Mon yyyy hh:mm:ss:nnnAM (or PM) |131| dd/mm/yyyy hh:mm:ss:nnnAM (or PM) 以下是日期和时间转换的特性: - 取值范围:允许的日期范围为`0001-01-01 ~ 9999-12-31`。 - 默认值: - 将时间值转换为`TIMESTAMP`、`POSIXTIME`、`DATETIME`或`SMALLDATETIME`时,日期默认为`1900-01-01`。 注意,对于`{fn CONVERT()}`,日期默认为`1841-01-01`。 - 将日期值转换为`TIMESTAMP`、`POSIXTIME`、`DATETIME`或`SMALLDATETIME`时,时间默认为`00:00:00`。 - `Default Format`:如果没有指定`Format -code`, `CONVERT`将尝试从指定的值确定格式。 如果不能,则默认为格式代码`100`。 - 两位数年份:从00到49的两位数年份转换为21世纪的日期(2000到2049); 从50到99的两位数年份转换为20世纪的日期(1950到1999)。 - 分数秒:分数秒前可以加句号(`.`)或冒号(`:`)。 这些符号有不同的含义: - 句点是默认值,可用于所有格式代码。 句号表示标准分数; 因此,`12:00:00.4`表示十分之四秒,而`12:00:00.004`表示千分之四秒。 分数精度的位数没有限制。 - 冒号只能用于以下格式代码值:`9/109`、`13/113`、`14/114`、`130和131`。 冒号表示后面的数字是千分之一秒; 因此`12:00:00:4`表示四万分之一秒(`12:00:00.004`)。 冒号后面的数字限制为3位。 当指定表达式的格式无效或格式与格式代码不匹配时,将产生`SQLCODE -141`错误。 指定一个不存在的格式代码将返回`1900-01-01 00:00:00`。 # {fn CONVERT(expression,datatype)} 这是ODBC标量函数。 它支持以下ODBC显式数据类型转换。 必须使用“SQL_”关键字指定这种形式的`CONVERT`的数据类型转换。 在下表中,有两组转换数据类型,第一组转换数据值和数据类型,第二组转换数据类型,但不转换数据值: Source | Conversion ---|--- Any numeric data type| SQL_VARCHAR, SQL_DOUBLE, SQL_DATE, SQL_TIME %String |SQL_DATE, SQL_TIME, SQL_TIMESTAMP %Date| SQL_VARCHAR, SQL_POSIXTIME, SQL_TIMESTAMPSQL_INTEGER, SQL_BIGINT, SQL_SMALLINT, SQL_TINYINT, SQL_DATE %Time| SQL_VARCHAR, SQL_POSIXTIME, SQL_TIMESTAMP SQL_VARCHAR, SQL_INTEGER, SQL_BIGINT,SQL_SMALLINT, SQL_TINYINT, SQL_TIME %PosixTime| SQL_TIMESTAMP, SQL_DATE, SQL_TIME SQL_VARCHAR, SQL_INTEGER, SQL_BIGINT, SQL_SMALLINT, SQL_TINYINT %TimeStamp |SQL_POSIXTIME, SQL_DATE, SQL_TIME SQL_VARCHAR, SQL_INTEGER, SQL_BIGINT, SQL_SMALLINT, SQL_TINYINT Any non-stream data type| SQL_INTEGER, SQL_BIGINT, SQL_SMALLINT, SQL_TINYINT Any non-stream data type| SQL_DOUBLE `SQL_VARCHAR`是标准的ODBC表示。 在转换为`SQL_VARCHAR`时,日期和时间被转换为相应的ODBC表示; 数字数据类型值转换为字符串表示。 从`SQL_VARCHAR`转换时,该值必须是有效的ODBC `Time`、`Timestamp`或`Date`表示。 - 当将时间值转换为`SQL_TIMESTAMP`或`SQL_POSIXTIME`时,未指定的日期默认为`1841-01-01`。 注意,对于`CONVERT()`,日期默认为`1900-01-01`。 - 将`date`值转换为`SQL_TIMESTAMP`或`SQL_POSIXTIME`时,时间默认为`00:00:00`。 在这种语法形式中,小数秒前面可以加句号(`.`)或冒号(`:`)。 这些符号有不同的含义。 句号表示标准分数; 因此,`12:00:00.4`表示十分之四秒,而`12:00:00.004`表示千分之四秒。 冒号表示接下来的是千分之一秒; 因此`12:00:00:4`表示千分之四秒。 冒号后面的数字限制为3位。 在转换为整数数据类型或`SQL_DOUBLE`数据类型时,数据值(包括日期和时间)将转换为数字表示。 对于`SQL_DATE`,这是自1841年1月1日以来的天数。 对于`SQL_TIME`,这是自午夜以来的秒数。 当遇到非数字字符时,输入字符串将被截断。 整数数据类型还截断十进制数字,返回数字的整数部分。 `{fn CONVERT(expression,datatype)}`不支持流数据的转换; 指定要表达的流字段将导致`SQLCODE -37`错误。 转换成任何数据类型的`NULL`仍然是`NULL`。 空字符串(`"`),或任何非数字字符串值转换如下: - `SQL_VARCHAR`和`SQL_TIMESTAMP`返回提供的值。 - 数字数据类型转换为`0`(零)。 - `SQL_DATE`和`SQL_TIME`转换为`NULL`。 # CONVERT 类方法 还可以使用`CONVERT()`方法调用执行数据类型转换,使用" `SQL_ `"关键字指定数据类型: ```java $SYSTEM.SQL.Functions.CONVERT(expression,convert-to-type,convert-from-type) ``` 如下示例所示: ```java WRITE $SYSTEM.SQL.CONVERT(60945,"SQL_VARCHAR","SQL_DATE") 2007-11-11 ``` # 示例 ## CONVERT() 示例 下面的示例使用标量语法形式的`CONVERT`。 下面的示例比较了使用`DECIMAL`和`DOUBLE`数据类型对小数的转换: ```sql SELECT CONVERT(DECIMAL,-123456789.0000123456789) AS DecimalVal, CONVERT(DOUBLE,-123456789.0000123456789) AS DoubleVal ``` 下面的示例将字符流字段转换为`VARCHAR`文本字符串。 它还使用`CHAR_LENGTH`显示字符流字段的长度: ```sql SELECT Notes,CONVERT(VARCHAR(80),Notes) AS NoteText,CHAR_LENGTH(Notes) AS TextLen FROM Sample.Employee WHERE Notes IS NOT NULL ``` 下面的例子展示了几种将出生日期字段(`DOB`)转换为格式化字符串的方法: ```sql SELECT DOB, CONVERT(VARCHAR(20),DOB) AS DOBDefault, CONVERT(VARCHAR(20),DOB,100) AS DOB100, CONVERT(VARCHAR(20),DOB,107) AS DOB107, CONVERT(VARCHAR(20),DOB,114) AS DOB114, CONVERT(VARCHAR(20),DOB,126) AS DOB126 FROM Sample.Person ``` 默认格式和代码`100`格式是相同的。 因为`DOB`字段不包含时间值,所以显示时间的格式(这里包括默认值`10`0、`114`和`126`)提供一个零值,它表示`12:00AM`(午夜)。 代码`126`格式提供了一个不包含空格的日期和时间字符串。 ## {fn CONVERT()} 示例 下面的示例使用了`ODBC`语法形式的`CONVERT`。 下面的嵌入式SQL示例将混合字符串转换为整数。 IRIS在第一个非数字字符处截断字符串,然后将结果数字转换为规范形式: ```java ClassMethod Convert1() { s a="007 James Bond" &sql(SELECT {fn CONVERT(:a, SQL_INTEGER)} INTO :x) w !,"SQLCODE=",SQLCODE w !,"the host variable is:",x } ``` ```java DHC-APP>d ##class(PHA.TEST.SQLCommand).Convert1() SQLCODE=0 the host variable is:7 ``` 下面的示例将`“DOB”`(出生日期)列中的日期转换为`SQL_TIMESTAMP`数据类型。 ```sql SELECT DOB,{fn CONVERT(DOB,SQL_TIMESTAMP)} AS DOBtoTstamp FROM Sample.Person ``` 生成的时间戳格式为`“yyyy-mm-dd hh:mm:ss”`。 下面的示例将`“DOB”`(出生日期)列中的日期转换为`SQL_INTEGER`数据类型。 ```sql SELECT DOB,{fn CONVERT(DOB,SQL_INTEGER)} AS DOBtoInt FROM Sample.Person ``` 下面的示例将`“DOB”`(出生日期)列中的日期转换为`SQL_VARCHAR`数据类型。 ```sql SELECT DOB,{fn CONVERT(DOB,SQL_VARCHAR)} AS DOBtoVChar FROM Sample.Person ``` 生成的字符串格式为:`yyyy-mm-dd`。
文章
TZ Zhuang · 六月 2, 2021

FAQ 常见问题系列--系统管理篇 如何进行数据库备份

InterSystems产品有四种备份方法:(1) 外部备份(2) 在线备份(3) 冷备份(4) 传统的并行外部备份有关这些方法的细节请参考在线文档 https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCDI_BACKUP 以下是对每种备份方法的简要描述: (1) 外部备份外部备份是InterSystems推荐的最佳备份方式。外部备份一般是对数据库文件所在的存储创建快照的方式来实现。创建快照可以在多个层面进行,例如存储层面,操作系统层面,等等,因此这些相关技术和工具一般由第三方来提供。在做快照前,一定要先停止对数据库文件的写入(InterSystems IRIS的IRIS.DAT,Caché/Ensemble的CACHE.DAT)。但是用户进程可以继续对内存进行更新,而不需要中断。InterSystems提供了停止对数据库文件写入的方法,用户可以把这个加入到快照工具的脚本里。外部备份一般包括以下几步:1. 使用Backup.General.ExternalFreeze()方法来停止对数据库文件的写入。2. 使用第三方快照工具来对文件系统创建快照。3. 使用Backup.General.ExternalThaw()方法来恢复对数据库文件的写入。4. 把快照拷贝到备份介质上(用于存储备份的磁盘,磁带,等等)。5. 删除快照。 (2) 在线备份在线备份是InterSystems自己特有的备份方式,可实现无宕机备份。但是,在线备份只能备份数据库文件(InterSystems IRIS的IRIS.DAT,Caché/Ensemble的CACHE.DAT),并且会把所有需要备份的数据库文件中的数据块写入到一个.cbk的备份文件。因此如果想要使用在线备份来备份整个系统环境,除了数据库文件外,还需要额外备份很多系统文件,例如InterSystems产品的安装目录,WIJ文件,主日志和备日志目录等等。在线备份包括3种类型:1. 全备份 -- 把所有使用的数据块写入到一个.cbk文件。2. 累积备份 -- 从上一次全备份起,所有变化过的数据块写入到一个.cbk文件。恢复时,需要和上一次全备份一起恢复。3. 增量备份 -- 从上一次备份起,所有变化过的数据块写入到一个.cbk文件。恢复时,需要和上一次全备份及中间所有备份一起恢复。在线备份的这些特性,并不适用于作为数据量大的生产系统的备份方案。 (3) 冷备份冷备份是在数据库系统正常停机状态下,所做的外部备份,即拷贝文件系统到存储介质。 (4) 传统的并行外部备份传统的并行外部备份是一种在特殊情况下才可行的备份方法。一般需要满足以下条件:1. 数据库在一个集群里,并且不能有宕机时间。2. 没有快照功能。3. 在线备份不能满足需求。并行外部备份结合了数据库文件(*.DAT)拷贝和在线备份里增量备份的功能。其步骤如下:1. 在数据库中设置备份启动标志。2. 拷贝数据库文件(*.DAT)。3. 对该拷贝时间内被修改的数据进行在线备份的增量备份。具体使用情况和详情也请参考在线文档 https://docs.intersystems.com/irisforhealthlatest/csp/docbook/Doc.View.cls?KEY=GCDI_backup#GCDI_backup_methods_ext_concurrent 最新版本InterSystems IRIS for Health示例:===============================================================1. 设置标志,开始备份数据库。Set ^ClearOK=$CLRINC^DBACK("QUIET")2. 拷贝操作系统上的数据库文件(*.DAT)。3. 运行下面的命令,表明你已经使用了一个外部备份工具。Set x=$$BACKUP^DBACK("","E","Dirty external backup","","","")4. 进行增量备份。Set x=$$BACKUP^DBACK("","I","incremental","test.cbk","Y","bck.log","QUIET","Y","Y")===============================================================InterSystems产品中的上述处理可以做成例程Routine或类方法,并与批处理相结合进行操作。关于传统并行外部备份中使用的^DBACK例程的更多信息,请参考以下文件https://docs.intersystems.com/irisforhealthlatest/csp/docbook/Doc.View.cls?KEY=GCDI_backup#GCDI_backup_util_DBACK_entry_backup
文章
Tingting Jiang · 三月 21, 2023

实习生招聘

注意:请投递时,发送英文简历! 工作概述 每年夏天InterSystems都会招聘实习生在中国办公室工作,从事专门围绕InterSystems产品设计的项目。我们信任实习生团队在导师的指导下可独立的工作。除了在项目中工作外,实习生还能融入我们的团队,与我们的全职员工一起解决所面对的工作问题。 InterSystems的带薪暑期实习项目可以让学生接触到在重要的职业生涯中出类拔萃所需的各种技术和软技能。 我们希望实习生可以累计工作时长4个月,预计于2023年6月份开始。 工作职责 参加必要的培训课程,成功完成实习期间分配的项目。 在导师和其他InterSytems员工的指导下,成功地完成分配给他们团队的项目。 向高层领导和InterSystems的员工展示他们的项目。 遵守实习计划的所有要求(包括出勤、着装、行为)。 遵守公司关于实习的合理指示。 在公司规定的时间内可以进行活动。 如果在实习期间有任何计划外的缺席,请及时通知人力资源部门。 遵守适合公司的职业行为标准。 遵守公司的政策和程序,包括那些与WHS和就业公平和多样性有关的政策和程序。 在任何时候都要适当地、负责任地使用公司的资源。 承担所有与实习有关的评估活动。 对在实习期间获得的有关公司、员工、客户和公司业务的信息进行保密。 公司可能不时地指示其他职责。 任职条件 优先有以下一种或多种编码经验:Python、InterSystems ObjectScript、Node.js、SQL、XSLT和AngularJS在敏捷团队中工作,或类似的经验。 技术上的好奇心。 对复杂的技术挑战有创造力。 协作的团队心态。 在不断变化的工作环境中表现出灵活的态度。 主动为自己的职业生涯打下技术基础。 专业要求 计算机等相关专业的本科生、硕士生或者博士在读学生。 薪资 本科生:RMB6,000/月;硕士生:RMB7,000/月;博士生:RMB8,000/月。 工作地点 北京市朝阳区建国门外大街1号银泰中心写字楼C座2701 如何申请 请点击链接InterSystems Careers, 或在2023年4月30日前发送邮件至recruitment.asiapacific@intersystems.com。 不知道我可不可以 你可以给实习生当老师 哈哈哈哈