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.