5.5 KiB
5.5 KiB
🏥 Sistem Informasi Rumah Sakit Jaya Abadi (OOP Implementation)
Program CLI interaktif berbasis Python yang mengimplementasikan konsep dasar Object-Oriented Programming (OOP) untuk pengelolaan alur operasional rumah sakit, mulai dari pendaftaran pasien, penjadwalan janji temu, pemeriksaan dokter, tindakan keperawatan, hingga pencatatan rekam medis.
📌 Penerapan Konsep OOP
1. Pewarisan (Inheritance)
- Superclass:
Employee- Menyimpan atribut umum pegawai (
employee_id,name,age,position,status,birth_date,hourly_salary) dan method dasar (total_salary(),display_info(),info_company()).
- Menyimpan atribut umum pegawai (
- Subclass:
Receptionist: Menangani registrasi pasien dan pengaturan jadwal temu dengan dokter.Doctor: Melakukan diagnosis, memberikan resep obat, dan mengatur jadwal praktek.Nurse: Melakukan pemeriksaan awal fisik, pemberian obat sesuai resep, dan pembaruan rekam medis.
2. Enkapsulasi (Encapsulation)
Semua atribut internal pada class Pasien, Employee, dan Doctor dijadikan private (menggunakan prefix __) untuk melindungi integritas data. Akses data dikontrol menggunakan dekorator @property (Getter) dan @<property>.setter (Setter):
- Validasi nilai numerik (seperti umur dan gaji tidak boleh negatif).
- Menjaga keamanan data sensitif rekam medis pasien.
3. Polimorfisme & Method Overriding
Method dari Superclass di-override oleh Subclass sesuai kebutuhan spesifik:
total_salary()padaDoctor: Meng-override perhitungan gaji dasarEmployeedengan menambahkan tunjangan spesialis medis (__tunjangan_spesialis).display_info()pada Seluruh Subclass: Menyesuaikan tampilan informasi sesuai peran dan spesialisasi masing-masing entitas pegawai (Receptionist,Doctor,Nurse).
🏗️ Diagram Kelas (Class Diagram)
classDiagram
class Pasien {
-str __nama
-str __id_pasien
-str __birth_date
-str __alamat
-str __telp
-str __keluhan
-bool __bpjs
-int __no_antrian
-str __dokter
-str __diagnosis
-str __resep
-str __obat
-str __dosis
-str __catatan
-str __status
+get_info()
+get_rekam_medis()
}
class Employee {
+str company$
+int total_employee$
+int working_hours
-str __employee_id
-str __name
-int __age
-str __position
-str __status
-str __birth_date
-int __hourly_salary
+total_salary() int
+display_info()
+info_company()$
}
class Receptionist {
+int antrian_counter$
+display_info()
+register_patient(pasien)
+manage_appointment(pasien, dokter, waktu)
}
class Doctor {
-int __tunjangan_spesialis
+total_salary() int
+display_info()
+diagnose_patient(pasien, diagnosis, resep)
+set_schedule(hari, jam_mulai, jam_selesai)
}
class Nurse {
+display_info()
+examine_patient(pasien)
+give_medicine(pasien, obat, dosis)
+update_medical_record(pasien, catatan)
}
Employee <|-- Receptionist : Mewarisi
Employee <|-- Doctor : Mewarisi
Employee <|-- Nurse : Mewarisi
Receptionist ..> Pasien : Mendaftarkan
Doctor ..> Pasien : Mendiagnosis
Nurse ..> Pasien : Merawat
⚙️ Fitur dan Alur Sistem
- Menu Pasien:
- Registrasi data diri pasien baru.
- Melihat daftar semua pasien.
- Melihat detail informasi profil pasien.
- Memeriksa riwayat rekam medis lengkap.
- Menu Receptionist:
- Melihat info & data receptionist.
- Mendaftarkan pasien & menerbitkan nomor antrean.
- Menjadwalkan janji temu pasien dengan dokter spesialis.
- Menu Dokter:
- Melihat info & jadwal dokter.
- Melakukan pemeriksaan, penetapan diagnosis, dan peresepan obat.
- Menetapkan jadwal praktek klinik dokter.
- Menu Perawat:
- Melihat info tenaga perawat.
- Melakukan pemeriksaan awal (vital sign/kondisi fisik).
- Memberikan obat kepada pasien sesuai resep dokter.
- Memperbarui catatan akhir pada rekam medis pasien.
- Info Perusahaan:
- Menampilkan informasi umum instansi rumah sakit dan total pegawai aktif.
🚀 Cara Menjalankan Program
Pastikan Python 3 telah terpasang di sistem Anda.
- Buka terminal pada folder proyek:
cd /home/matthewflrnt/study-archived/semester-3/oop-task/oop-rumahsakit - Jalankan script utama:
python3 main.py
📝 Ringkasan Jawaban Tugas OOP
- Pewarisan Superclass & Subclass:
- Superclass:
Employee - Subclass:
Receptionist,Doctor,Nurse
- Superclass:
- Atribut dan Method Spesifik:
- Diturunkan dari Superclass:
employee_id,name,age,position,status,birth_date,hourly_salary, methodtotal_salary(), dandisplay_info(). - Khusus Subclass:
Receptionist:register_patient(),manage_appointment()Doctor:__tunjangan_spesialis,diagnose_patient(),set_schedule()Nurse:examine_patient(),give_medicine(),update_medical_record()
- Diturunkan dari Superclass:
- Penerapan Method Overriding:
Doctor.total_salary()meng-override perhitungan gaji dasar untuk menambahkan tunjangan spesialis.Receptionist.display_info(),Doctor.display_info(), danNurse.display_info()meng-override method cetak info untuk menampilkan detail peran masing-masing.
- Enkapsulasi:
- Semua variabel instance private (
__attribute) dengan getter dan setter menggunakan properti@property.
- Semua variabel instance private (