Background: Health Information Technology
After evaluating various platforms, the government finally decided to adopt a Service Oriented Architecture (SOA) for its future IT infrastructure. They were impressed with your Template based, Reference Architecture approach set out in your Task 1 Report and have accepted your recommendations regarding:
- Computing and storage infrastructure design,
- Application / service integration, and
- Information integration.
However, they would like to gain a deeper understanding of the technologies behind your recommendation and have asked for a small specific demonstration of these technologies along with a brief explanation of the concepts and principles of how it works.
Specifically, they have asked you to provide a demonstration web page in which the user will input a service and a post code. Upon clicking a button, a cluster map of clinics, based on the services they offer and location, will be displayed to the user.
- Your Name - Student Number, the folder is then to be zipped and uploaded to blackboard. The report must be uploaded separately.
Important Note: For ease of demonstration, your code must be self-contained. In addition to using Standards based HTML and Python, PETL, Bottle and Parser are the only additional frameworks you should need. If you use others they must be provided and not require installation.
To demonstrate your code, you have been provided with four data sources compiled with fictitious sample data. These are:
- "clinics.csv" contains the information about the clinics,
- "cliniclocations.xml" contains the location coordinates for each clinic
- "services.csv" contains a list of clinical services
- "clinicservices.csv" contains a list of clinics and the services they offer
Task 1 - Data integration demo.
You are to submit a python script named "data_merger.py".
Your script should firstly clean the data then merge it into one CSV file named
Task 1.1 Data Cleansing
Clean data in the email address field from "clinics.csv" such that:
- All spaces are removed,
- The domain "myclinic.com.au" is appended to those address without a domain,
Task 1.2 Data Merge
Merge the data from the four data sources into "clinicservicelocations.csv" with the following fields (attributes):
- ClinicServicesID a unique field identifying each record from clinicservices
- ServiceID a foreign key linking to services from clinicservices
- Service the linked title of the service from services
- ClinicID a foreign key linking to clinics and locations
- Clinic the name of the clinic from clinics
- Suburb from clinics
- State from clinics
- Email cleaned email address from clinics
- Lat from cliniclocations
- Lon from cliniclocations
Task 2 - RESTful Web Service Demo
You are to submit a python script named "clinic_locator.py".
For tasks 2.1 to 2.2 Your script should build a RESTful web service that supports a ‘getclinics' query from the client browser similar to "/getclinics?serviceid=x". The server Web Service will return a JSON table with the following fields (attributes): Clinic, Service, Suburb, State, Email, Lat, Lon. Data is to come from the "clinicservicelocations.csv" you built in task 1.2.
Task 2.1 Return clinics for a service
The server will return a table of records (tuples) of clinics offering the service ID passed to it.
Task 2.2 Return all unique clinics
In the advent of a call to "getclinics?serviceid=0", the server will return a distinct list of clinics offering any service. That is a list of all clinics listed once.
Task 2.3 List of Services
To populate your drop-down list in task 3.1 you will need to return a JSON table of all records from "services.csv" with the following fields (attributes): ServiceID, Service. The server should respond to a "getservices" request.
Task 2.4 Error Handling
Your code should handle any errors including incorrect requests.
Task 3 Mashup Demo
You are to submit a HTML file "clinic_map.html" and optionally a CSS file named
Task 3.1 Form Layout
You are to create an input form that accepts user input for a medical service and a postcode. The input for the medical service should be a drop-down list with the first item of being "Any Service" with a value = 0 remaining items should be created dynamically from a call to getservices from task 2.3. Note: The input for the postcode should be a text box.
These inputs should be accompanied with descriptors and a "Locate Clinics" button.
Task 3.2 Google Map
Clicking the "Locate Clinics" button the will trigger a "getclinics" web service to retrieve a table of clinics matching the service with attributes described in task 2. From this data you are to display a Google map marking the position of the returned clinics. The map should be centred on the input postcode and zoomed to an appropriate level to show nearby clinics, alternatively you may choose to use marker clustering which automatically centres and zooms map based on clustering.
Task 3.3 Information Window Demographics
Upon clicking a marker bubble on the map, the user will be displayed an information window containing: Clinic Name, Suburb, State and a clickable email address.
Task 3.4 Information window email
Clicking an email address link in the information window should launch the user's email
application and automatically insert the subject line "Clinic Enquiry".
You are required to write a report explaining the key concepts around the design and implementation of your demonstration system. You are also required to explain how to run your code. Finally, you are to include all code submitted in the appendices to the report, note that the code will not count towards the word count.
Your report should follow the following template:
Executive Summary Table of Contents
Table of Figures (if needed)
Table of Tables (if needed)
Key System Concepts
Data merging and cleaning
RESTful Web Services
3.0 Demo Running Instructions
Conclusion Bibliography Appendices
Your report should be no less than 800 words and it would be best to be no longer than 1500 words.
The report must be formatted using the following guidelines:
- Paragraph text 12-point Calibri single line spacing
- Code Text 12-point Courier new single line spacing
- Headings Arial in an appropriate type size
- Margins 2.5cm on all sides
- Title Page is not to contain headers, footers, or page numbering
- Header is to display the Report Title (excluding the title page)
- Footer to display your name and the page number (excluding the title page)
- Title Page - Must not contain headers or footers. Include your name as the report's
- Page numbering
o Executive summary to the last page of Table of Figures / Table of Tables to use roman numerals (i, ii, iii, iv)
o Introduction and onwards to use conventional numerals (1, 2, 3, 4) starting at page 1 from the introduction
- The report is to be created as a single Microsoft Word document (version 2007, 2010, 2013, 2016, or Office 365). No other format is acceptable and doing so will result in the deduction of marks.
- The report must use the built-in features of Microsoft Word to create page numbers, section numbers, citations, cross referencing of sections, figures and tables, table of contents, table of figures, table of tables, and bibliography.
Please follow the conventions detailed in:
Summers, J. & Smith, B., 2014, Communication Skills Handbook, 4th Ed, Wiley, Australia.
References should follow the Harvard method of referencing. Note that ALL references should be from journal articles, conference papers, technical papers or a recognized expert in the field. DO NOT use Wikipedia as a reference. The use of unqualified references will result in the deduction of marks.