clc02_htkhoi_fp12
clc02_htkhoi_fp12
TECHNOLOGY
Final project
Subject: Software Architecture & Design
Ha Noi, 04/2025
HEALTH CARE SYSTEM
1.3.1. Patient
Register/Login Patient creates a new For registration: Patient is not Patient gains access to
account or registered the system with
authenticates with For login: Patient has valid appropriate
Use Case Name Description Precondition Postcondition
Appointment is
Patient cancels a
Cancel Patient is authenticated marked as canceled
previously scheduled
Appointment Appointment exists and removed from
appointment
schedules
1.3.2. Doctor
Use Case
Description Precondition Postcondition
Name
Doctor requests
Lab test order is created
laboratory
Order Lab Tests Doctor is authenticated and sent to laboratory
examinations for a
technician
patient
Doctor documents
Doctor is authenticated
Write Medical patient visits, Medical report is added
Patient examination is
Reports treatments, and to patient's record
complete
outcomes
1.3.3. Nurse
Use Case
Description Precondition Postcondition
Name
1.3.4. Admin
Use Case
Description Precondition Postcondition
Name
Administrator creates,
User accounts are
Manage Users updates, or deactivates Administrator is authenticated
appropriately modified
user accounts
Administrator assigns
Manage Access Users have appropriate
and modifies system Administrator is authenticated
Rights access levels
permissions
Use Case
Description Precondition Postcondition
Name
Administrator creates
Staff schedules are
Schedule Staff work schedules for Administrator is authenticated
created and distributed
doctors and nurses
Administrator creates
Generate Reports are available
statistical and Administrator is authenticated
Reports for review and analysis
operational reports
1.3.5. Pharmacist
Use Case
Description Precondition Postcondition
Name
Pharmacist reviews
Prescription is
Verify prescriptions for Pharmacist is authenticated
approved or rejected
Prescriptions accuracy and Prescription exists
with reason
appropriateness
orders supplies
Pharmacist handles
Process Payment is processed
financial transactions Pharmacist is authenticated
Payments and recorded
for medications
Pharmacist consults
Communicate Prescription issues are
with doctors about Pharmacist is authenticated
with Doctors resolved
prescription issues
Use Case
Description Precondition Postcondition
Name
Insurance provider is
Insurance provider
authenticated Claim is processed with
Process Claims reviews and processes
Medical service has been approval or rejection
payment claims
provided
Handles the creation of new user accounts with proper validation, secure
User Registration password hashing, and initial role assignment based on user type (patient,
doctor, nurse, etc.)
Issues, validates, and refreshes JSON Web Tokens (JWT) for maintaining
Token Management
secure authenticated sessions across microservices
Password Provides functionality for password reset, recovery via email verification,
Management and password change operations with proper security measures
Role-based Access Implements and enforces permission systems based on user roles,
Control determining what actions and resources each user can access
Multi-factor Offers additional security layer through verification codes sent via SMS or
Authentication email for sensitive operations
Session Tracks active user sessions, handles session timeouts, and provides session
Management termination capabilities
Patient Profile Handles creation, retrieval, updating, and deletion of patient demographic
Functions Function Details
Medical History Maintains comprehensive patient medical history including past conditions,
Records surgeries, allergies, and family medical history
Insurance Stores and validates patient insurance details, policy numbers, coverage
Information limits, and provider information
Emergency Contacts Manages patient emergency contact information for urgent situations
Document Handles patient document uploads such as ID proofs, insurance cards, and
Management previous medical records
Tracks and manages patient consent for data sharing, procedures, and
Consent Management
research participation
Specialization and Tracks medical specialties, subspecialties, and areas of expertise for
Functions Function Details
Availability Handles doctor working hours, leave schedules, and availability slots
Management for appointment booking
Referral Management Handles outbound and inbound patient referrals between specialists
Availability Identifies and presents available time slots based on doctor schedules,
Checking room availability, and equipment requirements
Check-in Processing Handles patient arrival registration and waiting room management
Wait List Maintains lists of patients waiting for earlier appointments and fills
Management cancellations automatically
Controlled Substance Implements special handling and reporting for controlled substances
Tracking according to regulations
Creates standardized reports for test results with reference ranges and
Report Generation
interpretations
Critical Value Alerting Immediately notifies healthcare providers about abnormal results
Functions Function Details
Test Catalog Maintains database of available tests, their requirements, costs, and
Management processing times
Result History Maintains historical test results for trend analysis and comparison
Insurance Claim Prepares and submits claims to insurance companies for provided
Processing services
Account Receivable Tracks outstanding balances and manages collection processes for
Management unpaid accounts
Insurance Verification Validates patient insurance coverage and benefits before service
Functions Function Details
provision
Sends alerts to mobile devices for users of the healthcare system's mobile
Push Notifications
application
Batch Processing Handles bulk messaging for announcements, health campaigns, or system
Functions Function Details
maintenance alerts
Failed Delivery Implements retry logic and alternative delivery methods when primary
Handling notification fails
Logging and Monitoring Records API usage patterns, error rates, and performance metrics
Functions Function Details
Backup and Manages data backup processes and provides tools for system recovery
Recovery in case of failures
Auth Service Stores user credentials, roles, permissions, and • Direct connection only with
Component Description Connections
• Reads/writes to Patient
Service DB
Manages all patient-related operations and
• Connected to API Gateway
Patient Service serves as the system of record for patient
• Interacts with Doctor,
information.
Appointment, and Lab
Services
• Reads/writes to Doctor
Handles all doctor-related operations including Service DB
Doctor Service schedule management and professional • Connected to API Gateway
information. • Interacts with Appointment
and Patient Services
• Reads/writes to Appointment
Service DB
Appointment Manages scheduling, rescheduling, and
• Connected to API Gateway
Service cancellation of appointments.
• Interacts with Doctor, Patient,
and Notification Services
• Reads/writes to Pharmacy
Service DB
Pharmacy Handles prescription processing, medication
• Connected to API Gateway
Service dispensing, and inventory management.
• Interacts with Patient and
Billing Services
• Reads/writes to Notification
Service DB
Notification Manages all types of communications to users
• Connected to API Gateway
Service through various channels.
• Receives requests from all
other services
• Reads/writes to Admin
Service DB
Provides system administration capabilities and
Admin Service • Connected to API Gateway
operational oversight.
• May request data from all
other services
• id (UUID, PK)
• username (CharField, unique)
• email (EmailField, unique)
Central user entity that
• password (PasswordField, hashed)
stores core identity
• first_name (CharField)
information. All actors
User • last_name (CharField)
in the system have a
• date_joined (DateTimeField)
User record as their
• last_login (DateTimeField)
base identity.
• is_active (BooleanField)
• is_staff (BooleanField)
• phone_number (CharField)
Maps permissions to
RolePe • id (UUID, PK)
roles, defining what
rmissio • role (ForeignKey → Role)
actions are allowed for
n • permission (ForeignKey → Permission)
each role.
• id (UUID, PK)
• user (ForeignKey → User)
Stores refresh tokens for
• token (CharField, unique)
Token maintaining long-lived
• created_at (DateTimeField)
sessions securely.
• expires_at (DateTimeField)
• is_revoked (BooleanField)
• id (UUID, PK)
• user (ForeignKey → User)
Passwo
• token (CharField, unique) Manages password reset
rdRese
• created_at (DateTimeField) requests and tokens.
t
• expires_at (DateTimeField)
• is_used (BooleanField)
• id (UUID, PK)
• user (ForeignKey → User, null=True) Records login attempts
Login
• ip_address (GenericIPAddressField) for security monitoring
Attem
• user_agent (TextField) and brute-force
pt
• timestamp (DateTimeField) protection.
• success (BooleanField)
• gender (CharField)
• blood_type (CharField)
• address (TextField)
• emergency_contact_name (CharField) information.
• emergency_contact_phone (CharField)
• created_at (DateTimeField)
• updated_at (DateTimeField)
• id (UUID, PK)
• patient (ForeignKey → Patient)
• condition (CharField)
• diagnosed_date (DateField) Records patient's
Medical
• treatment (TextField) past and current
History
• is_chronic (BooleanField) medical conditions.
• notes (TextField)
• created_at (DateTimeField)
• updated_at (DateTimeField)
• id (UUID, PK)
• patient (ForeignKey → Patient)
• allergen (CharField) Documents patient
Allergy • reaction (TextField) allergies and adverse
• severity (CharField) reactions.
• diagnosed_date (DateField)
• notes (TextField)
• notes (TextField)
• id (UUID, PK)
• patient (ForeignKey → Patient)
• provider_name (CharField)
• policy_number (CharField)
Stores patient
Insuran • group_number (CharField)
insurance details for
ceInfo • coverage_start_date (DateField)
billing purposes.
• coverage_end_date (DateField, nullable)
• primary_holder_name (CharField)
• relationship_to_holder (CharField)
• verification_status (CharField)
• id (UUID, PK)
• patient (ForeignKey → Patient)
Manages patient-
Patient • document_type (CharField)
uploaded documents
Docume • file (FileField)
like ID cards,
nt • name (CharField)
previous records, etc.
• upload_date (DateTimeField)
• notes (TextField)
• id (UUID, PK)
• patient (ForeignKey → Patient)
Tracks patient
• consent_type (CharField)
consent for various
Consent • given_date (DateTimeField)
purposes (e.g., data
• expiry_date (DateTimeField, nullable)
sharing, research).
• document (FileField, nullable)
• is_active (BooleanField)
Defines medical
• id (UUID, PK)
Specializa specialties that
• name (CharField, unique)
tion doctors can be
• description (TextField)
associated with.
• id (UUID, PK)
Associates
DoctorSp • doctor (ForeignKey → Doctor)
doctors with their
ecializatio • specialization (ForeignKey → Specialization)
medical
n • certification_date (DateField)
specialties.
• certification_number (CharField)
• id (UUID, PK)
Tracks
• doctor (ForeignKey → Doctor)
educational and
Qualificat • degree (CharField)
professional
ion • institution (CharField)
qualifications of
• year_of_completion (IntegerField)
doctors.
• certificate (FileField, nullable)
• id (UUID, PK)
• doctor (ForeignKey → Doctor)
Defines regular
• day_of_week (IntegerField)
Schedule working hours for
• start_time (TimeField)
doctors.
• end_time (TimeField)
• is_active (BooleanField)
Model Fields Description
• id (UUID, PK)
• doctor (ForeignKey → Doctor) Records doctor
• start_date (DateField) leave periods that
Leave • end_date (DateField) affect
• reason (TextField) appointment
• status (CharField) scheduling.
• created_at (DateTimeField)
• id (UUID, PK)
• doctor (ForeignKey → Doctor) Stores patient
DoctorRa • patient_id (UUID) feedback and
ting • rating (IntegerField) ratings for
• comment (TextField, nullable) doctors.
• created_at (DateTimeField)
• id (UUID, PK)
• patient_id (UUID)
• doctor_id (UUID)
• date (DateField)
• start_time (TimeField) Core appointment
Appointme • end_time (TimeField) entity linking patients
nt • status (CharField) and doctors at specific
• type (CharField) times.
• reason (TextField)
• notes (TextField)
• created_at (DateTimeField)
• updated_at (DateTimeField)
• status (CharField)
• changed_at (DateTimeField) (scheduled, confirmed,
• changed_by (UUID) completed, canceled).
• notes (TextField)
• id (UUID, PK)
Defines different types
• name (CharField, unique)
Appointme of appointments
• description (TextField)
ntType (consultation, follow-
• duration_minutes (IntegerField)
up, procedure).
• color_code (CharField)
• id (UUID, PK)
• name (CharField)
Manages physical
• floor (CharField)
locations where
Room • building (CharField)
appointments take
• capacity (IntegerField)
place.
• equipment (TextField)
• is_active (BooleanField)
• id (UUID, PK)
• patient_id (UUID)
• doctor_id (UUID)
• start_date (DateField) Defines recurring
Recurring
• end_date (DateField) appointments (e.g.,
Appointme
• day_of_week (IntegerField) weekly therapy,
nt
• start_time (TimeField) monthly check-ups).
• end_time (TimeField)
• frequency (CharField)
• reason (TextField)
2.5. Pharmacy Service
Model Fields Description
• id (UUID, PK)
• name (CharField)
• generic_name (CharField)
• description (TextField) Catalog of
Medicatio • dosage_form (CharField) medications
n • strength (CharField) available in the
• manufacturer (CharField) pharmacy.
• require_prescription (BooleanField)
• created_at (DateTimeField)
• updated_at (DateTimeField)
• id (UUID, PK)
• medication (ForeignKey → Medication)
• batch_number (CharField)
• stock_quantity (IntegerField) Tracks medication
Inventory • unit_price (DecimalField) stock levels and
• cost_price (DecimalField) inventory details.
• expiration_date (DateField)
• reorder_level (IntegerField)
• last_restock_date (DateField)
• id (UUID, PK)
• patient_id (UUID)
• doctor_id (UUID) Documents
Prescriptio • date_prescribed (DateTimeField) medication orders
n • status (CharField) from doctors to
• notes (TextField) patients.
• is_recurring (BooleanField)
• created_at (DateTimeField)
• id (UUID, PK)
• prescription (ForeignKey → Prescription)
Records of
Dispensati • pharmacist_id (UUID)
medications
on • dispensed_date (DateTimeField)
dispensed to patients.
• status (CharField)
• notes (TextField)
• id (UUID, PK)
Individual
• dispensation (ForeignKey → Dispensation)
medications
Dispensati • prescription_item (ForeignKey → PrescriptionItem)
dispensed with
onItem • inventory (ForeignKey → Inventory)
specific inventory
• quantity_dispensed (IntegerField)
batch details.
• notes (TextField)
• id (UUID, PK)
• name (CharField)
• contact_person (CharField) Information about
Supplier • email (EmailField) medication suppliers
• phone (CharField) and distributors.
• address (TextField)
• is_active (BooleanField)
• order_date (DateTimeField)
• expected_delivery_date (DateField)
• status (CharField) restocking.
• total_amount (DecimalField)
• notes (TextField)
• id (UUID, PK)
• name (CharField, unique)
• description (TextField)
• preparation_instructions (TextField) Catalog of available
TestType
• normal_range (CharField) laboratory tests.
• units (CharField)
• turnaround_time_hours (IntegerField)
• price (DecimalField)
• id (UUID, PK)
• patient_id (UUID)
• doctor_id (UUID)
Test requests ordered
• ordered_date (DateTimeField)
TestOrder by doctors for
• required_date (DateField, nullable)
patients.
• status (CharField)
• clinical_notes (TextField)
• priority (CharField)
• id (UUID, PK)
• test_order (ForeignKey → TestOrder)
TestOrder Individual tests
• test_type (ForeignKey → TestType)
Item within an order.
• status (CharField)
• notes (TextField)
Model Fields Description
• id (UUID, PK)
• test_order_item (ForeignKey → TestOrderItem)
• sample_type (CharField) Biological samples
Sample • collection_date (DateTimeField) collected for
• collected_by (UUID) laboratory testing.
• status (CharField)
• barcode (CharField, unique)
• id (UUID, PK)
• test_order_item (ForeignKey → TestOrderItem)
• performed_by (UUID)
• verified_by (UUID, nullable)
Test outcomes and
TestResult • performed_date (DateTimeField)
interpretations.
• result_value (CharField)
• is_abnormal (BooleanField)
• interpretation (TextField)
• report_file (FileField, nullable)
• id (UUID, PK)
• name (CharField)
• model (CharField)
• serial_number (CharField, unique) Laboratory
Equipment • manufacturer (CharField) equipment used for
• purchase_date (DateField) conducting tests.
• last_maintenance_date (DateField)
• next_maintenance_date (DateField)
• status (CharField)
• id (UUID, PK)
TestEquip Associates tests with
• test_type (ForeignKey → TestType)
ment required equipment.
• equipment (ForeignKey → Equipment)
• id (UUID, PK)
• patient_id (UUID)
• generated_date (DateTimeField)
• due_date (DateField)
Financial documents
• status (CharField)
Invoice detailing charges for
• subtotal (DecimalField)
healthcare services.
• tax_amount (DecimalField)
• discount_amount (DecimalField)
• total_amount (DecimalField)
• notes (TextField)
• id (UUID, PK)
• invoice (ForeignKey → Invoice)
• service_type (CharField)
• description (TextField)
InvoiceIte Individual line items
• service_date (DateField)
m within an invoice.
• quantity (IntegerField)
• unit_price (DecimalField)
• total_price (DecimalField)
• reference_id (UUID, nullable)
• amount (DecimalField)
• payment_date (DateTimeField)
• payment_method (CharField)
• transaction_id (CharField, nullable) patients.
• status (CharField)
• notes (TextField)
• received_by (UUID)
• id (UUID, PK)
• provider_name (CharField)
• contact_person (CharField)
Insurance company
• email (EmailField)
Insurance information for
• phone (CharField)
claims processing.
• address (TextField)
• website (URLField)
• is_active (BooleanField)
• id (UUID, PK)
• invoice (ForeignKey → Invoice)
• insurance (ForeignKey → Insurance)
• patient_id (UUID)
Insurance
Insurance • policy_number (CharField)
reimbursement
Claim • claim_date (DateTimeField)
requests.
• status (CharField)
• claimed_amount (DecimalField)
• approved_amount (DecimalField, nullable)
• rejection_reason (TextField, nullable)
• id (UUID, PK)
Bundled service
PricingPa • name (CharField)
offerings with special
ckage • description (TextField)
pricing.
• is_active (BooleanField)
• id (UUID, PK)
• package (ForeignKey → PricingPackage)
PricingPa Services included in
• pricing_item (ForeignKey → PricingItem)
ckageItem pricing packages.
• quantity (IntegerField)
• discount_percent (DecimalField)
• id (UUID, PK)
Communication
• name (CharField, unique)
Channel methods (email, SMS,
• description (TextField)
in-app, push).
• is_active (BooleanField)
• body_template (TextField)
• language_code (CharField)
• is_active (BooleanField)
• last_updated (DateTimeField)
• id (UUID, PK)
• user_id (UUID)
• notification_type (ForeignKey → User settings for how
UserPreferenc
NotificationType) they want to receive
e
• channel (ForeignKey → Channel) different notifications.
• is_enabled (BooleanField)
• updated_at (DateTimeField)
• id (UUID, PK)
• user_id (UUID)
• notification_type (ForeignKey →
NotificationType)
Record of notifications
Notification • title (CharField)
sent to users.
• message (TextField)
• data (JSONField)
• is_read (BooleanField)
• created_at (DateTimeField)
• id (UUID, PK)
• notification (ForeignKey → Notification)
• channel (ForeignKey → Channel) Tracking information
DeliveryAttem
• attempt_time (DateTimeField) for notification
pt
• status (CharField) delivery attempts.
• error_message (TextField, nullable)
• delivery_id (CharField, nullable)
NotificationType)
• scheduled_time (DateTimeField)
• data (JSONField)
• status (CharField)
• created_at (DateTimeField)
• id (UUID, PK)
• key (CharField, unique)
• value (TextField)
Global configuration
SystemConfi • description (TextField)
parameters for the
g • is_encrypted (BooleanField)
system.
• created_at (DateTimeField)
• updated_at (DateTimeField)
• updated_by (UUID)
• id (UUID, PK)
• user_id (UUID, nullable)
• action (CharField)
• entity_type (CharField) Comprehensive audit
AuditLog • entity_id (CharField) trail of system
• timestamp (DateTimeField) activities.
• ip_address (GenericIPAddressField)
• user_agent (TextField)
• details (JSONField)
• target_roles (CharField)
• is_active (BooleanField)
• created_by (UUID)
• created_at (DateTimeField)
• id (UUID, PK)
• name (CharField)
• address (TextField)
• phone (CharField) Healthcare facility
FacilityInfo • email (EmailField) details for display and
• website (URLField) contact purposes.
• operating_hours (JSONField)
• description (TextField)
• logo (ImageField)
• id (UUID, PK)
• name (CharField, unique)
Organizational
• description (TextField)
Department structure of the
• manager_id (UUID, nullable)
healthcare facility.
• parent_department (ForeignKey → self,
nullable)
• id (UUID, PK)
• name (CharField)
• description (TextField) Saved report
• query (TextField) definitions for
Report
• parameters (JSONField) administrative
• created_by (UUID) reporting.
• created_at (DateTimeField)
• is_active (BooleanField)
• next_run_time (DateTimeField)
• last_run_time (DateTimeField, nullable)
• is_active (BooleanField)
• id (UUID, PK)
Categories of hospital
ResourceTyp • name (CharField, unique)
resources (equipment,
e • description (TextField)
supplies, etc.).
• category (CharField)
• id (UUID, PK)
• resource_type (ForeignKey → ResourceType)
• name (CharField)
Tracking of hospital
• quantity (IntegerField)
Resource resources and their
• location (CharField)
status.
• status (CharField)
• last_maintenance (DateField, nullable)
• next_maintenance (DateField, nullable)
This section details the key classes, methods, and relationships within each
microservice component of the Healthcare System. The design follows object-
oriented principles and implements the Domain-Driven Design approach to
ensure clear separation of concerns and maintainable code architecture.
creation with
proper
**extra_fields)
password
• get_by_natural_key(username)
hashing and
validation
• register_user(user_data)
Business
• update_user(user_id, user_data)
logic for user
UserService • deactivate_user(user_id)
account
• change_password(user_id, old_password,
operations
new_password)
3.1.2. Authentication
Class Methods Description
Core
• authenticate(username, password)
authentication
• generate_tokens(user)
functions
AuthService • refresh_token(refresh_token)
including
• validate_token(token)
JWT token
• revoke_token(token)
generation
Handles
• create_reset_token(email) secure
PasswordResetService • validate_reset_token(token) password
• reset_password(token, new_password) recovery
workflows
• create_patient(user_id, patient_data)
Core patient
• update_patient(patient_id, patient_data)
PatientService record
• get_patient(patient_id)
management
• search_patients(query)
• add_medical_history(patient_id,
Patient
history_data)
MedicalHistoryServic medical
• update_medical_history(history_id,
e history
history_data)
operations
• get_patient_history(patient_id)
• add_allergy(patient_id, allergy_data)
Allergy
• update_allergy(allergy_id, allergy_data)
AllergyService tracking and
• delete_allergy(allergy_id)
management
• get_patient_allergies(patient_id)
• add_insurance(patient_id, insurance_data)
Insurance
Insuranc • update_insurance(insurance_id, insurance_data)
information
eService • verify_insurance(insurance_id)
management
• get_patient_insurance(patient_id)
• get_document(document_id)
• delete_document(document_id) document
ntService
• list_patient_documents(patient_id, management
document_type=None)
• record_consent(patient_id, consent_type,
expiry_date=None) Patient
ConsentS
• revoke_consent(consent_id) consent
ervice
• check_consent(patient_id, consent_type) tracking
• get_patient_consents(patient_id)
• create_doctor(user_id, doctor_data)
Doctor
• update_doctor(doctor_id, doctor_data)
DoctorService profile
• get_doctor(doctor_id)
management
• search_doctors(criteria)
• add_specialization(doctor_id,
specialization_data)
• remove_specialization(doctor_id, Doctor
SpecializationServic
specialization_id) specialization
e
• get_doctor_specializations(doctor_id) management
• find_doctors_by_specialization(specializati
on_id)
• get_doctor_qualifications(doctor_id)
• set_regular_hours(doctor_id, schedule_data)
Doctor
• update_schedule(schedule_id, schedule_data)
ScheduleServic working
• get_doctor_schedule(doctor_id)
e hours
• check_availability(doctor_id, date, start_time,
management
end_time)
• create_appointment(patient_id,
doctor_id, appointment_data)
• reschedule_appointment(appoint
Core
ment_id, new_date, new_time)
AppointmentService appointment
• cancel_appointment(appointment
operations
_id, reason)
• complete_appointment(appointm
ent_id, notes)
_id, status=None,
from_date=None, to_date=None)
• get_doctor_appointments(doctor
retrieval and
_id, status=None,
filtering
from_date=None, to_date=None)
• get_daily_schedule(doctor_id,
date)
• create_recurring_appointment(pa
tient_id, doctor_id, recurring_data)
• update_recurring_pattern(recurri
Recurring
RecurringAppointmentServic ng_id, pattern_data)
appointment
e • cancel_recurring_series(recurrin
management
g_id)
• generate_appointments(recurring
_id, date_range)
• add_room(room_data)
• update_room(room_id,
room_data) Facility
RoomService • get_available_rooms(date, room
start_time, end_time) management
• assign_room(appointment_id,
room_id)
doctor_id=None)
• validate_new_appointment(pati
ent_id, doctor_id, date,
Business rule
start_time, end_time)
AppointmentValidationServic validation
• check_conflicts(doctor_id, date,
e for
start_time, end_time)
appointments
• verify_doctor_availability(doct
or_id, date, start_time, end_time)
• create_medication(medication_data)
• update_medication(medication_id, Medication
MedicationServic
medication_data) catalog
e
• search_medications(query) management
• get_medication_details(medication_id)
• add_inventory(medication_id, inventory_data)
• update_stock(inventory_id, quantity_change, Medication
InventoryService reason) inventory
• check_stock(medication_id) tracking
• get_low_stock_items()
• add_supplier(supplier_data)
Supplier and
• update_supplier(supplier_id, supplier_data)
SupplierService purchasing
• get_suppliers_for_medication(medication_id)
management
• create_purchase_order(supplier_id, items)
3.5.2. Prescription Management
Class Methods Description
• create_prescription(patient_id, doctor_id,
prescription_data)
Prescription
• add_prescription_item(prescription_id,
PrescriptionService creation and
medication_id, dosage_data)
management
• revoke_prescription(prescription_id, reason)
• get_active_prescriptions(patient_id)
• dispense_prescription(prescription_id,
pharmacist_id)
Medication
• dispense_item(prescription_item_id,
DispensationService dispensing
inventory_id, quantity)
workflow
• get_patient_dispensation_history(patient_id)
• verify_prescription(prescription_id)
• check_interactions(patient_id,
Drug safety
medication_id)
DrugInteractionServic and
• get_patient_current_medications(patient_id)
e interaction
• record_adverse_reaction(patient_id,
checking
medication_id, reaction_data)
• create_test_type(test_data)
Laboratory
• update_test_type(test_type_id, test_data)
TestTypeService test catalog
• get_test_details(test_type_id)
management
• search_tests(query)
• cancel_test_order(order_id, reason)
• get_patient_test_orders(patient_id)
• register_sample(test_item_id, sample_data)
Biological
• update_sample_status(sample_id, status)
SampleService sample
• print_sample_label(sample_id)
management
• track_sample(sample_id)
• register_equipment(equipment_data)
• schedule_maintenance(equipment_id, date) Laboratory
EquipmentService • record_maintenance(equipment_id, equipment
maintenance_data) management
• get_equipment_history(equipment_id)
• schedule_qc(test_type_id, frequency)
• record_qc_result(equipment_id,
Quality
test_type_id, qc_data)
QualityControlService assurance
• get_qc_history(test_type_id)
processes
• verify_equipment_calibration(equipment_i
d)
• add_invoice_item(invoice_id, item_data)
generation
• apply_discount(invoice_id, discount_type,
and
amount)
management
• finalize_invoice(invoice_id)
• record_payment(invoice_id, payment_data)
Payment
• process_credit_card(payment_data)
PaymentService processing
• issue_refund(payment_id, amount, reason)
and tracking
• get_payment_history(patient_id)
• get_service_price(service_code)
Service
• apply_package_pricing(patient_id, package_id)
PricingService pricing and
• calculate_total(invoice_id)
calculation
• apply_tax(invoice_id)
• create_claim(invoice_id, insurance_id)
• submit_claim(claim_id) Insurance
InsuranceClaim
• update_claim_status(claim_id, status, claim
Service
notes=None) workflow
• record_payment(claim_id, amount_paid)
• verify_coverage(patient_id, service_code)
Insurance
• check_eligibility(patient_id, insurance_id)
CoverageVerifi verification
• get_coverage_details(patient_id)
cationService and
• estimate_patient_responsibility(patient_id,
eligibility
service_codes)
rejection_reason) tracking
• create_template(notification_type, channel,
template_data)
Message
TemplateSer • render_template(template_id, context_data)
template
vice • get_template(notification_type, channel,
management
language=None)
• update_template(template_id, template_data)
• schedule_notification(user_id, notification_type,
data, scheduled_time) Future
ScheduleSer
• cancel_scheduled(scheduled_id) notification
vice
• process_due_notifications() scheduling
• reschedule_notification(scheduled_id, new_time)
• verify_delivery(message_id)
• check_delivery_status(message_id) implementation
• get_sms_statistics(date_range)
• process_request(request) Authentication
AuthenticationMidd • validate_token(token) verification for
leware • refresh_session(refresh_token) incoming
• handle_unauthenticated() requests
• check_rate_limit(identifier, endpoint)
• increment_counter(identifier, Request rate
RateLimitingService endpoint) limiting
• get_current_limit(identifier) implementation
• handle_rate_exceeded()
3.9.2. Integration and Documentation
Class Methods Description
• register_service(service_name, url,
health_check_path) Service
ServiceRegistryS
• discover_service(service_name) discovery
ervice
• check_service_health(service_name) implementation
• unregister_service(service_name)
• track_request(service_name, success)
Circuit breaker
CircuitBreakerSe • check_circuit_state(service_name)
pattern for fault
rvice • open_circuit(service_name)
tolerance
• reset_circuit(service_name)
• generate_api_docs(service_name)
• aggregate_all_docs() API
DocumentationS
• get_endpoint_documentation(path, documentation
ervice
method) management
• update_documentation()
• get_config(key)
Conf System-wide
• set_config(key, value)
igSer configuration
• get_configuration_group(group)
vice management
• reload_configuration()
Anno
• create_announcement(announcement_data)
unce System
• publish_announcement(announcement_id)
ment announcement
• expire_announcement(announcement_id)
Servi management
• get_active_announcements(roles=None)
ce
• create_report(report_data)
• generate_report(report_id,
parameters)
Administrative
ReportService • schedule_report(report_id,
reporting tools
schedule_data)
• export_report(report_id,
format)
• get_appointment_statistics(dat
e_range)
• get_billing_summary(date_ran Business
AnalyticsService ge) intelligence
• get_patient_demographics() and analytics
• get_doctor_performance_metri
cs(doctor_id=None)
• add_resource(resource_data)
• update_resource_status(resour
Hospital
ce_id, status)
ResourceManagementService resource
• track_resource_usage(resource
tracking
_id, usage_data)
• get_resource_inventory()
3.11. AI Assistant Service
3.11.1. Conversation Management
Class Methods Description
• create_conversation(user_id)
Convers • add_message(conversation_id, message, Management
ationSer is_user=True) of chat
vice • get_conversation_history(conversation_id) conversations
• end_conversation(conversation_id)
• process_message(message, user_id,
Message conversation_id) Natural
Processi • detect_intent(message) language
ngServi • generate_response(intent, entities, processing
ce conversation_id) pipeline
• format_response(response_data)
• initialize_context(conversation_id, user_id)
Conversation
Context • update_context(conversation_id, context_data)
context
Service • get_current_context(conversation_id)
management
• clear_context(conversation_id)
• get_patient_appointments(patient_id)
Service Integration
• get_medication_information(medication_name)
Integrat with other
• check_doctor_availability(doctor_id, date)
ionServ system
• book_appointment(patient_id, doctor_id,
ice services
appointment_data)
Class Methods Description
• record_feedback(conversation_id, feedback_data)
Feedba Learning
• analyze_feedback(date_range=None)
ckServi from user
• improve_model(feedback_batch)
ce feedback
• track_response_quality(conversation_id, response_id)