Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Model Data untuk Aplikasi Pemesanan Janji Medis

Pemesanan janji temu dokter menggunakan aplikasi online adalah inovasi yang menyederhanakan seluruh proses. Mari selami model data di balik aplikasi pemesanan janji temu.

Mengapa menggunakan aplikasi? Itu memudahkan orang untuk menemukan dokter pilihan mereka, membiarkan mereka melihat catatan profesional dokter dan ulasan pasien. Ketika seseorang menemukan dokter yang mereka sukai, mereka dapat membuat janji dengan mereka tanpa meninggalkan aplikasi. Sebuah aplikasi juga dapat membantu dokter menjaga waktu tunggu pasien sesingkat mungkin, membantu mereka menjadwalkan pasien, dan memungkinkan mereka mengawasi ulasan online pasien.

Persyaratan Aplikasi Janji Medis

Singkatnya, kami berharap aplikasi kami akan:

  • Izinkan pasien mencari dokter dari berbagai spesialisasi (dokter keluarga, ahli jantung, ahli penyakit kaki, dll.) berdasarkan lokasi.
  • Tampilkan daftar dokter yang dipesan berdasarkan pengalaman bertahun-tahun, jarak dari lokasi pasien, rekomendasi pasien, dan indeks ulasan mereka (peringkat kolektif pasien tentang cara di samping tempat tidur, waktu tunggu, staf, dll.)
  • Tampilkan biaya konsultasi awal dan lanjutan dari dokter.
  • Ambil dan tampilkan profil dokter, termasuk detail tentang gelar, sertifikasi, magang, dan afiliasi mereka sebelumnya dan saat ini dengan rumah sakit.
  • Rekam ulasan tentang dokter dari pengguna aplikasi. Ulasan ini akan memberikan pratinjau menyeluruh tentang dokter dan staf mereka kepada pengguna aplikasi lain.

Dan jangan lupa nilai jual unik aplikasi:menampilkan janji temu mendatang yang tersedia dan memungkinkan pengguna untuk memesannya .

Mengategorikan Persyaratan Aplikasi

Pada dasarnya, kami dapat membagi persyaratan aplikasi ke dalam empat area berikut:

  1. Mengelola Data Dokter – Dokter dapat mendaftar dan memasukkan semua detailnya.
  2. Detail Klinik dan OPD Dokter Pengelola (Departemen Rawat Jalan) – Dokter (atau staf mereka) dapat mencatat detail tentang klinik atau jadwal dan ketersediaan OPD mereka.
  3. Mengelola Data Klien dan Tinjauan – Pengguna dapat mendaftar dan memasukkan detail dasar mereka. Mereka juga dapat memposting ulasan tentang dokter.
  4. Mengelola Janji Temu – Pengguna dapat mencari dokter berdasarkan kriteria tertentu.

Mari kita lihat area ini satu per satu.

Mengelola Data Dokter

Dokter dapat mendaftar dengan aplikasi dengan mengisi rincian wajib tertentu, tetapi fitur pemesanan janji diaktifkan hanya setelah mereka menyelesaikan profil lengkap mereka. Ini termasuk kualifikasi mereka (gelar profesional, sertifikasi/spesialisasi, dan magang), dan afiliasi mereka di masa lalu dan saat ini dengan rumah sakit dan penyedia layanan kesehatan.

Tabel yang ditampilkan di bawah ini mengelola informasi ini.

doctor tabel menyimpan detail dasar tentang dokter, yang mereka masukkan saat pendaftaran. Kolom dalam tabel ini adalah:

  • id – Nomor unik yang diberikan aplikasi kepada dokter saat pendaftaran.
  • first_name – Nama depan dokter.
  • last_name – Nama belakang dokter.
  • professional_statement – Ikhtisar rinci tentang kualifikasi dokter, pengalaman, moto profesional mereka, dll. Informasi ini dimasukkan oleh dokter dan ditampilkan di halaman profil setiap dokter.
  • practicing_from – Tanggal dokter mulai praktik kedokteran. Ini memiliki makna yang dalam, karena aplikasi akan memperoleh peringkat pengalamannya untuk setiap dokter berdasarkan informasi di kolom ini.

specialization tabel menampung semua spesialisasi medis yang ada seperti ortopedi, ahli saraf, dokter gigi, dll. Seorang dokter dapat memiliki lebih dari satu spesialisasi; sebenarnya, cukup umum bagi seorang dokter untuk berspesialisasi dalam bidang terkait. Misalnya, ahli saraf juga bisa menjadi psikiater; seorang ginekolog bisa menjadi ahli endokrin, dan seterusnya. Oleh karena itu, doctor_specialization tabel memungkinkan hubungan banyak-ke-banyak antara doctor dan specialization tabel. Atribut pada kedua tabel ini cukup jelas.

qualification tabel menyimpan rincian tentang pendidikan dokter dan kualifikasi profesional, termasuk gelar, sertifikasi, makalah penelitian, seminar, pelatihan berkelanjutan, dll. Untuk memfasilitasi berbagai jenis rincian kualifikasi, saya telah memberikan nama yang cukup umum untuk bidang ini:

  • id – Kunci utama tabel.
  • doctor_id – Referensi doctor tabel dan menghubungkan dokter dengan kualifikasi.
  • qualification_name – Menandakan nama gelar, sertifikasi, makalah penelitian, dll.
  • institute_name – Lembaga yang mengeluarkan kualifikasi untuk dokter. Ini bisa berupa universitas, institusi medis, asosiasi praktisi medis internasional, dll.
  • procurement_year – Tanggal saat kualifikasi diperoleh atau diberikan.

hospital_affiliation tabel menyimpan informasi tentang afiliasi dokter dengan rumah sakit dan penyedia layanan kesehatan. Data ini hanya untuk ditampilkan pada profil dokter dan tidak memiliki arti penting dalam fitur pemesanan janji temu. Rincian OPD (Departemen Rawat Jalan) dimasukkan secara terpisah dan akan ditangani nanti di artikel ini.

Kolom tabel ini adalah:

  • id – Kunci utama tabel.
  • doctor_id – Referensi doctor tabel dan menautkan dokter ke rumah sakit yang berafiliasi.
  • hospital_name – Nama rumah sakit yang berafiliasi.
  • city and country – Kota dan negara tempat rumah sakit berada. Kolom alamat ini tidak memainkan peran apa pun dalam fungsi pencarian aplikasi; mereka hanya untuk ditampilkan di profil dokter.
  • start_date – Ketika afiliasi dokter dengan rumah sakit dimulai.
  • end_date – Saat afiliasi berakhir. Ini tidak dapat dibatalkan karena afiliasi saat ini tidak akan memiliki tanggal akhir.

Rincian OPD/ Klinik Dokter Pengelola

Informasi di bagian ini dimasukkan oleh dokter (atau staf mereka) dan memainkan peran penting dalam fungsi pencarian dan pemesanan aplikasi.

office tabel berisi informasi tentang Departemen Rawat Jalan dari rumah sakit yang berafiliasi dengan dokter serta klinik mereka sendiri (yaitu kantor atau operasi). Kolom dalam tabel ini adalah:

  • id – Kunci utama tabel ini.
  • doctor_id – Referensi doctor tabel dan menunjukkan dokter yang relevan.
  • hospital_affiliation_id –Menandakan rumah sakit tempat dokter tersedia untuk OPD. Karena kolom ini berlaku untuk OPD tetapi tidak untuk klinik, kolom tersebut dapat dibatalkan.
  • time_slot_per_client_in_min – Menyimpan jumlah waktu (dalam menit) yang dialokasikan untuk konsultasi. Jumlah menit dimasukkan oleh dokter berdasarkan pengalaman mereka. Kolom ini membantu aplikasi menentukan slot yang tersedia berikutnya. Perhatikan bahwa nomor ini bukan jaminan durasi janji temu, tetapi ini membantu meminimalkan waktu tunggu pasien jika mereka menggunakan aplikasi untuk membuat janji.
  • first_consultation_fee – Biaya yang dibebankan oleh dokter untuk kunjungan awal. Ini mungkin tampak tidak penting, tetapi sangat penting untuk fungsi pencarian; biaya adalah kriteria filter yang sangat umum.
  • followup_consultation_fee – Banyak dokter mengenakan biaya lebih rendah untuk kunjungan lanjutan daripada konsultasi awal. Kolom ini menyimpan biaya konsultasi lanjutan.
  • street_address – Alamat OPD atau klinik rumah sakit.
  • city , state dan country –Kota, negara bagian, dan negara tempat rumah sakit atau klinik berada.
  • zip – Kode pos tempat klinik atau rumah sakit berada. Seringkali, orang mencari dokter di daerah terdekat menggunakan kode pos, jadi kolom ini penting untuk fungsi pencarian aplikasi.

Mengapa Ada Tabel “kantor” Terpisah Ketika Rincian OPD Dapat Dilacak Dengan Mudah di Tabel “afiliasi_rumah sakit”?

Tiga alasan:

  • Seorang dokter mungkin berafiliasi dengan rumah sakit untuk satu aspek pekerjaan mereka (yaitu melakukan operasi) tetapi tidak untuk orang lain (yaitu melihat pasien rawat jalan). Kami dapat kehilangan afiliasi tersebut jika kami mencoba untuk mempertahankan detail kantor di hospital_affiliation meja saja.
  • Banyak dokter tidak berafiliasi dengan rumah sakit, tetapi memiliki klinik atau kantor sendiri. Kami juga perlu menyimpan informasi untuk para dokter ini.
  • Seorang dokter mungkin memiliki beberapa kantor di lokasi yang berbeda, atau mungkin bekerja di beberapa cabang rumah sakit. Jika dokter hanya ditampilkan berafiliasi dengan satu lokasi rumah sakit, kami dapat kehilangan beberapa informasi. Itulah alasan kami mempertahankan detail alamat yang terpisah.

office_doctor_availability meja menyimpan ketersediaan OPD/klinik dokter dalam hal slot waktu (misalnya 2 jam di pagi hari dan 4 jam di malam hari). Memisahkan hari dengan cara ini cukup umum, jadi memiliki meja tambahan untuk menyimpan slot ketersediaan masuk akal. Plus, dokter dapat bekerja lebih dari satu shift OPD. Kolom untuk tabel ini adalah:

  • id – Kunci utama tabel.
  • office_id – Merujuk tabel “kantor”.
  • day_of_week – Hari dalam seminggu, yaitu Senin, Selasa, dll. Hal ini memungkinkan dokter memiliki ketersediaan yang berbeda untuk hari yang berbeda (misalnya akhir pekan vs. hari kerja).
  • start_time – Saat dokter siap untuk pasien pertama.
  • end_time – Ketika janji temu atau shift terakhir dijadwalkan berakhir.
  • is_available – Memungkinkan dokter untuk menandai ketersediaan mereka untuk hari atau slot waktu tertentu. Kolom ini diinisialisasi dengan 'Y' sebagai default dan diperbarui menjadi 'N' saat dokter menandai ketidaktersediaannya.
  • reason_of_unavailablity – Banyak dokter lebih suka mengungkapkan mengapa mereka tidak tersedia atau harus membatalkan janji. Ini membantu membangun hubungan yang transparan antara dokter dan pasien mereka. Karena ini opsional, saya menjadikan ini sebagai kolom yang dapat dibatalkan.

in_network_insurance tabel menyimpan informasi asuransi. Di banyak negara, layanan medis sangat mahal dan asuransi kesehatan adalah wajib. Dalam kasus seperti itu, tabel ini berisi rincian tentang perusahaan asuransi apa yang diterima sepenuhnya di OPD atau klinik rumah sakit.

Mengelola Data Klien dan Tinjauan

Untuk pasien, mendaftar untuk aplikasi membutuhkan informasi yang sangat sedikit. Mulai sekarang, saya akan menggunakan 'klien' daripada 'pengguna' atau 'pasien'.

client_account tabel menyimpan detail dasar untuk klien. Rincian ini ditangkap pada saat pendaftaran. Kolom dalam tabel ini adalah:

  • id – Nomor unik yang ditetapkan untuk setiap klien.
  • first_name – Nama depan klien.
  • last_name – Nama belakang klien.
  • contact_number – Nomor telepon klien, sebaiknya nomor ponsel, yang dapat dikirimi informasi janji temu. Ini juga merupakan nomor di mana klien dapat dihubungi oleh staf kantor dokter.
  • email – Alamat email klien. Aplikasi dapat mengirimkan pengingat janji temu kepada klien.

client_review tabel tidak hanya menawarkan umpan balik (yaitu ulasan klien) untuk dokter, tetapi juga membantu calon klien untuk memilih dokter. Ini adalah komponen integral dari aplikasi ini. Kolom untuk tabel ini adalah:

  • id – Kunci utama tabel ini.
  • user_account_id – Menandakan pengguna mana yang mengirimkan ulasan.
  • doctor_id – Dokter sedang ditinjau.
  • is_review_anonymous – Apakah nama klien akan dipublikasikan dengan ulasan atau tidak. Ini adalah fitur keamanan untuk klien.
  • wait_time_rating – Kolom angka ini memiliki peringkat mulai dari 1 (terburuk) hingga 10 (terbaik). Ini mencerminkan pendapat klien tentang berapa lama mereka menunggu untuk menemui dokter.
  • bedside_manner_rating –Menyimpan pendapat klien tentang perilaku dokter di samping tempat tidur (yaitu jika dokter baik, penyayang, berkomunikasi dengan baik, dll.)
  • overall_rating – Penilaian klien tentang pengalaman umum mereka dengan dokter.
  • review – Klien dapat memberikan umpan balik terperinci mereka di sini.
  • is_doctor_recommended – Kolom indikator ini menyatakan apakah klien akan merekomendasikan dokter.
  • review_date – Saat ulasan dikirimkan.

Mengelola Janji Temu

Bagian ini adalah USP (Unique Selling Point) terkemuka untuk aplikasi ini, karena memungkinkan klien untuk memeriksa ketersediaan berbagai dokter dan membuat janji.

appointment tabel memegang rincian janji untuk klien. Kolomnya meliputi:

  • id – Nomor unik diberikan untuk setiap janji temu. Nomor ini dirujuk di tempat lain.
  • user_account_id – Klien mana yang memesan janji temu.
  • office_id – Menandakan dokter mana dan OPD atau klinik rumah sakit mana yang terlibat dalam penunjukan.
  • probable_start_time – Ini adalah kolom stempel waktu yang berisi kemungkinan waktu mulai janji temu. Waktu mulai janji temu medis biasanya mungkin, bukan mutlak.
  • actual_end_time – Waktu akhir konsultasi yang sebenarnya. Awalnya kolom ini kosong, karena banyak faktor yang dapat memengaruhi kapan janji temu berakhir. Oleh karena itu, ini adalah kolom yang dapat dibatalkan.
  • appointment_status_id – Ini dirujuk dari appointment_status meja, dan itu menandakan status janji temu saat ini. Nilai yang mungkin untuk status adalah "aktif", "dibatalkan", dan "selesai". Awalnya statusnya akan "aktif". Itu akan menjadi "lengkap" setelah janji selesai. Ini akan menjadi "dibatalkan" jika klien membatalkan janji temu mereka.
  • appointment_taken_date – Tanggal saat janji dibuat.
  • app_booking_channel_id – Saluran tempat janji temu dipesan. Ada beberapa saluran yang digunakan untuk membuat janji temu:melalui aplikasi, dengan menelepon rumah sakit, dengan menelepon dokter atau kantor mereka, dll.

Lihat Model Data Lengkap




Fungsi Pencarian Bekerja

Mari kita cari dokter mata dengan kode pos 63101. Hasil pencarian harus diurutkan dengan kriteria berikut:

  • Pengalaman terbanyak
  • Peringkat rekomendasi klien tertinggi
  • Biaya konsultasi awal terendah

Ini kodenya:

SELECT doctor_name, hospital_name, practicing_from, first_consultation_fee, recomm_count FROM
(SELECT d.doctor_id, d.first_name || ‘ ‘ || d.last_name as doctor_name, 
ha.hospital_name, d.practicing_from, o.first_consultation_fee 
FROM office o, doctor d, doctor_specialization ds, specialization s, hospital_affiliation ha 
WHERE o.doctor_id = d.id AND d.id = ds.doctor_id 
AND s.id = ds.specialization_id AND s.specialization_name = ‘Ophthalmologist’
AND o.hospital_affiliation_id = ha.id (+)
AND o.zip = ‘63101’) doctor_detail, 
(SELECT doctor_id, count(1) as recomm_count FROM client_review 
WHERE is_doctor_recommended = ‘Y’ GROUP BY doctor_id) review_count
WHERE doctor_detail.doctor_id = review_count.doctor_id
ORDER BY doctor_detail.practicing_from DESC, review_count.recomm_count DESC doctor_detail.first_consultation_fee ASC;

Apa yang Akan Anda Tambahkan?

Apa lagi yang bisa ditambahkan ke aplikasi ini dan model data ini? Bagikan pandangan Anda di komentar.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Menghitung Tingkat Retensi dalam SQL?

  2. Cara Mendeklarasikan Pengecualian yang Ditentukan Pengguna Menggunakan PRAGMA EXCEPTION_INIT

  3. Cara Menghapus Database di cPanel

  4. Cara Menonaktifkan Plugin Dari Database WordPress

  5. Cara menghapus data dari Elastisearch