public async Task <IHttpActionResult> PutPemeriksaanToClosed(int idPemeriksaan, VW_HISTORY_MEDIS_PASIEN vwHistoryMedis) { try { if (!ModelState.IsValid) { return(BadRequest("Data yang dikirim tidak lengkap")); } var kasusStat = new KASUS_STAT(); var pemeriksaanInDB = db.KASUS.Where(x => x.ID_PEMERIKSAAN == idPemeriksaan).FirstOrDefault(); pemeriksaanInDB.STATUS_KASUS = Kasus.StatusKasus.Closed.ToString(); kasusStat.ID_KASUS = pemeriksaanInDB.ID_KASUS; kasusStat.TGL = DateTime.Now; kasusStat.STATUS_KASUS = pemeriksaanInDB.STATUS_KASUS; db.KASUS_STAT.Add(kasusStat); await db.SaveChangesAsync(); // update data checkup dari dokter bersangkutan var pemeriksaan = db.PEMERIKSAANs.Where(x => x.ID_PEMERIKSAAN == idPemeriksaan).FirstOrDefault(); // get data pemeriksaan tgl masuk awal var pemeriksaanGiliran = db.Database.SqlQuery <PEMERIKSAAN>(@"SELECT * FROM PEMERIKSAAN WHERE ID_PEMERIKSAAN IN(SELECT ID_PEMERIKSAAN FROM KASUS WHERE LOWER(STATUS_KASUS) IN ('queuing', 'checkup')) AND ID_DOKTER = @Id", new SqlParameter("@Id", pemeriksaan.ID_DOKTER)) .OrderBy(x => x.TGL) .FirstOrDefault(); if (pemeriksaanGiliran != null) { var kasusGiliran = db.KASUS.Where(x => x.ID_PEMERIKSAAN == pemeriksaanGiliran.ID_PEMERIKSAAN).FirstOrDefault(); kasusGiliran.STATUS_KASUS = Kasus.StatusKasus.Checkup.ToString(); var kasusStatGiliran = new KASUS_STAT(); kasusStatGiliran.ID_KASUS = kasusGiliran.ID_KASUS; kasusStatGiliran.TGL = kasusStat.TGL; kasusStatGiliran.STATUS_KASUS = kasusGiliran.STATUS_KASUS; db.KASUS_STAT.Add(kasusStatGiliran); await db.SaveChangesAsync(); } return(Ok()); } catch (Exception e) { return(BadRequest(e.Message)); } }
public async Task <IHttpActionResult> PostRekamMedis(RekamMedisRequest rekamMedisRequest) { try { if (!ModelState.IsValid) { return(BadRequest("Data yang dikirim tidak lengkap")); } var kasusStat = new KASUS_STAT(); var pemeriksaan = db.PEMERIKSAANs.Where(x => x.ID_PEMERIKSAAN == rekamMedisRequest.IdPemeriksaan).FirstOrDefault(); var rekamMedis = new REKAM_MEDIS(); rekamMedis.GEJALA = rekamMedisRequest.Gejala; rekamMedis.DIAGNOSA = rekamMedisRequest.Diagnosa; rekamMedis.VONIS = rekamMedis.DIAGNOSA; rekamMedis.TINDAKAN = rekamMedisRequest.Tindakan; while (true) { rekamMedis.ID_REKAM_MEDIS = _random.Next(1, 999999999); var count = db.REKAM_MEDIS.Where(k => k.ID_REKAM_MEDIS == rekamMedis.ID_REKAM_MEDIS).Count(); if (count == 0) { break; } } rekamMedisRequest.IdRekamMedis = rekamMedis.ID_REKAM_MEDIS; pemeriksaan.ID_REKAM_MEDIS = rekamMedis.ID_REKAM_MEDIS; db.REKAM_MEDIS.Add(rekamMedis); await db.SaveChangesAsync(); return(Ok(rekamMedisRequest)); } catch (Exception e) { return(BadRequest(e.Message)); } }
public async Task <IHttpActionResult> PutAdmisiKasus(string regNo, RegisterKasusRequest registerKasusRequest) { try { if (!ModelState.IsValid) { return(BadRequest("Data yang dikirim tidak lengkap")); } var pemeriksaan = new PEMERIKSAAN(); var kasusStat = new KASUS_STAT(); var registerKasus = db.REGISTER_KASUS.Where(x => x.REG_NO == regNo).FirstOrDefault(); var transactKasus = db.T_KASUS.Where(x => x.REG_NO == regNo).FirstOrDefault(); var kasusInDB = db.KASUS.Where(x => x.ID_KASUS == transactKasus.ID_KASUS).FirstOrDefault(); string registerNumber = string.Empty; while (true) { pemeriksaan.ID_PEMERIKSAAN = _random.Next(1, 999999999); var count = db.PEMERIKSAANs.Where(k => k.ID_PEMERIKSAAN == pemeriksaan.ID_PEMERIKSAAN).Count(); if (count == 0) { break; } } transactKasus.VRF_DATA_PASIEN = transactKasus.PASIEN.NAMA; transactKasus.VRF_KELUHAN_PASIEN = registerKasus.KELUHAN; kasusInDB.ID_PEMERIKSAAN = pemeriksaan.ID_PEMERIKSAAN; kasusStat.ID_KASUS = kasusInDB.ID_KASUS; kasusStat.TGL = DateTime.Now; // get available dokter dengan spesialisasi sesuai dengan kasus var dokterList = db.DOKTERs.Where(x => x.ID_SPESIALISASI == registerKasus.KLINIK.ID_SPESIALISASI); //var minPemeriksaan = 0; var dokterDictionary = new Dictionary <int, int>(); foreach (var item in dokterList) { var countPemeriksaan = db.Database.SqlQuery <PEMERIKSAAN>(@"SELECT * FROM PEMERIKSAAN WHERE ID_PEMERIKSAAN IN(SELECT ID_PEMERIKSAAN FROM KASUS WHERE LOWER(STATUS_KASUS) IN ('queuing', 'checkup')) AND ID_DOKTER = @Id", new SqlParameter("@Id", item.ID_DOKTER)).Count(); //if (countPemeriksaan == 0) pemeriksaan.ID_DOKTER = item.ID_DOKTER; dokterDictionary.Add(item.ID_DOKTER, countPemeriksaan); //if (minPemeriksaan > countPemeriksaan) //{ // minPemeriksaan = countPemeriksaan; // pemeriksaan.ID_DOKTER = item.ID_DOKTER; //} } pemeriksaan.ID_DOKTER = dokterDictionary.OrderBy(x => x.Value).FirstOrDefault().Key; if (dokterDictionary.Where(x => x.Key == pemeriksaan.ID_DOKTER).FirstOrDefault().Value == 0) { kasusInDB.STATUS_KASUS = Kasus.StatusKasus.Checkup.ToString(); } else { kasusInDB.STATUS_KASUS = Kasus.StatusKasus.Queuing.ToString(); } kasusStat.STATUS_KASUS = kasusInDB.STATUS_KASUS; // cek masing-masing beban dokter //var idDokter = db.Database.SqlQuery<Nullable<int>>($@"SELECT a.ID_DOKTER FROM ( // SELECT a.ID_DOKTER, MIN(a.COUNT_PEMERIKSAAN) MIN_COUNT_PEMERIKSAAN FROM ( // SELECT a.ID_DOKTER, COUNT(a.ID_PEMERIKSAAN) COUNT_PEMERIKSAAN FROM ( // SELECT ID_DOKTER, ID_PEMERIKSAAN FROM PEMERIKSAAN WHERE // ID_PEMERIKSAAN IN (SELECT ID_PEMERIKSAAN FROM KASUS WHERE LOWER(STATUS_KASUS) = 'checkup') // AND ID_SPESIALISASI = @Id // ) a GROUP BY a.ID_DOKTER // ) a GROUP BY a.ID_DOKTER) a", new SqlParameter("@Id", registerKasus.KLINIK.ID_SPESIALISASI)).FirstOrDefault().GetValueOrDefault(); pemeriksaan.TGL = DateTime.Now; pemeriksaan.RUANGAN = GenerateRuangan(); db.PEMERIKSAANs.Add(pemeriksaan); db.KASUS_STAT.Add(kasusStat); await db.SaveChangesAsync(); return(Ok()); } catch (Exception e) { return(BadRequest(e.Message)); } }
public async Task <IHttpActionResult> PostRegisterKasus(RegisterKasusRequest registerKasusRequest) { try { if (!ModelState.IsValid) { return(BadRequest("Data yang dikirim tidak lengkap")); } var registerKasus = new REGISTER_KASUS(); var transactKasus = new T_KASUS(); var kasus = new KASU(); var kasusStat = new KASUS_STAT(); registerKasus.NAMA = registerKasusRequest.Nama; string registerNumber = string.Empty; while (true) { registerNumber = GenerateRegisterNumber(); var count = db.REGISTER_KASUS.Where(rk => rk.REG_NO == registerNumber).Count(); if (count == 0) { break; } } while (true) { kasus.ID_KASUS = _random.Next(1, 999999999); var count = db.KASUS.Where(k => k.ID_KASUS == kasus.ID_KASUS).Count(); if (count == 0) { break; } } registerKasus.REG_NO = registerNumber; registerKasus.KELUHAN = registerKasusRequest.Keluhan; registerKasus.TINGGI_BADAN = registerKasusRequest.TinggiBadan; registerKasus.BERAT_BADAN = registerKasusRequest.BeratBadan; registerKasus.TENSI_DARAH = registerKasusRequest.TensiDarah; registerKasus.ID_KLINIK = registerKasusRequest.Klinik; transactKasus.REG_NO = registerKasus.REG_NO; transactKasus.ID_KASUS = kasus.ID_KASUS; transactKasus.TGL_MASUK = DateTime.Now; db.REGISTER_KASUS.Add(registerKasus); var pasien = new PASIEN(); var user = new USER(); if (registerKasusRequest.JenisPasien == "1") { while (true) { pasien.ID_PASIEN = _random.Next(1, 999999999); var count = db.PASIENs.Where(rk => rk.ID_PASIEN == pasien.ID_PASIEN).Count(); if (count == 0) { break; } } while (true) { user.ID_USER = _random.Next(1, 999999999); var count = db.USERS.Where(rk => rk.ID_USER == user.ID_USER).Count(); if (count == 0) { break; } } pasien.ID_USER = user.ID_USER; pasien.ALAMAT = registerKasusRequest.Alamat; pasien.NAMA = registerKasusRequest.Nama; pasien.TGL_LAHIR = registerKasusRequest.TglLahir; pasien.TEMPAT_LAHIR = registerKasusRequest.TempatLahir; pasien.TELP = registerKasusRequest.Telp; pasien.JENIS_KELAMIN = registerKasusRequest.JenisKelamin; db.PASIENs.Add(pasien); user.ACTIVE_YN = "Y"; user.EMAIL = registerKasusRequest.Email; var indexAt = registerKasusRequest.Email.IndexOf("@"); if (indexAt == -1) { return(BadRequest("Email Tidak Valid")); } user.USERNAME = registerKasusRequest.Email.Substring(0, indexAt); user.FULL_NAME = registerKasusRequest.Nama; var tempPassword = "******"; user.PASSWORD = Encryptor.Base64Encode(Encryptor.MD5Hash(tempPassword)); db.USERS.Add(user); transactKasus.ID_PASIEN = pasien.ID_PASIEN; kasus.STATUS_KASUS = Kasus.StatusKasus.Registered.ToString(); kasusStat.ID_KASUS = kasus.ID_KASUS; kasusStat.STATUS_KASUS = kasus.STATUS_KASUS; kasusStat.TGL = DateTime.Now; db.T_KASUS.Add(transactKasus); db.KASUS.Add(kasus); db.KASUS_STAT.Add(kasusStat); await db.SaveChangesAsync(); db.Database.ExecuteSqlCommand($"INSERT INTO ROLE_USERS (ID_USER, ID_ROLE) VALUES ({user.ID_USER}, 4)"); await db.SaveChangesAsync(); SendEmail(registerKasusRequest.Email, user.USERNAME, tempPassword); return(Ok()); } pasien = db.PASIENs.Where(x => x.ID_PASIEN == registerKasusRequest.IdPasien).FirstOrDefault(); user = db.USERS.Where(x => x.ID_USER == registerKasusRequest.IdUser).FirstOrDefault(); transactKasus.ID_PASIEN = pasien.ID_PASIEN; kasus.STATUS_KASUS = Kasus.StatusKasus.Registered.ToString(); kasusStat.ID_KASUS = kasus.ID_KASUS; kasusStat.STATUS_KASUS = kasus.STATUS_KASUS; kasusStat.TGL = DateTime.Now; db.T_KASUS.Add(transactKasus); db.KASUS.Add(kasus); db.KASUS_STAT.Add(kasusStat); await db.SaveChangesAsync(); return(Ok()); } catch (Exception e) { return(BadRequest(e.Message)); } }