The purpose of this project was to create a system that would save time when assigning nursing students clinical hours as well as allowing those students the freedom and ability to pick clinical hours that fit with their schedule. According to the client, it is one of its kind in a sense that it is the only program that allows students to choose their hours rather than having them assigned by their mentors/supervisors. In addition, it was designed to be a simple way for administrators at the school of nursing, the hospital or other medical organization to communicate and share contracts instead of having to use email, phone numbers, or other means of communication. It drastically simplifies this process and saves loads of time on all ends.

Watch the video

Technologies:

The code was primarily written in PHP, Javascript, and MySQL, with some HTML and CSS to hold everything together and create user friendly interfaces.

Software Development Tools

This section should list the tools chosen to assist software development, including testing. The actual software chosen will be heavily dependent upon the language in which the system will be implemented.

The list includes:

an application development tool - IDE;
a configuration manager / builder;
HTML, CSS, JavaScript & PHP editors;
MS word  for documentation;
Pencil tool for drawing diagrams;
IDE automated testing tools.

Deployment:

LAMP stack will be the ideal environment to deploy the SCPT application, it stands for linux (Ubuntu or CentOS - Server Operating Environments), Web-server (Apache or Nginx), MySQL for the database end and PHP 7.0 installation.

Create a MySQL Instance with a database name and run the following SQL Query:

-- phpMyAdmin SQL Dump
-- version 4.7.8
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Generation Time: Aug 27, 2018 at 03:29 AM
-- Server version: 10.1.35-MariaDB-1~xenial
-- PHP Version: 7.1.14
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `scpt`
--
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `username` varchar(255) NOT NULL,
  `resetmd5` varchar(255) NOT NULL DEFAULT '',
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `role` enum('students','sonadmin','hospadmin','superadmin') NOT NULL DEFAULT 'students',
  `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `firstname` varchar(255) NOT NULL,
  `lastname` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `users`
--
INSERT INTO `users` (`id`, `username`, `name`, `resetmd5`, `password`, `email`, `role`, `created`, `firstname`, `lastname`) VALUES
(27, 'sajiv.francis', '\'\'', '', '$2y$12$a2Hc/mroonzwOZb.sZCf4eq6XWx.fe7bCgfbG.OC3YySXcJkv3412', 'sajiv.francis@student.fairfield.edu', 'students', '2018-07-24 05:17:08', 'Sajiv', 'Francis'),
(28, 'hospadmin', '\'\'', '', '$2y$12$gXZoyH64DNDWsBMdi5RUjujYw1wvS.4422i5lL.opMK8rweFeFkEi', 'hospadmin@scpt.gwiddle.co.uk', 'hospadmin', '2018-07-24 15:05:01', 'HOSP', 'ADMIN'),
(29, 'sonadmin', '\'\'', '', '$2y$12$L2dg9DK2DtXkXQ/8BAgtKOH1Pe6GRTUEP24AJsQ.X0ZLPrYcryfy2', 'sonadmin@scpt.gwiddle.co.uk', 'sonadmin', '2018-07-24 15:05:01', 'SON', 'ADMIN'),
(30, 'superadmin', '\'\'', '', '$2y$12$yD5IPUvyJBmzp7lX9qBwSeP9mW.ZDJ1TE.NidrDC7uQTDmu3FLaPC', 'superadmin@scpt.gwiddle.co.uk', 'superadmin', '2018-07-24 15:07:05', 'SUPER', 'ADMIN');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;
-- user_id links to the users-table (in code)
  CREATE TABLE `events` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11),
  `title` varchar(255) NOT NULL,
  `desc` text,
  `start` DATETIME NULL DEFAULT NULL,
  `startColor` varchar(15) DEFAULT 'blue',
  `end` DATETIME NULL DEFAULT NULL,
  `endColor` varchar(15) DEFAULT 'red',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
-- if the status of a reservation is confirmed, then the event is closed for additional reservations
CREATE TABLE `reservations` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `event_id` int(11),
  `user_id` int(11),
  `title` varchar(255) NOT NULL,
  `desc` text,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `hosp_confirm_id` int(11) DEFAULT 0,
  `hosp_confirm_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `sona_confirm_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `sona_confirm_id` int(11) DEFAULT 0,
  `status` enum('pending','sonaconfirmed','hospconfirmed','confirmed') NOT NULL DEFAULT 'pending',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
-- phpMyAdmin SQL Dump
--

DESIGN METHOD AND STANDARDS

The design method used should be named and referenced. A brief description may be added to aid readers not familiar with the method. Any deviations and extensions of the method should be explained and justified. In this paper we give an example of how client-server technologies can be developed on the basis of a given design paradigm that enables web technologies to be applied to SCPT projects offering ease of maintenance and savings in life cycle costs.

The design standard might need to be different if more than one method or programming language is involved: for example, if some JavaScript design and programming takes place in an HTML project. A key feature of the design process is to attempt to isolate the various ‘layers’ that make up the overall architecture to ensure that changes in one layer have a minimal effect upon other layers in the system, such as for example in the business layer.

In following an OOD-based approach it is vital that the design process is able to discriminate between ‘objects’ and ‘classes’. An ‘object’ is a specific instance, containing a set of data and the methods to process the data. A ‘class’ is a generalized description of a group of objects that have the same data item(s) and method organization.

In designing objects there are four important ‘cardinal points’ to be remembered. These are: attributes – what the object knows methods – what the object does states – the changes that occur due to process flow events – responses to the outside world.

Object definitions should be annotated with these items. This will provide the beginnings of a detailed specification document. In addition, each object should be put into a UML diagram set, as this helps summarize the information into small, tight representations of each object in a standard format – in effect a blueprint for the structure of the business objects.

One area where careful attention to design can reap rewards in the longer term is in the interface between the client and the presentation layer. From its earliest inception in projects using the Smalltalk language the Model View Controller (MVC) paradigm has been one of the most implemented solutions in client-server computing. In implementations based on web technologies, such as PHP Pages (PHP) there is much to be gained from separating out elements of the application server architecture. One approach to this is given in an implementation of the MVC paradigm using PHP.