A. Analyze the following problem domain and provide the UML class diagram for it. Make sure to include the associations and relationships such as inheritance. Also make sure to appropriately identify abstract methods and classes You are asked to design an information system to be used by doctors, patients and clinics. Patients and doctors have names and addresses. Patients' addresses and phone numbers are where they live and their cellphone number, and a doctor's address and phone number is the address and phone number of the clinic where he/she works. Doctors can be primary care doctors or specialists. A clinic has one or more doctors working there All doctors bill patients for a visit and can make appointment for a patient. If the vi 15 minutes, the primary care doctor copay charge is S$20, however for a visit that is more than 15 minutes, but less than 30 the copay charge is $30. The specialists each have a specialty field (for example surgery, urology, etc.) and charge patients a co-pay of $40 for every visit. After each visit, each patient goes through checkout. For all doctors, the checkout bills the patient. Billing is done differently for a primary care, it first asks the staff receptionist to enter the length of the visit, and then a copay for the prints a statement with the name of the doctor and the copay amount. Check out at the end of a p books next appointment of the patient with the primary care doctor. Booking an appointment adds a new appointment which includes the doctor, the patient, the appointment date, and expected appointment length to the patient's set of appointments and it also adds it to the doc for that date. isit to a primary care doctor is less than day is generated and added to the account balance of the patient. For a speciaist, billing the patient rimary care visit also tor's appointments. Given a date, a doctor can print his appointments scheduled Patients may be disabled or not-disabled. Each patient has his/her own schedule of appointments. When new appointments are booked they are added to the patient's schedule of appointments. Every patient can find out his/her next appointment print his appointments schedule, and can do a next appointment plan given an appointment. A Next appointment plan will print the name of the doctor to be visited, the address to go, estimated trip time, and estimated cost for the visit. For patients who are not disabled, the estimating of trip time uses 2 x uberTime(start,destination) +appointment length, and estimating cost uses 2 x uberCost(start,destination) +copay, where start and destination are patient's address and the address of doctor's clinic. For the patients who are disabled the city provides transportation help with Sunride, which they call and it charges $2 for each trip. For them, estimating of trip time uses xcurentSunRide Time(start,destination) +appointment length, and estimating of the cost will be 2+ copay, where start and destination are again the patient's address and the address of doctor's clinic. Notes: You do not need to include getter or setter methods for either part A or part B, but you do need to include constructors. (ii) You can assume the functions uberTime, uberCost, and currentSunRide Time are available. (iii) Indicate abstract methods, classes by writing the word "abstract" before them