| Literature DB >> 29065576 |
R Gazzarata1,2, B Giannini1, M Giacomini1,2.
Abstract
The eSource Data Interchange Group, part of the Clinical Data Interchange Standards Consortium, proposed five scenarios to guide stakeholders in the development of solutions for the capture of eSource data. The fifth scenario was subdivided into four tiers to adapt the functionality of electronic health records to support clinical research. In order to develop a system belonging to the "Interoperable" Tier, the authors decided to adopt the service-oriented architecture paradigm to support technical interoperability, Health Level Seven Version 3 messages combined with LOINC (Logical Observation Identifiers Names and Codes) vocabulary to ensure semantic interoperability, and Healthcare Services Specification Project standards to provide process interoperability. The developed architecture enhances the integration between patient-care practice and medical research, allowing clinical data sharing between two hospital information systems and four clinical data management systems/clinical registries. The core is formed by a set of standardized cloud services connected through standardized interfaces, involving client applications. The system was approved by a medical staff, since it reduces the workload for the management of clinical trials. Although this architecture can realize the "Interoperable" Tier, the current solution actually covers the "Connected" Tier, due to local hospital policy restrictions.Entities:
Mesh:
Year: 2017 PMID: 29065576 PMCID: PMC5463102 DOI: 10.1155/2017/2190679
Source DB: PubMed Journal: J Healthc Eng ISSN: 2040-2295 Impact factor: 2.682
Description of the RLUS standard functionalities provided by the RLUS Management and Query Interface.
| Capability | Aim | Input parameters | Output parameters | Summarized description |
|---|---|---|---|---|
| Get () | To retrieve a single health information resource, mapped through a specific semantic signifier, which fulfills the specific query performed by the client. | An instance of RLUSSearchStruct (a well-defined and machine readable data structure to describe a search based on filter criteria or examples and the name of the semantic signifier to retrieve). | An instance of RLUSStatusCode (a structure to contain the code indicating whether the operation was successful or not and a corresponding message). | It is called by clients to get a resource with specific features. The client indicates either (1) the search criteria or (2) the resource identifier. The service (1) indicates if any errors occurred and (2) returns the required resource if it exists and if it is unique. |
| List() | To retrieve a list of health information resources, mapped through a specific semantic signifier, which fulfills the specific query performed by the client. | An instance of RLUSSearchStruct. | An instance of RLUSStatusCode. | It is called by clients to get a list of resources with specific features. The client indicates (1) the search criteria, (2) the maximum number of call that must be performed to get all resources, and (3) the ID token returned by a previous List () call, if it was called. The service (1) reports if any errors occurred, (2) returns the list of requested resources if exist, (3) the ID token, and (4) indicates if all resources were retrieved or how many calls must be performed to get all resources. |
| Locate() | To retrieve a list of RLUS service locations where the desired health information resources can be found. | An instance of RLUSSearchStruct. | An instance of RLUSStatusCode. | It is called by clients to get a list of RLUS service locations where the resources with specific features can be found. The client indicates (1) the search criteria, (2) the maximum number of call that must be performed to get all locations, and (3) the ID token returned by a previous Locate() call, if it was called. The service (1) reports if any errors occurred, (2) returns the list of requested locations if exist, (3) the ID token, and (4) indicates if all locations were retrieved or how many calls must be performed to get all locations. |
| Put() | To store an instance of a logical record in the repository. | An instance of RLUSWriteCommandEnum (a structure to contain an enumeration indicating the action the service must perform: insert only, update only, or “upsert.” “Upsert” means that first the service has to check whether the resource already exists, and then, if so, it executes an update, but if not, it executes an insert). | An instance of RLUSStatusCode. | It is called by clients to store a resource within the repository of the service. The client indicates (1) the right action that the service must perform, (2) some security, source, and network address information, and (3) the resource that must be stored. The service (1) indicates if any errors occurred and (2) returns the resource identifier. |
| Discard() | To either physically or logically delete resources from the repository. | An instance of RLUSSearchStruct. | An instance of RLUSStatusCode. | It is called by clients to physically or logically delete resources with specific features from the repository of the service. The client indicates (1) the search criteria and (2) some security, source, and network address information. The service (1) indicates if any errors occurred. |
| Describe() | To get the detailed schema definition of the required semantic signifier. | The semanticSignifierName (a human readable text string that corresponds to the name of the semantic signifier). | An instance of RLUSStatusCode. An instance of RLUSSemanticSi-gnifier (a meta-data structure to define the semantic signifier data type processed by RLUS). | It is called by clients to get the detailed schema definition of a specific semantic signifier. The client indicates (1) the semantic signifier name. The service (1) indicates if any errors occurred and (2) provides the corresponding detailed schema definition. |
Description of the IXS standard functionalities provided by the IXS Management and Query Interface and the IXS Admin Editor Interface.
| Capability | Aim | Input parameters | Output parameters | Summarized description | |
|---|---|---|---|---|---|
| IXSManagementAndQueryInterface | RegisterEntityWithIdentity() | To register a new entity (the software representation of a real word entity), with specific traits which describe it, associated with a specific identity (an Entity ID - Source ID pair). | A pair of entity ID (an identifier associated with an entity) and the specific source ID (an identifier associated with the source, that is, the system which generates the entity). | The IXS ID (an identifier within the IXS) which is associated with the registered identity. | It is called by clients to register a new entity with specific features within the service. The client indicates (1) the external entity identifier, (2) the system in which the identifier is defined, and (3) the features mapped within an instance of (4) the indicated semantic signifier. The service returns (1) an internal identifier associated to the entity and (2) indicates if any errors occurred. |
| CreateIdentityFromEntity() | To register a new identity, with specific traits, on behalf of a source which cannot generate entity IDs. | The specific Source ID of the identity to create. | The entity ID generated and associated with the entity. | It is called by clients to generate an identifier for an entity on behalf of a system that cannot create identifiers. The client indicates (1) the system in which it wants to create the identifier and (2) the features of the entity mapped within an instance of (3) the indicated semantic signifier. The service returns (1) the identifier generated for the system indicated by the client and (2) reports if any errors occurred. | |
| UpdateEntityTraitValues() | To update the traits associated with a specific identity. | The entity ID. | An instance of the IXS Status. | It is called by clients to update the features of a specific entity within the service. The client indicates (1) the entity identifier, (2) the system in which the identifier is defined, (3) the features to update, mapped within an instance of (4) the indicated semantic signifier, and (5) other information about the way in which the service have to update the features (e.g., if to replace the entire set of features with the one indicated by the client or to update only the indicated features). In return, the service (1) indicates if any errors occurred. | |
| RemoveIdentity() | To remove the identity with its associated traits from the service. | The entity ID. | An instance of the IXS Status. | It is called by clients to remove a specific entity from the service. The client indicates (1) the entity identifier, (2) the system in which the identifier is defined, and (3) the associated features, mapped within an instance of (4) the indicated semantic signifier. In return, the service (1) indicates if any errors occurred. | |
| GetEntityTraitValues() | To retrieve all traits associated with a specific identity. | The entity ID. | An instance of the IXS Semantic Signifier which provides all the traits. | It is called by clients to get all features associated with a specific entity. The client indicates (1) the entity identifier, (2) the system in which the identifier is defined, and (3) the semantic signifier which it wants to be adopted by the service to map the required features. | |
| FindIdentitiesByTraits() | To retrieve all identities within the IXS which match some specified criteria. | The entity ID, if known. | An instance of the IXS Result Set (a structure to contain the list of search results). | It is called by clients to retrieve all identifiers of entities whose features match some criteria. The client indicates the criteria which can be (1) an entity identifier, (2) a system in which the identifiers must be defined, (3) the entity identifier defined within the service, (4) other search qualifiers (e.g., the match algorithm to perform the query, the max number of search results), and (5) the features mapped within an instance of (6) the indicated semantic signifier. | |
| ListLinkedIdentities() | To retrieve all identities which are linked to the provided identity. | The entity ID. | An instance of the IXS Result Set. | It is called by clients to retrieve all identifiers that are linked with the entity/entities whose features match some criteria. The client indicates (1) the entity identifier, (2) the system in which the identifier is defined, (3) other search qualifier, and (4) the features mapped within an instance of (5) the indicated semantic signifier. | |
| ListUnlinkedIdentities() | To retrieve all identities which are not linked to the provided identity, but which have the same features. | The entity ID. | An instance of the Result Set. | It is called by clients to retrieve all identifiers which identify the entity/entities with specific features, but that are not linked with the provided identifier. The client indicates (1) the entity identifier, (2) the system in which the identifier is defined, (3) other search qualifier, and (4) the features mapped within an instance of (5) the indicated semantic signifier. The service returns (1) a list of search results and (2) indicates if any errors occurred. | |
| IXSAdminEditorInterface | LinkEntities() | To link a source identity with a target one. | The source Identity Entity ID. | An instance of IXS Status. | It is called by clients to create an explicit linking between identifiers which represent entities with the same specific features. The client indicates (1) the identifier of the source entity, (2) the system in which the identifier of the source entity is defined, (3) the identifier of the target entity, (4) the system in which the identifier of the target entity is defined, (5) the code which corresponds to the reason of the link, and (6) the features mapped within an instance of (7) the indicated semantic signifier. In return, the service (1) indicates if any errors occurred. |
| UnlinkEntities() | To remove the link between a source identity and a target one. | The source Identity Entity ID. | An instance of the IXS Status. | It is called by clients to break an explicit linking between identifiers which represent entities with the same specific features. The client indicates (1) the identifier of the source entity, (2) the system in which the identifier of the source entity is defined, (3) the identifier of the target entity, (4) the system in which the identifier of the target entity is defined, (5) the code which corresponds to the reason of the breaking and (6) the features mapped within an instance of (7) the indicated semantic signifier. In return, the service (1) indicates if any errors occurred. | |
| MergeEntities() | To merge a source identity into a target one. | The source Identity Entity ID. | An instance of the IXS Status. | It is called by clients to completely merge identifiers which represent entities with the same specific features. The client indicates (1) the identifier of the source entity, (2) the system in which the identifier of the source entity is defined, (3) the identifier of the target entity, (4) the system in which the identifier of the target entity is defined, (5) the code which corresponds to the reason of the merge, and (6) the features mapped within an instance of (7) the indicated semantic signifier. In return, the service (1) indicates if any errors occurred. | |
| UnMergeEntities() | To separate a source identity from a target one. | The source Identity Entity ID. | An instance of the IXS Status. | It is called by clients to separate identifiers which represent entities with the same specific features. The client indicates (1) the identifier of the source entity, (2) the system in which the identifier of the source entity is defined, (3) the identifier of the target entity, (4) the system in which the identifier of the target entity is defined, (5) the code which corresponds to the reason of the separation, and (6) the features mapped within an instance of (7) the indicated semantic signifier. In return, the service (1) indicates if any errors occurred. | |
| ActivateEntity() | To activate an identity. | The entity ID. | An instance of the IXS Status. | It is called by clients to activate an entity with specific features. The client indicates (1) the entity identifier, (2) the system in which the entity identifier is defined, (3) the code which corresponds to the reason of the activation, and (4) the features mapped within an instance of (5) the indicated semantic signifier. In return, the service (1) indicates if any errors occurred. | |
| DeactivateEntity() | To deactivate an identity. | The entity ID. | An instance of the IXS Status. | It is called by clients to deactivate an entity with specific features. The client indicates (1) the entity identifier, (2) the system in which the entity identifier is defined, (3) the code which corresponds to the reason of the inactivation, and (4) the features mapped within an instance of (5) the indicated semantic signifier. In return, the service (1) indicates if any errors occurred. | |
Figure 1The harmonization algorithm.
Figure 2The designed and implemented architecture for the management of clinical trials on patients affected by infectious diseases. The light yellow box represents the solution to support the “Interoperable” Tier (adoptable after Ethical Committee approval), while the dark yellow box shows the system which is currently working (“Connected” Tier). Blue arrows represent the standardized call to web services, while red arrows represent not standardized communication adopting property formats. The additional information under the dark yellow box provides technical details about the solution that the authors designed and developed to connect the IXS and RLUS web services with the existing systems.
Figure 3Sequence diagram of a patient's enrolment. The content inside the curly brackets refers to the blue arrows reported in Figure 2. The second subscript letters distinguish the call (C) of specific web service functions to the response (R).
Figure 4Sequence diagram of run-time analysis of clinical information. The content inside the curly brackets refers to the blue arrows reported in Figure 2. The second subscript letters distinguish the call (C) of specific web service functions to the response (R).
Figure 5Sample extract of a SOAP request which contains the RLUS object to map the filter criteria.
Figure 6Example of a SOAP message traced during the second interaction of the diagram represented in Figure 3 between the PAS Desktop Application of a hospital involved and the PIS node service.
Figure 7Sequence diagram of the daily automatic update of repository of CDMSs/registers. The content inside the curly brackets refers to the blue arrows reported in Figure 2. The second subscript letters distinguish the call (C) of specific web service functions to the response (R).
Figure 8The temporal evolution of the project.