MASARYK UNIVERSITY

FACULTY OF INFORMATICS

E-health cloud specificities: How to deploy infrastructure for e-health cloud applications

Master’s Thesis

Sokolova Evgeniya

Brno, 2017

Declaration

Hereby I declare, that this paper is my original authorial work, which I have worked out by my own. All sources, references and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source.

...... Evgeniya Sokolova, December 30, 2016

i

Abstract

The thesis focuses on eHealth cloud specificities and infrastructure deployment for eHealth cloud applications. The Theoretical background chapter contains fundamental information about cloud computing technologies and eHealth. This chapter also describes differences and similarities between regular and eHealth cloud. The Analysis chapter is focused on the selection of Cloud Management Software and medical application for eHealth cloud, based on comparison analysis. The Implementation part describes the design of eHealth cloud infrastructure to run eHealth cloud application and its implementation process, which also includes system testing and the following discussion regarding implementation results.

Keywords Cloud computing, eHealth, eHealth cloud, Cloud Management Software, OpenStack, Electronic Health Records.

ii

Acknowledgement

I would like to express my gratitude to my supervisor Mgr. Kamil Malinka, Ph.D for all his useful comments, remarks and inspiration during my work on this thesis. Furthermore, I would like to thank Mgr. Tomáš Sapák for all his help and consultations. I thank to my family for providing me with unfailing support through the process of writing this thesis.

iii

TABLE OF CONTENT

1 INTRODUCTION ...... 1

1.1 Structure of the thesis ...... 3

2 THEORETICAL BACKGROUND ...... 4

2.1 Cloud computing ...... 4 2.1.1 Elements of cloud computing ...... 4 2.1.1.1Essential characteristics ...... 4 2.1.1.2Service models ...... 5 2.1.1.3Deployment models ...... 6

2.2 Study of eHealth ...... 9 2.2.1 eHealth forms ...... 9 2.2.2 EHR vs EMR vs PHR ...... 11 2.2.2.1EHR deployment models in EU ...... 13 2.2.3 Information security requirements for eHealth ...... 15

2.3 eHealth cloud ...... 18 2.3.1 Benefits of eHealth cloud ...... 18 2.3.2 Challenges of eHealth cloud ...... 20 2.3.3 Differences between regular and eHealth cloud ...... 24

3 ANALYSIS ...... 26

3.1 Deployment model of eHealth cloud ...... 26

3.2 Cloud Management Software ...... 26 3.2.1 Eucalyptus architecture ...... 28 3.2.2 OpenNebula architecture ...... 29 3.2.3 CloudStack architecture ...... 31 3.2.4 OpenStack architecture ...... 33 3.2.5 Comparison analysis ...... 34 3.2.6 Conclusion of CMS comparison analysis ...... 41

3.3 Electronic Health Records software ...... 44 3.3.1 EHR functionality ...... 45 3.3.2 ClearHealth...... 45 3.3.3 Vista ...... 46 3.3.4 FreeMED ...... 46 3.3.5 OpenEMR...... 46 3.3.6 Conclusion of EHR comparison analysis ...... 47

iv

4 IMPLEMENTATION ...... 47

4.1 Test environment ...... 47

4.2 OpenStack installation...... 48

4.3 OpenEMR requirements ...... 51

4.4 OpenEMR architecture design ...... 52

4.5 Implementation of OpenEMR architecture ...... 56

4.6 eHealth cloud implementation issues ...... 59 4.6.1 OpenStack installation issues ...... 59 4.6.2 OpenEMR installation issues ...... 59

4.7 System testing ...... 59

4.8 Discussion...... 61

5 CONCLUSION ...... 63

6 LITERATURE ...... 65

7 APPENDIX...... 74

v

List of figures

Figure 1: Cloud service models [2] ...... 6 Figure 2: Illustration of private cloud in healthcare domain [13] ...... 7 Figure 3: Illustration of public cloud in healthcare domain [13] ...... 8 Figure 4: Illustration of hybrid cloud in healthcare domain [13]...... 9 Figure 5: Electronic Health Records diagram [6] ...... 12 Figure 6: EHR architectural models [12] ...... 14 Figure 7: Security objectives in eHealth [12] ...... 15 Figure 8: Common root causes of security incidents [12] ...... 23 Figure 9: Eucalyptus conceptual architecture [19] ...... 30 Figure 10: Opennebula conceptual architecture [21] ...... 31 Figure 11: Cloudstack deployment architecture [22] ...... 32 Figure 12: Cloudstack architecture [22] ...... 32 Figure 13: Openstack conceptual architecture [46] ...... 35 Figure 14: eHealth cloud infrastructure ...... 51 Figure 15: eHealth cloud model ...... 52 Figure 16: eHealth cloud application infrastructure – Normal setup ...... 56 Figure 17: eHealth cloud application infrastructure – Server failure ...... 57 Figure 18: eHealth cloud application network topology in OpenStack ...... 58 Figure 19: eHealth cloud virtual instances in OpenStack ...... 74 Figure 20: HAProxy statistic report ...... 75 Figure 21: OpenEMR logging page ...... 76

List of tables

Table 1: Comparison of open source cloud management software ...... 41 Table 2: Openstack releases [46] ...... 43 Table 3: Test cases for ehealth cloud system ...... 61

vi

1. Introduction

Nowadays cloud computing technologies are widely implemented in different areas. Despite the fact that cloud computing is actively used around the world, it still stays as a hot topic for discussions. Many researches have been done to identify its benefits, challenges, and risks. However, the use of cloud computing technologies in healthcare domain stands apart from any other domain. It has a specific name that identifies its association with the medical sector – eHealth cloud. Compare to a regular cloud, eHealth cloud is less popular and is not widely researched as a regular cloud. One of the main goals of this work is to identify eHealth cloud specificities from application, environment and infrastructure point of views. Based on this information will be designed eHealth cloud infrastructure, which is also one of the goals of this thesis.

This work determines what eHealth cloud is as well as describes its main components – cloud computing and eHealth. It is important to know their features and characteristics, because those technologies are combined together to provide eHealth cloud functionality. The thesis also considers eHealth cloud benefits and challenges. This information will help to identify differences and similarities between regular and eHealth cloud, which is one of the goals of the thesis.

The first main component of eHealth cloud is cloud computing technology. Cloud computing often referred as simply “the cloud,” is the delivery of on-demand computing resources, everything from applications to data centers, over the Internet on a pay-as-you- go model. It has five essential characteristics, such as on-demand self-service, broad network access, resource pooling, rapid elasticity and measured services. Cloud service providers offer many cloud services, according to the National Institute of Standards and Technology (NIST) they can be divided into three standard models: Software as a Service (SaaS), Platform as a Service (PaaS) and Infrastructure as a Service (IaaS). Cloud computing in healthcare domain is represented in three deployment models: Private cloud, Public cloud, and Hybrid cloud.

1

The second main component of eHealth cloud is eHealth. According to the World Health Organization: “eHealth is the cost-effective and secure use of information and communication technologies in support of health and health-related fields, including health- care services, health surveillance, health literature and health education.” [3]. eHealth uses modern information technologies in order to improve medical services.

eHealth cloud is the implementation of cloud computing technologies in healthcare sector. It is the use of cloud technologies for the medical purposes. eHealth cloud can improve patient care, reduce operational cost and optimize IT resources utilization, it can be used to support researchers, national security and strategic planning; cloud allows to enhance security safeguards.

However, implementation of cloud computing technologies in the medical sector can be challenging. Generally, implementation of cloud computing technologies in any domain has its risks and healthcare domain is not an exception. Cloud computing challenges, such as data availability, data reliability, interoperability, etc. should be also considered in healthcare domain, with the emphasis, that mistakes in eHealth cloud will have a big impact on society in general. For this reason, the use of cloud computing technologies in healthcare sector stays apart from other cloud computing domains. Healthcare is still a new area for cloud computing technologies with many open questions, especially from the legal and standard point of view.

In order to implement cloud computing technologies in healthcare sector, it should be selected Cloud Management Software (CMS) to design cloud infrastructure and which can be installed and used in a cloud environment.

Nowadays, there is a wide choice of Cloud Management Software on the IT market. CMS for the medical services should correspond to eHealth dynamic nature and provide wide functionality to manage cloud infrastructure. Selection of Cloud Management Software for eHealth services, based on comparison analysis, is one of the goals of this work. For the analysis of CMS for eHealth cloud will be considered the most popular today open source solutions: Eucalyptus, OpenNebula, CloudStack, and OpenStack.

2

The next component that should be selected in order to establish eHealth cloud environment is eHealth service. For this purpose, I selected one of the most important and significant eHealth service - Electronic Heath Records (EHR), which is an electronic version of patients’ medical data.

The last but not least goal of this thesis is the implementation of eHealth cloud application on proposed eHealth cloud infrastructure and as a result establishing eHealth cloud environment.

1.1 Structure of the thesis

The thesis is divided into several chapters; each chapter is dedicated to the specific topic in order to accomplish all goals for this work. Chapter 2 is focused on the theoretical information related to eHealth cloud technologies. It is split in several sub-sections where each section is dedicated to one of eHealth cloud components. The chapter provides background information about cloud computing technologies and eHealth. In addition, there can be found information about differences and similarities between regular and eHealth cloud.

Chapter 3 provides analysis of open source cloud management software and eHealth cloud applications. The chapter is focused on the selection of software solutions for eHealth cloud components.

Chapter 4 covers implementation process of eHealth cloud. It describes installation steps of cloud management software and eHealth cloud application. In the chapter are presented eHealth cloud infrastructure and eHealth cloud application infrastructure. The chapter also covers system testing process and implementation results discussion. Chapter 5 covers the conclusion part of the thesis. There can be found the results the work.

3

2. Theoretical background

This chapter covers background information related to eHealth cloud technologies. The Theoretical chapter is divided into three main parts. The first two parts cover information about two main components of eHealth cloud: cloud computing and eHealth. Those technologies are combined together to provide the functionality of eHealth cloud. The third part of this chapter is dedicated to eHealth cloud specifically. It covers requirements, benefits, and challenges in order to satisfy needs of eHealth cloud in the final solution. In addition, in the chapter are discussed differences and similarities between regular cloud and eHealth cloud technologies.

2.1 Cloud computing

There are many definitions of cloud computing, in this work I will use the official definition, provided by the National Institute of Standards and Technology (NIST): “Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction” [1].

2.1.1 Elements of cloud computing

2.1.1.1 Essential Characteristics NIST identifies five essential characteristics of cloud computing [1]: On-demand self-service allows a customer to increase and decrease computing capabilities like servers, network, and storage based on current workloads without human interaction with a service provider. Broad network access provides a customer the possibility to have access to IT services at any time, from anywhere and through any user-chosen device.

4

Resource pooling allows cloud service providers to pool computing resources to serve multiple users by dynamically assigning and reassigning different physical and virtual resources (storage, networking, processing, bandwidth, and virtual machines) based on customers’ workloads. Although consumers do not have knowledge about the location of the provided resources, they have possibility to specify it. Rapid elasticity ensures that cloud applications have the exact amount of needed resources. It provides functionality to provision and releases cloud resources on demand. Measured service allows cloud system to measure automatically computing resource usage. It can also be monitored, controlled and reported with transparency for client and cloud provider.

2.1.1.2 Service Models

Cloud service providers offer many cloud services and according to NIST they can be divided in three standard models. Each service model assigns certain responsibility to the cloud service provider and allows customers to focus more on their business. Below are presented cloud service models [1]:

Software as a Service (SaaS) represents a software distribution model in which customer uses applications running on a cloud provider’s infrastructure. Access to applications can be gotten from different client platforms. A customer does not manage and does not have control of cloud infrastructure, including servers, network, storage or individual applications.

Platform as a Service (PaaS) represents a cloud service model where cloud provider provides to customers a platform with the ability to run, manage and develop applications. A customer does not manage or control background infrastructure, but has control of applications.

5

Infrastructure as a Service (IaaS) represents a cloud service model where resources are provided as a service. A consumer does not manage the cloud infrastructure but has control of storage, applications, operating systems and limited control of selected networking components (host firewalls.). Services which are provided to customers include storage, networks and other resources where the customer is able to deploy and run the software, including an operating system and applications. Cloud service models are shown in Figure 1.

Figure 1: Cloud Service Models [2]

In addition, cloud computing technologies can be divided into several groups based on deployment models, which can be found in the upcoming section.

2.1.1.3 Deployment models

Deployment models divide cloud computing into different categories, based on proprietorship, access, and size. In this section are considered cloud computing deployment models, for the purpose of selecting a deployment model for eHealth cloud.

6

Cloud computing in healthcare domain is represented in three deployment models: private cloud, public cloud, and hybrid cloud. Cloud computing deployment models work in healthcare domain in the same way like in any other domain [13].

Private cloud Resources in private cloud are usually accessible and owned only by a single company. And it means that cloud infrastructure is commonly managed by the organization or by the third party company. Private cloud is considered as the most secure cloud deployment model to store Electronic Medical Records. Access to data have only medical staff members within one healthcare organization, who can be considerate as trusted users, except some exception [13]. Illustration of private cloud is shown in Figure 2.

Figure 2: Illustration of private cloud in healthcare domain [13]

Public cloud Public cloud infrastructure, compare to the private deployment model, can be used by multiple clients. In this case, cloud services are provided by Cloud Service Provider (CSP) in a virtualized environment and accessible over a public network (the Internet).

7

Public cloud services, in terms of eHealth, can be accessible for many healthcare organizations, such as hospitals, insurance companies, research institutions simultaneously. Electronic Health Records stored in public cloud and managed by CSP have high privacy risk. EHRs can be accessed from inside (organization) as well as from outside (through the Internet). It represents a vulnerability to malicious attacks [13]. Illustration of public cloud is shown in Figure 3.

Figure 3: Illustration of public cloud in healthcare domain [13]

Hybrid cloud Hybrid cloud deployment model employs private and public cloud services, which can be provided by different Cloud Service Providers and connected together through the standardized technologies. Hybrid cloud combines different types of cloud services in order to meet customer needs and to create integrated, automated and well-managed computing environment. Medical organizations can use private and public cloud services. Although, this cloud deployment model is not considered to be secured; therefore, it is necessary to implement special security protection technics [13]. Illustration of hybrid cloud deployment model is shown in Figure 4.

8

Figure 4: Illustration of hybrid cloud in healthcare domain [13]

The next section covers information about the second main component of eHealth cloud – eHealth.

2.2 Study of eHealth

There are several definitions of eHealth, but there is no single definition because of its complexity and dynamic nature. So, for this work was selected the official definition given by the World Health Organization [3]:

“eHealth is the cost-effective and secure use of information and communication technologies in support of health and health-related fields, including health-care services, health surveillance, health literature, and health education.”

As it is seen from the definition eHealth is a wide sphere that combines many technologies. eHealth stays on the edge of information technologies and healthcare in order to improve healthcare with the IT services and systems.

2.2.1 eHealth forms

eHealth is represented in different forms [4]:

Electronic health records (EHR): EHR is an electronic version of patients’ medical data that provides access to different healthcare professionals

9

Telemedicine: Telemedicine provides distance healthcare with the use of telecommunication and information technologies.

Mobile health (mHealth): mHealth is the use of mobile gadgets, such as mobile phones, tablet computers in medical purposes. mHealth applications are used to collect healthcare data, deliver medical information to healthcare professionals and patients.

eLearning: it is the use of Information and communications technology for learning purposes. It can improve education quality and availability.

Continuing education in information and communication technologies: it is the distribution of courses for health professionals. It includes e-publication, open access, digital literacy and also social networks.

Standardization and interoperability: it is the implementation of standards in order to use integrated management of health systems.

According to the article “eHealth, a European Challenge” [5], all eHealth applications can be divided into four groups: eCare, eLearning, eSurveillance and eGovernment/eAdministration. eCare:  Access and update of electronic healthcare records  Emergency medicine and vital sign disasters monitoring, such as earthquakes or plane crashes  Remotely promoted and monitored preventative healthcare programs eLearning:  Remote patient learning for preventative care and disease management  Remote professional learning and competence monitoring  Remote access to high-quality health information including current literature eSurveillance:  Public health and disease reporting  Real-time epidemiological analysis  Research and electronic health statistical analysis 10 eGovernance/eAdministration:  Billing and administrative data management to support the healthcare process  Aggregation and reporting of administrative data including quality, clinical outcomes, etc.  Improvement of decision making through access to information Users of eHealth systems are divided into the following groups:  Healthcare professionals/healthcare providers  Citizens  Policy makers  Insurers / payers / purchasers  Scientists / academics  Educators

2.2.2 EHR vs EMR vs PHR

As we can see eHealth sphere is huge, consists of many systems and technologies. One of eHealth services should be selected in order to create eHealth cloud environment. For this purpose, in this work was selected one of the most important and significant part of eHealth - Electronic Heath Records (EHR). However, EHR is selected as an example of eHealth services that can be installed in a cloud environment. The results of this work can be applied to other eHealth services which are designed to run in a cloud, for example, ePrescription software or eLearning.

Usually, Electronic Heath Records (EHR), Electronic Medical Records (EMR) and Personal Health Records (PHR) are used interchangeably, although there is a difference between them. EMR is a record about the medical episode: it can be a record about patient treatment in a hospital or in any ambulatory environment; this record can be shared within one medical organization. EHR is a part of EMR that is shared between users outside of the medical organization where the record was created. EMR parts are shared between insurance companies, government agencies, and other healthcare providers [6, 58]. Electronic Health Records diagram is shown in Figure 5.

11

Figure 5: Electronic Health Records Diagram [6]

Some parts of EHR can be owned and controlled by a patient; those parts are called . According to the National Alliance for Health Information technology EHR, EMR and PHR are “electronic records of health-related information on an individual” [7], however:

“Electronic Medical Record can be created, gathered, managed, and consulted by authorized clinicians and staff within one healthcare organization.”

conforms to nationally recognized interoperability standards and that can be created, managed, and consulted by authorized clinicians and staff across more than one healthcare organization.”

“Personal Health Record conforming to nationally recognized interoperability standards and that can be drawn from multiple sources while being managed, shared, and controlled by the individual.”

This work is focused on EHR software running on cloud infrastructure. Importantly, EHR in European Union countries is found in different deployment models which are presented in the upcoming section.

12

2.2.2.1 EHR deployment models in EU

For the purpose of improving healthcare sector, the European Union countries are moving from “health data capture” to “health data analysis” and “health data sharing” [12]. The “Data sharing” technology uses healthcare networks to share healthcare information in the secure way and make it available for the patients and medical professionals.

EHR is represented in different countries in different deployment models depending on country features, characteristics and preferences. Usually, EHR deployment models in Europe are centralized, represented on a national level or decentralized, represented on a regional level.

In the countries with centralized EHR, all data collected from local sources is stored in the centralized location. In this case, all responsibilities for the system belong to one person or organization, it can be Ministry of Health or the national eHealth center. All health organizations report directly to the responsible authority. For instance, this deployment model is implemented in the Czech Republic and Greece where healthcare is coordinated by the Ministry of Health and organized on the national level.

In the countries with decentralized EHR, part or entire responsibility is assigned to the regional authorities. In this model, there is one central clinical data repository and every region has local clinical database In a few countries, regions have their own EHR systems and legislation. For example, Spain has decentralized/region eHealth system, where electronic health care is decentralized between 17 regions with regional EHR deployment. Region service providers need to collaborate beyond their borders in order to provide eHealth services [12, 60]. Centralized and decentralized EHR deployment models are presented in Figure 6.

13

Figure 6: EHR architectural models [12]

Regions have their own EHR systems and legislation. Decentralized EHR deployment model is implemented in Spain, where electronic health care is decentralized between 17 regions. Region service providers need to collaborate beyond their borders in order to provide eHealth services [12].

Hospital-system driven is another example of EHR deployment model, where healthcare organizations develop their own eHealth infrastructure and application. In Geneva, the university hospitals implemented online electronic health records to store exchanged data between physicians, hospitals, insurance companies and laboratories. Now HUG (Geneva University Hospitals) covers all medical patients including long-term rehabilitation and psychiatry. In 2013 HUG had records about more than 900.000 patients’ visits and more than 6.000.0000 laboratory tests. Nowadays, HUG includes clinical and non-clinical processes, covers all process of ordering including laboratory test, drugs and care, administrative information and medical documentation [12].

Cross-border deployment model allows data exchange between different countries, while services are deployed centrally. This deployment model was used for cross-border ePrescription and eDispensing projects between Sweden and Finland. Pilot service was

14

implemented between pharmacies in those countries. Although the amount of exchanged electronic prescriptions was average, many features came up from the pilot project. Currently, they are being solved under the openMedecine project which will provide effective electronic prescriptions exchange between countries [12].

eHealth cloud infrastructure should be universal for any EHR deployment model. It should be possible to implemented on the national, regional level or even between countries.

The deep security analysis of eHealth systems is beyond this work. However, security is an important part of eHealth, general security requirements for eHealth should be considered; it can be found in the next section.

2.2.3 Information security requirements for eHealth

In the report “Security and Resilience in eHealth. Security Challenges and Risks”, the European Union Agency for Network and Information Security identified several security objectives in eHealth and rated them based on their priorities [12]. It is represented in a graph where 8 is the maximum priority in eHealth security and 0 is the lowest security priority. Security objectives in eHealth are presented in Figure 7.

Rate the security objectives according to your priorities (in average)

8 7 6 5 4 3 2 1 0 Risk Awareness Business Supplier Network Human Access control Incident Physical and Management raising and continuity and chain/third security resources management environmental trainigs disaster party security security security recovery

Figure 7: Security Objectives in eHealth [12]

15

Below I would like to describe each security objective individually, according to its priority in Figure 4.

Incident management has one of the top priorities in eHealth security. Some countries implemented incident reporting mechanisms in order to improve security planning and measures. For example, in France all eHealth organizations report incidents directly to the security officer of the Ministry of Health. In Ireland incidents are managed by vendors from the regional helpdesks. However, the action plan for resolving incidents is based on unofficial templates due to the lack of standardized processes.

Physical and environmental security are the second top priorities in eHealth. It is the wide fields that include infrastructure protection from physical disasters and area protection where raiders cannot get access to the secure data. The physical protection of national infrastructure is covered on the national level in each country. The file servers are located in secured areas with safeguards and authorized access and protected from disasters, such as fire, flood, etc.

Network security includes network architecture and network equipment that should be sufficient and should meet security requirements. In addition, network security includes secure data transmission. Moreover, many countries establish separate connection platform specifically for eHealth network.

Access control is one of the most important security objectives in eHealth sphere. It controls data integrity and privacy; guarantees that only authorized trained users have access to the secure information. Some of the requirements for secure access are listed below:  Each patient should have a unique identifier in the system  Access to the system is approved only if the patient is recognized as a system user  eHealth users should obtain chip or pin. For example, Estonia uses three-level authentication system: knowledge-based authentication, the user is identified based on user name and password; device-based authentication, the user is identified by the server based on the chip card, magnetic card or key; biometrical authentication, the user is identified by the voice, fingerprint.

16

 Sharing of access credentials is forbidden.  Implementation of “role based” access for each user, which defines to what data the specific user has an access. For example, insurance companies have access only to billing information and do not have access to the medical records.  Access control requires systematic auditing control of access. For example, it checks if the doctor has “patient relationship” with the person whose medical records he accesses.  The use of access levels to classify the data. For instance, in Switzerland there are three data classes: administrative data seen by all professionals, utility data, seen by all healthcare providers and health data. Health data is divided into three groups: basic, stigmatizing and secret data which can be available for healthcare provider if the patient granted access.  All records about access to patient’s medical records should be saved; it includes system alerts when access is not justifiable. A responsible authority should go through the alerts and takes corresponding actions

Business continuity and disaster recovery is the next security objective in eHealth. Organizations should perform systematic software, data, and operational configuration files backup in order to archive system availability and fast disaster recovery.

Supplier chain/third party security can also have an impact on the eHealth security overall. A few countries have already put in place service level agreements with ICT that imposes security level requirements and reporting of incidents.

Awareness raising and trainings are also the essential part in eHealth information security. Trainings increase knowledge about information security processes and reduce the number of human errors.

Risk management includes identification of potential threats, critical assets, and risk analysis of potential incidents.

eHealth systems should follow international standards.

17

The systematic audit should be performed for eHealth system in order to verify that system follows general and IT security standards. For example, in France hospitals are obliged to perform the audit every 2-3 years by an independent organization. If the hospital does not correspond to the security requirements it is not allowed to treat patients.

The next sections combine two wide topics which were discussed previously: cloud computing and eHealth. The upcoming section provides an overview and definition of eHealth cloud.

2.3 eHealth cloud

There is no specific definition of eHealth cloud, however, the research “e-Health Cloud Privacy Concerns and Mitigation Strategy” [13] provides an overview of the eHealth cloud and it claims that “the eHealth cloud can be regarded as a standard platform that offers standardized services to manage large volumes of health-data”. eHealth cloud stores and processes healthcare data originated and used by different cloud users, such as healthcare providers, pharmacies, insurance providers.

Based on the literature review and related information to cloud computing and eHealth can be determined that eHealth cloud is a regular cloud computing technology used for the medical purposes.

The next section covers information about benefits of eHealth cloud for healthcare organizations, patients, and society in general.

2.3.1 Benefits of eHealth cloud

This section provides the beneficial aspect of cloud computing technologies in healthcare, the reasons why it should be implemented and used.

Improvement of patient care: eHealth cloud provides global access to the patients’ medical records with 24/7 availability. It allows healthcare professionals to access patients’ data from any location at any time and provide the suitable treatment [8].

18

Cost reduction and increase of efficiency: The use of cloud computing technologies exempts healthcare providers to keep hardware inside the organization. Instead of purchasing hardware, healthcare organizations pay for that to the Cloud Service Providers according to the pay-as-you-go model. Moreover, implementation of cloud computing technologies reduces overall cost and it provides scalability and elasticity to healthcare services. Energy consumption can be reduced up to 30% due to the optimization of the server utilization, which can in turn reduce expenses by up to 60% compared to non-cloud solutions [13, 61].

Support of researchers, national security, and strategic planning: In the eHealth cloud can be stored a massive amount of medical information that can be globally accessed. All the information can be stored on the integrated platform, offered by eHealth cloud and be beneficial for healthcare sector. The information can be used in the researchers to discover diseases, to create and improve new medicine, medical procedures, and healthcare services. Moreover, monitoring system implemented in eHealth cloud can use data to monitor the spreading of dangerous diseases, it can predict epidemics and determine infected areas as well as help to identify the reasons. In addition, medical data stored in eHealth cloud can be used by decision makers, for the strategic planning of medical facilities, healthcare services’ needs, such as hospital equipment, lab and operation rooms instruments, etc. [8].

Enhancement of security safeguards: Information security is a strong and a weak side of eHealth cloud. On one hand, in eHealth cloud can be stored a huge amount of medical data attractive for attackers. The leakage of data from eHealth cloud can have a big impact on citizens. From another hand, cloud security protection can be more robust. For instance, cloud providers can allocate more IT resources in order to avoid server failure and ensure disaster recovery. Furthermore, Cloud Service Provider can provide better security and more professional equipment compare to healthcare IT services [61].

Access to it expertise on the cloud: Cloud computing technology exempts healthcare providers from keeping IT technical team to support medical systems. Cloud Service Providers have IT professionals to support eHealth services. It allows healthcare organizations to get a professional support of medical services at any time from everywhere, instead of building a team within the organization [61].

19

As it is seen from this section cloud computing can significantly improve healthcare sector. However, implementation of cloud technology is followed by the list of challenges and obstacles, which are covered in the next section. Cloud Service Providers should know those challenges and establish mechanisms to prevent their occurrence. Also, healthcare organizations should consider those risks before moving to the cloud.

2.3.2 Challenges of eHealth cloud

This section covers eHealth cloud technical and non-technical challenges. The technical challenges are described below [8]:

Availability: Data and system availability represent a high risk for eHealth sphere. Consequently, healthcare providers require high availability of eHealth services, regardless of hardware fails, changes, reconfiguration or security vulnerability. However, cloud services are delivered through the Internet, for this IT infrastructure within an organization can offer better system availability that services running in cloud.

Data/Service Reliability: All eHealth systems require high system reliability. Healthcare organizations might use cloud services from different providers which increases a chance to have incorrect data. Moreover, this represents a risk for healthcare sector, because based on these data they make their decisions regarding one patient or all society. Data in eHealth cloud should be “error-free”. Software, hardware, networking fails should not affect data in eHealth cloud

Data management: eHealth cloud can store and share a lot of medical records and some data can be replicated in different locations. eHealth services require secure and reliable access to medical information. It requires from eHealth cloud infrastructure to have storage service that provides fault tolerance and support of many languages to simplify data processing.

Scalability: eHealth cloud services should be scalable, in order to handle a big amount of data. Scalability can be possible by increasing the amount of compute resources,

20 such as storage, network connections and compute nodes. Moreover, it should be possible to automatically resize virtualized hardware resources based on services’ workloads. In addition, the performance of eHealth services should not be affected regardless of the amount of data.

Flexibility: eHealth cloud is used by many healthcare organizations with different users, functions, management requirements. Consequently, eHealth cloud infrastructure and services should be flexible to be configured for different specifications. Furthermore, it should also provide the possibility to add new services and implement changes.

Interoperability: healthcare organizations can use services from different cloud service providers and one cloud provider can provide services to several healthcare organizations. Accordingly, eHealth cloud should provide interoperability, which involves the definition of framework, protocols/API with other Cloud Service Providers to facilitate the process of servers and data integration between different CSPs. One of the approaches to archive interoperability is to use Service-Oriented Architecture for implementing eHealth cloud. SOA uses standardized models and protocols to make services available without concern about infrastructure or implementation details.

Security: eHealth cloud services are used by many healthcare providers and should be protected by authentication and access control cloud services, including mechanisms to secure traffic between cloud and healthcare providers. In addition, cloud service provider should not have access to healthcare provider’s data. Moreover, different healthcare institutions have different security and policy requirements for cloud services which should be considered by eHealth cloud service provider.

Privacy: Data privacy is an essential factor for healthcare organizations and at the same time it is one of the biggest concerns in eHealth systems. While eHealth cloud services can be provided by different cloud providers and shared among many healthcare organizations using cloud technologies, the risk of data leakage is increasing. For instance, social organizations, insurance companies, government, healthcare organizations and patients require access to the specific parts of healthcare data and it is important to provide them the certain access to data and protect the rest of it.

21

Maintainability: eHealth cloud provides services to hundreds of healthcare providers which makes system maintenance complicated, due to different requirements and characteristics of healthcare organizations. In spite of the fact, that requirements might be different, the maintenance of infrastructure, platform or software in the cloud should be performed without negative impact to any cloud service. In other words, eHealth cloud should provide easy and reliable maintenance.

Incident management: In the report “Security and Resilience in eHealth. Security Challenges and Risks”, the European Union Agency for Network and Information Security published a research about common reasons of security incidents in eHealth, which includes human errors, natural phenomena, malicious actions (DSoS attack, etc) and system failures. The results are presented in Figure 8.

Figure 8: Common root causes of security incidents [12]

22

As it is seen from Figure 8, the number of reported incidents connected with system failure and human errors is equal. To “human errors” group also belong malicious actions caused by negligence that can make infrastructure vulnerable. Statistics shows the necessity to educate healthcare providers to use the system in secure manner.

The non-technical group of eHealth cloud challenges is described below [8]: Organizational change: Movement towards eHealth cloud will bring a lot of changes in healthcare organization including organization documentation, processes, and policies.

Legislation and standards: eHealth cloud suffers from a lack of standards for medical informatics, policies and transformation methods. However, there are standards for medical informatics that can be applied in eHealth cloud to enable interoperability between different organizations. The International Classification of Diseases tenth revision (ICD-10) proposed by the World Health Organization (WHO) includes classification list with codes of diseases, signs, abnormal findings, social conditions and complains. Categorization of clinical medicine for storing and/or retrieving records is called Systematized Nomenclature of MEDicine (SNOMED). The International Organization for Standardization's (ISO) Technical Committee 215 (TC 215) [15] works on compatibility and interoperability in Health Informatics and Communication Technology. The International (HL7) [10] organization is focused on the exchange, integration, sharing and retrieval standards of electronic healthcare information. It defines standards for eHealth infrastructures. Both organizations are also focused on formats for documents exchange and nomenclature of medical data objects [11].

Data ownership: Ownership of medical data is another challenge for eHealth cloud with many open questions. According to the future development of eHealth systems, access to eHealth systems should have doctors, medical personnel, patients and it creates a lot of complications. There are a lot of discussions about data protection in eHealth system: Who should manage EHRs? Should the person have full control on his data? Who else may have an access to patient’s EHRs? What if a person is in a critical state and nobody else has an access to his data? Who should have the right to edit EHRs? etc. Those questions should be answered according to legislation and data protection in every country.

23

Privacy, trust and liability issues: In eHealth cloud environment there is a big risk of data loss, data leakage as well as a lack of knowledge about medical data location. Data loss or data leakage can cause serious problems for the healthcare provider.

Usability and end user experiences: Movement to eHealth cloud requires special trainings for healthcare organizations to introduce a new way of working and make people feel confident with using eHealth services.

As it is seen from this section cloud computing can bring not only benefits but also challenges to healthcare sector. This work is focused on cloud services availability challenge, as one of the most critical for healthcare sector.

Cloud computing has many established security mechanisms to protect cloud environment. In order to protect eHealth cloud from possible issues, we should determine eHealth cloud differences and similarities with the regular cloud. Therefore, the next section is focused on differences and similarities between cloud computing technologies in healthcare and in other domains.

2.3.3 Differences between regular and eHealth cloud

Cloud computing technologies offer many benefits for their customers and they are used in different domains for different purposes. For instance, it is used by banks, airline and insurance companies, in IT industry and etc. However, the use of cloud computing technologies in healthcare sector stays separately from any other domain. The reason is that eHealth is recognized as a critical sector by most of the countries and according to the European Union Agency for Network and Information Security [12], it should be protected on the national level. The incidents in eHealth sphere may have a huge impact on the society.

According to the National Institution of Standards and Technology [1], cloud computing is represented in private, public and hybrid deployment models. From the section 2.1.1.3 is seen that cloud computing in healthcare sector is represented in the same deployment models like in any other domain.

24

Cloud computing technology has many technical and non-technical challenges. The list of cloud computing challenges can be found in many resources. For example, the report “Cloud Computing in the Public Sector” performed by Cisco Internet Business Solutions Group [68], describes challenges of cloud computing, such as security, availability, interoperability, privacy, etc. The same challenges are applied to the cloud computing in healthcare sector and can be found in the section 2.3.2.

The document “Cloud Computing security requirements guide (SRG)” performed by Defense Information Systems Agency (DISA) for the Department of Defense (DoD) [69], is focused on security requirements for cloud computing technologies. It includes the following security objectives: access control ensures that only authorized users have access to data; all incidents in the system should be reported and handled by incident management group; disaster recovery mechanisms should be implemented to restore data and services in case of system incidents; physical security should be established to protect cloud infrastructure from physical damage. Cloud computing information security requirements in healthcare sector are similar to the cloud security requirements in any other sphere and can be found in section 2.2.3. More information about cloud computing information security requirements can be found in the following resource [69].

Nonetheless, healthcare industry is a new sphere for cloud computing with many open questions, especially from the legal and standards point of view. There are institutions working to develop standards in the eHealth, including CEN/TC 251, DICOM, HL7, ISO/TC 215, ISO/IEEE. However, in contrast to a regular cloud, eHealth cloud is still under development and experiences the lack of standards.

Based on the analysis above can be made a conclusion that cloud computing technologies in healthcare sector work identically in any other domain. In literature eHealth cloud is addressed as a realization of cloud computing technologies in healthcare, not a separate technology. Which means that it has similar service models, essential characteristics and deployment models. This chapter covered all necessary theoretical information for eHealth cloud, including its main parts: cloud computing and eHealth.

25

Here was defined that eHealth cloud is the use of cloud computing technologies in healthcare domain. Also in this chapter were considered eHealth cloud implementation challenges and benefits. This information is needed for the future analysis, which is provided in the next chapter.

3. Analysis

The main goals of analysis part are to analyze and select Cloud Management Software and Electronic Health Records software for eHealth cloud infrastructure. Here is also selected Deployment model for eHealth cloud. The chapter is divided into several sections: deployment model for eHealth cloud, Cloud Management Software and Electronic Health Records software. The results of analysis chapter are used for designing eHealth cloud infrastructure.

3.1 Deployment model for eHealth cloud

Incidents in eHealth systems and services can have a huge society impact. According to ENISA research, in most of European Union countries healthcare is recognized as critical sector and should be protected on the national level [12]. Therefore, security is the main aspect when selecting a deployment model for the eHealth cloud. According to the discussion in the section 2.2.2.1 EHR deployment models in EU, a private cloud can be considered as the most secure deployment model. The Private cloud is the solution for the organizations which work with critical secure data, like eHealth systems. In addition, it allows to customizing infrastructure based on requirements from healthcare provider which can be more complicate by using a public cloud. Therefore, private cloud deployment model is chosen for the eHealth cloud infrastructure.

3.2 Cloud management software

eHealth cloud is found in private, public and hybrid deployment models for commercial and open source use. Nowadays, IT market proposes a wide choice of cloud

26 management software (CMS) that’s why it is difficult for cloud customers to select a suitable solution for their business as there are many cloud features and characteristics that need to be taken into consideration. In fact, customers look for reliable, modern and flexible technology cloud management software that will allow them to adapt to the current infrastructure and will bring a new value to the business. According to the survey “2015 the future of Open Source” [17], 78% of businesses use open source solutions. Open source solutions provide the possibility to customize software according to the specific customer needs. It can be obtained for free. Usually open source solutions have strong community support and fast development. Open source software has dynamic nature and follows modern technologies.

The main purpose of this section is to identify the suitable CMS for the private eHealth cloud. There are researchers in comparison of cloud management software which help customers to select the suitable solution for their business. I have identified possible CMS that can be used to manage private eHealth cloud. The decision was made based on literature review. In addition, into consideration were taking the survey results published by .com, where 550 open source cloud computing experts identified the most popular open source IaaS solutions [16]. Thus, for the analysis were selected OpenStack, CloudStack, OpenNebula and Eucalyptus cloud management software.

Cloud Management Software for eHealth cloud should be reliable from the technological point of view and provide wide functionality for the end users. It should also be able to adjust to dynamic nature of eHealth sector and to react fast to any changes.

Firstly, in this section, I would like to discuss the architecture of cloud management software starting with an introduction of the basic elements of cloud software that helps to understand better the differences in its functionality. Secondly, I will focus on the comparison of CMS where I will describe common features and differences. In the conclusion part, I will choose cloud management software for the private eHealth cloud based on the previous discussion.

27

3.2.1 Eucalyptus architecture

Eucalyptus is an open source CMS compatible with Amazon Web Services (AWS). It provides IaaS solutions for private and hybrid clouds. Eucalyptus architecture has five main software components which are shown in Figure 9.

Cloud Controller provides AWS interface for users and interacts with other Eucalyptus infrastructure components to manage compute, networking and storage resources. Using the interface clients can perform cluster scheduling, for example, they can choose a cluster for running a new virtual machine. There can be only one Cloud Controller per cloud that handles authentication, accounting, reporting and quota management.

Scalable Object Storage (SOS), also known as Walrus, is equivalent to AWS Simple Storage Server (S3). There can be only one Walrus per cloud that provides persistent storage to virtual machines in the cloud. There can be stored any type of data, such as machine images, snapshots and serves files.

Cluster Controller is a frontend for each cluster in Eucalyptus cloud, it communicates with Storage Controller (SC) and with one or more Node Controllers (NC) and it is responsible for managing and execution VMs and SLAs for each cluster. It also gathers the information about running VMs and it is responsible for scheduling a new VM to a specific NC.

Storage Controller manages virtual machines’ volumes and snapshots within a cluster.

Node Controller interacts with the hypervisor, OS, and cluster controller and at the same time maintains running VMs’ instances on each node. NC downloads and caches images from Object Storage as well as creates and caches VM instances.

28

Figure 9: Eucalyptus conceptual architecture [19]

More information about Eucalyptus architecture can be found at the following resources [19, 20].

3.2.2 OpenNebula architecture

OpenNebula is a stable Cloud Management Software that can be used for private, public and hybrid clouds. OpenNebula has a good usability. Compare to other CMS it is easy to install, update and manage as well as it has a friendly design.

The main components of OpenNebula are frontend, hosts, image repository and networking that can be analyzed in details looking at OpenNebula architecture shown in Figure 10.

Frontend machine holds OpenNebula installation and executes OpenNebula services. Frontend daemon called Oned, schedules VMs, manages virtual networks and VMs. Frontend drivers allow connecting different storages and monitoring techniques. Frontend machine should have a direct access to image repository storage and network connection to all hosts.

29

Hosts are physical machines with configured hypervisors which provide resources for VMs.

Image repository manages VMs’ images that should be accessible through the frontend while images can be transferred to hosts for using on VMs.

Physical network infrastructure supports VLAN for VMs. For better integration with existing data centers, OpenNebula provides a customizable network which manages, monitors hypervisors through the front end daemon and moves VMs images

Default network configuration connects VM network interface to the physical host bridge, to offer network connection to VMs between different hosts.

Figure 10: OpenNebula conceptual architecture [21]

More information about OpenNebula cloud platform architecture can be found at the following resources [21, 18].

30

3.2.3 CloudStack architecture

CloudStack is an open source Infrastructure as a Service platform for private and public clouds. It supports many hypervisors and each cloud may have multiple hypervisors implementations. CloudStack performs automatic network and storage configuration for each VM deployment. CloudStack deployment architecture consists of two parts: Management server and Cloud Infrastructure which are shown in Figure 11.

Management server manages resources, such as IP addresses, storage devices, hypervisors, and VLANs. A typical CloudStack architecture is shown in Figure 12 which consists of the following elements:

The region is a collection of one or more geographically close located zones managed by one or more management servers. By grouping zones into regions, a cloud may archive higher availability and scalability. The user can deploy VMs to multiple regions and if one of them is not available, the service will still be available from another region.

The zone is a single datacentre that consists of one or more pods and secondary storage. Hosts in one zone have direct access to each other without firewall while the connection between two hosts that belong to different zones is performed through VPN.

 The pod is a rack of hardware that consists of several cluster(s) and layer-2 switch. Hosts which are located in the same pod belong to the same subnet.

 The secondary storage is used within one zone to store disk templates, snapshots, and ISO images.

 The cluster consists of one or more hosts and primary storage. Hosts within one cluster have identical hardware, run the same type of hypervisor and are in the same subnet and have the common primary storage. VMs instances can be moved from one host to another within one cluster without service interaction.

31

 A host is a physical machine with a configured hypervisor within a cluster. It provides resources to run VMs, such as CPU, memory, storage, and networking.

 The primary storage provides storage resources to store disk volumes for all VMs in a cluster while secondary storage provides resources for storing templates, ISO images, and disk volumes snapshots.

Figure 11: CloudStack deployment architecture [22]

Figure 12: CloudStack architecture [22]

More information about CloudStack architecture can be found at the following resource [22].

32

3.2.4 OpenStack architecture

OpenStack is the most popular open source cloud management software that supports private and public clouds. It controls large pools of compute, storage and networking resources through a data center, managed through a dashboard [23]. The mission of OpenStack project is “to produce the ubiquitous Open Source Cloud Computing platform that will meet the needs of public and private clouds regardless of size, by being simple to implement and massively scalable” [24].

OpenStack has a modular architecture where every service is developed as an individual project and all projects are integrated together to provide full functionality of OpenStack. Each service has an application programming interface in order to simplify the integration. OpenStack has seven main components: compute (Nova), block storage (Cinder), networking (Neutron), image service (Glance), object storage (Swift), identity service (Keystone) and dashboard (Horizon). OpenStack conceptual architecture is shown in Figure 13.

Compute (Nova), compute node is responsible for managing compute instances life cycle, including creation, configuration, scheduling and deactivation of VMs’ instances on demand.

Network (Neutron) provides network connectivity to OpenStack components. It provides services, such as IP address management, DHCP, DNS and security groups (network access rules which are defined in firewall rules).

Object Storage (Swift), object storage provides support for storing and retrieving data. It is used to store static data such as media files, VM images as well as backup files.

Block Storage (Cinder), provides support for persistent block storage for running instances. It manages block devices as volumes. Cinder allows volume creation, release, attachment to the virtual instances, creation of volume snapshots and creation volume from the image.

33

Image service (Glance), image service stores and retrieves virtual machine disk images. It provides API to access the images.

Dashboard (Horizon), the dashboard provides a web interface to interact with underlying OpenStack components and perform operations such as launch of VMs, assignation of IP addresses and configuration of access rules.

Identity (Keystone) service, identity service provides authentication and authorization to OpenStack cloud.

Figure 13: OpenStack conceptual architecture [46]

More information about OpenStack architecture can be found at the following resource [25].

3.2.5 Comparison analysis

The comparison analysis of this work is based on literature review and related works which helped to identify important features and characteristics of Cloud Management Software [14, 15, 18]. In the section will be discussed the following features of CMS:

34

 Physical host management  Virtual machine management  Virtual machine image management  Virtual network management  User management  Hypervisor  Quota  Scheduling types  Fault tolerance  Cloud interface

Those features provide the most important functionality for any cloud environment. The considered features allow to create flexible, reliable, secure infrastructure for cloud services and protect it from possible challenges, such as services availability, data privacy and etc. The more features are provided by cloud management software the more flexible infrastructure can be created inside CMS.

The first feature for comparison is physical host management that provides users the possibility to add, remove and list physical machines. As it is seen from the comparison analysis presented in work “Comparison and Evaluation of Open-source Cloud Management Software”, Eucalyptus, OpenNebula OpenStack [18] and CloudStack [27] provide this feature to the customers.

The second feature is virtual machine management that allows creating, deleting, listing and hot cold migration of virtual machines. This functionality is provided in OpenNebula, OpenStack and in CloudStack software with graphical and command-line interface support [18, 44]. However, Eucalyptus does not support virtual machines migration and customization option that allows creating of virtual machines with a different number of CPU cores and RAM size. Eucalyptus also does not have the support of graphical interface for the virtual machines management.

35

Virtual machine image management, which provides functionality to add, remove and list virtual machine images. It is supported in all considered cloud management software with graphical and command-line interface [18, 27].

Virtual Network Management is the functionality that allows adding, removing and listing virtual networks. There are two types of virtual networks: static and dynamic. In a static virtual network IP addresses are defined in a static file and cloud management software assigns IP addresses to virtual machines from this file, while, in a dynamic network, IP addresses are assigned by DHCP server. Virtual Network Management provides functionality of security groups that allows or denies traffic that comes in or goes out of the security group considered for cloud management software. Virtual Network management with static and dynamic IP addresses is supported by Eucalyptus, OpenNebula, OpenStack [18] and CloudStack [45]. The security groups functionality is supported by all considered cloud management software, except OpenNebula [18].

Cloud interface enables users to communicate with cloud management software. Eucalyptus, OpenNebula, OpenStack and CloudStack do not restrict their users with only one cloud interface. There are different types of cloud interfaces. For instance, proprietary API can be used only by specific cloud management software. Amazon EC2 API can be used by different cloud management software and provides access to virtual machine management functionality. Libvirt API allows access to virtual machine management and virtual network management functionality, while OCCI API allows integration of different cloud management software by providing general API which enables access to the virtual machine management and to the virtual network management functionality. Eucalyptus, OpenStack [18] and CloudStack [28, 29, 30] support Amazon EC2 API, Proprietary API, and OCCI API as well as Open Nebula supports the same interfaces, but additionally, it includes the support for Libvirt API.

User Management provides the functionality to add, remove and monitor users in the system. This functionality is supported by all considered cloud management software with graphical and command line interface [18, 31]

36

Hypervisor virtualizes hardware that allows different operating systems to run on the same hardware. Eucalyptus supports XEN, KVM, and VMW [28]. OpenNebula supports XEN, KVN and VMware hypervisors [32]. CloudStack provides the support for XenServer, KVM, and VMware with vSphere. [32]. However, OpenStack supports the largest number of hypervisors, such as KVM, LXC, QEMU, UML, VMware with vSphere, Xen, and Hyper-V [33].

Scheduler helps to identify a physical host for a new virtual machine. The effective schedule helps to reduce operational costs, reduce queue waiting time and increase resource utilization.

Eucalyptus has three types of schedule mechanisms: round robin, greedy and explicit [40]:  Round robin scheduler assigns the virtual machine to the physical host in a circle order. For example, there are three VMs and two physical hosts, the first VM is assigned to the first physical host, the second VM is assigned to the second physical host and the third VR is assigned to the first physical host.  Greedy scheduler chooses a physical host with the minimum number of running virtual machines and assigns there a new virtual instance.  The explicit policy allows users to specify the physical node by providing a physical host IP address where VM should be placed.

OpenNebula has three types of scheduling mechanisms: packing, striping and load- aware scheduler [41]:  The packing scheduler chooses the physical host with the maximum amount of running VMs for creating a new VM, to minimize the number of used hosts  The striping scheduler chooses the physical host with the minimum amount of running VMs for starting a new VM in order to maximize available resources for the VM.  The load-aware scheduler chooses a physical host with the minimum number of used CPU cores in order to maximize resources available for the VM.

37

CloudStack has five types of VM scheduler: Random, First-Fit, User Dispersing, User Concentrated Pod Random and User Concentrated Pod First Fit [39]:  The Random scheduler is selected as a default algorithm for allocating VMs, it chooses a random available physical host across the zone for the creation of a new VM.  The First-Fit scheduler algorithm chooses the first available physical host in a zone to allocate a new VM.  The User Dispersing scheduler algorithm chooses the physical host with the minimum number of running VMs within one user account to place a new VM. It supports load balance for the specific user.  The User Concentrated Pod Random scheduler chooses the random available physical host within a pod to run a new VM.  The User Concentrated Pod First Fit scheduler algorithm chooses the first available physical machine within a pod to create a new VM.

OpenStack has filter scheduling as a default scheduler algorithm. Filtering and weighting mechanisms identify the physical host for running a new virtual machine. At first, filter scheduler chooses suitable hosts for a new VM by applying filters. [42]. Currently, OpenStack has more than 30 available filters that can be divided into several groups [43, 42]:  The resource-based filter selects hosts based on available resources, such as memory, CPU cores, etc. To this group of filters belong CoreFlter and DiskFilter.  The image-based filters choose the hosts based on image properties, such as the type of hypervisor and VM mode.  The host-based filter selects hosts based on grouping criteria, such as location and availability zones while net-based filter selects hosts based on IP addresses or subnet.  The chance scheduler chooses a random physical host from a list of filtered hosts.  OpenStack also provides users the possibility to create custom filters.

/

38

Hosts that were accepted later are processed by applying weights in order to choose one physical machine for a new virtual instance. There are many weighting functions that can be used, for example, RamWeighter that weights the hosts based on available memory.

OpenStack cloud has the capability to segment or group hosts under specific criteria which consists of host availability zones and host aggregates. Host aggregates logically tag compute nodes with meta-data. For instance, users can group nodes with SSD drives to one aggregate group and nodes with 4GB RAM to another group. For example, a user created a new virtual instance with SSD drivers and tagged this VM with SSD tag. In this case, physical host for the virtual instance will be selected among host aggregates with SSD metadata tag.

Availability zones are visible for the end-users, in contrast to host aggregates groups which are visible only for administrators. A physical host can belong only to one availability zone, unlike host aggregates where the host can be a part of more than one host aggregates. OpenStack provides administrator the possibility to configure a default availability zone where instances will be assigned to if nothing is specified [42].

Quotas are operational limits that provide the possibility to control resources for each user or for the project. For example, it allows restricting the user by limiting him with the creation of maximum four virtual machines with 2 CPU cores and 4 GB of RAM each. The related work [18] describes several cloud management software which supports quota functionality for CPU, RAM, Public IP and a number of virtual machines. For instance, Eucalyptus does not have quota support for any of researched elements. While OpenNebula supports quota for CPU cores, RAM and number of VMs that can be created [18]. OpenStack as well as CloudStack provides the possibility to set up the quota for all researched resources [34, 18, 35].

Fault tolerance enables the system to operate in the event of failure of one or several of its components. All considered cloud management software support fault tolerance so if one of their main components goes down the system still will provide the required service [36, 37, 38].

39

Additional technical characteristics for comparison analysis are presented in Table 1.

Table 1: Comparison of open source cloud management software Eucalyptus OpenNebula OpenStack CLoudStack

Architecture Monolithic Monolithic Modular Monolithic

Cloud types Private, hybrid Public, private, Public, private Public, private, Hybrid hybrid

Installation Easy Easy Difficult Medium level difficulty [14]

Hypervisors XEN, KVM, XEN, KVM, KVM, LXC, XEN, KVM, and VMWare and VMWare QEMU, UML, and VMWare VMware vSphere, Xen and Hyper-V

Operation Windows, Windows, Linux, Windows, Systems Linux Linux Windows, Linux support Windows Server

Programming C, Java C, C++, Ruby Python Python, Java language

License [15] GPL V3.0 Apache V2.0 Apache V2.0 Apache V2.0

40

3.2.6 Conclusion of CMS comparison analysis

eHealth cloud is in the beginning of its potential and has huge perspective in the future. This technology should be supported by modern solutions which are able to react ahead of the technological curve. Open source cloud management software is used in different areas, it has different architecture and characteristics. Different cloud management software should be use for different purposes. For instance, Eucalyptus has a good compatibility with AWS and it should be used for hybrid clouds [14].

OpenNebula platform is a proper solution for business that works with big data and requires running many virtual machines at the same time. CloudStack provides an easy interface to manage the cloud, compatible with AWS.

All considered CMS have a monolithic architecture, which means that all components are installed all together, while OpenStack has a modular architecture where every component is an individual project. Moreover, currently, OpenStack includes seven core components and thirteen optional services to support additional cloud functionality and its number increases with each release. Each OpenStack service is an individual project and has its own dedicated support. Although, modular architecture makes the OpenStack installation more difficult than for other CMS.

CloudStack, Eucalyptus, OpenStack, and OpenNebula are available under free software licenses GPL and Apache. Both of them are used for open source software. However, there is a difference between them: when Apache licensed software is modified and released, it is not necessary to release the modified version of source code in contrast to GPL requires from the distributor to release the modified source code.

It is observed in comparison study that Eucalyptus does not support virtual machines migration that handles balance loads in datacenter and prevents a physical machine from overload by migrating VMs. Furthermore, it does not have the support of Quota functionality that prevents the system from exhausting state without notification.

41

These features are important for supporting system availability. OpenNebula does not have the support of security groups that allows or denies VM’s incoming and outgoing network traffic. Compare to other cloud management software OpenStack has many technical features. It has seven core services and thirteen optional in order to provide better functionality.

However, there are non-technical characteristics that should be taken into consideration. OpenStack is the most popular open source cloud management software [16]. It is well documented and has huge community support. It was recognized as the most valued and most improved open source project in ”2014 the future of Open Source” Linux.com survey [16]. OpenStack has strong support from industry giants, such as IBM, Intel, Red Hat and etc. The project gets enough investments for fast development. Hundreds of world known companies, such as Yahoo, PayPal, and American Express, chose OpenStack to run their businesses. OpenStack publishes several releases per year every time increasing the number of projects. It provides flexible functionality to cloud customers and raises the number of services. It also shows that OpenStack is rapidly developing open source cloud software that can fulfill various of customer requirements [26]. Several OpenStack releases are presented in table 2.

Table 2: OpenStack Releases [46] Release Name Release Date Included Components Austin 21 October 2010 Nova, Swift

Bexar 3 February 2011 Nova, Glance, Swift

Cactus 15 April 2011 Nova, Glance, Swift

Diablo 22 September 2011 Nova, Glance, Swift

Essex 5 April 2012 Nova, Glance, Swift, Horizon, Keystone

42

Folsom 27 September 2012 Nova, Glance, Swift, Horizon, Keystone, Quantum, Cinder

Grizzly 4 April 2013 Nova, Glance, Swift, Horizon, Keystone, Quantum, Cinder

Havana 17 October 2013 Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Ceilometer, Heat

Icehouse 17 April 2014 Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Ceilometer, Heat, Trove

Juno October 2014 Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Ceilometer, Heat, Trove, Sahara

Kilo April 2015 Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Ceilometer, Heat, Trove, Sahara, Ironic

43

As it is seen from the comparison analysis, currently OpenStack is dominative cloud management software for the private clouds with many technical features and strong community support. Based on the competitive study and the general overview of open source cloud management software, OpenStack is selected as cloud management software for the private eHealth cloud infrastructure.

3.3 Electronic Health Records Software

In order to prove, that OpenStack can be used for managing eHealth cloud infrastructure, it is necessary to verify that OpenStack can work in a medical environment. For the purpose of simulating medical environment, a medical application should be installed and configured on OpenStack. For this purpose, is selected one of the most critical components of eHealth systems - Electronic Health Records.

Nowadays, there is a wide choice of EHR software, however, the deep comparison analysis of medical software is not the main purpose of this work. Therefore, in this work I defined the following requirements for the EHR application: it should be open source software that provides all basic functionality of EHR/EMR with strong community support and many users. In other words, it should be “standard” Electronic Health Records software that can be used to simulate a medical environment.

Based on comparison analysis of medical software [47, 48, 49] for this work were selected several available and active cloud based open source EHR applications: ClearHealth, VistA, FreeMED, and OpenEMR. Nowadays exist many EHR/EMR available applications, but here I would like to focus on the most popular of them represented in the literature and in open source repositories. In this section will be briefly described and selected EHR software for the private eHealth cloud.

44

3.3.1 EHR functionality

Institute of Medicine defined eight core functions of Electronic Health Records [56, 57]:  Health information and data, to keep all medical information and provide friendly interface;  Result management provides access to the medical tests results from labs;  Order management supports electronic prescriptions.  Decision support helps medical providers to make the best decisions for the patients’ treatment  Electronic communication and connectivity supports communication with multiple providers, such as hospitals, labs, in a secure way;  Patient support allows providing educational information to patients and entering data about home monitoring devices to the system by themselves;  Administrative processes and reporting support practice management functions, such as scheduling appointments;  Reporting and population health provide the possibility to create reports on the local and state level;

3.3.2 ClearHealth

ClearHealth is one of the most popular open source EHR software, it is implemented on hundreds of sites around the world. It supports features, such as Demographics, Scheduling, Full , Disease Management, Decision Support, EPrescribing. ClearHealth uses HL7, HIPAA, CCR, DICOM and XML standards [50]. It is capable to run on most platforms, such as Linux, Windows, MAC OS X and other platforms. ClearHealth supports cloud distribution and is available under the GNU General Public License. More information about ClearHealth can be found at the following resources [50, 51].

45

3.3.3 VistA (Veteran Health Information Systems and Technology Architecture)

VISTA is an open source EHR application that was developed in the USA to support health system for veterans. Currently, VistA is used by hundreds of hospitals, clinics, and nursing homes [52]. The application is written in a specifically designed for medical systems MUMPS language. It supports clinical functions (care management, patient assessment documentation package), financial-administrative functions (veterans Identification Cards, clinical monitoring system Integrated billing), infrastructure functions (capacity management tool, survey generator). VISTA is available under the GNU General Public License [48]. More information about ClearHealth can be found at the following resource [52].

3.3.4 FreeMED

FreeMed is an open source electronic medical record system with the web-based interface. It can run on different platforms and it is also available under GNU General Public License. It supports features, such as health information and data, electronic communication and connectivity (e.g. email), administration processes (e.g. scheduling and billing), reporting and population health management (quality indicators) [49]. More information about ClearHealth can be found at the following resources [53, 54].

3.3.5 OpenEMR

Nowadays OpenEMR is one of the most popular open source electronic medical records, supported by the strong community. It is free and open-source software is available under GNU General Public License (GPL). OpenEMR can run on Windows, Linux, MAC OS X and other platforms. It has features, such as patient demographics, patient scheduling, EMR, prescriptions, and reports. Moreover, it is ONC Complete Ambulatory EHR certified by ICSA Labs. OpenEMR has more than 3 700 downloads per month [55]. More information about OpenEMR can be found in the following resource, [55].

46

3.3.6 Conclusion of EHR comparison analysis

The described medical software has several common characteristics, such as availability under GNU General Public Licence, possibility to run on most platforms. All considered EHR software support basic functionality that is expected by hospitals from EHR and EMR software.

OpenEMR has the strongest community support compare to other medical applications. OpenEMR is able to react fast to any changes in medical sphere and continuously fulfill customer requirements. OpenEMR supports all basic functionality of EHR, it is one of the most popular open source software for hospitals and has the support of cloud structure, encryption and web browser access [47]. Based on literature review and overview of open source medical software functionality OpenEMR is selected as EHR software to run on eHealth cloud.

4. Implementation

The chapter is focused on the process of establishing eHealth cloud in a test environment. In this chapter is proposed eHealth cloud infrastructure and described its installation process. As a part of eHealth cloud here is described the process of eHealth cloud application implementation on eHealth cloud infrastructure and discussed relevant results.

4.1 Test environment

The test environment for the eHealth cloud is designed on the physical server HP ProLiant DL 360 G7 with VMware ESXi hypervisor 6.0 and has the following characteristic:  128GB of RAM  8 CPUs x 2.533 GHz  372 GB of SAS HDD

47

The first step of establishing eHealth cloud is the installation of cloud management software. EHR software will be installed on OpenStack test environment in order to prove the concept that OpenStack is the suitable CMS for eHealth cloud.

For the installation of OpenStack test environment, I was using packstack utility that deploys parts of OpenStack automatically. Commonly packstack is used for deployment of the test environment for OpenStack [70]. Currently, packstack is supported only by CentOS and Red Hat Enterprise Linux (RHEL) operating systems [71]. Packastack all-in-one installs OpenStack core services on one host machine as a standalone deployment. The host machine should correspond to the following characteristics [65]:

 Memory: minimum 2GB of RAM  Disk space: minimum 20 GB  Network access: host should have access to the Internet  Processors with hardware virtualization extensions

A standalone host for OpenStack was created on this physical server with 6 vCPUs, 16 GB RAM, 60 GB HDD and Centos 7 Operating System which corresponds to packstack all-in-one deployment requirements.

4.2 OpenStack installation

OpenStack standalone host should have access to the Internet, therefore, the next step was the configuration of the network connection. I specified static IP address, subnet mask, DNS, and Default Gateway for the virtual machine in the network configuration file for the interface connecting to the internet.

Currently, OpenStack networking does not work on systems with enabled Network Manager service. Consequently, before the installation of packstack, it is necessary to disable it [64]. On CentOS 7 Extras repository provides the RPM that enables the OpenStack repository, therefore it can be simply installed to set up OpenStack repository.

48

Generally, Extras repository contains additional components, which ensure additional functionality of CentOS without breaking compatibility with the original distribution. The last step of the system preparation for OpenStack standalone deployment is the installation of packstack package. After that system is ready for packstack all-in-one installation, performed with the following command:

$ sudo packstack –allinone

When the installation is finished successfully, OpenStack dashboard can be accessed by the IP address of the virtual machine where OpenStack is installed (http:///dashboard). Credential for the logging with administrator rights can be found in the keystonerc_admin file in the OpenStack root folder.

The first steps for designing eHealth cloud infrastructure in OpenStack is the creation of user and project and assignation user to the project. eHealth cloud infrastructure should have a private network to ensure the connection between virtual instances inside OpenStack, and public networks to make eHealth cloud application accessible from outside through the Internet. OpenStack cloud management software provides the possibility to apply this network configuration through the dashboard as well as from the command line. Firstly, I created a private network and private subnet associated with the router, secondly, was created a public network and also associated with the router. For the eHealth cloud instances were used CentOS 7 cloud image, which was downloaded from OpenStack image repository. As it was stated in the analysis chapter 3, OpenStack provides customization feature for the virtual machine images that allow customizing virtual instances. Using this feature, which is called “Flavor” in OpenStack environment, was created a customized flavor for the eHealth virtual machines with 1CPU, 1GB RAM, 8 GB HDD.

Most of the cloud images that are available for OpenStack use SSH keys for authentication which can be created inside of the environment and can be associated with a newly created virtual machine inside OpenStack. Key pairs can be created during the virtual machine creation process or in “Access and security” section on OpenStack dashboard. SSH key needs to be converted to putty private key and after conversion, the key can be used by Putty application to connect to the virtual machines inside OpenStack.

49

The virtual instance was created in OpenStack test environment with described above characteristics. “Floating IP Association" mechanism in OpenStack CMS allows assigning public IPs to the virtual machines.

The eHealth cloud infrastructure designed in OpenStack CMS is presented in Figure 14.

Figure 14: eHealth cloud infrastructure

As it is seen from Figure 14, eHealth cloud infrastructure consists of compute service, image service, block storage service and network service. OpenStack core components are described in sections 3.2.4. Figure 15 presents eHealth cloud model with two major components, which consists of Infrastructure layer, represented by OpenStack cloud management software and application layer, represented by OpenEMR application.

50

Figure 15: eHealth cloud model

4.3 OpenEMR requirements

OpenEMR Electronic Health Records software is selected as an example of eHealth service to run in a cloud environment. This section is focused on OpenEMR requirement, in order to design eHealth cloud application infrastructure. OpenEMR is a cloud-based application that requires the following software installation [66]:

- PHP-capable web server - MySQL database - PHP5 - Most recent OpenEMR package

51

Installation of OpenEMR on OpenStack cloud management software should be possible with one of the following scenarios:

1. OpenEMR is designed to work directly with OpenStack interface. In this case, OpenEMR will be installed and configured in OpenStack cloud environment automatically. During the installation it will require OpenStack URL and credentials. 2. The application is adapted to run in a cloud environment. OpenEMR can be installed on several OpenStack instances which will be configured for high availability. If one of the webservers is unavailable, it does not affect application availability. 3. The application is not adapted to run in a cloud environment. It can be installed only on one OpenStack instance; the outage of web server affects application availability.

Installation of OpenEMR on OpenStack CMS will help to identify the corresponding outcome.

4.4 OpenEMR architecture design

Based on application requirement, it was observed that OpenEMR software does not have specific conditions as a medical application. It has the same requirements as regular web based applications, such as web server and database. At the same time, one of the main requirements for eHealth services is continuous service availability which can be achieved by configuring two web servers and load balancer for high availability.

Therefore, based on those conditions, four virtual machines were created in OpenStack infrastructure environment: one virtual instance for database server, two instances for webservers and one instance for the load balancer. Virtual instances created in OpenStack are presented in Figure 19.

In this case, OpenEMR software should be installed on both web servers. The load balancer distributes traffic between two web servers and can be configured to work in two modes: active/active and active/passive. In active/active mode it distributes workloads between two web servers in round robin fashion. If one of webservers experiences malfunction it is excluded from the infrastructure until the issue is resolved.

52

In active/passive mode only one web server is used to serve all requests while the other server takes over in a case of the main server failure. Cloud services are provided through the Internet; therefore, it is important to protect it from unauthorized access. In order to provide better authorization control, infrastructure is designed with a single point of access to the cloud software. In this case, users can access web servers only through the load balancer instance. However, access to the load balancer is granted only to the authorized users with the trusted IP addresses, who can make requests towards the application. The whitelisting of the trusted IPs is performed by an external appliance with firewall capabilities. This method makes infrastructure more secure and protected from data leakage. because there is no direct access to the servers with private data.

Web servers use the common database, installed on the separate database server. When insert/delete/update operations are performed on one web server data is stored in the database and the secondary web server will have the new data available immediately.

However, web servers do not communicate with each other, all communication goes through the load balancer. Only the load balancer is aware of web server’s state and availability while both of them are stateless. Private network isolation is one of the data protection methods. It means that servers with secure data are isolated from the public network. Communication with the servers is possible through the load balancer which has access to the private and public networks. OpenStack ensures disaster recovery in case of virtual instances failure. It provides systematic “snapshots” and allows a quick start of a new component instance thus recovering services.

eHealth cloud infrastructure is scalable that allows the application to grow over time due to the increasing amount or medical records or system changes. It allows to increase IT resources or add new servers to the current infrastructure without service interruption. Encryption is another method for security protection of eHealth cloud. OpenEMR software can be configured for the encryption and it can be secured through SSL certificate [62]. There are two ways to configure SSL encryption for the current eHealth cloud application infrastructure.

53

The first scenario, when communication is encrypted using SLL certificates only between client and load balancer. In this case, load balancer decrypts the traffic from the client and distributes it to the webservers unencrypted. However, a more secure scenario would be to pass encrypted traffic through the load balancer and decrypt it on the servers. In the current solution is used HAProxy software for the load balancer, which supports both types of configuration [63, 92].

Another way to secure data transfer in the system is to use a separate appliance for the VPN configuration. This forbids access to external users unless they are connected to the VPN. Authorized users will have access to OpenEMR software and data traffic between these users and web servers will be encrypted by the VPN.

The last security protection method is mostly used when cloud application should not be available to the general public; which is also a target solution of this work. Figures 16 and 17 present eHealth cloud application infrastructure for normal setup and server failure, when the load balancer is configured in active/active mode.

54

Figure 16: eHealth cloud application infrastructure – Normal setup

55

Figure 17: eHealth cloud application infrastructure – Server failure

4.5 Implementation of OpenEMR architecture

This section is focused on the installation process of OpenEMR software and all required software to run OpenEMR application on eHealth cloud infrastructure. eHealth cloud application architecture consists of two web servers, one load balancer, and one database server.

56

Popular open source HAProxy software, which stands for High Availability Proxy and can run on Linux operating systems, was selected as a load balancer. It is widely used to improve performance and reliability of server environment by distributing workloads across multiple webservers [63].

HAProxy was installed on a virtual instance and configure to work with two web servers. In addition, HAProxy is configured to start automatically during the server booting process. Figure 20 illustrates HAProxy statistic report for the eHealth cloud.

On the database server, MariaDB database server was installed and configured to start automatically during the server booting process.

For OpenEMR webservers I installed the following software on two virtual instances: Apache web server, PHP, MySQL database client and OpenEMR application. The web servers should be configured for OpenEMR requirements that can be found in section 4.3. For the configuration of web servers was used installation guide for OpenEMR on CentOS 7 OS [66]. I have started configuration from the web server 1 and installed Apache web server, PHP repository, and downloaded OpenEMR package. OpenEMR allows checking the integrity of the downloaded package by comparing its md5sum to the original on the official openemr website. Downloaded OpenEMR package needs to be placed in the default web apache folder on the webserver where OpenEMR should be installed: on CentOS 7 it is /var/www/html. Thereafter OpenEMR installation can be accessed by the IP address of the current webserver (http:///). OpenEMR setup creates and configures a database, that can be found on the dedicated database server. When the configuration is finished, a user can log into OpenEMR with admin credentials which were created during the installation process. There was no prompt for OpenStack URL during OpenEMR installation, which means that software was not designed specifically for OpenStack CMS. However, there is a possibility that it can be configured to run on OpenStack.

57

When OpenEMR installation is finished on the first web server, there is no need to perform the same configuration on the second webserver. OpenEMR folder from the first webserver with all configuration files can be copied to the second webserver. It is only required to grant access to the web server 2 to the OpenEMR database which can be found on the database server. OpenEMR logging page is presented in Appendix chapter in Figure 21. In Figure 18 is shown a network topology of the eHealth cloud application infrastructure, designed in OpenStack.

Figure 18: eHealth cloud application network topology in OpenStack

58

4.6 eHealth cloud implementation issues

During the eHealth cloud infrastructure implementation process, I have faced several issues, which are described below.

4.6.1 OpenStack installation issues

Issue: When eHealth cloud virtual instances were configured in OpenStack environment, virtual machines did not have access to the Internet. Solution: To enable Promiscuous Mode on the virtual switch which OpenStack virtual machine is part of, inside the physical server so that the virtual machines, which are inside of the OpenStack virtual machine, can have access to the Internet.

Issue: Due to the lack of resources, more specifically, lack of virtual CPUs was resulting in unavailability of creating a new eHealth cloud instance inside OpenStack. Solution: Increase the number of vCPUs to the virtual machine on which OpenStack is installed from the resources of the physical server.

4.6.2 OpenEMR installation issues

Issue: During installation of OpenEMR the setup script prompted an error that it is unable to open two files for writing: /var/www/html/openemr/sites/default/sqlconf. /var/www/html/openemr/interface/modules/zend_modules/config/application.config.php Solution: Disable selinux in /etc/sysconfig/selinux directory SELINUX=permissive [67].

4.7 System testing

Testing is an important part of the implementation process. When eHealth infrastructure was established, several test cases were performed in order to ensure system functionality. The performed test cases are presented in Table 3.

59

Table3: Test Cases for eHealth cloud system Test case Expected result Pass/Fail 1. Access application 1. In web browser go to IP - Login page for OpenEMR is address of load balancer; displayed Pass

2. Load balancer works in active/active mode 1. Access OpenEMR from different - Both web servers are active; machines - Traffic is divided between two Pass 2. Check HAproxy statistic page web servers;

3. Turn off one web server 1. Access OpenEMR from different - Only one web server is active; machines - All traffic is transferred to active Pass 2. Check HAproxy statistic page web server;

4. Access data 1. Access OpenEMR from web - Data added form web server 1 is server1 (by public IP) accessible for machine 1,2 (all active 2. Add record about new patient from web servers) web server 1 3. Access OpenEMR from web Pass server2 (by public IP) 4. Search for data that was added from web server1

5. Access web server by private IP

60

1. In web browser go to private IP - “This site cannot be reached” error Pass address of webserver message is displayed

6. Database record verification

1. Turn off web server2 - Data added from webserver 1 is 2. Connect to webserver 1 to access accessible on web server 2. OpenEMR (by public IP) 3. Add record about new patient from Pass web server 1 4. Power on web server 2 5. Connect to web server 2 to access OpenEMR (by public IP) 6. Search for data that was added from web server 1

4.8 Discussion

The previous section described the implementation process of eHealth cloud in the test environment. eHealth cloud application infrastructure was designed in OpenStack test environment in order to prove the concept, that it can be supported by the selected cloud management software. As a result, eHealth system successfully passed all tests, thereby proved that eHealth services can run on eHealth cloud infrastructure designed in OpenStack cloud management software.

Electronic Health Records software was selected as an example of eHealth service. During the installation was identified that OpenEMR software is not designed to run specifically on OpenStack cloud management software. However, it was proven that this application can run in a cloud environment and use its benefits, instead of running inside the organization. In addition, it was observed that OpenEMR software does not have specific

61 requirements as a medical application. It has the same conditions as regular web based applications. From this statements can be made a conclusion, that the proposed eHealth cloud infrastructure can be used for other eHealth services described in section 2.2.1, such as eCare, eLearning, eSurveillance, etc. and not restricted only by EHR service.

As it was stated in the previous sections, eHealth cloud is a regular cloud which is used for medical purposes. For this work eHealth cloud infrastructure was established with packstack utility, which installs OpenStack core components for proof of concept test environment and cannot be used for production purposes. However, the core OpenStack components that were installed with packstack utility, such as image service, compute service, network service, and block storage service are enough for managing of eHealth cloud service infrastructure. As it was stated in section 3.2.5, OpenStack has a modular architecture. Therefore, the components of designed eHealth cloud infrastructure can be implemented in a production environment as individual services and provide global support eHealth cloud services. In the test environment I implemented only four virtual instances, however, more instances can be created and configured, as much as it is needed to cover system workloads.

Cloud computing technologies in healthcare domain work in the same way like in any other domain and can provide elastic resource scaling to eHealth cloud infrastructure. During the implementation of eHealth cloud application infrastructure, it was observed that software installation required by all webservers is needed only once. Apache web server, PHP, MySQL database client, and OpenEMR application were installed only on one webserver. The configuration of other webservers was performed by coping OpenEMR configuration folder from webserver where all software has already been installed. More details can be found in section 4.5. Another way to configure several web servers is to take a snapshot of configured webserver and start a new virtual instance with this snapshot. This plays an important role in system scalability. Heat and Ceilometer are optional services of OpenStack which provide automatic scalability of applications and can be implemented in a production environment. Heat component allows scaling resources based on notifications send by Ceilometer. It allows to implement scaling policies based on monitor resources, for

62 example CPU usage. It takes a copy of resource definition and when it is needed starts a new copy of it [72]. In a case of the current implemented solution, in the system can be taken a copy of configured webserver and based on CPU usage will be created a new instance of web server with the same configuration.

In addition, OpenStack also provides support of vertical scalability when it is possible to increase resources of the current servers (RAM, CPU, HDD), instead of creating a new virtual instance.

5. Conclusion

This work has been focused on several goals and all of them are connected with the eHealth cloud. The first goal of this work was to identify what eHealth cloud is. Based on literature review I have determined that eHealth cloud is a regular cloud computing technology used for the medical purposes. It is the implementation of cloud computing technologies in healthcare sector.

The next goal of this thesis was to find and compare differences between regular and eHealth cloud. This goal was accomplished by studying two wide topics which are combined in eHealth cloud – eHealth and cloud computing. As a result, was made a conclusion that cloud computing in healthcare domain works in the same way like in any other domain. However, medical sector is still a new sphere for cloud computing technologies and compare to regular cloud eHealth cloud experiences the lack of standards.

One of the main goals of this work was the deployment of infrastructure for eHealth cloud application. In order to achieve this goal, components of eHealth cloud should have been selected – Cloud Management Software and medical application.

Selection of cloud management software for eHealth cloud is also one of the aims of this work. In order to achieve this goal, I have performed comparison analysis of the popular open source CMS. Based on the results of comparison study, it was identified that

63

OpenStack is the most suitable solution for managing eHealth cloud infrastructure. The deep comparison analysis of medical software was not the goal of this work. I have selected Electronic Health Records software as one of the most critical part of eHealth sector and performed analysis of the popular EHR software. OpenEMR Electronic Health Records application was selected as an example of medical software to run on cloud infrastructure.

eHealth cloud infrastructure should provide the wide functionality required by eHealth cloud applications. For designing eHealth cloud infrastructure was selected OpenStack cloud management software which can correspond to the dynamic nature of eHealth sector. The proposed eHealth cloud infrastructure consists of image service, block storage service, network service and compute service. All of these services were installed with packstack utility in proof of concept test environment.

The final goal of this work was the implementation of eHealth cloud application on an open source cloud environment. The main focus in eHealth cloud application infrastructure was on the system availability as on one of the most critical factor of eHealth services. The eHealth cloud application infrastructure consists of two web servers, one load balancer and one common database server created in OpenStack cloud management software. The infrastructure ensures system availability even if one of web servers is unavailable. As a result, eHealth system successfully passed all tests, thereby proved that eHealth services can run on eHealth cloud infrastructure designed in OpenStack cloud management software. In addition, the concept was proven that OpenStack cloud management software can be used to manage eHealth cloud infrastructure. The proposed eHealth cloud infrastructure can be used in a production environment; OpenStack has a modular architecture and allows to implement its services as individual components for production purposes.

64

6. Literature

[1] Peter Mell and Timothy Grance. The NIST Definition of Cloud Computing: Recommendations of the National Institute of Standards and Technology, Special Publication 800-145 [online]. Gaithersburg: National Institute of Standards and Technology U.S. Department of Commerce, September 2011. MD 20899-8930. Available from: http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-145.pdf

[2] Researchhubs.com. What is Cloud Computing? Available from: http://www.researchhubs.com/post/computing/cloud-computing/what-is-cloud- computing.html

[3] WHO. eHealth. Available from: http://www.emro.who.int/health-topics/ehealth/

[4] WHO. eHealth components [online]. Available from: http://www.paho.org/ict4health/index.php?option=com_content&view=article&id=80%3 Acomponents&lang=en

[5] Mila Garcia Barbero. EHEALTH, AN EUROPEAN CHALLENGE. [online]. C. Dario, A. Dunbar, F. Feliciani, M. Garcia-Barbero, S. Giovannetti, G. Graschew, A. Güell, A. Horsch, M. Jenssen, L. Kleinebreil, R. Latifi, M. M. Lleo, P. Mancini, M. T. J. Mohr, P. Ortiz García, S. Pedersen, J. M. Pérez-Sastre and A. Rey. Farscati, Italy: European Journal Of Medical Research Supplement 2004: 12-22, 5 July. Available from: https://www.researchgate.net/publication/237822261_EHEALTH_AN_EUROPEAN_CH ALLENGE

[6] Ed-informatics.org. EMR vs EHR vs PHR. Available from: http://ed- informatics.org/healthcare-it-in-a-nutshell-2/emr-vs-ehr-vs-phr/

[7] Healthcare informatics. NAHIT Releases HIT Definitions. Available from: http://www.healthcare-informatics.com/news-item/nahit-releases-hit-definitions

65

[8], Eman Abukhousa, Nader Mohamed; Jameela Al-jaroodi. e-Health Cloud: Opportunities and Challenges. United Arab Emirates, Al Ain: Future Internet, 4 July 2012. ISSN 1999-5903.

[9] ISO.org. ISO/TC 215 Health informatics. Available from: http://www.iso.org/iso/iso_technical_committee?commid=54960

[10] HL7. About HL7 International. Available from: http://www.hl7.org/

[11] Hanz Löhr, Ahmad-Reza Sadeghi, Marcel Winandy. Securing the E-Health Cloud. In IHI '10 Proceedings of the 1st ACM International Health Informatics Symposium Pages 220-229. [online]. New York, NY, USA: ACM, 11 November 2010. ISBN: 978-1-4503- 0030-8. DOI 10.1145/1882992.1883024. Available from: http://www.marcel- winandy.de/papers/ehealth-cloud-ihi2010.pdf

[12] Dimitra Liveri, Anna Sarri, Christina Skouloudi, ENISA. Security and Resilience in eHealth: Security Challenges and Risks [online]. Heraklion,Greece: European Union Agency for Network and Information security, December 18, 2015. Available from: https://www.enisa.europa.eu/publications/security- and-resilience-in-ehealth-infrastructures-and-services.

[13] Assad Abbas and Samee U. Khan. e-Health Cloud: Privacy Concerns and Mitigation Strategies [online]. In Medical Data Privacy Handbook. pp 389-421. USA: Springer International Publishing, 2015. Available from: https://www.researchgate.net/publication/278330048_e- Health_Cloud_Privacy_Concerns_and_Mitigation_Strategies. DOI 10.1007/978-3-319- 23633-9_15. Online ISBN 978-3-319-23633-9.

[14] Jyoti, Shobha G Shetty, Anala M R. A State-of-art Comparison of Opensource IaaS Cloud Softwares. In: American International Journal of Research in Science, Technology, Engineering & Mathematics [online]. USA: International Association of Scientific Innovation and Research (IASIR), April 2015. ISSN (Print): 2328-3491, ISSN (Online): 2328-3580, ISSN (CD-ROM): 2328-3629. Available from: http://iasir.net/AIJRSTEMpapers/AIJRSTEM15-311.pdf

66

[15] Salam Ismaeel, Ali Miri, Dharmendra Chourishi, and S. M. Reza Dibaj. Open Source Cloud Management Platforms: A Revie [online]. New York: Conference: In Proceeding of the 2nd IEEE International Conference on Cyber Security and Cloud Computing. November

2015. DOI: 10.1109/CSCloud.2015.84. Available from: https://www.researchgate.net/publication/282135812_Open_Source_Cloud_Management_ Platforms_A_Review

[16] Alexander Williams. The Top Open Source Cloud Projects of 2014 [online]. Available from: https://www.linux.com/news/top-open-source-cloud-projects-2014

[17] Blackducksoftware.com. The Ninth Annual Future of Open Source Survey. Available from: https://www.blackducksoftware.com/2015-future-of-open-source

[18], Srivatsan Jagannathan. Comparison and Evaluation of Open-source Cloud Management Software. Stockholm: June 2012. Masters’ Degree Project. Laboratory for Communication Networks School of Electrical Engineering KTH Royal Institute of Technology. Project Supervisor: Rerngvit Yanggtatoke. XR-EE-LCN 2012:008

[19] Hewlet Packard Enterprise. General Purpose Reference Architecture: HPE Helion Eucalyptus: Detailed solution example for Eucalyptus private clouds. Technical white paper [online]. Hewlett Packard Enterprise Development LP. November 2015. 4AA6- 2547ENW. Available from: https://www.hpe.com/h20195/V2/getpdf.aspx/4AA6- 2547ENW.pdf?ver=1.0

[20] Mdshaonimran.wordpress.com. Eucalyptus and its components. Available from: https://mdshaonimran.wordpress.com/2011/11/26/eucalyptus-and-its-components/

[21] OpenNebula. Planning the Installation 3.2 [online]. OpenNebula Project (OpenNebula.org). 2002-2014. Available from: https://archives.opennebula.org/documentation:archives:rel3.2:plan

[22] CloudStack. Concepts and Terminology [online]. Apache CloudStack, 2016. Available from: http://docs.cloudstack.apache.org/en/latest/concepts.html

67

[23] OpenStack. Open source software for creating private and public clouds [online]. Available from: http://www.openstack.org/

[24] OpenStack. Main page [online]. Available from: https://wiki.openstack.org/wiki/Main_Page [25] OpenStack. Introduction to OpenStack [online]. Available from: http://docs.openstack.org/security-guide/introduction/introduction-to-openstack.html

[26] Ted Navarro. Core Advantages of Using OpenStack for IaaS [online]. Colocation America Inc. 09 Oct 2013. Available from: https://www.colocationamerica.com/blog/core- advantages-open-stack-for-iaas.htm

[27] CloudStack. Configuring your CloudStack Installation. Available from: http://docs.cloudstack.apache.org/projects/cloudstack- installation/en/4.6/configuration.html

[28] Apachecloudstack. Apache CloudStack Features[online]. Available from: https://cloudstack.apache.org/features.html

[29] Apachecloudstack. Understanding Apache CloudStack [online]. Available from: http://cloudstack.apache.org/software.html

[30] Sebastien Goasguen. OCCI interface to CloudStack [online]. 5 November 2013. Available from: http://sebgoa.blogspot.cz/2013/11/occi-interface-to-cloudstack.html

[31] CloudStack. CloudStack Identity and Access Management (IAM) Plugin [online]. Available from: https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+Identity+and+ Access+Management+(IAM)+Plugin

[32] Apache CloudStack. Compatibility Matrix: Supported OS Versions for Management Server [online]. Available from: http://docs.cloudstack.apache.org/projects/cloudstack- release-notes/en/4.6.0/compat.html

68

[33] OpenStack Cloud Software. Hypervisors [online]. Available from: http://docs.openstack.org/juno/config-reference/content/section_compute- hypervisors.html

[34] OpenStack. View and manage quotas [online]. Available from: http://docs.openstack.org/admin-guide/dashboard-set-quotas.html

[35] CloudStack. Quota Service - FS [online]. Available from: https://cwiki.apache.org/confluence/display/CLOUDSTACK/Quota+Service+-+FS

[36] Bhaskar Prasad Rimal, Eunmi Choi, Ian Lumb. A Taxonomy and Survey of Cloud Computing Systems. In: NCM '09 Proceedings of the 2009 Fifth International Joint Conference on INC, IMS and IDC, p 44-51. Washington, DC: IEEE, 25.08.2009. ISBN: 978-0-7695-3769-6, DOI: 10.1109/NCM.2009.218.

[37] CloudStack. Concepts and Terminology [online]. Available from: http://docs.cloudstack.apache.org/en/latest/concepts.html

[38] Helion Eucalyptus Docs Team. User Guide [online]. Available from: https://docs.hpcloud.com/eucalyptus/4.2.2/shared/user_section.html

[39] Dilum Bandara, Deepal Jayasekara, Mohamed Infaz, Shemil Hashan. A Resource and Policy Aware VM Scheduler for Medium-Scale Clouds[online]. In: International Conference on Advances in ICT for Emerging Regions (ICTer). IEEE, 11 January 2016. Electronic ISBN: 978-1-4673-9441-3, Print ISBN: 978-1-4673-9440-6, CD-ROM ISBN: 978-1-4673- 9439-0, Print on Demand(PoD) ISBN: 978-1-4673-9442-0, INSPEC Accession Number: 15700891, DOI: 10.1109/ICTER.2015.7377694. Available from: https://www.researchgate.net/publication/280884008_A_Resource_and_Policy_Aware_V M_Scheduler_for_Medium-Scale_Clouds

[40] Soumyasudharsan Srinivasaraghavan, Pascalyptus: A power-aware scheduler eucalyptus framework [online]. Detroit, Michigan, 2012. Computer Science the Graduate School of Wayne State University. Advisor, Dr. Weisong Shi. Available from: http://digitalcommons.wayne.edu/cgi/viewcontent.cgi?article=1235&context=oa_theses

69

[41] OpenNebula. OpenNebula.org: OpenNebula 4.14 Administration Guide. Release 4.14.2 [online]. OpenNebula 25 November 2015. Available from: http://docs.opennebula.org/pdf/4.14/opennebula_4.14_administration_guide.pdf

[42] OpenStack. Scheduling [online]. Available from: http://docs.openstack.org/kilo/config-reference/content/section_compute-scheduler.html

[43] Lianhao Lu, Yingxin Chen. Utilization-based Scheduling in OpenStack Compute (Nova). US: Intel Corporation, 27 December 2016. Document number: 332369-001

[44] Apache CloudStack. Working with Virtual Machines: About Working with Virtual Machines [online]. Available from: http://docs.cloudstack.apache.org/projects/cloudstack- administration/en/4.8/virtual_machines.html

[45] Apache CloudStack. Managing Networks and Traffic [online]. Available from: http://docs.cloudstack.apache.org/projects/cloudstack- administration/en/4.8/networking_and_traffic.html

[46] OpenStack. Chapter 1. Getting Started [online]. Available from: http://docs.openstack.org/icehouse/training-guides/content/associate-getting-started.html

[47] Konstantinos Koumaditis, George Pittas, George Vassilacopoulos. Cloud Services for Healthcare: Insights from a Multidisciplinary Integration Project [online]. In: Delivery and adoption of cloud computing services in contemporary organizations. USA: IGI Global, 2015. ISSN (print): 9781-4666. Available from: http://pincloud.med.auth.gr/pubs/P9_04.pdf

[48] Nabila Aissaoui, Mohammed Aissaoui, Youssef Jabri. For a Cloud computing based Open Source E-Health Solution for Emerging Countries [online]. In: International Journal of Computer Applications (0975 8887) Volume 84 - No. 11, December 2013. IJCA Journal, 2013. DOI: 10.5120/14617-2952. Available from: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.402.4687&rep=rep1&type=pdf

70

[49] M.L.M. Kiah, Ahmed Haiqi, B.B. Zaidan, A.A. Zaidan. Open source EMR software: Profiling, insights andhands-on analysis. In: Journal Computer Methods and Programs in Biomedicine, Volume 117 Issue 2, November 2014, Pages 360-382. New York: Elsevier North-Holland, 2014. DOI: 10.1016/j.cmpb.2014.07.002

[50] Medfloss.org. Medical Free/Libre and Open Source Software: ClearHealth [online]. Available from: http://www.medfloss.org/node/136

[51] ClearHealth. Home page [online]. Available from: http://clear-health.com/

[52] EPA. Nation's Largest Healthcare System Pledges Involvement in Healthy Hospital Iniative. Available from: https://yosemite.epa.gov/opa/admpress.nsf/8822edaadaba0243852572a000656841/66a4a3 1db7c1ae178525703d0067d18b!OpenDocument

[53] FreeMed. Home Page [online]. Available from: http://freemedsoftware.org/

[54] Free software directory. FreeMed [online]. Available from: https://directory.fsf.org/wiki/FreeMED

[55] OpenEMR. Org. Home page [online]. Available from: http://www.open-emr.org/

[56] National Academy of Sciences. Key Capabilities of an Electronic Health Record System [online]. Available from: http://www.nationalacademies.org/hmd/Reports/2003/Key-Capabilities-of-an-Electronic- Health-Record-System.aspx

[57] Ehrscope.com. Core Functions of an EHR [online]. Available from: http://www.ehrscope.com/blog/core-functions-of-an-ehr/

[58] Thenerdynurse.com. Differences Between EMR, EHR, and PHR [online]. Available from: http://thenerdynurse.com/2012/06/differences-between-emr-ehr-and-phr.html

71

[59] Healthcare Information and Management Systems Society (HIMSS). Health Informatics Defined [online]. Available from: http://www.himss.org/health-informatics- defined

[60] Healthcare Information and Management Systems Society (HIMSS). HIMSS Healthcare Information Exchange HIE Guide Work Group White Paper [online]. Healthcare Information and Management Systems Society (HIMSS), November 2009. Available from: http://www.himss.org/sites/himssorg/files/HIMSSorg/Content/files/HIE/HIE_GuideWhite Paper.pdf

[61] COCIR. European Coordination Committee of the Radiological, Electromedical and Healthcare IT Industry. Advancing healthcare delivery with cloud computing [online]. Available from: http://www.cocir.org/fileadmin/4.4__eHealth/eHealth_Toolkit_INT_2012_chap2.pdf

[62] OpenEMR.org. SSL Configuration [online]. Available from: http://www.open- emr.org/wiki/index.php/2._SSL_Configuration

[63] Digital Ocean. How to Implement SSL Termination with HAProxy on Ubuntu 14.04 [online]. Available from: https://www.digitalocean.com/community/tutorials/how-to- implement-ssl-termination-with-haproxy-on-ubuntu-14-04

[64] RDO. All-in-one quickstart: Proof of concept for single node [online]. Available from: https://www.rdoproject.org/install/quickstart/

[65] RedHat. Evaluating OpenStack: Single-Node Deployment [online]. Available from: https://access.redhat.com/articles/1127153

[66] Jan van Ravesteyn. Configuration Cookbook For OpenEMR Using Red Hat's Free CentOS-7 Operating System: Chapter 3: Recipe for Network Access to OpenEMR in a Virtualized Environment Using CentOS-7 Operating System as Hypervisor and Virtual Machin. March 26, 2016

72

[67] Tecmint.com. How to Install Your Own Cloud Platform with OpenStack in RHEL/CentOS 7 [online]. Available from: http://www.tecmint.com/openstack-installation- guide-rhel-centos/

[68] Russell Craig, Jeff Frazier, Norm Jacknis, Seanan Murphy, Carolyn Purcell, Patrick Spencer, JD Stanley. Cloud Computing in the Public Sector: Public Manager’s Guide to Evaluating and Adopting Cloud Computing [online]. Cisco Internet Business Solutions Group (IBSG), November 2009. KK/LW15967 1109. Available from: http://www.cisco.com/c/dam/en_us/about/ac79/docs/sp/Cloud_Computing.pdf

[69] Defense Information Systems Agency. Cloud computing security guide Version 1, Release 2 [online]. DoD Cloud Computing SRG v1r2, 18 March 2016. Available from: http://iasecontent.disa.mil/cloud/Downloads/Cloud_Computing_SRG_v1r2.pdf

[70] RedHat. Part III. Deploying OpenStack using PackStack [online]. Available from:https://access.redhat.com/documentation/en- US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/part- Deploying_OS_using_PackStack.html

[71] OpenStack. Packstack [online]. Available from: https://wiki.openstack.org/wiki/Packstack

[72] Rackspace. OpenStack Orchestration in Depth, Part IV: Scaling [online]. Available from: https://developer.rackspace.com/blog/openstack-orchestration-in-depth-part-4- scaling/

73

7.Appendix

Figure 19: eHealth cloud virtual instances in OpenStack

74

Figure 20: HAProxy statistic report

75

Figure 21: OpenEMR logging page

76