Files
winproject/README.md
T
2026-10-14 21:10:10 +07:00

161 lines
5.5 KiB
Markdown

# 🏥 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()`).
* **Subclass**:
1. `Receptionist`: Menangani registrasi pasien dan pengaturan jadwal temu dengan dokter.
2. `Doctor`: Melakukan diagnosis, memberikan resep obat, dan mengatur jadwal praktek.
3. `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()` pada `Doctor`**: Meng-override perhitungan gaji dasar `Employee` dengan 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)
```mermaid
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
1. **Menu Pasien**:
* Registrasi data diri pasien baru.
* Melihat daftar semua pasien.
* Melihat detail informasi profil pasien.
* Memeriksa riwayat rekam medis lengkap.
2. **Menu Receptionist**:
* Melihat info & data receptionist.
* Mendaftarkan pasien & menerbitkan nomor antrean.
* Menjadwalkan janji temu pasien dengan dokter spesialis.
3. **Menu Dokter**:
* Melihat info & jadwal dokter.
* Melakukan pemeriksaan, penetapan diagnosis, dan peresepan obat.
* Menetapkan jadwal praktek klinik dokter.
4. **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.
5. **Info Perusahaan**:
* Menampilkan informasi umum instansi rumah sakit dan total pegawai aktif.
---
## 🚀 Cara Menjalankan Program
Pastikan Python 3 telah terpasang di sistem Anda.
1. Buka terminal pada folder proyek:
```bash
cd /home/matthewflrnt/study-archived/semester-3/oop-task/oop-rumahsakit
```
2. Jalankan script utama:
```bash
python3 main.py
```
---
## 📝 Ringkasan Jawaban Tugas OOP
1. **Pewarisan Superclass & Subclass**:
* **Superclass**: `Employee`
* **Subclass**: `Receptionist`, `Doctor`, `Nurse`
2. **Atribut dan Method Spesifik**:
* Diturunkan dari Superclass: `employee_id`, `name`, `age`, `position`, `status`, `birth_date`, `hourly_salary`, method `total_salary()`, dan `display_info()`.
* Khusus Subclass:
* `Receptionist`: `register_patient()`, `manage_appointment()`
* `Doctor`: `__tunjangan_spesialis`, `diagnose_patient()`, `set_schedule()`
* `Nurse`: `examine_patient()`, `give_medicine()`, `update_medical_record()`
3. **Penerapan Method Overriding**:
* `Doctor.total_salary()` meng-override perhitungan gaji dasar untuk menambahkan tunjangan spesialis.
* `Receptionist.display_info()`, `Doctor.display_info()`, dan `Nurse.display_info()` meng-override method cetak info untuk menampilkan detail peran masing-masing.
4. **Enkapsulasi**:
* Semua variabel instance private (`__attribute`) dengan getter dan setter menggunakan properti `@property`.