university of westminster department of computer science this is provi
Search for question
Question
University of Westminster
Department of Computer Science
**This is provisional and subject to revisions
5COSC022W
Client-Server Architectures - Coursework (2023/24)
Module leader
Unit
Coursework
Weighting:
60%
Qualifying mark
30%
Description
Learning Outcomes
Covered in this
Assignment:
REST API design, development and implementation.
This assignment contributes towards the following Learning Outcomes (LOS):
LO1 Gain a thorough understanding of RESTful principles and their
application in API design.
LO2 Acquire familiarity with the JAX-RS framework as a tool for building
RESTful APIs in Java.
Handed Out:
March 2024
Expected deliverables
Method of Submission:
A zip file containing the developed project
Video demonstration
Report in a pdf format
Electronic submission on Blackboard via a provided link close to the submission
time.
Type of Feedback and Due
Date:
BCS CRITERIA MEETING IN
THIS ASSIGNMENT
Written feedback within 15 working days.
2.1.1 Knowledge and understanding of facts, concepts, principles &
theories
2.1.2 Use of such knowledge in modelling and design
2.1.3 Problem solving strategies
2.2.1 Specify, design or construct computer-based systems
2.2.4 Deploy tools effectively
2.3.2 Development of general transferable skills
3.1.1 Deploy systems to meet business goals
4.1.1 Knowledge and understanding of scientific and engineering
principles
4.1.3 Knowledge and understanding of computational modelling Assessment regulations
Refer to section 4 of the "How you study" guide for undergraduate students for a
clarification of how you are assessed, penalties and late submissions, what constitutes
plagiarism etc.
Penalty for Late Submission
If you submit your coursework late but within 24 hours or one working day of the
specified deadline, 10 marks will be deducted from the final mark, as a penalty for late
submission, except for work which obtains a mark in the range 40 - 49%, in which case
the mark will be capped at the pass mark (40%). If you submit your coursework more
than 24 hours or more than one working day after the specified deadline you will be
given a mark of zero for the work in question unless a claim of Mitigating Circumstances
has been submitted and accepted as valid.
It is recognised that on occasion, illness or a personal crisis can mean that you fail to
submit a piece of work on time. In such cases you must inform the Campus Office in
writing on a mitigating circumstances form, giving the reason for your late or non-
submission. You must provide relevant documentary evidence with the form. This
information will be reported to the relevant Assessment Board that will decide whether
the mark of zero shall stand. For more detailed information regarding University
Assessment Regulations, please refer to the following website:
http://www.westminster.ac.uk/study/current-students/resources/academic-
regulations
Learning Goals:
•
•
Define key principles of REST architecture.
Differentiate between RESTful and non-RESTful APIs.
•
Recognize the importance of resource-based interactions.
•
Understand the role of JAX-RS in Java-based API development.
•
Explore JAX-RS annotations for resource mapping and HTTP method handling.
•
Implement basic resource classes using JAX-RS. Overview of the project Scenario:
The coursework presents students with the challenge of designing and implementing a
Health System API that addresses the complex requirements of modern healthcare
management. The API will serve as the foundation upon which various healthcare
applications and systems can be built, providing essential functionalities for patient
management, appointment scheduling, medical record keeping, prescription management,
and billing.
This coursework is designed to align with specific student learning goals, focusing on
REST API design and implementation using JAX-RS. The objectives aim to equip students
with practical skills and knowledge that directly contribute to their understanding of
modern software development practices and the role of RESTful APIs in the context of
healthcare systems.
System Entities:
1. Person:
Represents a generic individual with attributes such as name, contact
information, and address.
2. Patient:
•
Extends the Person entity to include specific details relevant to patients, such as
medical history and current health status.
3. Doctor:
•
Also extends the Person entity to include information about healthcare
professionals, including their specialization and contact details.
4. Appointment:
•
Represents scheduled appointments between patients and doctors, including
details like date, time, and associated participants.
5. Medical Record:
•
Holds comprehensive medical information about patients, covering diagnoses,
treatments, and other relevant data.
6. Prescription: 7. Billing:
Records information about prescribed medications, including dosage,
instructions, and duration.
Manages financial transactions related to healthcare services, including
invoices, payments, and outstanding balances.
Marking Guidelines:
1. Model Classes (7 Marks):
All model classes (Person, Patient, Doctor, Appointment, MedicalRecord,
Prescription, Billing) are well-implemented with correct attributes, getters,
setters, and constructors. Proper use of inheritance with clear hierarchies and
relationships among classes. All classes have well-defined constructors with
appropriate parameters and initialization of attributes.
2. DAO Implementation (25 Marks):
• Create well-implemented DAO classes (PatientDAO, DoctorDAO,
AppointmentDAO, MedicalRecordDAO, PrescriptionDAO, BillingDAO) with all
CRUD methods for corresponding entities. Implement comprehensive
exception handling and validation using HTTP response codes.
3. Restful resource implementation (45 Marks):
Resource classes for Patient, Doctor, Appointment, Medical Record,
Prescription and Billing are created. Each Resource class includes all HTTP
requests and methods. Appropriate endpoints to implement different
operations such as retrieving patient/doctor/billing/prescription/appointment
details by ID, creating doctors/patients/billing/prescription, searching for
available appointments, scheduling appointments, accessing medical records,
handling billing follow RESTful principles and are accurately implemented.
Resources are clearly identified and named according to RESTful conventions.
URIs are intuitive, hierarchical, and self-explanatory. Appropriate HTTP
methods (GET, POST, PUT, DELETE, etc.) are used for each operation on
resources. Methods align with CRUD operations. Possible exceptions are caught
along with logging. Logs provide detailed information suitable for debugging. 4. Code Organization (3 Marks):
•
Organize code following best practices for separation of concerns, modularity,
and maintainability. Providing clear explanations for codes.
5. Documentation (10 Marks):
A comprehensive class diagram is included, demonstrating clear and accurate
relationships between all classes, along with attributes and methods. A full list
of URIs is included, providing a clear overview of all endpoints. A
comprehensive test plan is provided, covering all endpoints and ensuring
thorough testing of the entire system.
6. Video Demonstration (5 Marks):
Provide a comprehensive video demonstration showcasing the API's
functionality, proper usage, and interaction with Postman tests. The video
should be clear and understandable.
Notes:
When implementing the classes, you must adhere to object-oriented principles like
inheritance, encapsulation, etc. For example, when you invoke an endpoint for the
appointments, the expected JSON output should be something as follows:
{
"id": 123,
"date": "2024-03-12",
"time": "10:00",
"patient": {
},
"id": 456,
"name": "John Doe"
// ...other simplified patient info
"doctor":
}
"id": 789,
"name": "Dr. Jane Smith"
// ...other simplified doctor info
}
}
As you can see, when the endpoint is invoked, the information for the doctor and patient is
also presented along with id, date and time for appointment. Please also note that you
may use any data structure like List and Map to store data for each entity.