/// <summary> /// Get detail of registration /// </summary> /// <param name="request"></param> /// <returns></returns> public LoketResponse GetDetail(LoketRequest request) { LoketResponse response = new LoketResponse(); QueuePoli qry = _unitOfWork.RegistrationRepository.GetFirstOrDefault(x => x.ID == request.Data.Id); if (qry != null) { response.Entity = Mapper.Map <QueuePoli, LoketModel>(qry); // reformat gender response.Entity.PatientGender = response.Entity.PatientGender == "M" ? Messages.Male : Messages.Female; response.Entity.PatientType = response.Entity.PatientType == "2" ? Messages.Company : Messages.General; if (response.Entity.Type == (int)RegistrationTypeEnum.MCU) { response.Entity.SortNumberCode = "M-" + string.Format("{0:D3}", qry.SortNumber); } else { response.Entity.SortNumberCode = qry.Poli1.Code.Trim() + "-" + string.Format("{0:D3}", qry.SortNumber); } FormMedical formMedical = _unitOfWork.FormMedicalRepository.GetFirstOrDefault(x => x.ID == qry.FormMedicalID); if (formMedical != null) { response.Entity.NecessityType = int.Parse(formMedical.Necessity); response.Entity.PaymentType = int.Parse(formMedical.PaymentType); response.Entity.PaymentNumber = formMedical.Number; } } return(response); }
private PoliExamineModel GeneratePoliExamineModel( string formExamineID, string loketID, string anamnesa, string diagnose, string therapy, string receipt, string finalState, string icdInformation, string poliToID, string doctorToID, List <string> concoctionMedicineList, List <string> medicineList, List <string> injectionList, List <string> labList, List <string> radiologyList, List <string> serviceList) { QueuePoli queue = _unitOfWork.RegistrationRepository.GetById(int.Parse(loketID)); PoliExamineModel model = new PoliExamineModel(); // For new registration data if (!string.IsNullOrEmpty(doctorToID)) { model.DoctorToID = int.Parse(doctorToID); } model.PoliToID = int.Parse(poliToID); // Registration model.LoketData = Mapper.Map <QueuePoli, LoketModel>(queue); // FormExamine model.ExamineData.Anamnesa = anamnesa; model.ExamineData.Diagnose = diagnose; model.ExamineData.Therapy = therapy; model.ExamineData.Result = finalState; model.ExamineData.PoliID = queue.PoliTo; model.ExamineData.DoctorID = queue.DoctorID; model.ExamineData.FormMedicalID = queue.FormMedicalID; model.ExamineData.ICDInformation = icdInformation; // FormExamineMedicine foreach (var item in medicineList) { string[] values = item.Split('|'); FormExamineMedicineModel medModel = new FormExamineMedicineModel { ProductID = int.Parse(values[0]), FormExamineID = long.Parse(formExamineID), Dose = values[1], Qty = int.Parse(values[2]), RemarkUse = values[3], TypeID = ((int)MedicineTypeEnum.Medicine).ToString() }; model.MedicineDataList.Add(medModel); } //concoction Medicine foreach (var item in concoctionMedicineList) { string[] values = item.Split('|'); FormExamineMedicineModel medModel = new FormExamineMedicineModel { ConcoctionMedicine = values[0], FormExamineID = long.Parse(formExamineID), Dose = values[1], MedicineJenis = values[2], RemarkUse = values[3], Qty = Convert.ToDouble(values[4]), TypeID = ((int)MedicineTypeEnum.Concoction).ToString() }; model.MedicineDataList.Add(medModel); } // FormExamineInjection foreach (var item in injectionList) { string[] values = item.Split('|'); FormExamineMedicineModel medModel = new FormExamineMedicineModel { ProductID = int.Parse(values[0]), FormExamineID = long.Parse(formExamineID), RemarkUse = values[2], TypeID = ((int)MedicineTypeEnum.Injection).ToString() }; model.MedicineDataList.Add(medModel); } if (!string.IsNullOrEmpty(receipt)) { FormExamineMedicineModel medModel = new FormExamineMedicineModel { FormExamineID = long.Parse(formExamineID), ConcoctionMedicine = receipt, TypeID = ((int)MedicineTypeEnum.Concoction).ToString() }; model.MedicineDataList.Add(medModel); } // FormExamineLab foreach (var item in labList) { FormExamineLabModel labModel = new FormExamineLabModel { LabItemID = int.Parse(item), LabType = ((int)LabTypeEnum.Laboratorium).ToString() }; model.LabDataList.Add(labModel); } // FormExamineRadiology foreach (var item in radiologyList) { FormExamineLabModel labModel = new FormExamineLabModel { LabItemID = int.Parse(item), LabType = ((int)LabTypeEnum.Radiology).ToString() }; model.LabDataList.Add(labModel); } // FormExamineRadiology foreach (var item in serviceList) { FormExamineServiceModel serviceModel = new FormExamineServiceModel { ServiceID = int.Parse(item) }; model.ServiceDataList.Add(serviceModel); } return(model); }
public List <LoketModel> GetFarmasiBaseLoketData(LoketRequest request, Expression <Func <QueuePoli, bool> > searchCriteria = null) { List <LoketModel> lists = new List <LoketModel>(); dynamic qry = null; var searchPredicate = PredicateBuilder.New <QueuePoli>(true); searchPredicate = searchPredicate.And(searchCriteria); if (request.Data.PoliToID != 0) { searchPredicate = searchPredicate.And(p => p.PoliTo == request.Data.PoliToID); } if (request.Data.ClinicID != 0) { searchPredicate = searchPredicate.And(p => p.ClinicID == request.Data.ClinicID); } if (!(string.IsNullOrEmpty(request.SortColumn) && string.IsNullOrEmpty(request.SortColumnDir))) { if (request.SortColumnDir == "asc") { switch (request.SortColumn.ToLower()) { case "patientname": qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.Patient.Name)); break; case "doctorstr": qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.Doctor.Name)); break; case "transactiondatestr": qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.TransactionDate)); break; default: qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.ID)); break; } } else { switch (request.SortColumn.ToLower()) { case "patientname": qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.Patient.Name)); break; case "doctorstr": qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.Doctor.Name)); break; case "transactiondatestr": qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.TransactionDate)); break; default: qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.ID)); break; } } } else { qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, null); } foreach (var item in qry) { // original loket long formMedicalID = ((QueuePoli)item).FormMedicalID.Value; QueuePoli sourcePoli = _unitOfWork.RegistrationRepository.GetFirstOrDefault(x => x.FormMedicalID == formMedicalID); LoketModel lokmdl = Mapper.Map <QueuePoli, LoketModel>(item); if (sourcePoli != null && sourcePoli.DoctorID != null) { lokmdl.DoctorID = sourcePoli.DoctorID.Value; lokmdl.DoctorStr = sourcePoli.Doctor != null ? sourcePoli.Doctor.Name : string.Empty; } if (item.Type == (int)RegistrationTypeEnum.MCU) { lokmdl.SortNumberCode = "M-" + string.Format("{0:D3}", item.SortNumber); } else { lokmdl.SortNumberCode = item.Poli1.Code.Trim() + "-" + string.Format("{0:D3}", item.SortNumber); } // modify the status lokmdl.StatusStr = ((PharmacyStatusEnum)lokmdl.Status).ToString(); lists.Add(lokmdl); } DateTime _start = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0); DateTime _end = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59); lists = lists.Where(x => x.TransactionDate >= _start && x.TransactionDate <= _end).ToList(); int totalRequest = lists.Count(); var data = lists.Skip(request.Skip).Take(request.PageSize).ToList(); return(data); }
private long GetPatientId(int regId) { QueuePoli queue = _unitOfWork.RegistrationRepository.GetFirstOrDefault(x => x.ID == regId); return(queue.PatientID); }
/// <summary> /// Create or edit PoliFormExamine /// </summary> /// <param name="request"></param> /// <returns></returns> public FormExamineResponse CreateOrEdit(FormExamineRequest request) { FormExamineResponse response = new FormExamineResponse(); if (request.Data.Id > 0) { try { var qry = _unitOfWork.FormExamineRepository.GetById(request.Data.Id); if (qry != null) { // save the old data var _oldentity = Mapper.Map <FormExamine, FormExamineModel>(qry); // update data _unitOfWork.FormExamineRepository.Update(qry); int resultAffected = _unitOfWork.Save(); if (resultAffected > 0) { response.Message = string.Format(Messages.ObjectHasBeenUpdated2, "PoliFormExamine", qry.ID); CommandLog(true, ClinicEnums.Module.FORM_EXAMINE, Constants.Command.EDIT_FORM_EXAMINE, request.Data.Account, request.Data, _oldentity); } else { response.Status = false; response.Message = string.Format(Messages.UpdateObjectFailed, "PoliFormExamine"); CommandLog(false, ClinicEnums.Module.FORM_EXAMINE, Constants.Command.EDIT_FORM_EXAMINE, request.Data.Account, request.Data, _oldentity); } } else { response.Status = false; response.Message = string.Format(Messages.UpdateObjectFailed, "PoliFormExamine"); CommandLog(false, ClinicEnums.Module.FORM_EXAMINE, Constants.Command.EDIT_FORM_EXAMINE, request.Data.Account, request.Data); } } catch (Exception ex) { response.Status = false; response.Message = Messages.GeneralError; if (request.Data != null && request.Data.Id > 0) { ErrorLog(ClinicEnums.Module.FORM_EXAMINE, Constants.Command.EDIT_FORM_EXAMINE, request.Data.Account, ex); } else { ErrorLog(ClinicEnums.Module.FORM_EXAMINE, Constants.Command.ADD_FORM_EXAMINE, request.Data.Account, ex); } } } else { using (var transaction = _context.Database.BeginTransaction()) { try { List <FormExamineMedicine> formExamineMedicine = new List <FormExamineMedicine>(); foreach (var item in request.Data.MedicineDataList) { var medicine = Mapper.Map <FormExamineMedicineModel, FormExamineMedicine>(item); medicine.CreatedBy = request.Data.Account.UserCode; medicine.CreatedDate = DateTime.Now; formExamineMedicine.Add(medicine); } foreach (var item in request.Data.LabDataList) { var lab = Mapper.Map <FormExamineLabModel, FormExamineLab>(item); lab.FormMedicalID = request.Data.LoketData.FormMedicalID; lab.CreatedBy = request.Data.Account.UserCode; lab.CreatedDate = DateTime.Now; _context.FormExamineLabs.Add(lab); _context.SaveChanges(); } List <FormExamineService> formExamineService = new List <FormExamineService>(); foreach (var item in request.Data.ServiceDataList) { var service = Mapper.Map <FormExamineServiceModel, FormExamineService>(item); service.CreatedBy = request.Data.Account.UserCode; service.CreatedDate = DateTime.Now; formExamineService.Add(service); } // update status the old registration to process QueuePoli oldRegistration = _context.QueuePolis.FirstOrDefault(x => x.ID == request.Data.LoketData.Id); oldRegistration.Status = (int)RegistrationStatusEnum.Process; _context.SaveChanges(); // create a new registration QueuePoli queue = Mapper.Map <LoketModel, QueuePoli>(request.Data.LoketData); queue.ID = 0; // reset queue.DoctorID = request.Data.DoctorToID == 0 ? (int?)null : request.Data.DoctorToID; queue.PoliFrom = queue.PoliTo; queue.PoliTo = request.Data.PoliToID; queue.CreatedBy = request.Data.Account.UserCode; queue.CreatedDate = DateTime.Now; queue.TransactionDate = DateTime.Now; queue.Status = (int)RegistrationStatusEnum.New; queue.SortNumber = GenerateSortNumber(request.Data.PoliToID, request.Data.DoctorToID); _context.QueuePolis.Add(queue); _context.SaveChanges(); FormExamine formExamine = Mapper.Map <FormExamineModel, FormExamine>(request.Data.ExamineData); formExamine.CreatedBy = request.Data.Account.UserCode; formExamine.CreatedDate = DateTime.Now; formExamine.FormExamineMedicines = formExamineMedicine; formExamine.FormExamineServices = formExamineService; // save the form examine data _context.FormExamines.Add(formExamine); _context.SaveChanges(); transaction.Commit(); response.Message = Messages.DataSaved; } catch (Exception ex) { transaction.Rollback(); response.Status = false; response.Message = Messages.GeneralError; if (request.Data != null && request.Data.Id > 0) { ErrorLog(ClinicEnums.Module.FORM_EXAMINE, Constants.Command.EDIT_FORM_EXAMINE, request.Data.Account, ex); } else { ErrorLog(ClinicEnums.Module.FORM_EXAMINE, Constants.Command.ADD_FORM_EXAMINE, request.Data.Account, ex); } } } } return(response); }