The Queensland Health e Health Strategy is for systems that increase health literacy, promote community education and empowers communities to have greater control over their own healthcare. This requires upgrading core ICT infrastructure to enable cutting-edge health service delivery into the future. e Health includes the following priorities:
- ICT infrastructure to provide network and data center functions to support an increasingly mobile workforce,
- A desktop environment to support a consistent user experience, and access to common systems and tools across the health system,
- A secure information system environment to share information and images, and consult with others through and information interoperability platform,
- Renewing enterprise systems, including those for patient administration, finance and laboratories,
- Migrating towards statewide medical records and enabling digital hospitals,
- Integrating other systems such as business intelligence, and systems to support integrated care with primary and community healthcare providers.
After evaluating various platforms, Queensland Health finally decided to adopt a Service. Oriented Architecture (SOA) for its future IT infrastructure. However, the managers from clinical services would like to gain a deeper understanding of:
- Computing and storage infrastructure design,
- Information integration,
- Application and Service Integration, and
- Technologies behind Application and Service Integration including a small specific demonstration of these technologies along with a brief explanation of the concepts and principles of how it works.
Therefore, this project consists of two deliverables, being:
- Demonstration code for data integration and then providing the user with a RESTful service for accessing that data, specifically different services and clinics in that data.
- A paper (this paper)
Key System Concepts
To demonstrate our recommendations, we were provided with three data sources compiled with fictitious sample data. These are:
- csv contains the details about the clinical offices,
- xml contains the location coordinates for each clinic,
- csv contains a list of clinic offices and the services they offer.
We loaded all the CSV files into Python as pandas data frame and the xml file also as pandas data frame using using petl library. The merged the data from all four data sources have the following fields (attributes), saved inside output file “clinic_service_locations.csv”:
- Clinic Service ID – a unique field identifying each record from clinic_services.csv
- Service – the service name from clinic_services.csv
- Clinic ID – the ID for each clinic
- Suburb – the “Suburb” from clinics.csv
- Postcode – the “Postcode” from clinics.csv
- Latitude – the “Lat” value from clinic_locations.xml
- Longitude – the “Lon” value from clinic_locations.xml
Restful Web Services
Restful web services are built to work best on the Web. Representational State Transfer (REST) is an architectural style that specifies constraints, such as the uniform interface, that if applied to a web service induce desirable properties, such as performance, scalability, and modifiability, that enable services to work best on the Web. In the REST architectural style, data and functionality are considered resources and are accessed using Uniform Resource Identifiers (URIs), typically links on the Web. The resources are acted upon by using a set of simple, well-defined operations.
We wrote a python script named web_service.py. The script builds a restful web service using Bottle Web Development Framework that supports following two restful web services:
- Get services by postcode. The server accepts a ‘get services’ query from the client browser similar to “/get services?postcode=xxxx”. After processing this request, the service returns a HTML document containing the list of available services for a given postcode, including the following fields (attributes): Service, Suburb.
- Get clinics by service name. The server should accept a ‘get clinics’ query from the client browser similar to “/get clinics?service=xxxx”. After processing this request, the service returns a HTML document containing the list of available clinics for a given service, including the following fields (attributes): Clinic ID, Suburb, Latitude, Longitude.
Demo Running Instructions
data_integration The following command will run the data integration task but it assumes that pandas and petl library is already installed in the system and all the four data files are in the same folder where this program file is located.
web_service: The following command will start a RESTful services with all the calls described above at http://localhost:8080.
In this project, the phone number of different clinics were first cleansed in order to make sure that they all follow the same formatting. Then the data from all the four data files were merged using pandas and petl libraries of Python. Then, a RESTful web service was designed to provide the information about specific service within the data based on post code or the service name.