RANCANG BANGUN
PERANGKAT LUNAK APLIKASI
PELAYANAN KESEHATAN
BERBASIS SERVICE-ORIENTED
ARCHITECTURE
W
HAT
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
T
UJUAN
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
P
ERMASALAHAN
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
B
ATASAN
M
ASALAH
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
A
RSITEKTUR
S
ISTEM
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
P
ROSES
-P
ROSES
U
TAMA
DI
A
PLIKASI
P
ELAYANAN
K
ESEHATAN
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
U
SE
C
ASE
D
IAGRAM
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»
P
ROSES
U
TAMA
DI
A
PLIKASI
R
UMAH
S
AKIT
Manage Appointment
uc Use Case Rumah Sakit
Aplikasi Rumah Sakit
Dokter
S
ERVICE
D
OKTER
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
C
LASS
D
IAGRAM
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» Jadw al - akhir: string - awal: string - dktr: string - hari: string - id: string «property» + akhir() : string + awal() : string + dktr() : string + hari() : string + id() : string «dataset» j adw alPraktik - 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[] + listNamaDokter(string) : string[]S
ERVICE
R
EKAM
M
EDIS
Yang bisa dilakukan:
C
LASS
D
IAGRAM
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[]
P
ERANCANGAN
A
NTAR
M
UKA
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
A
NTAR
M
UKA
P
ENANGANAN
P
ENYAKIT
ui Form Penanganan PenyakitPenanganan Penyakit Penyakit Kota Pilih Penyakit Pilih kota Detail Penyakit Pilih Cancel Pilih Cancel Daftar Obat Daftar dokter
A
NTAR
M
UKA
R
EKAM
M
EDIS
ui Form Pasien
Rekam Medis
IMPLEMENTASI
D
ATA
L
AYER
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; } } }
B
USINESS
L
AYER
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);
} } }
S
ERVICE
L
AYER
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;
} }
P
RESENTATION
L
AYER
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(); } }