Service-oriented architecture

From Clinfowiki
Jump to: navigation, search

Service-oriented architecture (SOA) is an architectural approach that describes an entity (application or enterprise) as a set of loosely-coupled, interdependent services [1]. Services are Lego-like building blocks that perform discrete tasks ranging from simple message exchange between two services (e.g., verifying a patient’s health insurance upon his/her hospital admission) to complex task coordination involving several services (e.g., checking medication a physician is prescribing against the patient’s current medications, current problems list, and recent lab test results, then alerting the physician about potential adverse drug effects and suggesting proper dosage).


According to the Open Group [1], a service is a self contained “logical representation of a repeatable business activity that has a specified outcome.” A service consists of a service contract, one or more interfaces, and an implementation. The service contract describes the purpose, functionality, constraints, and usage of the service. The service interface exposes the functionality of the service to clients, and all interaction with the service occurs through the interface. The service implementation provides business logic and appropriate data to fulfill the service contract [2].

SOA is often implemented using Web service technologies. However, unlike Web services, SOA is not a technology. Instead it is “[a] paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains” [3], such as hospital clinical information systems, health registries, insurance companies’ information systems, and clinical knowledge bases. Furthermore, services may be developed in different programming languages, hosted on disparate platforms with a variety of security models and business processes. Adoption of open standards (such as SOAP to facilitate communication between services, WSDL for describing service interface, and UDDI for the discovery of services) is essential to ensure services’ interoperability and location transparency [4]. In health informatics, domain-specific standards such as HL7, SNOMED, and NDC also play a key role in interoperable healthcare information systems.

The loosely-coupled infrastructure of SOA facilitates reconfiguration of existing IT assets to support new business processes and relationships faster than tightly-integrated monolithic systems. In healthcare, the SOA framework enables orchestration of health IT services to align with clinical workflow, facilitates access and compilation of patient medical records stored in multiple systems [5], and supports information exchange between healthcare providers and other external entities to improve administrative efficiency and reduce costs [6].


An example of SOA for healthcare is SANDS (Service-oriented Architecture for NHIN Decision Support). It is a SOA-based clinical decision support prototype that retrieves and aggregates patient records stored in multiple clinical systems to present a complete picture of the patient’s medical history. Also, it leverages medical knowledge and decision support logic in multiple medical knowledge domains to expand the scope and type of clinical knowledge available to clinicians [7].


  1. The Open Group. Definition of SOA.[1]
  2. Krafzig, D., Banke, K., & Slama, D. (2005). Enterprise SOA: Service-Oriented Architecture Best Practices. Upper Saddle River, NJ: Prentice Hall.
  3. Reference Model for Service Oriented Architecture 1.0.[2]
  4. Evdemon, J. (May 19, 2005). The Four Tenets of Service Orientation.[3]

5. Bridges, M. W. (June, 2007). SOA in healthcare. Health Management Technology.[4]

6. Melrose, J. P. (March 1, 2007). e-health is the way via SOA. Healthcare Financial Management. [5]

7. Wright, A., & Sittig, D. F. (2008). SANDS: A service-oriented architecture for clinical decision support in a National Health Information Network. Journal of Biomedical Informatics, 41, 962-981.

Submitted by Chia-An Chao