Coursework Client Server Architectures
Coursework Client Server Architectures
Unit Coursework
Weighting: 60%
Video demonstration
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:
2. Patient:
• Extends the Person entity to include specific details relevant to patients, such as
medical history and current health status.
3. Doctor:
4. Appointment:
5. Medical Record:
6. Prescription:
• Records information about prescribed medications, including dosage,
instructions, and duration.
7. Billing:
Marking Guidelines:
1. Model Classes (7 Marks):
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.
Possible relationships between classes:
Here's an explanation of the information that should be shown in the response for each of
the relationships:
Patient-Doctor Relationship:
When retrieving information about a patient or a doctor, the response should include
details about their associated doctors or patients, respectively. For example, when
fetching patient details, the response may include a list of doctors the patient is currently
consulting, including their names, specialties, and contact information. Similarly, when
fetching doctor details, the response may include a list of patients the doctor is currently
treating, along with relevant patient information such as names and contact details.
Appointment-Patient Relationship:
When retrieving appointment details, the response should include information about the
patient associated with the appointment. This includes the patient's name, contact
information, and any other relevant details. Additionally, the response should include
details about the appointment itself, such as the date, time, reason for the appointment,
and the doctor involved.
Appointment-Doctor Relationship:
Similarly, when retrieving appointment details, the response should include information
about the doctor associated with the appointment. This includes the doctor's name,
specialty, contact information, and any other relevant details. Additionally, the response
should include details about the appointment, such as the date, time, reason for the
appointment, and the patient involved.
Prescription-Patient Relationship:
When retrieving prescription details, the response should include information about the
patient associated with the prescription. This includes the patient's name, contact
information, and any other relevant details. Additionally, the response should include
details about the prescription itself, such as the prescribed medication, dosage,
instructions, duration, and the doctor who issued the prescription.
Prescription-Doctor Relationship:
Similarly, when retrieving prescription details, the response should include information
about the doctor associated with the prescription. This includes the doctor's name,
specialty, contact information, and any other relevant details. Additionally, the response
should include details about the prescription itself, such as the prescribed medication,
dosage, instructions, duration, and the patient for whom the prescription was issued.
Billing-Patient Relationship:
When retrieving billing information, the response should include details about the patient
associated with the billing transaction. This includes the patient's name, contact
information, and any other relevant details. Additionally, the response should include
details about the billing transaction itself, such as the invoice number, transaction date,
billed amount, payment status, and any outstanding balances.
Billing-Doctor Relationship:
If billing transactions are associated with doctors, the response should include details
about the doctor responsible for the billed services. This includes the doctor's name,
specialty, contact information, and any other relevant details. Additionally, the response
should include details about the billing transaction itself, such as the invoice number,
transaction date, billed amount, payment status, and any outstanding balances.
Billing-Invoice Relationship:
When retrieving billing transactions, the response should include details about the invoice
associated with each transaction. This includes information such as the invoice number,
issue date, due date, billed amount, payment status, and any outstanding balances.
Additionally, the response should include details about the individual billing transactions
included in the invoice, such as transaction dates, billed amounts, and payment status.