DSAA204 Data Structure and Algorithms Online Tutoring
Executive Summary
Typically, hospitals use a manual method for handling and maintaining critical information. The current system requires numerous paper forms, with data stores spread throughout the hospital management infrastructure. Information can often be missing, or does not meet the requirements of management standards. Forms are also lost within departments during transit. To guarantee that no critical information is lost, a comprehensive auditing process is needed. Several Copies of the same data occur in the hospital which can contribute to data anomalies in the hospital.
To solve this issue, in the following paper there is a brief discussion of how to implement a small portion of a Hospital Management System using some basic data structures and sorting algorithms. By the use of this (digital) system, we hope to eliminate a lot of the inconsistent data records of the hospital as well as create a work flow system which has minimal interruption or discrepancy in terms of information retrieval, data entry, and information transit between departments.
Introduction
The objective is to design a layout for part of a hospital management system (digital) which will keep track of the information on doctors, nurses and patients in the hospital. The purpose of doing so is consolidation of data, ensuring the integrity of data and reducing inconsistent data (such as duplicate copies).
Background
Hospital Management System can help in making many standard procedures seamless by improving flow of work rate by minimizing the time of information flow between various departments along with better administration control, improved patient care, and reducing the total paperwork.
Variables, Ranges and Keys
Variables
We will be using the data structure “Array” throughout the classes as it is easy to complete the operations required for our system later on as you will see. (Chowdhury & Khosla, 2007)
In order to accommodate for the doctors, nurses, and patients we will create respective classes for each of them – the classes being Doctor, Nurse, and Patients respectively. With each of them having the attribute for their unique ids:
- Doctor_id – Specific ID appointed to a doctor by the system at the time of entry in the system.
- Nurse_id – Specific ID appointed to a nurse by the system at the time of entry in the system.
- Patient_Id – Specific ID appointed to a patient by the system at the time of entry in the system.
Along with ids each class will also have a common attribute of name:
- Doctor name
- Nurse name
- Patient name
Now, discussing attributes that only the doctor class will have these include (besides Doctor_id and Doctor_name):
- Doctor specialization – The field of expertise of the doctor; for example dermatologist.
- Doctor schedule – The days and the time when the doctor will be available for appointments or walk-ins for the patients.
As for the class of Nurse, we further require the attribute:
- Nurse shift – This includes the schedule and shifts that the nurse covers in the hospital.
Finally for the class of patients we can have many attributes to help better manage our system, but for now we will only consider the essential ones (besides the ones already mentioned). These are:
- Patient illness – The problem or the disease that the patient is facing.
Furthermore, the patient will inherit the Doctor_id (the doctor appointed to the patient) as well as the Nurse_id (if one is appointed or required).
Ranges
Since we are designing a system for 50 Doctors, 100 Nursing staff and around 1000 patients we have to ensure that we allot enough space in our lists to accommodate all of the entries required. Therefore, all the attributes for the class doctor would have a range of 50 i.e. – Doctor_id [50], Doctor name [50], Doctor specialization [50].
Whereas for the class of Nurse we need to have a range of 100 to accommodate all 100 nursing staff entries in the system – Nurse_id [100], Nurse name [100], Nurse shift [100].
Lastly, for the Patient class we have a range of 1000 – Patient_id [1000], Patient_name [1000], Patient illness [1000].
Keys
For each class our primary key will be their unique ids assigned at the time of data entry in the system. We can use these keys in different search operations later when required for fast data retrieval.
Operations and the Justification.
The operations needed for implementing the discussed management system are rather standard ones. We will need functions for adding information in the relevant department for example; in order to add information of a new patient, we will need a function add() to enter information of the doctor to the array.
We also need the function delete() to remove data from the array in case of the scenario that someone leaves the hospital (e.g. a patient gets discharged from the hospital or a hospital staff member stops working at the hospital).
Finally we will also need the function update() in order to update information if needed, this could occur if the illness of the patient needs to be updated, or, if the schedule a doctor or shift of a nurse has changed so this change must be reflected in the array by updating the relevant information.
Algorithms and the Justification.
We need to be mindful of the fact that in order to make operations like searching fast, we have to take care of the way we sort our data in the arrays. In order to keep the array in a sorted manner, the implementation of quicksort can be used as it known to be a very effective sorting algorithm having a time complexity of . Other options available for sorting included bubble sort, merge sort, and insertion sort. We are not choosing any of these sorting algorithms for the following reasons:
- Bubble sort is very ineffective as compared to quick sort in terms of time complexity as it has a worst case scenario of .
- Insertion sort also has a worse time complexity than quick sort in all 3 cases – best, average and worst.
- Merge sort is the only sorting algorithm closest to or perhaps even better in terms of time complexity in sorting, but we chose quick sort over merge sort because merge sort is better used for linked lists instead of normal arrays.
Whereas for searching, we can use binary search algorithm to keep the searching quick and efficient (since our data is sorted) as binary search has a time complexity of .
The following code is a small sample of the way we can implement these algorithms:
Algorithm:
1) Enter the data of patient (Patient_id, Patient name, Patient illness), doctor (Doctor_id, Doctor name, Doctor_Ssecalization), and nurse (Nurse_id, Nurse name, Nurse shift).
2) Apply the sorting algorithm to arrange the data in sorted fashion depending on id
3) Perform a binary search to search the specific details.
4) Check the search and return the results.
[citationic]