Ejemplo n.º 1
0
        public HttpResponseMessage ValidateAndSubmitPreexaminationData(Preexamination parameter)
        {
            var transaction = new TransactionalInformation();
            var response    = new PreexaminationDataService().ValidateAndSubmitPreexaminationData(parameter, connectionString, SessionToken, out transaction);

            if (transaction.ReturnStatus)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, response));
            }

            return(Request.CreateResponse(HttpStatusCode.InternalServerError, transaction));
        }
Ejemplo n.º 2
0
        public object ValidateAndSubmitPreexaminationData(Preexamination preexaminationData, string connectionString, string sessionTicket, out TransactionalInformation transaction)
        {
            var method = MethodInfo.GetCurrentMethod();
            var ipInfo = Util.GetIPInfo(HttpContext.Current.Request);

            transaction = new TransactionalInformation();
            var securityTicket = VerifySessionToken(sessionTicket);
            var data           = cls_Get_Account_Information_with_PracticeID.Invoke(connectionString, securityTicket).Result;

            try
            {
                List <object> reasons = new List <object>();
                if (preexaminationData.shouldSubmit && !preexaminationData.isResubmit)
                {
                    var passwordTransaction = new TransactionalInformation();
                    var password_verified   = new MainDataService().VerifyDoctorPassword(connectionString, preexaminationData.password, preexaminationData.doctor_id, sessionTicket, out passwordTransaction);

                    if (!password_verified)
                    {
                        reasons.Add(new { label = "LABEL_CREDENTIALS_NOT_VERIFIED" });
                        return(new { canSubmit = false, reasons = reasons });
                    }
                }

                var preexaminationDate = DateTime.Parse(preexaminationData.date, culture, System.Globalization.DateTimeStyles.AssumeLocal);
                if (preexaminationDate.Date > DateTime.Now.Date)
                {
                    reasons.Add(new { label = "LABEL_PREEXAMINATION_DATE_CANNOT_BE_IN_THE_FUTURE" });
                    return(new { canSubmit = false, reasons = reasons });
                }

                var contracts = cls_Get_InsuranceToBrokerContractIDs_for_Contracts_with_Preexamination.Invoke(connectionString, securityTicket).Result;

                reasons.AddRange(DoctorHasConsent(contracts, preexaminationData.doctor_id, preexaminationDate, connectionString, securityTicket));
                reasons.AddRange(PatientHasConsent(contracts, preexaminationData.patient_id, preexaminationDate, connectionString, securityTicket));

                if (!preexaminationData.isResubmit)
                {
                    reasons.AddRange(PatientExceededPreexaminationLimit(contracts, preexaminationData.patient_id, preexaminationDate, preexaminationData.is_left_eye ? "L" : "R", connectionString, securityTicket));
                }

                if (reasons.Any())
                {
                    return new { canSubmit = !reasons.Any(), reasons = reasons }
                }
                ;

                var downloadUrl = "";

                if (preexaminationData.shouldSubmit)
                {
                    downloadUrl = cls_Submit_Preexamination.Invoke(connectionString, new P_CAS_SPE_1805()
                    {
                        date         = preexaminationDate,
                        doctor_id    = preexaminationData.doctor_id,
                        patient_id   = preexaminationData.patient_id,
                        localization = preexaminationData.is_left_eye ? "L" : "R",
                        case_id      = preexaminationData.case_id,
                        isResubmit   = preexaminationData.isResubmit
                    }, securityTicket).Result.ReportUrl;
                }

                return(new { canSubmit = true, downloadUrl = downloadUrl });
            }
            catch (Exception ex)
            {
                Logger.LogDocAppInfo(new LogEntry(ipInfo.address, ipInfo.agent, connectionString, method, securityTicket, ex), data.PracticeName);

                transaction.ReturnMessage = new List <string>();
                string errorMessage = ex.Message;
                transaction.ReturnStatus = false;
                transaction.ReturnMessage.Add(errorMessage);
                transaction.IsAuthenicated = true;
                transaction.IsException    = true;
            }

            return(null);
        }