mcmaster(service,basedehealth integration(environment...

59
i McMaster Servicebased eHealth Integration Environment (MacSeie) Developer Guide September 21, 2009 Amir Tavasoli [email protected]

Upload: others

Post on 07-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

i

McMaster  Service-­‐based  eHealth  Integration  Environment  (MacSeie)  

Developer Guide

September  21,  2009  

Amir  Tavasoli  

[email protected]

Page 2: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

2

TABLE OF CONTENTS 1   Introduction 3  

MacSeie........................................................................................................................... 3  Microsoft .NET ............................................................................................................... 4  Objectives ....................................................................................................................... 4  

2   Architectrual Design 5  2.1   Components of System .......................................................................................... 5  2.2   EMR Web Service Component.............................................................................. 6  2.3   EMR database Component .................................................................................... 7  2.4   EMR Web Service Client Component ................................................................... 7  2.5   CDSS Risk Estimator Web Service Component ................................................... 8  

3   Low-Level Design 8  3.1   Overview................................................................................................................ 8  3.2   Modules Overview................................................................................................. 8  

3.2.1   Module 1 – EMR Web Service ....................................................................... 8  3.2.2   Module 2 – EMR Database............................................................................. 9  3.2.3   Module 3 – EMR Web Service Client .......................................................... 10  

4   Module Specifications 11  4.1   Overview.............................................................................................................. 11  4.2   Module 1 – EMR Web Service ............................................................................ 11  4.3   Module 2 - EMR Database .................................................................................. 21  4.4   Module 3 - EMR Web Service Client.................................................................. 24  

Appendix I EMR Database Schema 38  Appendix II EMR Screen Design 45  Appendix III Security 55  Appendix IV Editing in Visual Studio 56  GLOSSARY 58  REFERENCE 59  

Page 3: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

3

1 Introduction MacSeie This product involves the integration of two legacy systems to allow for interoperability. The first legacy system is a clinical decision support system (CDSS) known as Vascular Tracker (VT). VT, through the use of algorithms, provides decision support to clinicians for the treatment of patients with diabetes, hypertension, dyslipidemia, and cardiovascular disease. VT uses algorithms that are very individualized for each patient. It uses the patient’s medical history, current medications, allergies, and vascular risk to generate messages which contain specific targets as well as recommendations. It enables physicians as well as patients to know which vascular risk factors are on target and which ones require additional attention. The second legacy system is an electronic medical record (EMR). This EMR system contains the medical information of patients who are currently rehabilitating from cardiovascular disease. These patients require a method to keep track of their cardiovascular risk factors to ensure that the risk factors are on target, and if not, alert the physician so that action can be taken. As shown in Figure 1 the proposed product will be a web services based system that integrates this EMR system with the Vascular Tracker decision support system. In order for this to occur, the product will operate as a client-server system. The client will be the EMR system, and the server will be VT.

Figure 1-1 Web Services Information Flow Diagram

Page 4: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

4

Figure 1-2 System Diagram

Microsoft .NET Microsoft .NET [1] is a windows component that is used for running and building .NET based applications and web services.

Objectives This document provides the detailed design specification for a proof of concept integration of a clinical decision support system (COMPETE III Vascular Tracker, VT) with an EMR system using HL7 v3 messaging standards. The intention of this system is to demonstrate the components required for integration of CDSS and EMR system and to provide a starting point for a more thorough, future implementation.

Page 5: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

5

2 Architectrual Design

2.1 Components of System For the purpose of this document, The System has been divided into 4 major components (Figure 2-1): EMR Web Service: A web service that represents services that are required for an EMR. This services are required by the EMR Web Service Client to perform its EMR usage. This Web Service uses HL7 messaging standard to send and receive. This way any arbitrary client that works with HL7 can work with this web service. EMR database: The database containing all data required for the POC EMR to function. This includes all data required for the vascular risk estimation. EMR Webservice uses this database to perform its functionalities. EMR Web Service Client: A browser based, web service enabled web application used in a medical practice to manage and document patient information, patient visits and patient observations. This web service client also performs the procedures required to communicate with the VT Risk Estimator web service via HL7 formatted messages and receive the risk assessment from the service. Because both EMR web service and VT Risk Estimator web service use HL7 standard this client is able to work with HL7 standard. CDSS (VT) Risk Estimator Web Service: A web service application that receives risk estimation requests and communicates the risk estimation back to the requesting service based on results provided Framingham(VT) risk estimation algorithm. This web service also uses HL7 standards to receive patient data and send risk information so that every possible client will be able to work with is. This webservice is a part of our java section so for implementation you should refer to documentation of java section.

Figure 2-1 Component Diagram

In the following sections, we elaborate on the functionalities and interfaces of each component.

Page 6: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

6

2.2 EMR Web Service Component The EMR Web Service will be used by the EMR Web Service Client in order to accomplish the EMR functions ,and authenticate users. This web service connects to EMR database via a data access layer. The following functions are provided by this service: Login: This function will accept credentials from the client application, validates the user communicates success or failure to the client. Logout: This function will receive logout request from the client and revoke the requested user’s authorization to use the system. Create patient record: This function will accept patient record details from the client and, based on the fields provided create a new patient record in the database. Edit patient record: This function will accept patient record details from the client, for an existing patient record, and then update this patient record in the database. View patient record: This function will accept a patient id from the client and return the associated patient record data to the client. Delete patient record: This function will accept a patient id from the client and will remove this record from the database. The record will not be physically deleted for future reference but it will be treated as a deleted record. Search patient records: This function will accept a search string from the client and query the database to fine patient records with names matching the search string. All patient records found will be returned to the client. Create a visit record: This function gets the visit record details and, based on these details will create a new visit record. Delete a visit record: This function will accept a visit id from the client and will remove this record from the database. The record will not be physically deleted for future reference but it will be treated as a deleted record. Viewing a visit record: This function will accept a visit id from the client and return the associated visit record data to the client. Create an observation record: This function gets the observation record details and, based on these details will create a new visit record. Delete an observation record: This function will accept an observation id from the client and will remove this record from the database. The record will not be physically deleted for future reference but it will be treated as a deleted record. View an observation record: This function will accept a observation id from the client and return the associated observation record data to the client. For implementation details of these functionalities refer to 3.2.1 which is low level design of the webservice.

Page 7: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

7

2.3 EMR database Component The EMR database is used by the EMR GUI to store data pertaining to patients and patient related observations. It also stores VT risk estimates that are received from the Risk Estimator web service. Database consists of the following tables User: This table records the user information such as login and other user information. Patient: This tabe records the patient demographic information such as name, address, email and etc. Visits: This table records the patient’s visit information such as time, date and etc. Observations: This table records the information of the observations made in an specific visit

2.4 EMR Web Service Client Component The EMR Web Service Client is a web based application with a graphical user interface that provides the functionality required to implement the proof of concept web services integration. The EMR Web Service Client connects to the EMR Web Service and provides the following functions to the end users: User authentication and authorization: This function allows the user to securely log into the EMR system. Search patient records: This function will allow the user to enter a patient’s name, click “Search” and then present a grid containing all patient records that match the search criteria. Create/edit/view/delete a patient record: These functions allow the user to create, edit, delete or view a patient record and record demographic data pertaining to the patient. This client uses the web service to accomplish these functionalities. Create/view/delete a visit record: These functions allow the user to create, edit, delete or view a visit record of a patient and record visit information of a patient. This client uses the web service to accomplish these functionalities. Create/view/delete an observation record: These functions allow the user to create or view an observation record of a visit and record observation information of a visit. This client uses the web service to accomplish these functionalities. Request a risk evaluation from the VT CDSS: This function allows the user of the system to request a vascular risk estimate from the remote CDSS. It first extracts patient data from EMR web service and then, sends this data to the VT Risk Estimator Service and receives the risk estimate that is generated and show it to the user through user interface. See [2] for details of the HL7 data mapping process and results. Store risk evaluation value: This function allows the user to store the risk evaluation value in the EMR database as an observation pertaining to the selected patient. It will call the corresponding web service provided by EMR web service.

Page 8: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

8

2.5 CDSS Risk Estimator Web Service Component The Risk Estimator Web Service is a web service based application. It is triggered by a risk estimate request sent by the EMR Web Service client. For more information about the design of this part please refer to java developer guide.

3 Low-Level Design

3.1 Overview The following section outlines the details required to implement the proof of concept system as outlined above. The division of modules is based on the logical separation of functions that the system will implement.

3.2 Modules Overview For the purpose of this section, the system has been divided into 3 modules as described below. As the database management systems used are standard components they are not detailed in this section. For each module a low level state chart is provided along with a description of the required functions.

3.2.1 Module 1 – EMR Web Service Name: EMR Web Service File Name: Service1.asmx, Service1.asmx.cs

Security.cs DAO.cs

Naming Convention: n/a Short Description: This module will be implemented as an ASP.NET web service and

will act as the data access layer for the EMR application. Container Component: EMR Data Access Layer

Table 3-1 EMR Web Service Table

In here we are maching each functionality with service functions in the Service1.asmx.cs file: Functionality Functions Login WsLogin(string username, string password) Logout WsLogout(string username) Create patient record AddPatient(string username, XmlNode

patient_info) Edit patient record EditPatient(string username, XmlNode

patient_info) View patient record GetPatientInfoByID(string username, long

PatientID) Delete patient record DeletePatientByID(string username, long

PatientID) Search patient records GetPatientInfo(string username, string query) Create a visit record AddVisit(string username, XmlNode visit_info) View a visit record GetVisitInfoByID(string username, long idVisit)

GetVisitInfoByPatientID(string username, long PatientID)

Delete a visit record DeleteVisitByID(string username, long idVisit)

Page 9: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

9

Create an observation record

AddObservation(string username, XmlNode observ_info)

Delete an observation record DeleteObservationByVisitID(string username, int idVisit)

View an observation record GetObservationInfoByVisitID(string username, int idVisit) GetObservationInfoByID(string username, int idObservation)

Table 3-2 EMR Web Service Functionalities Table

For description of function please refer to detailed module description in 4.2. For developing this service a modular approach have been considered so that furthur expansion will be easier. Each module here is called a layer that connects to the core which itself is a module. The core is implemented as WsCore.cs and the Data Acess Layer, which connects to database is developed in DAO.cs. For handeling the security issues a security module has been implemented in security.cs. Moreover, the service functions that just call the functions in core are implemented in Service1.asmx.cs .

Figure 3-1 EMR Web Service Modules

3.2.2 Module 2 – EMR Database Here is the design overview of this module. For providing the service functionalities 4 tables have been considered: user, patient, visit, and observation. The relation between tables is as follows. Each patient can have many visits but each visit only refers to one patient. Each observation is refered to one visit and each visit is also refered to one observation.

Page 10: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

10

Figure 3-2 EMR Database

3.2.3 Module 3 – EMR Web Service Client Name: EMR GUI File Name: AccessDenied.aspx,

AccessDenied.aspx.cs, AccessDenied.aspx.designer.cs, AddObservation.aspx, AddObservation.aspx.cs, AddObservation.aspx.designer.cs, AddPatient.aspx, AddPatient.aspx.cs, AddPatient.aspx.designer.cs, AddVisit.aspx, AddVisit.aspx.cs, AddVisit.aspx.designer.cs, CommonMenuDown.ascx, CommonMenuDown.ascx.cs, CommonMenuDown.ascx.designer.cs, CommonMenuUp.ascx, CommonMenuUp.ascx.cs, CommonMenuUp.ascx.designer.cs, Default.aspx, Default.aspx.cs, Default.aspx.designer.cs, EditPatient.aspx, EditPatient.aspx.cs, EditPatient.aspx.designer.cs, EMRWebApp.csproj, EMRWebApp.csproj.user, EMRWebApp.Publish.xml, Logout.aspx, Logout.aspx.cs, Logout.aspx.designer.cs, Main.aspx, Main.aspx.cs, Main.aspx.designer.cs, ViewPatient.aspx, ViewPatient.aspx.cs, ViewPatient.aspx.designer.cs, ViewVisit.aspx,

Page 11: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

11

ViewVisit.aspx.cs, ViewVisit.aspx.designer.cs, ViewVisitsOfPatient.aspx, ViewVisitsOfPatient.aspx.cs, ViewVisitsOfPatient.aspx.designer.cs, ViewVTResult.aspx, ViewVTResult.aspx.cs, ViewVTResult.aspx.designer.cs, web.config, WsAccessLayer.cs, CDSSoutputStyleSheet.xslt

Naming Convention: n/a Short Description: This module will be implemented as an ASP.NET web application

and will allow the user to search, create, edit and view patient, visit and observation records. It will also allow the user to request, store and display a VT risk estimate.

Container Component: EMR GUI

Table 3-3 EMR Web Service Client Table

For developing this service a modular approach have been considered so that furthur expansion will be easier. Because this module is only a client to the EMR web service, so it is only made of two main modules one is the presentation layer and the other is the web service access layer which accesses the EMR web service and enables them to the client.

4 Module Specifications

4.1 Overview This section provides a detailed technical description of the modules defined in section 4.1.

4.2 Module 1 – EMR Web Service

Service1.asmx(.cs) Service1.asmx is the file that will implement the functions to be made available as a web service. The functions defined within this file will be used by the EMR web application to authenticate users and to create, edit and delete patient and visit and observation records. The web service depends on several other files outlined in this section. Used External Modules: System

System.Collections System.ComponentModel System.Data System.Linq System.Web System.Web.Services System.Web.Services.Protocols System.Xml.Linq System.Xml System.Xml.Schema Microsoft.Data.Odbc System.Text System.Configuration System.IO

Data Types: N/A

Page 12: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

12

Function(s) Description WsLogin This function will be used to authenticate users. It will use the

security class (security.cs) outlined below to valid the user’s credentials and will return an XML message indicating success or failure. If the client sees the success message in here he will be able to use that username for further access to the system. Input: String - username String - password Output: XmlDocument

WsLogout This function will be used to log the user out of the system. It will use the security class (security.cs) outlined below to terminate the users session. After that that username will not be accepted for accessing the web service. Input: String - username Output: XmlDocument

GetPatientInfo This function will accept the patients name as a query parameter and query the database (via DAO.cs) for all records that match this string. All records matching this query parameter will be returned to the client in XML format. In the event that no query parameter is supplied all records will be returned. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client. Input: String - username String - query Output: XmlDocument

GetPatientInfoByID This function will accept a patient id as input; query the database for a patient record with this id (via DAO.cs) and return the patient information in XML format. If id 0 is used as entry then a list of all patient will be displayed. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client. Input: String - username Long - PatientID Output: XmlDocument

DeletePatientByID This function will accept a patient id as input and, via DAO.cs, delete the patient record from the database. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client.

Page 13: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

13

Input: String - username Long - PatientID Output: XmlDocument

AddPatient This function will accept patient details (name, patient id, date of birth, blood pressure value and flu shot status) in XML format and store them in the database via DAO.cs. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client. Input: String - username XmlNode - patient_info Output: XmlDocument

EditPatient This function will be called in order to update an existing patient’s information (patient id, name, date of birth, blood pressure and flu shot status) via DAO.cs. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client. Input: String - username XmlNode - patient_info Output: XmlDocument

GetVisitInfoByPatientID This function will accept a patient id as input; query the database for a visit records related to this patient id (via DAO.cs) and return related visit(s) in XML format. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client. Input: String - username Long - PatientID Output: XmlDocument

GetVisitInfoByID This function will accept a visit id as input; query the database for a visit record with this id (via DAO.cs) and return visit information in XML format. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client. Input: String - username Long - idVisit Output: XmlDocument

Page 14: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

14

DeleteVisitByID This function will accept a visit id as input and, via DAO.cs, delete the visit record from the database. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client. Input: String - username Long - idVisit Output: XmlDocument

AddVisit This function will accept visit details in XML format and store them in the database via DAO.cs. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client. Input: String - username XmlNode - visit_info Output: XmlDocument

GetObservationInfoByVisitID This function will accept a visit id as input; query the database for a observation record associated with this visit id (via DAO.cs) and return observation information in XML format. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client. Input: String - username Long - idVisit Output: XmlDocument

GetObservationInfoByID This function will accept a observation id as input; query the database for a observation record associated with this observation id (via DAO.cs) and return observation information in XML format. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client. Input: String - username Long - idObservation Output: XmlDocument

DeleteObservationByVisitID This function will accept a visit id as input and, via DAO.cs, delete the observation record that is associated with this visit id from the database. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client.

Page 15: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

15

Input: String - username Long - idVisit Output: XmlDocument

AddObservation This function will accept observation details in XML format and store them in the database via DAO.cs. The function will also perform a check to ensure that the user calling the function is valid. If the user is not valid an error will be returned to the client. Input: String - username XmlNode - observ_info Output: XmlDocument

Security.cs The security class will be implemented to handle all authentication and authorization procedures required by the system. It will be used by EMRWebSerivice.asmx. Used External Modules: System

System.Data System.Collections System.Configuration System.Linq System.Web System.Web.Security System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts; System.Xml.Linq; System.Xml;

State Variables: SecurityElement Function(s) Description Login This function will accept the user’s username and password

and, via DAO.cs, query the database to check that the username and password are a valid combination. If the username and password are valid the function will return true otherwise false will be returned. Input: String - username String - password Output: bool

Check This function will be used to check that a user requesting a service has a valid session and has not timed out. If the session is still valid true will be returned. If the session is invalid false will be returned. Input: String - username Output:

Page 16: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

16

bool Logout This function will be used to log the user out of the web service.

It will destroy the user’s session. If the session is successfully terminated true will be returned. If there is an error terminating the session false will be returned. Input: String - username Output: bool

GetSecurtyAccessGrantedXml This function will be used to build the XML document that is returned to the client in the event of a successful authentication attempt. Input: N/A Output: XmlDocument

GetSecurtyAccessDeniedXml This function will be used to build the XML document that is returned to the client in the event of a failed authentication attempt. Input: N/A Output: XmlDocument

DAO.cs This class will be implemented in order to handle all database access required by the web service application. Some new data types is defined in this class. These datatypes are used for conviniet access to the database. These data types have the same structure to the tables in the database. Used External Modules: System

System.Data System.Configuration System.Linq System.Web System.Web.Security System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls System.Web.UI.WebControls.WebParts System.Xml.Linq Microsoft.Data.Odbc System.Text System.Xml

Data Type: CommonData Patient Visit Observation

Function(s) Description AddPatient This function will accept a patient record object containing the

patient’s information and a common data object which contains common record information of database like creating date and etc. It will then connect to the database and insert this record. If

Page 17: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

17

the insert is successful true will be returned. If the insert fails false will be returned. Input: Patient – patient CommonData - cdata Output: bool

EditPatient This function will accept a patient record object containing the patient’s information and a common data object which contains common record information of database like creating date and etc.It will then connect to the database and update the existing record. If the update is successful true will be returned. If the update fails false will be returned. Input: Patient – patient CommonData - cdata Output: bool

DeletePatientByID This function will accept a patient id. It will then connect to the database and delete the record indicated by the id. It does not physically remove the record. It just updates the deleted field in the record. If the delete is successful true will be returned. If the delete fails false will be returned. Input: Long - id Output: bool

GetPatientInfo This function will accept a query string as input. This string will be used to query all patient records in the database based on the patient name field. All records that match the query string will be returned in XML format (for example, a query string of “Sm” will return patients with the name “Smith” and “Small”). If the query string is empy, all patient records will be returned in XML format. Input: String - query Output: XmlDocument

GetPatientInfoByID This function will accept a patient id as input. It will connect to the database and then query it for a patient with the identifier supplied. It will then return the patients information in XML format. If the id entered is 0 then a list of all patients will be the output. Input: Long - id Output: XmlDocument

LoginCheck This function will accept a username and password. It will then connect to the database and query the user table in order to validate the username/password combination. If the credentials are valid true will be returned. If the credentials are invalid false

Page 18: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

18

will be returned. Input: String - username String - password Output: Bool

AddVisit This function will accept a visit record object containing the visit’s information and a common data object which contains common record information of database like creating date and etc. It will then connect to the database and insert this record. If the insert is successful true will be returned. If the insert fails false will be returned. Input: Visit – visit CommonData - cdata Output: bool

GetVisitInfoByPatientID This function will accept a patient id as input. It will connect to the database and then query it for all the visits of that patient. It will then return the visit(s) information in XML format. Input: Long - PatientID Output: XmlDocument

GetVisitInfoByID This function will accept a visit id as input. It will connect to the database and then query it for a visit with the identifier supplied. It will then return the patients information in XML format. Input: Long - id Output: XmlDocument

DeleteVisitByID This function will accept a visit id. It will then connect to the database and delete the record indicated by the id. It does not physically remove the record. It just updates the deleted field in the record. If the delete is successful true will be returned. If the delete fails false will be returned. Input: Long - id Output: bool

AddObservation This function will accept a observation record object containing the observation’s information and a common data object which contains common record information of database like creating date and etc. It will then connect to the database and insert this record. If the insert is successful true will be returned. If the insert fails false will be returned. Input: Observation – observ CommonData - cdata

Page 19: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

19

Output: bool

GetObservationInfoByVisitID This function will accept a visit id as input. It will connect to the database and then query it for the observation of that visit. It will then return the observation information in XML format. Input: Int - id Output: XmlDocument

GetObservationInfoByID This function will accept an observation id as input. It will connect to the database and then query it for the observation of that id. It will then return the observation information in XML format. Input: Int - id Output: XmlDocument

DeleteObservationByVisitID This function will accept a visit id as input. It will connect to the database and then query it for the observation associated with that visit id. It will then return the observation information in XML format. Input: Int - id Output: XmlDocument

WSCore.cs This class will be used to provide general XML formatting utility functions to be used by other classes and files within EMR web service system. Used External Modules: using System

using System.Data using System.Configuration using System.Linq using System.Web using System.Web.Security using System.Web.UI using System.Web.UI.HtmlControls using System.Web.UI.WebControls using System.Web.UI.WebControls.WebParts using System.Xml.Linq using System.Xml

Data Type: N/A Function(s) Description PatientTOXml This function will accept a patient object, extract the patient

record values from the object and format them as valid XML. The XML will be returned to the caller. This function is not complete yet. Input: Patient - patient

Page 20: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

20

Output: XmlDocument

XmlTOPatient This function will accept XML containing patient record data, extract the data from the XML and create a patient object based on this data. The patient object will be returned to the caller. Input: XmlNode - patient_info Output: Patient

GetSuccessXml This function will be used to create a generic success message in XML format. This message will be used to indicate that a request to the web service completed correctly. Input: N/A Output: XmlDocument

GetFailureXml This function will be used to create a generic failure message in XML format. This message will be used to indicate that a request to the web service failed. Input: N/A Output: XmlDocument

XmlTOVisit This function will accept XML containing visit record data, extract the data from the XML and create a Visit object based on this data. The Visit object will be returned to the caller. Input: XmlNode - visit_info Output: Visit

XmlTOObservation This function will accept XML containing observation record data, extract the data from the XML and create a Observation object based on this data. The Observation object will be returned to the caller. Input: XmlNode - observ_info Output: Observation

GetMySQLDate This function gets the C#’s DataTime object as input and returns the DataTime string in a format that can be used in MySQL database. Input: DateTime - input Output: string

Page 21: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

21

HLConverter.cs This class will be used to convert VT risk related data from the EMR into valid HL7 v3 format. This file needs to be completed. Used External Modules: using System

using System.Data using System.Configuration using System.Linq using System.Web using System.Web.Security using System.Web.UI using System.Web.UI.HtmlControls using System.Web.UI.WebControls using System.Web.UI.WebControls.WebParts using System.Xml.Linq using System.Xml

Data Type: N/A Function(s) Description XMLToHL7 This function will accept an XmlDocument containing the data

required by the VT Risk Estimator service as extracted from the EMR database. It will then convert this document to valid HL7 format and return the document to the caller as an XmlDocument. Input: XmlDocumnet Output: XmlDocument

4.3 Module 2 - EMR Database Here is the schema of the current system. Relation between tables has described in 2.3.

Figure 4-1 User Table

Page 22: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

22

Figure 4-2 Patient Table

Figure 4-3 Visit Diagram

Page 23: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

23

Page 24: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

24

Figure 4-4 Observation Table

As you can see each record of the table has a deleted row will trun into 1 when the user deletes the record. For preventing the physical removal of the records this technic can keep the record of the removed rows. This schema is only for the current system and is not a complete one. See Appendix 1 for details of a complete EMR system database schema. For extending the system this schema can be used.

4.4 Module 3 - EMR Web Service Client This section describes the files and functions required to implement the proof of concept EMR Web Service Client application. For detailed screen GUI designs see Appendix II.

Default.aspx(.cs) Default.aspx will be the home page of the web application. It will allow the user to login to the system. Used External Modules: System.Collections

System.Configuration System.Data System.Linq System.Web System.Web.Security System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls System.Web.UI.WebControls.WebParts System.Xml.Linq EMRWebApp.EMRWebReference System.Xml

Data Type: N/A

Function(s) Description btn_login_Click This function will be triggered when the user clicks “Sign in” on

the default.aspx page. Upon execution the function will validate the user’s credentials. If the credentials are valid the user will be redirected to the main (Main.aspx) EMR page. If the credentials are not valid an error message will be displayed indicating this fact. Input String - Textpassword String -Text Output: N/A

Page_Load If the user has already logged in he will be redirected to the main page because there is nothing to do in the default page. Input: N/A Output: N/A

Page 25: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

25

Main.aspx(.cs) Main.aspx will present the user with 2 functions: “Search” and “Add Patient”. It will act as the primary interface between the user and the EMR system. The search function will display a grid containing patient records that meet the search criteria. The “Add patient” function will allow the user to create a new patient record in the system. Used External Modules: System.Web.Security

System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls System.Web.UI.WebControls.WebParts System.Xml.Linq System.Xml System.IO

Data Type: N/A

Function(s) Description Page_Load This function will check to see if the user requesting the page is

authenticated. If they are then the page will be displayed. If not, the user will be redirected to AccessDenied.aspx. Input: N/A Output: N/A

btn_search_Click This function will accept the search text, call the web service search function and display the results to the user in a grid. If no search criteria are entered all valid records will be displayed. The search criteria will be the patient name field. Input: String - txt_search Output: N/A

btn_add_Click This function will redirect the user to AddPatient.aspx. Input: N/A Output: N/A

AccessDenied.aspx(.cs) AccessDenied.aspx will be displayed to the user if they attempt to access a page within the application without being appropriately authenticated. It will be a static error page. Used External Modules: System

System.Collections System.Configuration System.Data System.Linq System.Web System.Web.Security System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls System.Web.UI.WebControls.WebParts System.Xml.Linq

Page 26: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

26

Data Type: N/A

Function(s) Description N/A

AddPatient.aspx(.cs) AddPatient.aspx will allow the user to add a new patient record by entering the patient’s name, date of birth, and etc. The patient record will be saved when the user clicks the “Add this Patient” button. Used External Modules: System

System.Collections System.Configuration System.Data System.Linq System.Web System.Web.Security System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls System.Web.UI.WebControls.WebParts System.Xml.Linq

Data Type: N/A

Function(s) Description Page_Load This function will check if the user requesting the page is

authenticated. If they are then the page is displayed. If not, the user will be redirected to AccessDenied.aspx. Input: N/A Output: N/A

btn_add_Click This function will read the data that user has entered in the text boxes (name, date of birth, and etc.) and save them to the database via the EMR web service. It calls a function from the web service access layer to accomplish this. If the data entered is invalid an error message will be provided to the user. If the data is valid a confirmation message will be displayed. Input: N/A Output: N/A

EditPatient.aspx(.cs) This page will allow the user to edit an existing patient record. This page will be displayed when the user clicks the edit patient icon on Main.aspx. The user will be able to alter the patient’s name, date of birth, patient id, blood pressure and flu shot status. The changes will be saved when the user clicks the “Edit this patient” button. Used External Modules: System

System.Collections

Page 27: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

27

System.Configuration System.Data System.Linq System.Web System.Web.Security System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls System.Web.UI.WebControls.WebParts System.Xml.Linq

Data Type: N/A

Function(s) Description Page_Load This function will check if the user requesting the page is

authenticated. If they are then the page will be displayed. If not, the user will be redirected to AccessDenied.aspx. The function will also extracts the patient id value from the query string for use by the BindInfo function and then call BindInfo to load the patient data. Input: N/A Output: N/A

BindInfo This function will extract the selected patient data from the database via the EMR web service and then populate the page with the selected patient’s data. Input: N/A Output: N/A

btn_edit_Click This function will read the data that user has entered in the text boxes (name, date of birth, patient ID, blood pressure and flu shot status) and save them to the database via the EMR webervice. If the data entered is invalid an error message will be provided to the user. If the data is valid a confirmation message will be displayed. Input: N/A Output: N/A

ViewPatient.aspx(.cs) This page will allow the user to view the details of a patient record. The page will be displayed when the user clicks the “View Patient” icon on Main.aspx. From this page, the user will also be able to delete the record, edit the record . The id of patient will be passed through the request query string which will is ecoded through the Page_Load function. Used External Modules: System

System.Collections System.Configuration System.Data System.Linq System.Web

Page 28: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

28

System.Web.Security System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls System.Web.UI.WebControls.WebParts System.Xml.Linq

Data Type: N/A

Function(s) Description Page_Load This function will check if the user requesting the page is

authenticated. If they are then the page will be displayed. If not, the user will be redirected to AccessDenied.aspx. The function will also extract the patient id value from the query string for use by the BindInfo function and then call BindInfo to load the patient data. Input: N/A Output: N/A

BindInfo This function will extract the selected patient data from the database via the EMR web service and then populate the page with the selected patient’s data. Input: Long - _id Output: N/A

btn_delete_Click This function will delete the current patient record from the database via the EMR web service. If the deletion is successful a confirmation will be displayed for the user. If the deletion fails an error message will be provided. Input: Long - _id Output: N/A

btn_vtresults_Click This function will call the EMR Web Service in order to extract the required patient data from the database, format it as HL7 messages and request are risk estimation from the Risk Estimator Web Service. The received risk estimate will be displayed on the page for the user to view. Input: Long - _id Output: N/A

Logout.aspx(.cs) This page will be called when the user selects the “Log Out” link that appears on each page of the application. Used External Modules: System

Page 29: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

29

System.Collections System.Configuration System.Data System.Linq System.Web System.Web.Security System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls System.Web.UI.WebControls.WebParts System.Xml.Linq

Data Type: N/A

Function(s) Description Page_Load This function will clear and destroy the user’s session and then

redirect the user to Default.aspx (the login page). Input: N/A Output: N/A

AddVisit.aspx(.cs) AddVisit.aspx will allow the user to add a new visit record by entering the visit’s information. The patient record will be saved when the user clicks the “Add this Patient” button. Used External Modules: System

System.Collections System.Configuration System.Data System.Linq System.Web System.Web.Security System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls System.Web.UI.WebControls.WebParts System.Xml.Linq

Data Type: N/A

Function(s) Description Page_Load This function will check if the user requesting the page is

authenticated. If they are then the page is displayed. If not, the user will be redirected to AccessDenied.aspx. Input: N/A Output: N/A

btn_addVisit_Click This function will read the data that user has entered in the text boxes and save them to the database via the EMR web service. It calls a function from the web service access layer to accomplish this. If the data entered is invalid an error message will be provided to the user. If the data is valid a confirmation message will be displayed.

Page 30: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

30

Input: N/A Output: N/A

imgbtn_back_Click This button just gets back to viewvisit page. Input: N/A Output: N/A

ViewVisitsOfPatient.aspx(.cs) This page will allow the user to view the details of a visits record of a particular patient. From this page, the user will also be able to add a new visit or see all the details of a specific visit or request a VT Risk Estimate from the VT Risk Estimator web service. The id of patient will be passed through the request query string which will is ecoded through the Page_Load function. Used External Modules: System

System.Collections System.Configuration System.Data System.Linq System.Web System.Web.Security System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls System.Web.UI.WebControls.WebParts System.Xml.Linq

Data Type: N/A

Function(s) Description Page_Load This function will check if the user requesting the page

is authenticated. If they are then the page will be displayed. If not, the user will be redirected to AccessDenied.aspx. The function will also extract the patient id value from the query string for use by the BindInfo function and then call BindInfo to load the patient data. Input: N/A Output: N/A

BindInfo This function will extract the selected patient data from the database via the EMR web service and then populate the page with the selected patient’s data. Input: Long - _id Output: N/A

btn_vtresults_btn_addObservation_Click This function adds a new visit.

Page 31: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

31

Input: Long - _id Output: N/A

ViewVisit.aspx(.cs) This page will allow the user to view the details of a visit record which involves the observation information. From this page, the user will also be able to add a new observation or delete the current visit or observation or request a VT Risk Estimate from the VT Risk Estimator web service. The id of patient will be passed through the request query string which will is ecoded through the Page_Load function. Used External Modules: System

System.Collections System.Configuration System.Data System.Linq System.Web System.Web.Security System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls System.Web.UI.WebControls.WebParts System.Xml.Linq

Data Type: N/A

Function(s) Description Page_Load This function will check if the user requesting the page

is authenticated. If they are then the page will be displayed. If not, the user will be redirected to AccessDenied.aspx. The function will also extract the patient id value from the query string for use by the BindInfo function and then call BindInfo to load the patient data. Input: N/A Output: N/A

BindInfo This function will extract the selected patient data from the database via the EMR web service and then populate the page with the selected patient’s data. Input: Long - _id Long - _pid Output: N/A

btn_GetVTResults_Click This function will redirect the visit id to the getvtresults page so that the visit information will be sent to CDSS webservice and the results will be displayed there. See the page documentation for more information.

Page 32: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

32

Input: Long - _id Long - _pid Output: N/A

btn_addObservation_Click This function handles the click on add observation button and will redirect the page there. Input: N/A Output: N/A

btn_deleteVisit_Click This function handles the delete visit click on the page. It will use the functions in the Web Service Access Layer to delete the visit using the EMR webservice. Input: N/A Output: N/A

btn_deleteObervation_Click This function handles the delete observation click on the page. It will use the functions in the Web Service Access Layer to delete the observation using the EMR webservice. Input: N/A Output: N/A

imgbtn_back_Click This function handles the click on the back button and just goes back to the visit list of the patient. Input: N/A Output: N/A

ViewVTResult.aspx(.cs) This page will allow the user to view the CDSS risk analysis results. This page uses a XSLT file which can be found in xml directory to convert the data into a viewable format. Used External Modules: System;

System.Collections; System.Configuration; System.Data; System.Linq; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.HtmlControls; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts; System.Xml.Linq; System.Xml; System.Xml.Xsl; System.IO;

Page 33: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

33

Data Type: N/A

Function(s) Description Page_Load This function will check if the user requesting the page

is authenticated. If they are then the page will be displayed. If not, the user will be redirected to AccessDenied.aspx. The function will also extract the patient id value from the query string for use by the BindInfo function and then call BindInfo to load the patient data. It will then get the VT risk results from the Webservice access layer and uses the CDSSoutputStyleSheet.xslt to convert the xml into html format and shows it on the screen in the end. Input: N/A Output: N/A

WsAccessLayer.cs This moduls accesses the EMR webservice and handles the issues around this connection. Several datatype for handling patient, visit and observation is also defined here. The file has been divided into some regions to make code editing easier. First region is DataAccessClasses which is the definiton of the classes. The second region is SecurityManagment which you can find the security related functions here. PatientManagment is the region which you can find patient management functions in here. VisitManagment is the region that handles the issues around visit mangement. ObservationManagment which you can find the observation mangment function in it. The last region is VTResult which includes the functions about CDSS result. Used External Modules: System;

System.Data; System.Configuration; System.Linq; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.HtmlControls; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts; System.Xml.Linq; EMRWebApp.EMRWebReference; System.Xml; System.Collections; EMRWebApp.CDSSWebRef;

Data Type: Patient, Visit, Observation, Drug (for further extention)

Function(s) Description Login This function just uses the login service to check the

username. It will parse the resulting xml and if the login is successful will return true and false otherwise.

Page 34: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

34

Input: String – username String - password Output: bool

Logout This function just uses the logout service to logout the username. It will parse the resulting xml and if the logout is successful will return true and false otherwise. Input: String – username Output: bool

GetPatientByID This function gets the id of a patient and will uses the GetPatientInfoByID service to get the patient information. It will parse the resulting xml into a patient object and returns it for furthur use. Input: String - username Long - id Output: Patient

Search This function uses the GetPatienInfo service to query the patients in the EMR service and after that it will get the resulting xml into a dataset so that it can be easily shown in a asp datagrid. Input: String - username String - query Output: DataSet

AddPatient This function gets a patient object and will generate a xml with it and sends it to the EMR service to use the AddPatient service and adds the new patient. It will return true if emr adding will finish with no error and false otherwise. Input: String - username Patient - patient Output: bool

EditPatient This function gets patient info through a Patient object and generates the related xml. The xml will be sent to web service to use the EditPatient service. This service will be used to edit the patient info on the service. It will return true if it succeds to do so or false for otherwise. Input: String - username Patient - patient

Page 35: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

35

Output: bool

DeletePatient This function will get the id of a patient and will call the DeletePatientByID service to delete the patient through web service. It returns true for success and false for failure. Input: String – username Long - id Output: bool

AddVisit This function gets a visit object and will generate a xml with it and sends it to the EMR service to use the AddVisit service and adds the new visit. It will return true if emr adding will finish with no error and false otherwise. Input: String - username Visit - visit Output: bool

DeleteVisit This function will get the id of a visit and will call the DeleteVisitByID service to delete the visit through web service. It returns true for success and false for failure. Input: String – username Long - id Output: bool

GetVisitByID This function gets the id of a visit and will uses the GetVisitInfoByID service to get the visit information. It will parse the resulting xml into a visit object and returns it for furthur use. Input: String - username Long - id Output: Visit

GetVisitByPatientID This function gets the id of a patient and will uses the GetVisitInfoByPatientID service to get the visit information of that patient. There can one or many visits related to that patient. So the result is a DataSet so that it can be used for a datagrid. It will parse the resulting xml into a visit object and returns it for furthur use. Input: String - username Long - id Output: DataSet

AddObservation This function gets an observation object and will

Page 36: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

36

generate xml with it and sends it to the EMR service to use the AddObservation service and adds the new visit. It will return true if emr adding will finish with no error and false otherwise. Input: String - username Observation - observ Output: bool

GetObservationByID This function gets the id of aa obsrevation and will uses the GetObservationInfoByID service to get the observation information. It will parse the resulting xml into a Observation object and returns it for furthur use. Input: String - username Long - id Output: Observation

GetObservationByVisitID This function gets the id of a visit and will uses the GetObservationInfoByVisitID service to get the observation information related to that visit. It will parse the resulting xml into a visit object and returns it for furthur use. Input: String - username Long - id Output: Observation

DeleteObservationbyVisitID This function will get the id of a visit and will call the DeleteObservationByVisitID service to delete the observation through web service. It returns true for success and false for failure. Input: String – username Long - id Output: bool

GenerateVTXML This function gets the patient’s and visit’s id as input. This function will first get the patient and visit and observation information. It will start generating the VT Xml according to rules in that VT uses and will return that Xml as output. Input: String – username Long - PatientID Int - idVisit Output: XmlDocument

GetVTXMLResult This function will uses the CDSS webservice. It sends the generated Xml to it and will get the resulting Xml as a string and sends that as output.

Page 37: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

37

Input: XmlDocument - indoc Output: string

The other classes does not have a significant code that worth describing.

Page 38: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

38

Appendix I EMR Database Schema -- ----------------------------------------------------- -- Table `MacEMR`.`User` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`User` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`User` ( `idUser` VARCHAR(25) NOT NULL , `FirstName` VARCHAR(50) NOT NULL , `LastName` VARCHAR(50) NOT NULL , `Email` VARCHAR(50) NOT NULL , `Active` BOOLEAN NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL , `CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NOT NULL , `ModifiedOn` DATETIME NOT NULL , PRIMARY KEY (`idUser`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`Role` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`Role` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`Role` ( `idRole` INT NOT NULL , `RoleName` VARCHAR(50) NOT NULL , `RoleDescription` VARCHAR(250) NOT NULL , `Active` BOOLEAN NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL , `CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NOT NULL , `ModifiedOn` DATETIME NOT NULL , PRIMARY KEY (`idRole`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`UserRole` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`UserRole` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`UserRole` ( `idUser` VARCHAR(25) NOT NULL , `idRole` INT NOT NULL , `Active` VARCHAR(45) NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL , `CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NULL , `ModifiedOn` DATETIME NULL , PRIMARY KEY (`idUser`, `idRole`) , INDEX `fkUserRoleUser` (`idUser` ASC) , INDEX `fkUserRoleRole` (`idRole` ASC) , CONSTRAINT `fkUserRoleUser` FOREIGN KEY (`idUser` ) REFERENCES `MacEMR`.`User` (`idUser` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fkUserRoleRole` FOREIGN KEY (`idRole` ) REFERENCES `MacEMR`.`Role` (`idRole` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`Screen`

Page 39: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

39

-- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`Screen` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`Screen` ( `idScreen` INT NOT NULL , `ScreenName` VARCHAR(50) NOT NULL , `ScreenDesciption` VARCHAR(250) NULL , `Active` BOOLEAN NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL , `CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NOT NULL , `ModifiedOn` DATETIME NOT NULL , PRIMARY KEY (`idScreen`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`RoleScreen` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`RoleScreen` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`RoleScreen` ( `idRole` INT NOT NULL , `idScreen` INT NOT NULL , `ScreenAccessLevel` VARCHAR(50) NOT NULL , `Active` BOOLEAN NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL , `CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NOT NULL , `ModifiedOn` DATETIME NOT NULL , PRIMARY KEY (`idRole`, `idScreen`) , INDEX `fkRoleScreenRole` (`idRole` ASC) , INDEX `fkRoleScreenScreen` (`idScreen` ASC) , CONSTRAINT `fkRoleScreenRole` FOREIGN KEY (`idRole` ) REFERENCES `MacEMR`.`Role` (`idRole` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fkRoleScreenScreen` FOREIGN KEY (`idScreen` ) REFERENCES `MacEMR`.`Screen` (`idScreen` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`Client` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`Client` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`Client` ( `idClient` INT NOT NULL , `HealthCardNumber` VARCHAR(50) NOT NULL , `FirstName` VARCHAR(50) NOT NULL , `LastName` VARCHAR(50) NOT NULL , `MiddleName` VARCHAR(50) NULL , `AddressStreet1` VARCHAR(100) NOT NULL , `AddressStreet2` VARCHAR(100) NULL , `AddressCity` VARCHAR(50) NOT NULL , `AddressProvince` VARCHAR(50) NOT NULL , `AddressCountry` VARCHAR(50) NOT NULL , `PostalCode` VARCHAR(6) NOT NULL , `HomePhone` VARCHAR(10) NOT NULL , `MobilePhone` VARCHAR(10) NULL , `Fax` VARCHAR(10) NULL , `Email` VARCHAR(10) NOT NULL , `Gender` VARCHAR(2) NOT NULL , `BirthDate` DATE NOT NULL , `Active` BOOLEAN NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL ,

Page 40: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

40

`CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NOT NULL , `ModifiedOn` DATETIME NOT NULL , PRIMARY KEY (`idClient`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`ClientCareProvider` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`ClientCareProvider` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`ClientCareProvider` ( `idUserID` VARCHAR(25) NOT NULL , `idClientID` INT NOT NULL , `Active` BOOLEAN NULL , `Deleted` BOOLEAN NULL , `CreatedBy` VARCHAR(25) NULL , `CreatedOn` DATETIME NULL , `ModifiedBy` VARCHAR(25) NULL , `ModifiedOn` DATETIME NULL , PRIMARY KEY (`idUserID`, `idClientID`) , INDEX `fkClientCareProviderUser` (`idUserID` ASC) , INDEX `fkClientCareProviderClient` (`idClientID` ASC) , CONSTRAINT `fkClientCareProviderUser` FOREIGN KEY (`idUserID` ) REFERENCES `MacEMR`.`User` (`idUser` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fkClientCareProviderClient` FOREIGN KEY (`idClientID` ) REFERENCES `MacEMR`.`Client` (`idClient` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`Appointment` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`Appointment` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`Appointment` ( `idAppointment` INT NOT NULL , `idClient` INT NOT NULL , `idUser` VARCHAR(25) NOT NULL , `AppointmentTime` TIME NOT NULL , `AppointmentDate` DATE NOT NULL , `AppointmentReason` VARCHAR(250) NOT NULL , `Active` BOOLEAN NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL , `CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NOT NULL , `ModifiedOn` DATETIME NOT NULL , PRIMARY KEY (`idAppointment`) , INDEX `fkAppointmentClientID` (`idClient` ASC) , INDEX `fkAppointmentUserID` (`idUser` ASC) , CONSTRAINT `fkAppointmentClientID` FOREIGN KEY (`idClient` ) REFERENCES `MacEMR`.`Client` (`idClient` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fkAppointmentUserID` FOREIGN KEY (`idUser` ) REFERENCES `MacEMR`.`User` (`idUser` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`ClientMedication` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`ClientMedication` ;

Page 41: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

41

CREATE TABLE IF NOT EXISTS `MacEMR`.`ClientMedication` ( `idClientMedication` INT NOT NULL , `idClient` INT NOT NULL , `ATCCode` VARCHAR(50) NOT NULL , `MedicationName` VARCHAR(50) NOT NULL , `MedicationType` VARCHAR(50) NOT NULL , `MedicationDescription` VARCHAR(250) NULL , `MedicationStrength` DOUBLE NOT NULL , `MedicationStrengthUnit` VARCHAR(50) NULL , `MedicationDoseage` VARCHAR(50) NOT NULL , `MedicationFrequency` VARCHAR(50) NOT NULL , `MedicationInstruction` VARCHAR(250) NOT NULL , `AllergyOrIntolerence` BOOLEAN NOT NULL , `RxRepeats` INT NULL , `RxQuantity` INT NULL , `RxDecisionReason` VARCHAR(250) NULL , `Current` BOOLEAN NOT NULL , `Active` BOOLEAN NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL , `CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NOT NULL , `ModifiedOn` DATETIME NOT NULL , PRIMARY KEY (`idClientMedication`) , INDEX `fkClientMedicationClientID` (`idClient` ASC) , CONSTRAINT `fkClientMedicationClientID` FOREIGN KEY (`idClient` ) REFERENCES `MacEMR`.`Client` (`idClient` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`Visit` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`Visit` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`Visit` ( `idVisit` INT NOT NULL , `idClient` INT NOT NULL , `idUser` VARCHAR(25) NOT NULL , `idAppointment` INT NULL , `VisitDate` DATE NOT NULL , `VisitTime` TIME NOT NULL , `VisitType` VARCHAR(250) NOT NULL , `VisitNote` VARCHAR(250) NULL , `Intervention` BOOLEAN NOT NULL , `Active` BOOLEAN NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL , `CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NOT NULL , `ModifiedOn` DATETIME NOT NULL , PRIMARY KEY (`idVisit`) , INDEX `fkVisitClientID` (`idClient` ASC) , INDEX `fkVisitUser` (`idUser` ASC) , INDEX `fkVisitAppointment` (`idVisit` ASC) , CONSTRAINT `fkVisitClientID` FOREIGN KEY (`idClient` ) REFERENCES `MacEMR`.`Client` (`idClient` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fkVisitUser` FOREIGN KEY (`idUser` ) REFERENCES `MacEMR`.`User` (`idUser` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fkVisitAppointment` FOREIGN KEY (`idVisit` ) REFERENCES `MacEMR`.`Appointment` (`idAppointment` ) ON DELETE NO ACTION

Page 42: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

42

ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`Observation` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`Observation` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`Observation` ( `idObservation` INT NOT NULL , `idVisit` INT NOT NULL , `MI` BOOLEAN NULL , `MIFirst` DATE NULL , `MILast` DATE NULL , `ACS` BOOLEAN NULL , `ACSFirst` DATE NULL , `ACSLast` DATE NULL , `Angina` BOOLEAN NULL , `AnginaFirst` DATE NULL , `Revascularization` BOOLEAN NULL , `RevascularizationFirst` DATE NULL , `RevascularizationLast` DATE NULL , `Stroke` BOOLEAN NULL , `StrokeFirst` DATE NULL , `StrokeLast` DATE NULL , `PVD` BOOLEAN NULL , `PVDFirst` DATE NULL , `Diabetes` BOOLEAN NULL , `DiabetesFirst` DATE NULL , `Hypertension` BOOLEAN NULL , `HypertensionFirst` DATE NULL , `Hypercholesterolemia` BOOLEAN NULL , `HypercholesterolemiaFirst` DATE NULL , `FluShotDoneThisSeason` BOOLEAN NULL , `SmokingAvgCigsPerDay` INT NULL , `SmokingAverage` DATE NULL , `SmokingCumulativePackYears` INT NULL , `SmokingCeased` DATE NULL , `ExerciseAvgMinutesPerWeek` INT NULL , `BaselineDietScore` INT NULL , `FruitVegAvgServiingsPerDay` INT NULL , `BaselinePsychScore` INT NULL , `DepressionCategory` VARCHAR(50) NULL , `StressCategory` VARCHAR(50) NULL , `LocusOfControlCategory` VARCHAR(50) NULL , `MedicationAdherenceGenProb` VARCHAR(50) NULL , `MedicationAdherenceBeliefs` VARCHAR(50) NULL , `MedicationAdherenceRecall` VARCHAR(50) NULL , `MedicationAdherenceAccess` VARCHAR(50) NULL , `HeightCM` INT NULL , `WeightKG` DOUBLE NULL , `WaistCircumferenceCM` INT NULL , `HipCircumferenceCM` INT NULL , `WaistHipRatio` DOUBLE NULL , `WaistHipRatioExceedsThreshold` BOOLEAN NULL , `SBPMmHg` INT NULL , `DBPMmHg` INT NULL , `BPDate` DATE NULL , `PulseBPM` INT NULL , `FootExamNeuropathy` VARCHAR(50) NULL , `FootExamIschemia` VARCHAR(50) NULL , `FootExamUlcer` VARCHAR(50) NULL , `FootExamInfection` VARCHAR(50) NULL , `FootExamOtherAbnormality` VARCHAR(50) NULL , `FootExamDate` DATE NULL , `EyeExamDiabeticRetinopathy` VARCHAR(50) NULL , `EyeExamHypertensiveRetinopathy` VARCHAR(50) NULL , `EyeExamOtherAbnormality` VARCHAR(50) NULL , `EyeExamDate` DATE NULL , `HbA1c` DOUBLE NULL , `HbA1cDate` DATE NULL ,

Page 43: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

43

`GlucoseMM` DOUBLE NULL , `GlucoseMMDate` DATE NULL , `LDLMm` DOUBLE NULL , `LDLMmDate` DATE NULL , `HDLMm` DOUBLE NULL , `HDLMmDate` DATE NULL , `TotalCholesterolMm` DOUBLE NULL , `TotalCholesterolDate` DATE NULL , `TriglyceridesMm` DOUBLE NULL , `TriglyceridesDate` DATE NULL , `UrineAlbuminCreatinineRatioMgPermmol` DOUBLE NULL , `UrineAlbuminCreatinineRatioDate` DATE NULL , `UrineAlbuminMgPerDay` DOUBLE NULL , `UrineAlbuminDate` DATE NULL , `Active` BOOLEAN NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL , `CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NOT NULL , `ModifiedOn` DATETIME NOT NULL , PRIMARY KEY (`idObservation`) , INDEX `fkObservationVisitID` (`idVisit` ASC) , CONSTRAINT `fkObservationVisitID` FOREIGN KEY (`idVisit` ) REFERENCES `MacEMR`.`Visit` (`idVisit` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`Recommendation` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`Recommendation` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`Recommendation` ( `idRecommendation` INT NOT NULL , `idVisit` INT NOT NULL , `CounseledDiet` BOOLEAN NULL , `CounseledExercise` BOOLEAN NULL , `CounseledSmokingCessation` BOOLEAN NULL , `CounseledDiabetes` BOOLEAN NULL , `CounseltedOther` BOOLEAN NULL , `Active` BOOLEAN NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL , `CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NOT NULL , `ModifiedOn` DATETIME NOT NULL , PRIMARY KEY (`idRecommendation`) , INDEX `fkRecommendationVisitID` (`idVisit` ASC) , CONSTRAINT `fkRecommendationVisitID` FOREIGN KEY (`idVisit` ) REFERENCES `MacEMR`.`Visit` (`idVisit` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `MacEMR`.`Referral` -- ----------------------------------------------------- DROP TABLE IF EXISTS `MacEMR`.`Referral` ; CREATE TABLE IF NOT EXISTS `MacEMR`.`Referral` ( `idReferral` INT NOT NULL , `VisitID` INT NOT NULL , `ReferredFootExam` BOOLEAN NULL , `ReferredEyeExam` BOOLEAN NULL , `ReferredEndocrinologist` BOOLEAN NULL , `ReferredDiabetesEducation` BOOLEAN NULL , `ReferredInternist` BOOLEAN NULL , `ReferredCardiologist` BOOLEAN NULL , `ReferredNeurologist` BOOLEAN NULL ,

Page 44: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

44

`ReferredDietician` BOOLEAN NULL , `ReferredOther` BOOLEAN NULL , `Active` BOOLEAN NOT NULL , `Deleted` BOOLEAN NOT NULL , `CreatedBy` VARCHAR(25) NOT NULL , `CreatedOn` DATETIME NOT NULL , `ModifiedBy` VARCHAR(25) NOT NULL , `ModifiedOn` DATETIME NOT NULL , PRIMARY KEY (`idReferral`) , INDEX `fkReferralVisit` (`VisitID` ASC) , CONSTRAINT `fkReferralVisit` FOREIGN KEY (`VisitID` ) REFERENCES `MacEMR`.`Visit` (`idVisit` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB;

Page 45: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

45

Appendix II EMR Screen Design

Default.aspx

Page 46: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

46

Main.aspx

Page 47: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

47

AccessDenied.aspx

AddPatient.aspx

Page 48: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

48

EditPatient.aspx

Page 49: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

49

ViewPatient.aspx

Page 50: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

50

ViewVTResult.aspx

Page 51: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

51

ViewVisitsOfPatient.aspx

Page 52: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

52

ViewVisit.aspx

Page 53: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

53

AddVisit.aspx

Page 54: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

54

AddObservation.aspx

Page 55: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

55

Appendix III Security One of the most important and formidable issues in designing eHealth systems is the security. In this system because of presence of web services, security is even a greater challenge. In this system to overcome this problem these consideration has been taken into account. First our system core, which is EMR Web Service, has the essential security considerations, which eliminates the unauthorized access to the web service. This way we start the security form the lowest possible level. For using this web service login is required. Moreover each time a user wants to use the system, he needs to send a valid username which has logged in before so that the information he access to are guaranteed to be safe. The second part of the system, which is EMR Web Service Client each time a user logs in, checks with the Web Service to see if he is a valid user. So EMR Web Service Client is fully coordinated with EMR Web Service security. Actually the Web Service Client cannot work with Web Service in any unsecure way. So all of the clients that work with the Web Service need to take Web Service security design into account. In the prototype of the system, data transfer is not being encrypted while transferred. Surly final version of the system, should consider data encryption in order to increase the security level to an acceptable level.

Page 56: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

56

Appendix IV Editing in Visual Studio For editing in visual studio everything is just done by clicking on the .sln file in the source directory. However there are some tips that can be quiet useful. For working with web client install the web service at first using the installation document and then just update the web reference to there and start editing the client. For editing the webservice open both client and web service in two separate visual studio windows and connect the client to the open server and this way you can track both and figure out what is happening in both them.

Page 57: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

57

Appendix V Future Expansion Here is a list of development that can help the system to be complete:

1. Adding the HL7 v3 functionalities to the system. Adding the HL7 convertion modules to convert the messages into HL7 and Vis versa.

2. Adding the edit observation and visit functionality to both web service and the client which means adding the service and database access and also making the GUI.

3. Because of the long list of observation finding a way to shorten the GUI to only needed fields and hiding the fields that are not relevant in the view visit page.

4. Adding other functionalities to the EMR such as the drugs capability to the system, which means adding the table to database and service to web service and GUI to the client for each functionality.

5. Adding more security constraint to the system to make the system more secure. One idea is adding the pages for creating the new user for the system and also developing the lost password and such functionalities.

6. Adding some ajax based technices to make working with system smoother.

Page 58: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

58

GLOSSARY

• CDSS – Clinical Decision Support System

• EMR – Electronic Medical Records

• HDL Cholesterol - High-density lipoproteins

• HL7 – Health Level 7

• .NET – Microsoft software development and deployment technology

• ASP – Active Server Pages

• SNOMED CT - Systematized Nomenclature of Medicine -- Clinical Terms

• SOAP – Simple Object Access Protocol

• UDDI - Universal Description, Discovery and Integration

• VT – Vascular Tracker

• WSDL – Web Service Definition Language

• XML – Extensible Mark-up Language

Page 59: McMaster(Service,basedeHealth Integration(Environment ...ehealth/cas/MacSeie/Documents_files/Deve… · not, alert the physician so that action can be taken. As shown in Figure 1

59

REFERENCE [1] Micorost Developer Network - http://msdn.microsoft.com/en-ca/library/zw4w595w.aspx [2] CAS757_Project HL7 Message Development.pdf