昨天启动了openXDS提供的registry和repository相关服务,对openXDS的认识也深入了一些。一直困扰我的问题是openXDS提供的11个工程到底有什么联系,各自的作用是什么。从今天开始,要对它们进行梳理和总结。
可以将这11个工程分为三类:
1. iheos工程。源自hieos项目(sourceforge.net/projects/iheos/),起到了很大作用。
2. openXDS开发的API,是整个项目的主体部分,包括9个工程。
3.openxds-web工程,是openXDS提供的web工程,也是最终呈现结果。它提供了一个配置页面和查询页面,配置页面首先装载Actors,然后启动所选的Actors。
下面根据这三个分类阐述各自的作用。
1. iheos工程
openXDS使用这个项目做了哪些工作呢?在\openxds-core\src\main\resources\axis2repository\services这个目录下可以看到iheos.aar,里面只有一个文件“services.xml”,这个文件是发布的服务列表。根据官网提供的项目部署步骤(https://www.projects.openhealthtools.org/sf/go/page1120)进行部署后,可以看到http://localhost:8020/axis2/services/和http://localhost:8020/axis2/services/两个服务列表。XDS.b的事务是以web
service服务的形式提供,理论上应该是下面的结果:
Document Submission (ITI-41): http://localhost:8020/axis2/services/xdsrepositoryb
Document Stored Query (ITI-18): http://localhost:8010/axis2/services/xdsregistryb
Document Retrieval (ITI-43): http://localhost:8020/axis2/services/xdsrepositoryb
但是,从运行出来的两个服务列表来看,内容是一模一样的,因为它们都使用了前面提到的service.xml文件。不过它们都包含了所有服务,所以整体上没有影响。
从上面的分析可以看出来,iheos的作用就是提供事务服务,下面是service.xml文件的一小部分:
<service name="xdsrepositoryb">
<description> XDS.b Repository Interface</description>
<parameter name="ServiceClass" locked="false">gov.nist.registry.ws.serviceclasses.RepositoryB</parameter>
<operation name="ProvideAndRegisterDocumentSetRequest">
<messageReceiver class="gov.nist.registry.common2.service.XDSRawXMLInOutMessageReceiver"/>
<actionMapping>urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</actionMapping>
<parameter name="enableMTOM">true</parameter>
</operation>
<operation name="RetrieveDocumentSetRequest">
<messageReceiver class="gov.nist.registry.common2.service.XDSRawXMLInOutMessageReceiver"/>
<actionMapping>urn:ihe:iti:2007:RetrieveDocumentSet</actionMapping>
<parameter name="enableMTOM">true</parameter>
</operation>
</service>
服务名叫xdsrepositoryb,提供了两个接口,也就是实现了ITI-41和ITI-43两个事务。接口分别是:ProvideAndRegisterDocumentSetRequest和RetrieveDocumentSetRequest,在实现的时候,客户端调用这两个接口即可。在parameter element的内容中,对应的实现类是gov.nist.registry.ws.serviceclasses.RepositoryB,这是Iheos工程中的类,从这里也可以看出,iheos的作用是提供服务。那么openXDS的API做了什么工作呢?
2.OpenXDS API
前面说这是openXDS的主体,这里的“主体”可能有点说不过去,因为人家hieos已经把大部分活都干了,所以说这里的主体需要理解为“主体架构”,它使用了hieos作为提供基础服务的模块。
openXDS API包含的9个工程的作用主要是两个,一个是提供IHE Actors(包括四个,详见上篇blog的角色类图),每一个角色都提供相应的服务,也就是IHE事务;另外一个作用是提供XCA、XUA等支持。(这种说法可能不准确,待弄清之后再行编辑)
2.1common-utils
2.2common-ws
openXDS工作的流程是,首先加载Actors配置文件,选择需要启动的Actors,创建相应的服务(HTTP
servers)。common-ws这个工程的作用就是生成IHE HTTP Server。它只包含四个类:IheConnectionListener、IheHttpFactory、IheHTTPServer和SimpleHttpServer。其中,IheHttpFactory是产生IheServer的工厂类,工厂类只生产SimpleHttpServer,而不是IheHTTPServer。
IheHTTPServer采用了SimpleHttpServer作为其具体实现,IheConnectionListener主要包括Server的参数信息,如port等等。下图是简化了的类图,主要标注四个类之间的关系。
2.3 openxds-aip
2.4 openxds-config
2.5 openxds-core
2.6 openxds-log
记录OpenXDS工程的日志信息。
2.7openxds-registry-adapter-omar
2.8openxds-registry-patient-lightweight
每个病人在一个Affinity Domain中需要有一个全局id,patient lightweight这个工程的作用是对Affinity Domain中的病人生命周期(lifecycle)进行管理,包括createPatient(Patient, RegistryPatientContext)、updatePatient(Patient,
RegistryPatientContext)、mergePatients(Patient, Patient, RegistryPatientContext)、unmergePatients(Patient, Patient, RegistryPatientContext)。下面是整个工程所有类的类图。
2.9openxds-repository
3.openxds-web工程
这是openxds提供的web工程(只支持IE),界面如下:
configuration是装载Actors,Actors.xml文件的路径是webapps\openxds-web\WEB-INF\classes\conf\actors,装载之后结果如下
勾选需要启动的Actors,点start即可。
总结:
随着对Openxds的研究时间增加,对它也算是逐渐认识了吧,下一步是把自己的文档在XDS流程中跑一遍,然后深入研究一下实现代码。现在遇到的问题是编码系统,我的CDA文档是UTF-8,但是在提交的过程中还是要乱码,不晓得咋回事。
分享到:
相关推荐
一个简单的基准测试工具,用于xds.b存储库。 用法 为您的平台安装node.js,然后运行。 npm install 该基准测试工具随附了一个模拟xds regository服务器。 它在http://localhost:8282/上运行,并且将在任何路径下...
【开源项目-gojektech-consul-envoy-xds.zip】是一个源自Gojek Tech的开源项目,主要涉及了领事(Consul)、Envoy和XDS(X Experimental Discovery Service)等关键组件,这些组件在现代微服务架构中扮演着重要角色。...
在这个问题中,我们可以把每个状态视为一组人在河的哪一侧,然后通过遍历所有可能的过渡状态,直到找到一个安全的解决方案。 在C++源码`xds.cpp`中,我们可以看到以下关键元素: 1. **状态表示**:每个状态可以用...
此外,XDS.b还增加了一个新的角色——集成文档源的文档存储池(Integrated Document Source/Repository),它结合了文档源与文档存储池的功能,并减少了“提供/注册b型文档集”流程(事务ITI-41)。这种角色的引入...
python库。 资源全名:xds-0.1.8-py3-none-any.whl
通过解析和研究OpenXDS源代码,我们可以深入理解IHE XDS标准的工作原理,以及在实际医疗信息化场景中的应用。 IHE XDS标准是为了解决跨机构、跨地域的医疗信息交换问题而设立的。它定义了一套流程,使得患者在不同...
在本篇文章中,我们将深入探讨XDS510驱动的功能、作用以及它在实际开发过程中的应用。 首先,XDS510驱动主要由两部分组成:XDS510 CCS Driver和XDS510 USB Driver。CCS(Code Composer Studio)是TI(Texas ...
- **唯一MAC地址与IP配置**:每个仿真器配备单机唯一MAC地址,便于网络识别,且IP地址可自定义配置,方便网络环境下的管理。 - **高精度时钟信号**:可编程的TCLK频率高达64MHz,提供精确的时序控制。 - **HSPT接口*...
MMA845x系列属于3轴加速度传感器,适用于消费电子市场,具有极小的封装尺寸,为用户提供了在便携式和移动设备中实现加速度监测的可能。 1. 加速度计概述 加速度计是一种能够测量静止或移动物体加速度的传感器。MMA...
总的来说,"seed-xds560plus emulator for ccs4.x(and above).zip" 是一个非常重要的工具,它极大地提升了基于TI DSP的开发效率,使开发者能够在安全的环境中测试和优化代码,减少了硬件成本和开发时间。
在IHE集成规范中提到了多个关键的技术标准和概念,这些是实现医疗信息系统间互操作的基础: 1. **XDS (Cross Enterprise Document Sharing)**:用于跨机构文档共享的标准,它基于HL7组织的标准,允许医疗机构之间...
通过XDS560V2的应用工程师的专业技术支持,可以帮助用户在实现各种基于TI DSP处理器的系统开发和调试过程中获得最大的便捷性和效率。通过XDS560V2的帮助,用户可以进行实时调试和数据追踪,从而在开发过程中更快地...
在XDS100V3的原理图中,我们可以预见到微控制器、电源管理模块、通信接口(如USB或UART)、调试接口、以及必要的外围电路,如时钟发生器、复位电路等。 PCB(Printed Circuit Board)文件则是将原理图转换为实际...
《XDS100驱动程序详解与安装指南》 在嵌入式开发领域,调试工具是必不可少的一部分,其中XDS100系列...通过理解驱动的作用以及遵循上述步骤,开发者可以轻松解决驱动问题,充分利用XDS100调试器的功能,提升开发效率。
总之,SEED-XDS560PLUS驱动程序对于使用CCS 4.x的开发者来说是一个必不可少的工具,它提供了强大的硬件调试功能,帮助他们在TI平台上实现高效、精确的代码开发和测试。通过正确安装和配置,用户可以在Windows 7和XP...
CCS 4.x是其早期的一个稳定版本,支持多种TI的MCU和DSP系列,如MSP430、C2000、C5000以及C6000等。 SEED-XDS510Plus Emulator作为CCS的硬件调试工具,具有以下关键特性: 1. **高速通信接口**:SEED-XDS510Plus...
在使用这个驱动程序时,首先需要下载压缩包中的"SEED-XDS560Plus Emulator for CCS4.x_x64.exe"文件,这是一个可执行安装程序。按照提示进行安装,安装过程中可能需要管理员权限。安装完成后,重启CCS 4.x,然后连接...
在嵌入式系统开发领域,XDS100V2是一款常用的硬件工具,它能够帮助开发者将程序烧录到目标DSP芯片上,并进行实时的运行仿真和调试。 XDS100V2仿真器的核心功能在于提供一个硬件接口,使得开发人员可以通过个人...
3. 在CCS3.3中配置工程,选择XDS100作为调试器,并进行必要的设置,如波特率、通信协议等。 4. 使用“西西软件.url”链接获取最新的软件更新和相关资料,以确保驱动和软件的兼容性。 5. 参考“SEED-XDS100仿真器安装...