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

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()).
  • 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)

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:
    cd /home/matthewflrnt/study-archived/semester-3/oop-task/oop-rumahsakit
    
  2. Jalankan script utama:
    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.