搜索​​​​

清除过滤器
公告
Claire Zheng · 九月 5, 2022

欢迎中文社区新版主@张特特

亲爱的社区开发者们, 我很高兴地向大家介绍一位我们的新版主 @Tete.Zhang (张特特)! @Tete.Zhang (张特特) 目前任职于InterSystems中国,在WRC部门任职资深技术支持专家一职。 以下是@Tete.Zhang (张特特)的自我介绍: 在2015年夏天实习结束后,我于2016年正式作为技术支持工程师加入InterSystems,从那时起,我在InterSystems全球支持中心北美分部工作了六年,2022年,我调职至北京,服务于InterSystems中国,希望能为成长中的中国市场出一份力。 很高兴可以在社区与大家相遇,希望能与大家一起努力,创造更精彩的社区! 再次欢迎我们的新版主 @Tete.Zhang (张特特)👏🏼👏🏼👏🏼👏🏼👏🏼 期待你在DC成长为一名优秀版主!
文章
Claire Zheng · 三月 21

FHIR 合集 | 关于FHIR 的研讨会、视频等

本文汇聚了与FHIR相关的内容,包括新闻资讯、线上研讨会、视频、客户案例、行业洞察等,欢迎收藏保存! 01| 新闻资讯 InterSystems IRIS医疗版互联互通套件3.0版发布:助力用户快速验证标准符合性,推动互联互通项目价值落地(2023年) InterSystems IRIS医疗版互联互通套件2.0版支持国内互联互通标准转换为FHIR标准,提升数据易用性(2022年) InterSystems发布InterSystems IRIS医疗版互联互通套件,加速医院互联互通平台建设(2021年) 技术总监答疑 | 我们为什么要做InterSystems IRIS医疗版互联互通套件? InterSystems IRIS® FHIR®加速器服务赋能医疗数据,实现轻松检索和储存(2021年) InterSystems加入Vulcan FHIR® 加速器™计划,将数据互操作能力扩展至生命科学领域 02 | 线上研讨会 扫码看回放 | FHIR研讨会:如何有效利用数据核心资产? 医疗行业的生态创新:如何实现数据利用和应用创新 辨析互联互通测评方案新旧版,多位专家线上解读国内外互联互通标准与实践 报名观看 | 加速测评!InterSystems IRIS医疗版互联互通套件研讨会 03 | 视频(及视频文字版) 对话:“数据二十条”与FHIR标准 【文字版】对话:“数据二十条”与FHIR标准 如何准确理解FHIR能力?医疗IT行业的数据交换和共享难题如何破? 借助FHIR,医疗信息系统如何获得真正的互操作性? 基于FHIR的数据利用,轻松应对数据共享需求 InterSystems IRIS哪些新特性让用户开发体验得到了极大提升? FHIR的设计理念与关键构成:助力您提高互操作性 深度解读:FHIR标准和国际互联互通实践 FHIR分享:FHIR扩展原则、工具及示例 Smart On FHIR用例:儿童生长发育曲线 Smart On FHIR用例:心血管疾病风险预测 FHIR分享:FHIR 实施指南创建及发布 互联互通套件产品用例:互联互通文档转FHIR 04 | 客户案例 共推互联互通标准,加速FHIR本地化进程,InterSystems携手合作伙伴共同助力北京友谊医院开展专项课题研究 香港大学深圳医院:通过一体化系统推动数字化转型与智慧医院建设 通过Health Connect Cloud,InterSystems帮助Pria改善患者结果,简化居家医疗健康护理流程 InterSystems IRIS医疗版™携手First Line Software,共同简化i2b2社区临床研究工作流程 日本柯尼卡美能达采用InterSystems IRIS 医疗版™:助力医学影像设备基于FHIR实现快速数据集成 处理大量影像数据:利用AI和临床数据创建新一代企业级影像应用 05 | 行业洞察/深度解读 FHIR标准和国际基于FHIR的互联互通实践 医院数字化转型之数智底座建设思路 通过智能数据编织(Smart Data Fabric)应对数据挑战 开发者社区精选 | 漫谈应用集成的现在与未来(上):什么是应用集成?互操作≠集成 开发者社区精选 | 漫谈应用集成的现在与未来(中):什么是集成平台?集成平台概念辨析与定义 开发者社区精选 | 漫谈应用集成的现在与未来(下):集成方案与评价,以及应用集成的发展 行业洞察 | InterSystems开发者关系主管Dean:集成FHIR,改变游戏规则 行业洞察|全面释放医疗互操作性的益处:下一个前沿 老牌知名医疗技术公司可以从创业公司身上学习什么? 抓住FHIR:医疗数据的API管理 InterSystems 2022.2:令企业级应用研发更高效 行业洞察:为什么互操作性对医疗科技产业至关重要 以FHIR推动数据资产生态建设,赋能医院高质量发展 InterSystems技术令HL7 FHIR创新简洁而迅速 InterSystems FHIR 服务器:助力您更快地开发医疗健康应用程序
公告
Claire Zheng · 三月 10, 2021

诚邀您参加 InterSystems编程大奖赛获奖成员线上见面会!

亲爱的社区开发者, 我们诚挚邀请您参加 InterSystems编程大奖赛获奖成员线上见面会! 时间: 周五(2021年3月12日)-22:00(北京时间) 在此次线上见面会,您可以: 了解获胜者的个人履历 观看获奖应用的简短demo 针对此次大奖赛使用到的技术、奖金和各类疑问,您可以畅所欲言,各抒己见,为下一次竞赛做准备! 线上见面会参与成员: @Dmitriy Maslennikov, CaretDev Corp联合创始人、首席技术官和开发者倡导者, @José Roberto Pereira, Shift Consultoria e Sistemas Ltda BI开发者 @Henrique Dias, Sao Paulo Federal Court 系统管理专家/数据库管理员 @Botai Zhang, 中国开发者 @Weiwei Yang, 中国开发者 @Evgeny Shvarov, InterSystems 开发者生态系统经理 您还将有机会在一个特别的网络研讨会上向我们的开发人员提出任何问题。 欢迎您参加线上见面会! 现在就来报名吧! 什么时候搞中国自己的? Good question! 想围观中国获奖成员线上见面会的给Michael点赞
文章
Michael Lei · 十月 10, 2022

如何在 CI/CD 里管理InterSystems API Manager (IAM)/ Kong API GATEWAY 配置?

Kong提供了一个开源的配置管理工具(用Go语言编写),称为decK(即声明式Kong,declarative Kong)。 通过deck ping检查deck是否能识别你的Kong Gateway安装 deck ping Successfully connected to Kong! Kong version: 2.3.3.2-enterprise-edition 通过deck dump把 Kong Gateway 配置导出到一个叫 "kong.yaml" 的文件 deck dump 修改kong.yaml文件后, 通过 deck diff 显示区别 deck diff updating service alerts { "connect_timeout": 60000, - "host": "172.24.156.176", + "host": "192.10.10.18", "id": "3bdd7db4-0b75-4148-93b3-2ff11e961f64", "name": "alerts", "path": "/alerts", "port": 50200, "protocol": "http", "read_timeout": 60000, "retries": 5, "write_timeout": 60000 } Summary: Created: 0 Updated: 1 Deleted: 0 通过 deck sync 应用变化 deck sync updating service alerts { "connect_timeout": 60000, - "host": "172.24.156.176", + "host": "192.10.10.18", "id": "3bdd7db4-0b75-4148-93b3-2ff11e961f64", "name": "alerts", "path": "/alerts", "port": 50200, "protocol": "http", "read_timeout": 60000, "retries": 5, "write_timeout": 60000 } Summary: Created: 0 Updated: 1 Deleted: 0 deck sync -s workspace1.yaml --workspace workspace1 deck sync -s workspace2.yaml --workspace workspace2 需要更多信息 : https://docs.konghq.com/deck/1.11.x/guides/getting-started/ https://docs.konghq.com/deck/1.11.x/guides/best-practices/
文章
Michael Lei · 八月 31, 2021

InterSystems被独立研究机构Forrester评为多模型数据平台领导者

InterSystemsIRIS® 数据平台在性能、分析/搜索和事务等标准中获得最高分 转载自Forester 报告: InterSystems是一个高性能的数据平台,具有强大的支持和可靠性。InterSystems的IRIS数据平台支持关系型、对象型、文档型、键值型、立方体和多维数组,但它没有原生的图形功能。该平台不需要整合多种技术栈,从而减少了代码、系统资源和维护。客户用它来支持客户分析、物联网、支持AI/ML的应用程序、风险分析和垂直特定的用例,如医疗保健应用程序和洞察力。InterSystems的愿景侧重于一个统一的平台,以支持各种应用和洞察力。该解决方案在性能、分析、搜索和交易方面得分很高。参考客户对InterSystems很满意;一个客户说:"他们的客户支持总是超级好。"另一个客户说他们 "在一个关键任务的应用中使用了10多年,对性能和功能以及可靠性总体上很满意。" Forester 报告原文下载:https://reprints2.forrester.com/#/assets/2/1735/RES161621/report
文章
Louis Lu · 四月 9, 2022

基于Redhat Linux安装InterSystems IRIS 的服务器内存相关参数配置建议

注意:下面内存设置数值仅限参考,具体内存数值的设置是否合适,依赖于更多实际使用情况决定。 主要需要设置下面几个内存相关配置: (下面比例适用于服务器仅运行单实例InterSystems IRIS)数据库缓存Database cache: 建议小于64G内存设置总内存50%,大于等于64G内存设置70%总内存程序缓存routine cache: 建议设置1023MBgmheap: 建议设置1048576KB(1024MB)LockSize: 建议最少设置134217728 Bytes (128MB),如果在系统日志中提示locksize相关错误或警报,应相应增加。 如果在一台服务器上安装了多个InterSystems IRIS 实例,那么要保证 所有InterSystems IRIS 运行实例的 Shared memory(database cache + routine cache + gmheap) 总值小于 Hugepage设定的值 hugePages : 建议设置值大于系统所有InterSystems IRIS 运行实例的 Shared memory(database cache + routine cache + gmheap) 总值再往上取整+1G。之后监控cache efficiency 调整设置大小。 要注意对于繁忙的系统,需要为除IRIS之外系统预留足够内存。比如主要负责系统集成、使用JavaGateway等会使用多个外部进程,需要为其预留足够内存。 比如要设置Huge pages 大小为12G。 如果Hugepagessize为2048KB,那么设置HugePage_Total=12*1024*1024/2048=6144 echo "vm.nr_hugepages=6144" >> /etc/sysctl.conf 禁用Transparent HugePages (THP) 检查状态 # cat /sys/kernel/mm/redhat_transparent_hugepage/enabled 或者 # cat /sys/kernel/mm/transparent_hugepage/enabled 设置禁用THP 1. 在/etc/grub.conf文件中添加 transparent_hugepage = never 2. 重启服务器 Kernel shared Memory Limit: 检查该值设置要大于hugePages的值,在/etc/sysctl.conf 文件中查找kernel.shmmax 的内容 swappiness 建议系统内存小于64G该值设置为5,系统内存大于64G设置为1 echo "vm.swappiness=5" >> /etc/sysctl.conf Dirty Page Cleanup echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf echo "vm.dirty_ratio=10" >> /etc/sysctl.conf
文章
he hf · 十月 8, 2022

10分钟快速开发一个连接到InterSystems IRIS数据库的C#应用

安装InterSystems IRIS数据库的ODBC驱动,在Windows系统中配置数据源后,可以使用Microsoft Visual Studio 开发工具 中的服务器资源管理器很方便地连接到InterSystems IRIS数据库服务器,利用数据库连接的可视化视图,可以非常方便快捷地进行连接到InterSystems IRIS数据库的应用开发。本文将展示一个利用以上方式实现的例子,开发工具为Microsoft Visual Studio 2019,开发语言为C#,10分钟快速开发实现一个连接到InterSystems IRIS数据库的C#应用,在本例子中,可以通过选择日期和科室,查询指定日期和科室的就诊日志。 1、在成功安装InterSystems IRIS数据库的ODBC驱动后,从Windows的“控制面板”中选择“管理工具”,在“管理工具”中选择“ODBC数据源”。 2、在ODBC数据源管理的“用户DSN”标签下,选择“添加”,在随后弹出的“创建新数据源”窗口中选择“InterSystems ODBC”,点击“完成”进入下一步。 3、在弹出的“InterSystems ODBC数据源设置”窗口中,为数据源命名,填写连接数据库的信息,访问用户名和密码,点击“测试连接”,成功后点击“OK”保存。 4、打开Microsoft Visual Studio 2019,选择“文件”->“新建”->“项目” ,在弹出的创建新项目窗口中,选择C#语言、Windows窗体应用。 5、新建项目完成后,在 Microsoft Visual Studio 2019开发工具的菜单栏选择“视图”->“服务器资源管理器”,右键“服务器资源管理器”视图中的“数据连接”,在弹出的“添加数据库连接”窗口中,指定在3中已经新建好的数据源,点击“测试连接”,测试连接成功后,点击“确定”关闭窗口,在“服务器资源管理器”视图中的“数据连接”中可以看到添加成功的数据库连接,选中数据库后可以展开其中的表。 6、在本例子中,将介绍两种数据库查询操作方式,其一为常见使用SQL语句的方式,其二为添加数据集的方式,添加数据集的操作如下:从菜单栏选择“视图”->“其他窗口”->“数据源”,在“数据源”视图中点击“添加新数据源”,选择数据库后,可以为数据集添加绑定数据库的表,如为本例中Loc1(科室)数据集成功添加绑定CT_Loc表后,可以在可视化视图中查看数据表数据,并可以被Form可视化窗体中添加的控件直接使用。 7、在Form可视化窗体设计器中,通过工具箱视图添加3个Label控件,分别显示应用标题、日期和科室,再添加1个DateTimePicker日期/时间选择器,并在其CustomFormat属性中设置日期/时间格式“yyyy-MM-dd”,用于选择查询日期;1个ComboBox下拉列表选择框,用于选择查询科室;1个Button按钮,用于执行查询;一个DataGridView数据网格视图,用于显示查询结果。 8、选中ComboBox下拉列表选择框控件,点击控件中右上角出现的箭头,弹出ComboBox数据绑定窗口,勾选“使用数据绑定项”,之后选择6中添加的数据集Loc1,设置“显示成员”为“科室名称”字段,“值成员”为“科室ID”字段,“选定值”为“科室ID”,上述操作便完成了ComboBox控件直接使用数据集的设置。 9、点击项目启动按钮,点击选择科室的下拉列表框,可以看到科室列表,由此可以看出,通过上面6、7、8三个步骤的简单操作,即完成了C#窗体控件与已添加的数据集的快速绑定,实现了查询IRIS数据库的快速操作。 10、最后双击窗体中的“查询科室日志”按钮,在按钮点击事件函数中,添加通过SQL语句查询IRIS数据库的代码,并通过DataGridView的DataSource属性将SQL语句的查询结果绑定到DataGridView数据网格视图。完成后,再次运行项目,可以实现通过选择日期和科室,查询指定日期和科室的就诊日志。 附上项目的核心代码,少部分细节地方参见代码中注释部分: Form1.cs //C#窗体及控件加载和操作代码 using System; using System.Windows.Forms; namespace QuickApp1 { public partial class Form1 : Form { //新建IRIS数据库的ODBC连接对象 ODBCHelper1 dBCHelper1 = new ODBCHelper1(); //避免comboBox数据未绑定时的异常退出 bool cmbFlag = false; public Form1() { InitializeComponent(); } private void Loc_comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //排除窗体未加载时comboBox数据未绑定时的异常退出错误 try { if (cmbFlag && !String.IsNullOrEmpty(Loc_comboBox1.SelectedValue.ToString())) { string selectLoc = Loc_comboBox1.SelectedValue.ToString(); } } catch (Exception) { ; } } //按钮点击事件 private void findAdmListBtn1_Click(object sender, EventArgs e) { //取日期选择器的日期 string selectDate = dateTimePicker1.Text.ToString(); //取科室下拉选择框的科室 string selectLoc = Loc_comboBox1.SelectedValue.ToString(); //通过SQL语句查询IRIS数据库 string sql = "SELECT A.PAADM_DepCode_DR->CTLOC_Desc 科室, A.PAADM_PAPMI_DR->PAPMI_Name 患者姓名,decode(A.PAADM_PAPMI_DR->PAPMI_Sex_DR,1,'女',2,'男','未知') 性别,A.PAADM_AdmDocCodeDR->CTPCP_Desc 医生姓名, A.PAADM_ADMNo 就诊流水号,A.PAADM_AdmDate 就诊日期,A.PAADM_AdmTime 就诊时间 FROM PA_Adm A WHERE A.PAADM_AdmDate =" + "'" + selectDate + "'" + "AND A.PAADM_DepCode_DR = " + "'" + selectLoc + "'"; //通过DataGridView的DataSource属性将SQL语句的查询结果绑定到DataGridView数据表格视图 this.dataGridView1.DataSource = dBCHelper1.CacheExeQuery(sql); } private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) { //为DataGridView数据表格添加行序号 try { for (int i = 0; i < dataGridView1.Rows.Count; i++) this.dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString(); } catch { MessageBox.Show("处理异常:表格行序号添加异常"); } } private void Form1_Load(object sender, EventArgs e) { //窗体加载时处理 // TODO: 这行代码将数据加载到表“loc1.CT_Loc”中。您可以根据需要移动或删除它。 this.cT_LocTableAdapter.Fill(this.loc1.CT_Loc); cmbFlag = true; } } } ODBCHelper1.cs //ODBC数据库连接公共类 using System.Data; using System.Data.Odbc; namespace QuickApp1 { internal class ODBCHelper1 { //ODBC连接格式化字符串,将Dsn(连接名称)、Server(IRIS服务器IP)、Port(端口)、DataBase(数据库)、Uid(用户名)、Pwd(用户名)换成你自己的。 public static string conString = "Dsn=irisxxx;Server=xxx.xxx.xxx.xxx;Port=xxxx;DataBase=xxxx;Authentication method=0;Uid=xxxxxx;Pwd=******;static cursors=0;query timeout=0;unicode sqltypes=0;"; public DataTable CacheExeQuery(string sql) { using (OdbcConnection con = new OdbcConnection(conString)) { using (OdbcCommand cmd = new OdbcCommand(sql, con)) { using (OdbcDataAdapter da = new OdbcDataAdapter(cmd)) { DataTable dt = new DataTable(); con.Open(); da.Fill(dt); return dt; } } } } } } 好文! 快速开发、快速接入、快速应用、良好兼容,轻量级开发的好平台。 感谢分享 赞,值得学习 简单实用,学习了。 感谢分享!刚上班的小白接触感觉很有用
文章
Nicky Zhu · 九月 7, 2021

IRIS 2021 技术文档 First Look 12--技术概要:.NET Object Persistence with XEP

本文档介绍了 XEP API,它在 InterSystems IRIS®数据平台上极其快速的 .NET 对象存储和检索支持。它向您提供了一个关于 .NET 对象持久化的 XEP 方法的进阶概述,并引导您通过一个简单的场景来演示 API 的主要功能。 这些活动被设计成只使用默认设置和功能,这样您就可以熟悉 XEP 的基本原理,而不必处理超出本概述范围的细节。有关 XEP 的完整文档,请参见 Persisting .NET Objects with InterSystems XEP (《使用 InterSystems XEP 持久化 .NET 对象》)。 要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。 快速的对象存储和检索 面向对象编程是 .NET 框架的核心,因此 .NET 应用程序将数据建模为对象是很自然的。然而,当应用程序需要将数据存储在数据库中时,这可能会导致问题。如果您使用 ADO.NET 来存储和检索对象,您就面临着将对象数据转换为一组关系表、然后再将查询结果集转换为对象的问题。这个问题的通常解决方案是使用对象-关系映射(ORM)框架,如实体框架(Entity Framework) 来自动化这个过程。InterSystems IRIS 确实提供了实体框架(Entity Framework)接口,InterSystems 推荐它用于大型、复杂的对象层次结构。另一方面,对于执行实时数据采集等任务的应用程序,主要问题是速度而不是数据复杂性。虽然实体框架(Entity Framework)绝对不慢(如果适当优化的话),但对于需要极快地存储和检索简单或中等复杂数据的任务来说,XEP 是一个更好的选择。在大多数情况下,它比实体框架(Entity Framework)或 ADO.NET 快得多。 XEP 是如何工作的? XEP 是一个轻量级的 .NET API,它将 .NET 对象数据作为持久化事件(persistent event)来投射。持久化事件(persistent event)是 InterSystems IRIS 类的一个实例(通常是 %Persistent 的子类),包含 .NET 对象中数据字段的副本。与任何此类实例一样,可以通过对象访问、SQL 查询或直接 global 访问来检索它。 在创建和存储持久化事件(persistent event)之前,XEP 必须分析相应的 .NET 类,并将模式(schema)导入数据库。模式(schema)定义了用于存储 .NET 对象的持久化事件类的结构。如果持久化事件类不存在相应的 ObjectScript 模式,则导入模式(schema)将自动为其创建相应的 ObjectScript 模式。来自分析的信息可能是 XEP 导入简单模式所需要的全部信息。对于更复杂的结构,您可以提供额外的信息,允许 XEP 生成索引并覆盖导入字段的默认规则。 在为类创建模式(schema)之后,您可以使用各种 XEP 方法来存储、更新或删除事件、运行 SQL 查询,并通过查询结果集进行迭代。 试一试!XEP 的实际操作 现在是您自己尝试 XEP 的时候了。这个 XepSimple 演示是一个非常小的程序,但它提供了大多数关键 XEP 功能的示例,并概述了如何使用 XEP API。(想试试 InterSystems IRIS .NET 开发和互操作性功能的在线视频演示吗?请看.NET QuickStart(.NET 快速入门)!) 用前须知 要使用该程序,您需要一个安装了 .NET 框架和 Visual Studio 的 Windows 系统,以及一个运行中的 InterSystems IRIS 实例来连接。您对 InterSystems IRIS 的选择包括多种类型的已授权的和免费的评估实例;实例不需要由您正在工作的系统托管(尽管它们必须相互具有网络访问权限)。关于如何部署每种类型的实例的信息(如果您还没有可使用的实例),请参见 InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中的 Deploying InterSystems IRIS(部署 InterSystems IRIS)。使用同一文档中的 InterSystems IRIS Connection Information(InterSystems IRIS 连接信息)和 .Net IDE 中的信息将 Visual Studio 连接到您的 InterSystems IRIS 实例。 配置 Visual Studio 项目 首先,打开 Visual Studio 并创建一个新的控制台(console)应用程序项目,选择 Visual C# 和 Console App (.NET Framework)(控制台应用程序(.NET 框架)) 选项。对于 Name(名称) 字段,输入 netxep。(想试试 InterSystems IRIS .NET 开发和互操作性功能的在线视频演示?请看.NET QuickStart(.NET 快速入门)!) 添加程序集引用 XEP API 被打包到 InterSystems.Data.XEP.dll 库中,该库必须安装在您的本地系统上。您可以通过克隆 repo https://github.com/intersystems/quickstarts-dotnet/tree/master/XEP 或从该 repo 下载文件来获取它。如果 InterSystems IRIS 安装在您的本地系统或您可以访问的另一个系统上,则该程序集已经安装在子目录 install-dir\dotnet\bin\v4.5 中,其中 install-dir 是实例的安装目录。 要将 InterSystems.Data.XEP.dll 的程序集引用添加到项目: 从 Visual Studio 主菜单中,选择 Project(项目) > Add Reference(添加引用)... 在出现的窗口中,点击 Browse(浏览).... 浏览到 InterSystems.Data.XEP.dll 文件的位置。 选择文件并点击 Add(添加)。 点击 OK(确定)。 在 Visual Studio Solution Explorer 中,InterSystems.Data.XEP.dll 程序集现在应该列在 References(引用)下。 添加示例类 在创建程序源文件之前,您将添加一个类,主程序会访问该类以生成用于存储的示例对象。在 Visual Studio 中,使用 Project(项目) > Add Class(添加类) 添加一个 C# 类文件到 netxep 项目。删除类文件的默认内容,并将以下代码复制并粘贴到文件中。 using System; namespace xep.samples { public class SingleStringSample { public string name; public SingleStringSample() { } internal SingleStringSample(string str) { name = str;} public static SingleStringSample[] generateSampleData(int objectCount) { SingleStringSample[] data = new SingleStringSample[objectCount]; for (int i = 0; i < objectCount; i++) { data[i] = new SingleStringSample("single string test"); } return data; } } } 因为这个类非常简单,所以 XEP 不需要任何注释就可以从中生成有效的模式。对于真实应用程序中更复杂的类,您可以使用各种选项来优化导入。 创建 XEP 演示程序 现在您可以创建 XEPSimple 演示程序了。在 Visual Studio 中,找到您在创建项目时创建的默认 program.cs 文件。删除该文件的默认内容,并粘贴下面的代码,用connection information for your InterSystems IRIS instance(您的 InterSystems IRIS 实例的连接信息)替换主机、端口、irisnamespace、用户名和密码变量的值。您可以指定所示的 USERnamespace,也可以选择在实例上创建的另一个命名空间。 using System; using InterSystems.XEP; using xep.samples; namespace XepSimpleNamespace { public class XepSimple { public static void Main(string[] args) { // Generate 12 SingleStringSample objects for use as test data SingleStringSample[] sampleArray = SingleStringSample.generateSampleData(12); // EventPersister EventPersister xepPersister = PersisterFactory.CreatePersister(); String host = "127.0.0.1"; // InterSystems IRIS host int port = 51774; // InterSystems IRIS Superserver port String irisnamespace = "USER"; // InterSystems IRIS namespace String username = "_system"; // Credentials for InterSystems IRIS String password = "SYS"; //Credentials for InterSystems IRIS xepPersister.Connect(host,port,irisnamespace,username,password); // connect to localhost xepPersister.DeleteExtent("xep.samples.SingleStringSample"); // remove old test data xepPersister.ImportSchema("xep.samples.SingleStringSample"); // import flat schema // Event Event xepEvent = xepPersister.GetEvent("xep.samples.SingleStringSample"); long[] itemIdList = xepEvent.Store(sampleArray); int itemCount = 0; for (int i = 0; i < itemIdList.Length; i++) { if (itemIdList[i] > 0) itemCount++; } Console.WriteLine("Stored " + itemCount + " of " + sampleArray.Length + " events"); // EventQuery EventQuery<SingleStringSample> xepQuery = null; String sqlQuery = "SELECT * FROM xep_samples.SingleStringSample WHERE %ID BETWEEN ? AND ?"; xepQuery = xepEvent.CreateQuery<SingleStringSample>(sqlQuery); xepQuery.AddParameter(3); // assign value 3 to first SQL parameter xepQuery.AddParameter(12); // assign value 12 to second SQL parameter xepQuery.Execute(); // get resultset for IDs between 3 and 12 xepQuery.Close(); xepEvent.Close(); xepPersister.Close(); } // end main() } // end class xepSimple } 演示程序分为三个部分,每个部分演示了 XEP 三个主要类——EventPersister、 Event 和 EventQuery 中的一个。运行时,XepSimple 演示程序执行以下任务: 首先,通过调用示例数据类(sample data class) xep.samples.SingleStringSample 这一方法生成一些示例对象。 EventPersister 是 XEP 的主要入口点(main entry point),并提供到数据库的连接。 它创建一个名为 xepPersister 的实例,该实例在数据库中建立到 User 命名空间的 TCP/IP 连接,并删除任何现有的示例数据。然后调用 ImportSchema() 来分析示例类并将模式发送到数据库,从而创建相应的 ObjectScript 模式来保存持久化 SingleStringSample 对象。 Event 封装了(encapsulate) .NET 对象和相应的数据库对象之间的接口。 一旦生成了模式(schema),xepPersister 就可以为示例类创建一个名为 xepEvent 的 Event 对象。Store() 方法将 .NET 对象数组存储为持久化事件。 EventQuery 用于准备和执行 SQL 查询的有限子集。 名为 xepQuery 的 EventQuery<SingleStringSample> 对象是通过将查询字符串传递给 xepEvent 对象的 CreateQuery() 方法创建的。 该字符串定义了一个接受两个参数(? 字符)的 SQL 查询。 参数值是通过调用 AddParameter() 定义的,调用 Execute() 来获取查询结果集。 当处理完成后,它通过调用 XEP 对象的 close() 方法进行清理。 运行 XEPSimple 程序 现在您可以构建和运行 XEPSimple 演示程序了。按 Ctrl + F5 运行程序,以便当程序结束时命令提示符保持打开状态。 下一步 XepSimple 演示的目的是让您体验 XEP,而又不陷入细节困境,它不是用于实际生产代码的模型——它甚至没有进行异常检查。最重要的简化是在示例数据中。您从一个不需要注释或其他机制来帮助模式(schema)生成和优化的类中持久化了一些很小的 .NET 对象。虽然在实际应用程序中通常需要注释和其他选项,但这些选项非常简单易用。API 也同样简单易用。 有关所有 XEP 功能的全面描述,请参见 Persisting .NET Objects with InterSystems XEP(《使用 InterSystems XEP 持久化 .NET 对象》)。 了解有关 .NET 支持的更多信息 InterSystems IRIS 提供了 .NET API,通过 SQL 表、对象和多维存储轻松访问数据库。有关每种类型的访问的详细信息,请参见以下书籍: Using the Native API for .NET(《使用 Native API for .NET》),了解从 .NET 应用程序访问 InterSystems IRIS globals。 Using ADO.NET Managed Provider Classes(《使用 ADO.NET Managed Provider Classes》),了解SQL 表访问。允许您的 .NET 项目使用完全兼容的通用 ADO.NET Managed Provider 版本访问 InterSystems IRIS 数据库。 Using the InterSystems ODBC Driver(《使用 InterSystems ODBC Driver》),了解 SQL 表访问。InterSystems ODBC 驱动程序允许 InterSystems IRIS 建立到外部应用程序的 ODBC 连接,并通过 SQL 提供对外部数据源的访问。 Persisting .NET Objects with InterSystems XEP(《使用 InterSystems XEP 持久化 .NET 对象》),了解对象访问。XEP 对事务处理应用程序进行了优化,这类程序使用复杂度从简单到中等的对象层次结构,且要求极高的对象数据持久化和检索速度。 Using the Entity Framework Provider(《使用 Entity Framework Provider》),了解对象-关系映射。提供有关使用实体框架(Entity Framework)技术访问 InterSystems IRIS 数据库的信息。 这是我们的Firstlook 文档? 对
文章
Claire Zheng · 二月 28, 2023

【GS22 视频】如何让脑健康管理变得普惠?

这是InterSystems 2022年全球峰会上来自客户 Cognetivity Neuroscience 的分享。InterSystems IRIS 数据平台助力 Cognetivity Neurosciences 打造脑健康管理评估工具CognlCA。CognlCA 能够在正确的时间将数据提供给正确的人,推动脑健康评估、筛查和管理的节点前置,从而促进脑健康管理的普惠化。
公告
Claire Zheng · 十一月 18, 2021

召唤创新者们!快来参加2021年欧洲医疗编程马拉松吧!

亲爱的社区开发者们,大家好! 我们欢迎您来参加 2021年欧洲医疗编程马拉松 ,这一赛事时间为2021年11月19日-21日,免费参赛,线上赛道(On-line Track)的申请截止日期延长至11月15日。 我们将有一个InterSystems的挑战:“用FHIR创新”。InterSystems赛道的奖金设置如下: 🥇第一名: 1500 EUR🥈第二名: 1000 EUR🥉第三名: 500 EUR我们为所有参加InterSystems挑战的人准备了奖品!参考下图,了解我们的挑战细节:)你愿意参加吗?请在下面的投票中告诉我们! InterSystems挑战赛: 用FHIR创新 无论是IoMT的实现、更容易的患者参与,还是用于分析解决方案的临床数据的可用性,FHIR(医疗数据交换的标准)都可以推动创新。利用FHIR提供的合成数据来改善对患者及其治疗的了解,或者仅仅是在FHIR服务的帮助下,使您的解决方案在实践中立即可用,以收集和提供数据。 为您的解决方案使用一个或多个InterSystems FHIR服务,例如云中的FHIR存储库或HealthShare消息转换服务,并有资格获得InterSystems奖。InterSystems将为参与者提供免费访问服务以及在线和现场技术援助和指导。 在这次编程马拉松中,每个团队将由3位成员组成。如果你没有队伍,组织者会在比赛前安排好队伍。在这里上了解更多关于编程马拉松的信息。 期待与您相聚!如果你计划参加,请在下面告诉我们!
公告
Claire Zheng · 十一月 23, 2023

投票即将截止!获奖名单将于明天公布(附腾讯会议邀请)

大家好! 🏆InterSystems开发者社区中文版第二届技术征文大赛🏆(←点击链接进入参赛页面,浏览所有参赛文章)即将步入尾声!“征文&投票”环节即将结束(截至11月23日23:59)!来抓住最后的时间为你喜欢的作品投票吧! 11月24日19:00-20:00,InterSystems开发者社区将举办“InterSystems第二届技术征文大赛线上分享会”,邀请参赛作者进行作品分享&点评、探讨热门话题,同期还将送出各类奖品,欢迎参会! 会议主题:InterSystems开发者社区第二届技术征文大赛线上分享会会议时间:2023/11/24 19:00-20:00 (GMT+08:00) 中国标准时间 - 北京 点击链接入会,或添加至会议列表:https://meeting.tencent.com/dm/a7BNMvn2Sqx4 #腾讯会议:306-552-860 复制该信息,打开手机腾讯会议即可参与
公告
Claire Zheng · 八月 28, 2023

2023 SUTA培训报名启动啦!

SUTA培训是InterSystems专为SUTA有效期客户提供的原厂产品技术服务,具体包括产品的基础管理、编程管理、高级管理和开发培训等。2023 SUTA培训报名现已启动,汇聚技术专家,与新老客户一起探讨提升InterSystems数据平台基础管理运维的技能和知识: 新客户:系统学习管理运维工作的整体架构和基础概念 老客户:更加深入和全面地加强对管理运维工作的理解和提升 常见运维问题解析:助力您轻松应对日常工作中的问题和挑战 现场互动答疑:体验InterSystems技术专家的一对一诊断指导 点击此处,了解培训详情,报名参会(扫描下图中的二维码报名)。请关注InterSystems微信公众号,及时获取开播信息。 快来报名吧!
公告
Claire Zheng · 四月 7, 2022

【报名参会】聊聊数据平台与三级等保!

4月12日,新一期“极客俱乐部”在线分享即将推出,InterSystems中国技术总监乔鹏将分享“InterSystems数据平台与三级等保”这一主题,聊聊数据平台如何保护信息安全,以及如何配置、管理数据平台,以满足三级等保要求。点击链接报名参会,或扫描下方二维码参会。
文章
Claire Zheng · 十一月 1, 2022

【动画视频】医院需要什么样的互联互通平台?

医院管理者、信息中心、业务骨干,每个角色都有独特的业务诉求,InterSystems IRIS医疗版互联互通套件专为国内用户设计,截至2021年,InterSystems技术已助力一百余家医院通过四级及以上医院信息互联互通标准化成熟度评级,其中,五乙用户占全国30%以上。
文章
Jingwei Wang · 九月 26, 2021

IRIS 2021 技术文档 First Look 11 用于.Net的InterSystems IRIS Native API

本文解释了如何使用 InterSystems IRIS Native 从 .NET 应用程序访问 InterSystems IRIS®数据平台 globals。IRIS Native 还允许您运行ObjectScript 方法、函数和Routine。在本文中,您首先将连接到 InterSystems IRIS。然后您将在 InterSystems IRIS 中设置和检索一个global 节点的值,并在另一个 global 节点上进行迭代。您还将调用 InterSystems IRIS 类方法。所有这些活动都将在 .NET 应用程序中执行。 为了让您体验 IRIS Native,而又不陷入细节困境,本次探索特意设计得很简洁。这些活动被设计成只使用默认设置和功能,这样您就可以熟悉功能的基本原理,而不必处理那些离题或过于复杂的细节。当您把 IRIS Native 引入您的生产系统时,您可能需要做一些不同的事情。请确保不要把这种对 IRIS Native 的探索与真实的情况相混淆! Globals 简介 InterSystems IRIS 提供了一种易于使用的方法来将数据存储在持久的多维数组中。global 是存储在 InterSystems IRIS 物理数据库中的多维数组。在应用程序中,globals 到物理数据库的映射基于当前命名空间,命名空间提供一个或多个物理数据库的逻辑统一视图。例如,要使用一个名为 ^Settings 的 global 将值 "Red "与键 "Color "关联起来,打开 InterSystems 终端并输入以下代码: set ^Settings("Color")="Red" 您可以利用 globals 的多维特性来定义一个更复杂的结构: set ^Settings("Auto1","Properties","Color") = "Red" set ^Settings("Auto1","Properties","Model") = "SUV" set ^Settings("Auto2","Owner") = "Mo" set ^Settings("Auto2","Properties","Color") = "Green" 探索 IRIS Native 现在,您已经准备好实验 IRIS Native 了。下面的简短演示将向您演示如何在 .NET 应用程序中使用 IRIS Native。(想试试 InterSystems IRIS .NET 开发和互操作性功能的在线视频演示?请看.NET 快速入门! 用前须知 要使用该程序,您需要一个安装了 .NET 框架和 Visual Studio 的 Windows 系统,以及一个运行中的 InterSystems IRIS 实例来连接。您对InterSystems IRIS 的选择包括多种类型的已授权的和免费的评估实例;实例不需要由您正在工作的系统托管(尽管它们必须相互具有网络访问权限)。关于如何部署每种类型的实例的信息(如果您还没有可使用的实例),请参见InterSystems IRIS 基础:连接一个 IDE中的部署InterSystems IRIS 。使用同一文档中的InterSystems IRIS 连接信息和 .Net IDE 中的信息将 Visual Studio 连接到您的 InterSystems IRIS 实例。 配置 Visual Studio 项目 首先,打开 Visual Studio 并创建一个新的控制台应用程序项目,选择 Visual C# 和 Console App (.NET Framework)(控制台应用程序(.NET 框架))选项。对于 Name(名称)字段,输入 netnative。 添加程序集引用 InterSystems.Data.IRISClient.dll 程序集必须存在于您的本地系统中;您可以从 https://github.com/intersystems/quickstarts-dotnet/tree/master/EFPlay/bin/Debug 下载它。如果 InterSystems IRIS 安装在您的本地系统或您可以访问的另一个系统上,则该程序集已经安装在子目录 install-dir\dotnet\bin\v4.5 中,其中 install-dir 是该实例的安装目录。 要将 InterSystems.Data.IRISClient.dll 的程序集引用添加到项目: 从 Visual Studio 主菜单中,选择 Project(项目) > Add Reference(添加引用)... 在出现的窗口中,点击 Browse(浏览).... 浏览到 InterSystems.Data.IRISClient.dll 文件的位置。 选择文件并点击 Add(添加)。 点击 OK(確定)。 在 Visual Studio Solution Explorer 中, InterSystems.Data.IRISClient.dll 程序集现在应该列在 Reference(引用)下。 使用 IRIS Native 现在,您已经准备好实验 IRIS Native 了。打开在创建 Visual Studio 项目时创建的文件(例如,Program.cs)。删除文件的默认内容并粘贴以下代码,用您的 InterSystems IRIS 实例的连接信息替换 conn.ConnectionString 中的值。(logfile 的值必须是本地系统上的可写路径)。您可以指定所示的 USER命名空间,也可以选择在实例上创建另一个命名空间。 using System; using InterSystems.Data.IRISClient; using InterSystems.Data.IRISClient.ADO; public class IRISNative { public static void Main(String[] args) { try { // open connection to InterSystems IRIS instance using connection string IRISConnection conn = new IRISConnection(); // edit this ConnectionString to match your environment conn.ConnectionString = "Server=localhost; Port=1972; Namespace=User; Password=SYS; User ID=_system; logfile=c:\\sandbox\\dbnative.log"; conn.Open(); // create IRIS Native object IRIS iris = IRIS.CreateIRIS(conn); Console.WriteLine("[1. Setting and getting a global]"); // setting and getting a global // ObjectScript equivalent: set ^testglobal("1") = 8888 iris.Set(8888, "^testglobal", "1"); // ObjectScript equivalent: set globalValue = $get(^testglobal("1")) Int16? globalValue = iris.GetInt16("^testglobal", "1"); Console.WriteLine("The value of ^testglobal(1) is " + globalValue); Console.WriteLine(); Console.WriteLine("[2. Iterating over a global]"); // modify global to iterate over // ObjectScript equivalent: set ^testglobal("1") = 8888 // ObjectScript equivalent: set ^testglobal("2") = 9999 iris.Set(8888, "^testglobal", "1"); iris.Set(9999, "^testglobal", "2"); // iterate over all nodes forwards Console.WriteLine("walk forwards"); IRISIterator subscriptIter = iris.GetIRISIterator("^testglobal"); foreach (var node in subscriptIter) { Console.WriteLine("subscript=" + subscriptIter.CurrentSubscript + ", value=" + node); } Console.WriteLine(); Console.WriteLine("[3. Calling a class method]"); // calling a class method // ObjectScript equivalent: set returnValue = ##class(%Library.Utility).Date(5) String returnValue = iris.ClassMethodString("%Library.Utility", "Date", 5); Console.WriteLine(returnValue); Console.WriteLine(); // close IRIS object and connection iris.Close(); conn.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); }}} 示例代码分为三个部分: 第一部分展示了如何设置一个 global 的值以及稍后如何检索它。这部分里面执行的命令等同于 ObjectScript 的 SET 和 GET 命令。 第二部分展示了如何迭代 global 的子节点,类似于ObjectScript中的 $ORDER函数。 第三部分展示了如何使用 IRIS Native 从您的 .NET 应用程序调用 ObjectScript 类方法。 如果您使用的是本地安装的实例,并且因此连接使用 localhost 作为服务器地址,那么程序可能使用本地共享内存连接,这比标准的 TCP/IP 连接还要快。 注意: ObjectScript 中的 Globals 以插入符号(^)开头。在使用 InterSystems IRIS Native API 的 .NET 应用程序中,这不是必需的。 运行练习 现在可以按 Ctrl+F5 运行演示应用程序了。如果示例执行成功,您应该会看到带有示例代码结果的打印输出: [1. Setting and getting a global] The value of ^testglobal(1) is 8888 [2. Iterating over a global] walk forwards subscript=1, value=8888 subscript=2, value=9999 [3. Calling a class method] Oct 30, 2018 在管理门户(Management Portal)中确认变更 接下来,使用以下程序在管理门户(Management Portal)中确认您的结果: 使用InterSystems IRIS 基础:连接一个 IDE中为您的实例描述的 URL,在浏览器中打开您的实例的管理门户(Management Portal)。 如果您不在代码指定的命名空间中,请切换到该命名空间。 导航到 Globals 页面(System Explorer(系统资源管理器) > Global)。您应该会看到在示例代码中创建的 testglobal。点击 VIEW 来查看其内容。 您应该会看到 global 的两个节点:^testglobal(1) = 8888 和 ^testglobal(2) = 9999。 了解有关 IRIS Native 的更多信息 有关 IRIS Native、globals 和 InterSystems IRIS 的更多信息,请参见: 用于.Net的 Native API 技术概要:用于Java的 InterSystems IRIS Native API 使用 Globals 用于.NET 的 InterSystems Managed Provider