コード例 #1
0
        private UserOPDRegister CreateOpdRegister(RequestConsultationInfoUpdateDTO model, UserOPDRegister entity, RequestConsultationDoctorDTO attendingDoctor)
        {
            if (entity == null)
            {
                entity = new UserOPDRegister();
            }

            entity.UserID       = model.CurrentOperatorUserID;
            entity.MemberID     = model.MemberID;
            entity.OPDType      = EnumDoctorServiceType.Consultation;
            entity.Fee          = model.Amount;
            entity.CreateUserID = model.CurrentOperatorUserID;
            entity.OPDBeginTime = "";
            entity.OPDEndTime   = "";
            entity.DoctorID     = attendingDoctor == null ? "" : attendingDoctor.DoctorID;
            entity.DoctorName   = attendingDoctor == null ? "" : attendingDoctor.DoctorName;
            entity.RegDate      = model.StartTime == null ? DateTime.Now : model.StartTime.Value;
            entity.MemberName   = model.MemberName;
            entity.Gender       = model.Gender;
            entity.Marriage     = model.Marriage;
            entity.Age          = ToolHelper.GetAgeFromBirth(model.Birthday);
            entity.IDNumber     = string.IsNullOrEmpty(model.IDNumber) ? "" : model.IDNumber;
            entity.IDType       = model.IDType;
            entity.Mobile       = model.Mobile;
            entity.Address      = model.PatientAddress;
            entity.Birthday     = model.Birthday;

            return(entity);
        }
コード例 #2
0
        /// <summary>
        /// 提交预约
        /// </summary>
        /// <param name="request"></param>
        /// <param name="CheckExists">是否检查重复预约</param>
        /// <returns></returns>
        public ResponseUserOPDRegisterSubmitDTO Submit(RequestUserOPDRegisterSubmitDTO request)
        {
            #region 校验失败:重复预约
            var existsOrder = new OrderRepeatReturnDTO();

            if (ExistsWithSubmitRequest(request, out existsOrder))
            {
                if (existsOrder.OrderState == EnumOrderState.NoPay)
                {
                    return(new ResponseUserOPDRegisterSubmitDTO
                    {
                        ErrorInfo = "预约成功",
                        ActionStatus = "Success",
                        OPDRegisterID = existsOrder.OrderOutID,
                        OrderNO = existsOrder.OrderNo,
                        OrderState = existsOrder.OrderState,
                        ChannelID = existsOrder.ChannelID
                    });
                }
                else
                {
                    return(new ResponseUserOPDRegisterSubmitDTO
                    {
                        ErrorInfo = "已有未完成的预约,不能重复预约",
                        OPDRegisterID = existsOrder.OrderOutID,
                        OrderNO = existsOrder.OrderNo,
                        OrderState = existsOrder.OrderState,
                        ChannelID = existsOrder.ChannelID,
                        ActionStatus = "Repeat"
                    });
                }
            }
            #endregion

            using (DAL.EF.DBEntities db = new DBEntities())
            {
                var Reason = "";

                var orderService = new OrderService(CurrentOperatorUserID);

                //获取服务价格
                decimal ServicePrice    = 0.01M;
                var     OPDDate         = DateTime.Now;
                var     OPDBeginTime    = DateTime.Now.ToString("HH:mm");
                var     OPDEndTime      = DateTime.Now.AddMinutes(30).ToString("HH:mm");
                var     OrderExpireTime = DateTime.Now.AddMinutes(30);

                RequestUserMemberDTO member = new UserMemberService().
                                              GetDefaultMemberInfo(request.UserID).Map <ResponseUserMemberDTO, RequestUserMemberDTO>();


                #region 新增预约记录
                UserOPDRegister model = new UserOPDRegister()
                {
                    CreateUserID   = request.UserID,
                    OPDType        = request.OPDType,
                    MemberID       = request.MemberID,
                    Fee            = ServicePrice,//服务价格
                    OPDRegisterID  = Guid.NewGuid().ToString("N"),
                    UserID         = request.UserID,
                    ConsultContent = string.IsNullOrEmpty(request.ConsultContent) ? "" : request.ConsultContent,
                };

                if (member != null)
                {
                    model.MemberName = member.MemberName;
                    model.Gender     = member.Gender;
                    model.Marriage   = member.Marriage;
                    model.Age        = member.Age;
                    model.IDNumber   = string.IsNullOrEmpty(member.IDNumber) ? "" : member.IDNumber;
                    model.IDType     = member.IDType;
                    model.Mobile     = member.Mobile;
                    model.Address    = member.Address;
                    model.Birthday   = member.Birthday;
                }

                db.UserOpdRegisters.Add(model);

                #endregion

                #region 添加附件
                if (request.Files != null)
                {
                    foreach (var file in request.Files)
                    {
                        db.UserFiles.Add(new UserFile()
                        {
                            FileID     = Guid.NewGuid().ToString("N"),
                            FileName   = file.FileUrl,
                            FileUrl    = file.FileUrl,
                            FileType   = 0,
                            Remark     = file.Remark,
                            AccessKey  = "",
                            ResourceID = "",
                            OutID      = model.OPDRegisterID,
                            UserID     = request.UserID
                        });
                    }
                }
                #endregion

                #region 创建房间
                var room = new Entity.ConversationRoom();
                room.EndTime            = DateTime.Parse(OPDDate.ToString("yyyy-MM-dd ") + OPDEndTime);
                room.BeginTime          = DateTime.Parse(OPDDate.ToString("yyyy-MM-dd ") + OPDBeginTime);
                room.TotalTime          = 0;
                room.RoomState          = EnumRoomState.NoTreatment;//状态
                room.ConversationRoomID = Guid.NewGuid().ToString("N");
                room.ServiceID          = model.OPDRegisterID;
                room.ServiceType        = model.OPDType;
                //如果预约类型是挂号那么房间类型就是线下看诊,否则是线上看诊
                room.RoomType = EnumRoomType.Group;
                db.Set <ConversationRoom>().Add(room);
                #endregion

                #region 创建订单

                EnumProductType ProductType = EnumProductType.Other;

                switch (model.OPDType)
                {
                case EnumDoctorServiceType.VidServiceType:
                    ProductType = EnumProductType.video;
                    break;

                default:
                    break;
                }

                var order = orderService.CreateOrder(new OrderDTO()
                {
                    OrderType       = ProductType,
                    OrderOutID      = model.OPDRegisterID,
                    UserID          = model.UserID,
                    OrderTime       = DateTime.Now,
                    OrderExpireTime = OrderExpireTime,
                    Details         = new List <OrderDetailDTO>()
                    {
                        new OrderDetailDTO()
                        {
                            Subject     = ProductType.GetEnumDescript(),
                            Body        = "",
                            ProductId   = "",
                            ProductType = ProductType,
                            Quantity    = 1,
                            UnitPrice   = model.Fee
                        }
                    }
                }, db);

                #endregion

                if (db.SaveChanges() > 0)
                {
                    //确定订单
                    if (orderService.Confirm(order.OrderNo, new RequestOrderConfirmDTO()
                    {
                        OrderNo = order.OrderOutID,
                    }) == EnumApiStatus.BizOK)
                    {
                        order = orderService.GetOrder(order.OrderNo);

                        return(new ResponseUserOPDRegisterSubmitDTO
                        {
                            ErrorInfo = "预约成功",
                            ActionStatus = "Success",
                            OPDRegisterID = model.OPDRegisterID,
                            OrderNO = order.OrderNo,
                            OrderState = order.OrderState,
                            ChannelID = room.ChannelID
                        });
                    }
                    else
                    {
                        orderService.Cancel(order.OrderNo);
                    }
                }

                return(new ResponseUserOPDRegisterSubmitDTO
                {
                    ErrorInfo = "预约失败",
                    ActionStatus = "Fail",
                });
            }
        }
コード例 #3
0
        public bool AddOpdRegister(RequestUserOPDRegisterSubmitDTO request, DBEntities db = null)
        {
            bool dbPrivateFlag = false;

            if (db == null)
            {
                db            = CreateDb();
                dbPrivateFlag = true;
            }

            request.OPDRegisterID = Guid.NewGuid().ToString("N");

            #region 新增预约记录
            UserOPDRegister model = new UserOPDRegister()
            {
                IsUseTaskPool     = request.IsUseTaskPool,
                CreateTime        = DateTime.Now,
                ScheduleID        = request.ScheduleID,
                DeleteTime        = DateTime.Now,
                ModifyTime        = DateTime.Now,
                IsDeleted         = false,
                DoctorGroupID     = string.IsNullOrEmpty(request.DoctorGroupID) ? "" : request.DoctorGroupID,
                CreateUserID      = request.UserID,
                OrgnazitionID     = request.OrgnazitionID,
                OPDType           = request.OPDType,
                MemberID          = request.MemberID,
                CostType          = request.CostType,
                RegDate           = DateTime.Now,
                OPDBeginTime      = request.OPDBeginTime,                                           //服务预约时间段开始
                OPDEndTime        = request.OPDEndTime,                                             //服务预约时间端结束
                Fee               = request.ServicePrice,                                           //服务价格
                DoctorID          = string.IsNullOrEmpty(request.DoctorID) ? "" : request.DoctorID, //医生编号
                DoctorName        = string.IsNullOrEmpty(request.DoctorName) ? "" : request.DoctorName,
                PhotoUrl          = string.IsNullOrEmpty(request.PhotoUrl) ? "": request.PhotoUrl,
                RenewFee          = request.RenewFee,
                MedicalCardNumber = request.MedicalCardID,
                Flag              = request.Flag,
                DoctorPhotoUrl    = string.IsNullOrEmpty(request.DoctorPhotoUrl) ? "" : request.DoctorPhotoUrl,
                UserAccount       = request.UserAccount,
                OPDDate           = request.OPDDate,//预约日期
                OPDRegisterID     = request.OPDRegisterID,
                UserID            = request.UserID,
                ConsultContent    = string.IsNullOrEmpty(request.ConsultContent) ? "" : request.ConsultContent,
                ConsultDisease    = string.IsNullOrEmpty(request.ConsultDisease) ? "" : request.ConsultDisease,
                MemberName        = request.MemberName,
                Gender            = request.Gender,
                Marriage          = request.Marriage,
                Age               = request.Age,
                IDNumber          = string.IsNullOrEmpty(request.IDNumber) ? "" : request.IDNumber,
                IDType            = request.IDType,
                Mobile            = request.Mobile,
                Address           = request.Address,
                Birthday          = request.Birthday
            };

            db.UserOPDRegisters.Add(model);
            #endregion

            var ret = true;

            if (dbPrivateFlag)
            {
                db.Dispose();
                ret = db.SaveChanges() > 0;
            }
            return(ret);
        }