RANCANG BANGUN PERANGKAT LUNAK APLIKASI … · perancangan. service dokter. ... rup/rjlq &dul'rnwhu...
Transcript of RANCANG BANGUN PERANGKAT LUNAK APLIKASI … · perancangan. service dokter. ... rup/rjlq &dul'rnwhu...
RANCANG BANGUN
PERANGKAT LUNAK APLIKASI
PELAYANAN KESEHATAN
BERBASIS SERVICE-ORIENTED
ARCHITECTURE
Oleh: Farah Naja (5106100100)
PENDAHULUAN
WHAT IS?
Sebuah web pelayanan kesehatan berbasis
service-oriented architecture yang bisa
mengumpulkan data-data dari semua rumah
sakit untuk memudahkan pengguna dalam:
melihat rekam medis, mencari dokter, mencari
rumah sakit, dan membuat appointment dengan
dokter tertentu
TUJUAN
Memudahkan pasien untuk melihat rekam medisnya dari semua rumah sakit yang pernah merawatnya.
Memudahkan pasien untuk mencari dokter di kota tempat dia tinggal tanpa perlu mengecek satu per satu ke rumah sakit tertentu.
Memudahkan dokter memeriksa rekam medis pasien yang akan diperiksa olehnya karena catatan medis pasien dari berbagai rumah sakit sudah dikumpulkan menjadi satu oleh aplikasi.
Memudahkan pasien untuk membandingkan fasilitas rumah sakit yang satu dengan fasilitas rumah sakit yang lain.
Memudahkan pasien membuat appointment dengan dokter tertentu.
PERMASALAHAN
Permasalahan yang diangakat dalam Tugas
Akhir ini adalah:
Bagaimana mengambil hanya informasi yang
dibutuhkan saja dari database setiap rumah
sakit..
Bagaimana agar service pada aplikasi rumah
sakit bisa dipakai oleh aplikasi ini.
BATASAN MASALAH
Aplikasi yang dibangun adalah aplikasi pelayanan kesehatan yang memanfaatkan data dari rumah sakit-rumah sakit. Studi kasus yang digunakan adalah Rumah Sakit Metropolitan Medical Center Jakarta dan Rumah Sakit St. Elisabeth Semarang.
Rumah Sakit Metropolitan Medical Center Jakarta dan Rumah Sakit St. Elisabeth Semarang yang menyediakan service diasumsikan menggunakan aplikasi rumah sakit yang serupa.
Database Rumah Sakit Metropolitan Medical Center Jakarta dan Rumah Sakit St. Elisabeth Semarang diasumsikan memiliki desain dan struktur yang sama, hanya datanya saja yang berbeda.
Aplikasi ini dibangun dalam keadaan seolah-olah semua penduduk Indonesia sudah menggunakan Nomor Induk Kependudukan sehingga hanya mempunyai 1 nomor KTP.
Data yang digunakan dalam aplikasi ini bukan data asli dari rumah sakit tertentu tapi hanya data yang dibuat mirip dengan aslinya.
Tabel pada database rumah sakit hanya dibuat sebagian saja (tabel-tabel yang dibutuhkan oleh aplikasi).
ANALISA
ARSITEKTUR SISTEM
DB RS MMC DB RS SE
DB App Health Care
DB Kependudukan
Service RS Metropolitan
Medical Center
Service RS St.
Elisabeth
Service Kependudukan
App RS Metropolitan Medical Center
App Layanan Kesehatan
App Kependudukan
App RS St. Elisabeth
ARSITEKTUR SOA
PROSES-PROSES UTAMA DI APLIKASI
PELAYANAN KESEHATAN
Pendaftaran pasien
Menampilkan rekam medis
Pembuatan appointment
Pembatalan appointment
Pencarian dokter
Pencarian rumah sakit
Pencarian penanganan penyakit
Manage Profil
Manage Penyakit
Manage Spesialisasi
Manage Obat
USE CASE DIAGRAM uc Use Cases
Aplikasi Pelayanan Kesehatan
melihat rekam medis
Pasien
manage profil
membuat
appointment
membatalkan
appointment
registrasi pasien
mencari dokter
mencari rumah sakit
mencari penanganan
penyakit
Admin
manage penyakit
manage spesialisasi
manage obat
«include»
«include»
PROSES UTAMA DI APLIKASI RUMAH
SAKIT
Manage Appointment
uc Use Case Rumah Sakit
Aplikasi Rumah Sakit
Dokter
manage appointment
PERANCANGAN
SERVICE DOKTER
Yang bisa dilakukan:
1. Mengambil daftar nama dokter yang ada di
rumah sakit.
2. Mengambil data diri dokter yang ada di rumah
sakit.
3. Mengambil jadwal praktik seorang dokter yang
ada di rumah sakit.
CLASS DIAGRAM class Dokter
«properti»Dokter
- alamat: string- id: string- idrs: string- nama: string- namars: string- spesialis: string- telp: string
«property»+ alamat() : string+ id() : string+ idrs() : string+ nama() : string+ namars() : string+ spesialis() : string+ spesialisasi() : string+ telp() : string
«properti»Jadwal
- akhir: string- awal: string- dktr: string- hari: string- id: string
«property»+ akhir() : string+ awal() : string+ dktr() : string+ hari() : string+ id() : string
«dataset»jadwalPraktik
- akhir: string- awal: string- id_dokter: string- id_hari: string- id_praktik: string- nama_hari: string
+ GetData() : void[]+ getJadwalDokter(string) : void[]
«dataset»Dokter_Spesialisasi
- alamat_dokter: string- id_dokter: string- id_rs: string- nama_dokter: string- nama_rs: string- nama_spesialis: string- telp_dokter: string
+ GetData() : void[]+ getDataDokter(string) : void[]+ getDetailDokter(string) : void[]
getDokter
- iddokter: string- spesalisasi: string
+ cekLogin(string) : int+ getDetailDokter(string) : string+ getJadwalDokter(string) : string[]+ getNamaDokter(string) : string[]
«WebService»DokterRS
- iddokter: string- spesialisasi: string
+ dataDokter(string) : string+ jadwalDokter(string) : string[]+ namaDokter(string) : string[]
dataDokter
- iddokter: string- spesialisasi: string
+ detailDokter(string) : string+ detailJadwal(string) : string[]+ l istNamaDokter(string) : string[]
SERVICE REKAM MEDIS
Yang bisa dilakukan:
1. Mengambil data rekam medis pasien
CLASS DIAGRAM class Rekam Medis
«properti»RekamMedis
- diagnosa: string- dosis: string- ktp: string- nama: string- obat: string- pelayanan: string- rs: string- tgl: string
«property»+ diagnosa() : string+ dosis() : string+ ktp() : string+ nama() : string+ obat() : string+ pelayanan() : string+ rs() : string+ tgl() : string
«dataset»rekamMedis
- diagnosa: string- dosis: string- ktp_pasien: string- nama_dokter: string- nama_obat: string- nama_pelayanan: string- nama_rs: string- tgl_pemeriksaanl: date
+ getCatMed(string) : void[]+ GetData() : void[]
dataRekamMedis
- ktp: string
+ rekamMedisPasien(string) : string[]
getRekMedis
- ktp: string
+ getRekamMedis(string) : string[]
«WebService»RekamMedisPasien
- ktp: string
+ dataRekamMedisPasien(string) : string[]
PERANCANGAN ANTAR MUKA
Web Pelayanan Kesehatan
Form Login
Cari Dokter Cari Rumah Sakit
Penanganan Penyakit
Detail Dokter Detail Rumah Sakit Halaman
Pasien
Profil Pasien Rekam Medis Appointment
Halaman Admin
Manage Penyakit
Manage Obat
Manage Spesialisasi
ANTAR MUKA PENANGANAN PENYAKIT ui Form Penanganan Penyakit
Penanganan Penyakit
Penyakit
Kota
Pilih Penyakit
Pilih kota
Detail Penyakit
Pil ih Cancel
Pilih Cancel
Daftar Obat
Daftar dokter
Daftar Rumah Sakit
ANTAR MUKA REKAM MEDIS ui Form Pasien
Rekam Medis
Laporan Rekam Medis
IMPLEMENTASI
Contoh source code: rekam medis
DATA LAYER
using System; using System.Collections.Generic; using System.Text; using System.Data; using Core; using dataLayerRS; using dataLayerRS.rekamMedisTableAdapters; namespace dataLayerRS { public class dataRekamMedis { DataTable dt; RekamMedis rm; public dataRekamMedis() { } public List<RekamMedis> rekamMedisPasien(String
ktp) { List<RekamMedis> rekammedis = new
List<RekamMedis>(); REKAM_MEDISTableAdapter rta = new
REKAM_MEDISTableAdapter(); dt = rta.getCatMed(ktp); int i = 0; for (i = 0; i < dt.Rows.Count; i++) { rm = new RekamMedis();
rm.IDPemeriksaan =
dt.Rows[i]["ID_PEMERIKSAAN"].ToString(); rm.Tanggal =
dt.Rows[i]["TGL_PEMERIKSAAN"].ToString(); rm.KTP = dt.Rows[i]["KTP_PASIEN"].ToString(); rm.NamaPasien =
dt.Rows[i]["NAMA_PASIEN"].ToString(); rm.TanggalLahir =
dt.Rows[i]["TGL_LHR_PASIEN"].ToString(); rm.KTP = dt.Rows[i]["KTP_PASIEN"].ToString(); rm.Nama = dt.Rows[i]["NAMA_DOKTER"].ToString(); rm.RS = dt.Rows[i]["NAMA_RS"].ToString(); rm.Diagnosa = dt.Rows[i]["DIAGNOSA"].ToString(); rm.Fasilitas =
dt.Rows[i]["NAMA_PELAYANAN"].ToString(); rm.Detail = dt.Rows[i]["DETAIL"].ToString(); rm.Obat = dt.Rows[i]["NAMA_OBAT"].ToString(); rm.Dosis = dt.Rows[i]["DOSIS"].ToString(); rekammedis.Add(rm); } return rekammedis; } } }
BUSINESS LAYER using System; using System.Collections.Generic; using System.Text; using Core; using dataLayerRS; namespace businessLayerRS { public class getRekMedis { public static getRekMedis instance; public static getRekMedis GetInstance() { if (instance == null) instance = new getRekMedis(); return instance; } public List<RekamMedis> getRekamMedis(String ktp) { dataRekamMedis dm = new dataRekamMedis(); return dm.rekamMedisPasien(ktp); } } }
SERVICE LAYER
using System; using System.Web; using System.Collections; using System.Collections.Generic; using System.Web.Services; using System.Web.Services.Protocols; using businessLayerRS; using Core; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class RekamMedisPasien : System.Web.Services.WebService { getRekMedis gm; public RekamMedisPasien() { gm = getRekMedis.GetInstance(); } [WebMethod] public List<RekamMedis> dataRekamMedisPasien(String ktp) { List<RekamMedis> r = gm.getRekamMedis(ktp); return r; } }
PRESENTATION LAYER using System; using Properti; using System.Data; using System.Configuration; using System.Collections; using System.Collections.Generic; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using CrystalDecisions.CrystalReports.Engine; public partial class rekam_medis : System.Web.UI.Page { RekamMedisRSA.RekamMedisPasien rekRSA = new
RekamMedisRSA.RekamMedisPasien(); RekamMedisRSB.RekamMedisPasien rekRSB = new
RekamMedisRSB.RekamMedisPasien(); protected void Page_Load(object sender, EventArgs e) { displayData(); } public void displayData() { string ktp = Session["ktp"].ToString(); RekamMedisRSA.RekamMedis[] listrekRSA =
rekRSA.dataRekamMedisPasien(ktp); RekamMedisRSB.RekamMedis[] listrekRSB =
rekRSB.dataRekamMedisPasien(ktp); List<RekamMedis> listrekammedis = new
List<RekamMedis>(); RekamMedis r; string nomor, namapas, tgllhr, tgl, nama, rs, diagnosa,
pelayanan, detil, obat, dosis, idpem = ""; int panjang1 = listrekRSA.Length; int panjang2 = listrekRSB.Length; for (int i = 0; i < panjang1; i++) { nomor = listrekRSA[i].KTP; namapas = listrekRSA[i].NamaPasien; tgllhr = listrekRSA[i].TanggalLahir; idpem = listrekRSA[i].IDPemeriksaan; tgl = listrekRSA[i].Tanggal; nama = listrekRSA[i].Nama;
rs = listrekRSA[i].RS; diagnosa = listrekRSA[i].Diagnosa; pelayanan = listrekRSA[i].Fasilitas; detil = listrekRSA[i].Detail; obat = listrekRSA[i].Obat; dosis = listrekRSA[i].Dosis; r = new RekamMedis(nomor, namapas, tgllhr, idpem, tgl,
nama, rs, diagnosa, pelayanan, detil, obat, dosis); listrekammedis.Add(r); } for (int j = 0; j < panjang2; j++) { nomor = listrekRSB[j].KTP; namapas = listrekRSB[j].NamaPasien; tgllhr = listrekRSB[j].TanggalLahir; idpem = listrekRSB[j].IDPemeriksaan; tgl = listrekRSB[j].Tanggal; nama = listrekRSB[j].Nama; rs = listrekRSB[j].RS; diagnosa = listrekRSB[j].Diagnosa; pelayanan = listrekRSB[j].Fasilitas; detil = listrekRSB[j].Detail; obat = listrekRSB[j].Obat; dosis = listrekRSB[j].Dosis; r = new RekamMedis(nomor, namapas, tgllhr, idpem, tgl,
nama, rs, diagnosa, pelayanan, detil, obat, dosis); listrekammedis.Add(r); } CatatanMedis dt = new CatatanMedis(); dt.Clear(); for (int x = 0; x < listrekammedis.Count; x++) { DataRow dr = dt.Tables[0].NewRow(); dr["KTPPasien"] = listrekammedis[x].KTP; dr["NamaPasien"] = listrekammedis[x].NamaPasien; dr["TanggalLahir"] = listrekammedis[x].TanggalLahir; dr["IDPemeriksaan"] = listrekammedis[x].IDPemeriksaan; dr["Tanggal"] = listrekammedis[x].Tanggal; dr["NamaDokter"] = listrekammedis[x].Nama; dr["NamaRS"] = listrekammedis[x].RS; dr["Diagnosa"] = listrekammedis[x].Diagnosa; dr["Fasilitas"] = listrekammedis[x].Fasilitas; dr["Detail"] = listrekammedis[x].Detail; dr["Obat"] = listrekammedis[x].Obat; dr["DosisObat"] = listrekammedis[x].Dosis; dt.Tables[0].Rows.Add(dr); }
ReportDocument rd = new ReportDocument(); rd.Load(Server.MapPath("rekammedis.rpt")); rd.SetDataSource(dt); Viewer.ReportSource = rd; Viewer.DataBind(); } }
UJI COBA
REKAM MEDIS
Test ID TC-UC02-02
Tujuan Test Melakukan uji coba terhadap proses melihat rekam medis.
Kondisi Awal Login sukses. Sistem menampilkan halaman pasien.
Data Input Prosedur pengujian Hasil yang
diharapkan
Hasil yang diperoleh Kesimpulan
Tidak ada Pada halaman pasien,
pengguna memilih
halaman rekam
medis.
Sistem menampilkan
laporan rekam medis
pasien.
Sistem menampilkan
laporan rekam medis
pasien.
Proses melihat rekam
medis berhasil
dilakukan.
PENANGANAN PENYAKIT
Test ID TC-UC07-07
Tujuan Test Melakukan uji coba proses mencari penanganan penyakit
Kondisi Awal Sistem menampilkan halaman home.
Data Input Prosedur pengujian Hasil yang
diharapkan
Hasil yang diperoleh Kesimpulan
penyakit: radang
tenggorokan,
kota: jakarta
Pengguna memilih
menu penanganan
penyakit lalu memilih
penyakit dan kota
yang diinginkan.
Menampilkan detail
penyakit, obat yang
bisa dipakai, rumah
sakit serta dokter
yang bisa menangani
Menampilkan detail
penyakit, obat yang
bisa dipakai, rumah
sakit serta dokter
yang bisa menangani
Proses pencarian
penanganan penyakit
berhasil dilakukan
HASIL UJI COBA Proses yang diuji Hasil
Registrasi pasien Berhasil
Melihat rekam medis Berhasil
Membuat appointment Berhasil
Membatalkan appointment Berhasil
Mencari dokter Berhasil
Mencari rumah sakit Berhasil
Mencari penanganan penyakit Berhasil
Manage profil Berhasil
Manage penyakit Berhasil
Manage Spesialisasi Berhasil
Manage Obat Berhasil
Manage appointment Berhasil
SIMPULAN
Aplikasi Pelayanan Kesehatan telah berhasil
diimplementasikan dengan menggunakan
service-oriented architecture.
Aplikasi Pelayanan Kesehatan telah berhasil
menggabungkan data-data dari berbagai rumah
sakit, seperti:
1. Data rekam medis pasien
2. Data dokter dengan spesialisasi tertentu
3. Data rumah sakit dengan fasilitas tertentu
SARAN
Laporan rekam medis bisa dibuat lebih bagus
lagi, lengkap dengan dokumen pendukung dari
rumah sakit.
Keamanan service rumah sakit perlu
ditambahkan karena data yang diambil sangat
sensitif sehingga nanti hanya aplikasi ini saja
yang bisa mengakses service tiap rumah sakit.