`
xmarkgogo
  • 浏览: 30696 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

openXDS 11个工程关联以及每个工程在XDS.b实现中的作用

 
阅读更多

昨天启动了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-repo-benchmark:xds.b存储库的简单基准测试工具

    一个简单的基准测试工具,用于xds.b存储库。 用法 为您的平台安装node.js,然后运行。 npm install 该基准测试工具随附了一个模拟xds regository服务器。 它在http://localhost:8282/上运行,并且将在任何路径下...

    开源项目-gojektech-consul-envoy-xds.zip

    【开源项目-gojektech-consul-envoy-xds.zip】是一个源自Gojek Tech的开源项目,主要涉及了领事(Consul)、Envoy和XDS(X Experimental Discovery Service)等关键组件,这些组件在现代微服务架构中扮演着重要角色。...

    xds.rar_xds_数据结构 源码_过河问题

    在这个问题中,我们可以把每个状态视为一组人在河的哪一侧,然后通过遍历所有可能的过渡状态,直到找到一个安全的解决方案。 在C++源码`xds.cpp`中,我们可以看到以下关键元素: 1. **状态表示**:每个状态可以用...

    XDS介绍 集成平台中的术语SOA

    此外,XDS.b还增加了一个新的角色——集成文档源的文档存储池(Integrated Document Source/Repository),它结合了文档源与文档存储池的功能,并减少了“提供/注册b型文档集”流程(事务ITI-41)。这种角色的引入...

    Python库 | xds-0.1.8-py3-none-any.whl

    python库。 资源全名:xds-0.1.8-py3-none-any.whl

    openxds-1.0.1-src

    通过解析和研究OpenXDS源代码,我们可以深入理解IHE XDS标准的工作原理,以及在实际医疗信息化场景中的应用。 IHE XDS标准是为了解决跨机构、跨地域的医疗信息交换问题而设立的。它定义了一套流程,使得患者在不同...

    XDS510驱动.zip

    在本篇文章中,我们将深入探讨XDS510驱动的功能、作用以及它在实际开发过程中的应用。 首先,XDS510驱动主要由两部分组成:XDS510 CCS Driver和XDS510 USB Driver。CCS(Code Composer Studio)是TI(Texas ...

    SEED-XDS560v2PLUS仿真器安装、使用指南(Rev.B)

    - **唯一MAC地址与IP配置**:每个仿真器配备单机唯一MAC地址,便于网络识别,且IP地址可自定义配置,方便网络环境下的管理。 - **高精度时钟信号**:可编程的TCLK频率高达64MHz,提供精确的时序控制。 - **HSPT接口*...

    MMA845Xds.pdf

    MMA845x系列属于3轴加速度传感器,适用于消费电子市场,具有极小的封装尺寸,为用户提供了在便携式和移动设备中实现加速度监测的可能。 1. 加速度计概述 加速度计是一种能够测量静止或移动物体加速度的传感器。MMA...

    seed-xds560plus emulator for ccs4.x(and above).zip

    总的来说,"seed-xds560plus emulator for ccs4.x(and above).zip" 是一个非常重要的工具,它极大地提升了基于TI DSP的开发效率,使开发者能够在安全的环境中测试和优化代码,减少了硬件成本和开发时间。

    IHE集成规范

    在IHE集成规范中提到了多个关键的技术标准和概念,这些是实现医疗信息系统间互操作的基础: 1. **XDS (Cross Enterprise Document Sharing)**:用于跨机构文档共享的标准,它基于HL7组织的标准,允许医疗机构之间...

    XDS560V2-WINTECH

    通过XDS560V2的应用工程师的专业技术支持,可以帮助用户在实现各种基于TI DSP处理器的系统开发和调试过程中获得最大的便捷性和效率。通过XDS560V2的帮助,用户可以进行实时调试和数据追踪,从而在开发过程中更快地...

    xds100v3-1.1.7z

    在XDS100V3的原理图中,我们可以预见到微控制器、电源管理模块、通信接口(如USB或UART)、调试接口、以及必要的外围电路,如时钟发生器、复位电路等。 PCB(Printed Circuit Board)文件则是将原理图转换为实际...

    xds100_drivers.rar

    《XDS100驱动程序详解与安装指南》 在嵌入式开发领域,调试工具是必不可少的一部分,其中XDS100系列...通过理解驱动的作用以及遵循上述步骤,开发者可以轻松解决驱动问题,充分利用XDS100调试器的功能,提升开发效率。

    SEED-XDS560PLUS driver for ccs4.x

    总之,SEED-XDS560PLUS驱动程序对于使用CCS 4.x的开发者来说是一个必不可少的工具,它提供了强大的硬件调试功能,帮助他们在TI平台上实现高效、精确的代码开发和测试。通过正确安装和配置,用户可以在Windows 7和XP...

    SEED-XDS510Plus Emulator for CCS4.x

    CCS 4.x是其早期的一个稳定版本,支持多种TI的MCU和DSP系列,如MSP430、C2000、C5000以及C6000等。 SEED-XDS510Plus Emulator作为CCS的硬件调试工具,具有以下关键特性: 1. **高速通信接口**:SEED-XDS510Plus...

    SEED-XDS560Plus Emulator for CCS4.x_x64

    在使用这个驱动程序时,首先需要下载压缩包中的"SEED-XDS560Plus Emulator for CCS4.x_x64.exe"文件,这是一个可执行安装程序。按照提示进行安装,安装过程中可能需要管理员权限。安装完成后,重启CCS 4.x,然后连接...

    XDS100V2驱动

    在嵌入式系统开发领域,XDS100V2是一款常用的硬件工具,它能够帮助开发者将程序烧录到目标DSP芯片上,并进行实时的运行仿真和调试。 XDS100V2仿真器的核心功能在于提供一个硬件接口,使得开发人员可以通过个人...

    XDS100USB驱动

    3. 在CCS3.3中配置工程,选择XDS100作为调试器,并进行必要的设置,如波特率、通信协议等。 4. 使用“西西软件.url”链接获取最新的软件更新和相关资料,以确保驱动和软件的兼容性。 5. 参考“SEED-XDS100仿真器安装...

Global site tag (gtag.js) - Google Analytics