예제 #1
0
        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));
            }
        }
예제 #2
0
        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));
            }
        }
예제 #3
0
        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));
            }
        }
예제 #4
0
        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));
            }
        }