Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        private long GetPatientId(int regId)
        {
            QueuePoli queue = _unitOfWork.RegistrationRepository.GetFirstOrDefault(x => x.ID == regId);

            return(queue.PatientID);
        }
Ejemplo n.º 5
0
        /// <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);
        }