Example #1
0
        public int Insert(OpdModel model)
        {
            int i = 0;

            using (EHMSEntities ent = new EHMSEntities())
            {
                var objTosaveOpdMaster = AutoMapper.Mapper.Map <OpdModel, OpdMaster>(model);
                objTosaveOpdMaster.CreatedBy           = Utility.GetCurrentLoginUserId();
                objTosaveOpdMaster.CreatedDate         = DateTime.Now;
                objTosaveOpdMaster.Status              = true;
                objTosaveOpdMaster.DepartmentId        = 4;
                objTosaveOpdMaster.DepartmentPatientId = null;
                objTosaveOpdMaster.RegistrationDate    = DateTime.Now;
                objTosaveOpdMaster.RegistrationMode    = "Visit";
                objTosaveOpdMaster.RegistrationSource  = "Opd";
                ent.OpdMasters.Add(objTosaveOpdMaster);
                //OpdpatientDoctorDetails

                foreach (var item in model.OpdDoctorList)
                {
                    model.OpdPatientDoctorDetailsModel = new OpdPatientDoctorDetailsModel();
                    var objTosaveOpdDoctorList = AutoMapper.Mapper.Map <OpdPatientDoctorDetailsModel, OpdPatientDoctorDetail>(model.OpdPatientDoctorDetailsModel);
                    objTosaveOpdDoctorList.DoctorID         = item.DoctorID;
                    objTosaveOpdDoctorList.DepartmentID     = item.DepartmentID;
                    objTosaveOpdDoctorList.OpdID            = objTosaveOpdMaster.OpdID;
                    objTosaveOpdDoctorList.PreferDate       = item.PreferDate;
                    objTosaveOpdDoctorList.PreferTime       = item.PreferTime;
                    objTosaveOpdDoctorList.RegistrationDate = objTosaveOpdMaster.RegistrationDate;
                    ent.OpdPatientDoctorDetails.Add(objTosaveOpdDoctorList);
                }
                //opdfeedetails
                //var objTosaveFeedetails = AutoMapper.Mapper.Map<OpdFeeDetailsModel, OpdFeeDetails>(model.OpdFeeDetailsModel);
                // decimal? aa = objTosaveFeedetails.DoctorFee;
                //objTosaveFeedetails.OpdID = objTosaveOpdMaster.OpdID;
                //objTosaveFeedetails.FeeDate = objTosaveOpdMaster.RegistrationDate;
                //objTosaveFeedetails.OtherDiscountPercentage = 0;
                //ent.OpdFeeDetails.Add(objTosaveFeedetails);

                //Legder&Transaction
                string LedgerName = "A/C " + model.FirstName + " " + (model.MiddleName + " " ?? string.Empty) + model.LastName;

                //Opd master max id
                int?intIdt = ent.OpdMasters.Max(u => (int?)u.OpdID);
                if (intIdt == null)
                {
                    intIdt = 1;
                }
                else
                {
                    intIdt = intIdt + 1;
                }

                var objToSavePatientLogMaster = new PatientLogMaster()
                {
                    //PatientId = ent.OpdMaster.Max(a => a.OpdID+1),
                    PatientId = intIdt.GetValueOrDefault() + 1,

                    RegistrationDate = Convert.ToDateTime(objTosaveOpdMaster.RegistrationDate),
                    DepartmentId     = 13,//medical report
                    Status           = true
                };

                ent.PatientLogMasters.Add(objToSavePatientLogMaster);



                //Patient logmaster max id
                int?intPatientLogID = ent.PatientLogMasters.Max(u => (int?)u.OpdMasterLogId);
                if (intPatientLogID == null)
                {
                    intPatientLogID = 1;
                }
                else
                {
                    intPatientLogID = intPatientLogID + 1;
                }


                int    BillNumberInt = Utility.GetMaxBillNumberFromDepartment("Opd", 1);
                string BillNumberStr = "BL-" + BillNumberInt.ToString();

                var objtoInsertLedger = new GL_LedgerMaster()
                {
                    AccountGroupID    = 1,
                    AccountSubGroupID = 1,
                    AccountTypeID     = 1,
                    CreatedBy         = Utility.GetCurrentLoginUserId(),
                    CreatedDate       = DateTime.Now,
                    DepartmentID      = 13,//medical report
                    LedgerName        = LedgerName,
                    //SourceID = ent.OpdMaster.Max(a => a.OpdID+1),
                    SourceID         = intIdt,
                    LedgerSourceType = "Patient",
                    Status           = 1
                };

                ent.GL_LedgerMaster.Add(objtoInsertLedger);


                //LedgerMasterId Max Id
                int?LedgetMasterId = ent.GL_LedgerMaster.Max(u => (int?)u.LedgerMasterID);
                if (LedgetMasterId == null)
                {
                    LedgetMasterId = 1;
                }
                else
                {
                    LedgetMasterId = LedgetMasterId + 1;
                }

                var objToInsertTran = new GL_Transaction()
                {
                    Amount         = model.OpdMedicalDetailModel.Amount,
                    DepartmentID   = 13,//medical report
                    Dr_Cr          = "Cr",
                    LedgerMasterID = objtoInsertLedger.LedgerMasterID,
                    Narration1     = "Medical Charge",
                    //RefNo = ent.OpdMaster.Max(a => a.OpdID+1),
                    RefNo             = intIdt,
                    TransactionDate   = DateTime.Now,
                    TransactionTypeID = 1,

                    FeeTypeId    = 17,
                    PatientLogId = (int)intPatientLogID,
                    CreatedDate  = DateTime.Now,
                    CreatedBy    = HospitalManagementSystem.Utility.GetCurrentLoginUserId(),
                    //VoucherNo = Utility.getMaxVoucherNumber(1, 1)
                };

                ent.GL_Transaction.Add(objToInsertTran);


                var OpdMedicalDetailInsert = new OpdMedicalDetail()
                {
                    OpdMasterId = objTosaveOpdMaster.OpdID,
                    ManPowerId  = model.OpdMedicalDetailModel.ManPowerId,
                    AgentId     = model.OpdMedicalDetailModel.AgentId,
                    PreHolo     = model.OpdMedicalDetailModel.PreHolo,
                    Amount      = model.OpdMedicalDetailModel.Amount,
                    Discount    = model.OpdMedicalDetailModel.Discount,
                    Commission  = model.OpdMedicalDetailModel.Commission,
                    CreatedDate = objTosaveOpdMaster.RegistrationDate,
                    CreatedBy   = objTosaveOpdMaster.CreatedBy,
                    status      = 1
                };
                ent.OpdMedicalDetails.Add(OpdMedicalDetailInsert);

                var objtoSaveCentralizedBilling = new CentralizedBilling()
                {
                    AccountHeadId       = 17,
                    Amount              = model.OpdMedicalDetailModel.Amount,
                    AmountDate          = DateTime.Now,
                    PaymentType         = "Cash",
                    Narration1          = "Fee Details",
                    DepartmentName      = "Opd",
                    SubDepartmentId     = Utility.GetCurrentUserDepartmentId(),
                    BillNumber          = BillNumberStr,
                    LedgerMasterId      = (int)LedgetMasterId,
                    PatientLogId        = (int)intPatientLogID,
                    PatientId           = (int)intIdt,
                    JVStatus            = false,
                    CreatedBy           = Utility.GetCurrentLoginUserId(),
                    CreatedDepartmentId = Utility.GetCurrentUserDepartmentId(),
                    CreatedDate         = DateTime.Now,
                    Remarks             = "Opd Medical Records",
                    PaidOnPaid          = false,
                    Status              = true
                };
                ent.CentralizedBillings.Add(objtoSaveCentralizedBilling);



                //update Bill Number
                SetupHospitalBillNumber billNumber = (from x in ent.SetupHospitalBillNumbers
                                                      where x.DepartmentName == "Opd" && x.FiscalYearId == 1
                                                      select x).First();
                billNumber.BillNumber = billNumber.BillNumber + 1;



                //update vouchernumber
                //SetupVoucherNumber vouchernumber = (from x in ent.SetupVoucherNumber
                //                                    where x.DepartmentID == 1 && x.FiscalYear == 1
                //                                    select x).First();
                //vouchernumber.VoucherNo = vouchernumber.VoucherNo + 1;
                i = ent.SaveChanges();
                return(i);
            }
        }
Example #2
0
        public int Insert(DepositMasterModel model)
        {
            using (EHMSEntities ent = new EHMSEntities())
            {
                //Insert into CA Table
                //If User already exist, dont insert
                //check if user has alreary accountheadcode in opdmaster
                //Get Currnet receipt number
                int UserReceiptNumber    = Utility.GetMaxBillNumberFromDepartment("Deposit", 1);
                int UserAccountHeadIdInt = 0;
                var userAccountHeadId    = ent.OpdMasters.Where(x => x.OpdID == model.PatientId).FirstOrDefault();
                if (userAccountHeadId.AccountHeadId != null)
                {
                    UserAccountHeadIdInt = (int)userAccountHeadId.AccountHeadId;
                }

                var ObjGlAccSubGroup = new GL_AccSubGroups();
                if (UserAccountHeadIdInt > 0)
                {
                }

                else
                {
                    ObjGlAccSubGroup = new GL_AccSubGroups()
                    {
                        AccGroupID      = 2,
                        AccSubGroupName = HospitalManagementSystem.Utility.GetPatientNameWithIdFromOpd(model.PatientId),
                        ParentID        = 1258,
                        HierarchyCode   = "2.1253.1257.1258",
                        HeadLevel       = 5,
                        AccountCode     = null,
                        IsLeafLevel     = true,
                        Status          = true,
                        CreatedBy       = HospitalManagementSystem.Utility.GetCurrentLoginUserId(),
                        CreatedDate     = DateTime.Now,
                        Remarks         = "Deposit",
                        BranchId        = 1
                    };

                    ent.GL_AccSubGroups.Add(ObjGlAccSubGroup);
                    ent.SaveChanges();
                    UserAccountHeadIdInt = ObjGlAccSubGroup.AccSubGruupID;
                }


                //Update in opdmaster table
                OpdMaster AccountHeadId = (from x in ent.OpdMasters
                                           where x.OpdID == model.PatientId
                                           select x).First();
                AccountHeadId.AccountHeadId = UserAccountHeadIdInt;

                var SaveDepositMaster = AutoMapper.Mapper.Map <DepositMasterModel, PatientDepositMaster>(model);
                SaveDepositMaster.CreatedBy           = Utility.GetCurrentLoginUserId();
                SaveDepositMaster.CreatedDate         = DateTime.Now;
                SaveDepositMaster.CreatedDepartmentId = Utility.GetCurrentUserDepartmentId();
                SaveDepositMaster.Status          = true;
                SaveDepositMaster.SwipeCardId     = "NN009";
                SaveDepositMaster.ReceiptID       = UserReceiptNumber;
                SaveDepositMaster.SwipeCardDetail = "ScardDetails";

                ent.PatientDepositMasters.Add(SaveDepositMaster);

                //Get Currrent Receipt Number
                int ReceiptNumberInt = Utility.GetMaxBillNumberFromDepartment("Hospital", 1);


                var ObjCentralizedBillingMaster = new CentralizedBillingMaster()
                {
                    BillNo              = ReceiptNumberInt,
                    BillDate            = DateTime.Now,
                    TotalBillAmount     = model.DepositedAmount,
                    Narration1          = "Deposit",
                    Narration2          = "",
                    DepartmentName      = "CB",
                    SubDepartmentId     = 1,
                    PatientLogId        = HospitalManagementSystem.Utility.getPatientLogID(model.PatientId),
                    PatientId           = model.PatientId,
                    CreatedDepartmentId = HospitalManagementSystem.Utility.GetCurrentUserDepartmentId(),
                    CreatedBy           = HospitalManagementSystem.Utility.GetCurrentLoginUserId(),
                    CreatedDate         = DateTime.Now,
                    Remarks             = "Deposit",
                    Status              = true,
                    BranchId            = 1,
                    JVStatus            = false,
                    ReceiptId           = Utility.GetMaxDepositeNumber(),
                    IsHandover          = false,
                    ReturnedAmount      = Convert.ToDecimal(0),
                    TenderAmount        = Convert.ToDecimal(0),
                    TotalDiscountAmount = Convert.ToDecimal(0),
                    TotalDiscountID     = 0,
                    PayableType         = 1//general
                };

                ent.CentralizedBillingMasters.Add(ObjCentralizedBillingMaster);

                var ObjCentralizedBillingDetails = new CentralizedBillingDetail()
                {
                    BillNo           = ReceiptNumberInt,
                    AccountHeadID    = 1258,                 //deposit
                    AccountSubHeadID = UserAccountHeadIdInt, //patientId
                    Amount           = model.DepositedAmount,
                    Status           = true,
                    DepartmentId     = 1003//Ipd Department
                };
                ent.CentralizedBillingDetails.Add(ObjCentralizedBillingDetails);

                var ObjCentralizedBillingPaymentType = new CentralizedBillingPaymentType()
                {
                    BillNo           = ReceiptNumberInt,
                    PaymentTypeID    = 372,
                    Amount           = model.DepositedAmount,
                    Status           = true,
                    PaymentSubTypeID = Convert.ToInt32(0)
                };
                ent.CentralizedBillingPaymentTypes.Add(ObjCentralizedBillingPaymentType);

                //update Bill Number
                SetupHospitalBillNumber billNumber = (from x in ent.SetupHospitalBillNumbers
                                                      where x.DepartmentName == "Hospital" && x.FiscalYearId == 1
                                                      select x).First();
                billNumber.BillNumber = billNumber.BillNumber + 1;
                ent.SaveChanges();

                //update Bill Number
                SetupHospitalBillNumber billNumberDeposit = (from x in ent.SetupHospitalBillNumbers
                                                             where x.DepartmentName == "Deposit" && x.FiscalYearId == 1
                                                             select x).First();
                billNumberDeposit.BillNumber = billNumberDeposit.BillNumber + 1;
                ent.SaveChanges();

                return(SaveDepositMaster.PatientDepositMasterId);
            }
        }
Example #3
0
        public void Insert(PatientTestModel model)
        {
            using (EHMSEntities ent = new EHMSEntities())
            {
                int PatientDepartmentId     = 0;
                var GetSourceIdFromOpdEmrID = 0;
                if (model.DepartmentID == 1000)//opd
                {
                    //get user original departmentId
                    var patientDeptId = ent.OpdMasters.Where(m => m.OpdID == model.PatientInformationModel.EmergencyMasterId).FirstOrDefault().DepartmentId;
                    PatientDepartmentId     = Convert.ToInt32(patientDeptId);
                    GetSourceIdFromOpdEmrID = ent.GL_LedgerMaster.Where(m => m.SourceID == model.PatientInformationModel.EmergencyMasterId && m.DepartmentID == PatientDepartmentId).Select(m => m.LedgerMasterID).FirstOrDefault();
                }
                else if (model.DepartmentID == 1001)//emergency
                {
                    var patientDeptId = ent.OpdMasters.Where(m => m.OpdID == model.PatientInformationModel.EmergencyMasterId).FirstOrDefault().DepartmentId;
                    PatientDepartmentId     = Convert.ToInt32(patientDeptId);
                    GetSourceIdFromOpdEmrID = ent.GL_LedgerMaster.Where(m => m.SourceID == model.PatientInformationModel.EmergencyMasterId && m.DepartmentID == PatientDepartmentId).Select(m => m.LedgerMasterID).FirstOrDefault();
                }
                else//ipd
                {
                    var patientDeptId = ent.OpdMasters.Where(m => m.OpdID == model.PatientInformationModel.EmergencyMasterId).FirstOrDefault().DepartmentId;
                    PatientDepartmentId     = Convert.ToInt32(patientDeptId);
                    GetSourceIdFromOpdEmrID = ent.GL_LedgerMaster.Where(m => m.SourceID == model.PatientInformationModel.EmergencyMasterId && m.DepartmentID == PatientDepartmentId).Select(m => m.LedgerMasterID).FirstOrDefault();
                }


                var objTosavePatientTest = AutoMapper.Mapper.Map <PatientTestModel, PatientTest>(model);
                objTosavePatientTest.PatientID            = model.PatientInformationModel.EmergencyMasterId;
                objTosavePatientTest.TestRegistrationDate = DateTime.Now;
                objTosavePatientTest.ReferDoctorID        = model.ReferDoctorID;
                objTosavePatientTest.DepartmentID         = PatientDepartmentId;
                objTosavePatientTest.Status = true;
                ent.PatientTests.Add(objTosavePatientTest);
                ent.SaveChanges();


                //ent.SaveChanges();

                foreach (var item in model.TestCheckBoxListModelList)
                {
                    //if (item.isSelected == true)
                    //{

                    model.PatientTestDetailModel = new PatientTestDetailModel();
                    var objToSavePatientTestDetails = AutoMapper.Mapper.Map <PatientTestDetailModel, PatientTestDetail>(model.PatientTestDetailModel);
                    objToSavePatientTestDetails.PatientID     = model.PatientInformationModel.EmergencyMasterId;
                    objToSavePatientTestDetails.PatientTestID = objTosavePatientTest.PatientTestID;
                    //objToSavePatientTestDetails.DepartmentID = model.DepartmentID;
                    objToSavePatientTestDetails.DepartmentID = PatientDepartmentId;
                    objToSavePatientTestDetails.SectionID    = item.SectionId;
                    objToSavePatientTestDetails.TestID       = item.TestId;
                    objToSavePatientTestDetails.TestDate     = DateTime.Now;
                    //objToSavePatientTestDetails.TestTime = item.TestTime;
                    //objToSavePatientTestDetails.DeliveryDate = item.DeliveryDate;
                    objToSavePatientTestDetails.Amount         = (decimal)item.Price;
                    objToSavePatientTestDetails.Discount       = item.DiscountPer;
                    objToSavePatientTestDetails.TotalAmount    = (decimal)item.Price - item.DiscountPer;
                    objToSavePatientTestDetails.DeliveryStatus = false;
                    ent.PatientTestDetails.Add(objToSavePatientTestDetails);

                    //for times
                    if (item.Tim > 1)
                    {
                        for (int i = 0; i < item.Tim - 1; i++)
                        {
                            var objTosavePatientTestforTim = AutoMapper.Mapper.Map <PatientTestModel, PatientTest>(model);
                            objTosavePatientTestforTim.PatientID            = model.PatientInformationModel.EmergencyMasterId;
                            objTosavePatientTestforTim.TestRegistrationDate = DateTime.Now;
                            objTosavePatientTestforTim.ReferDoctorID        = model.ReferDoctorID;
                            objTosavePatientTestforTim.DepartmentID         = PatientDepartmentId;
                            objTosavePatientTestforTim.Status = true;
                            ent.PatientTests.Add(objTosavePatientTestforTim);

                            model.PatientTestDetailModel = new PatientTestDetailModel();
                            var objToSavePatientTestDetailsForTim = AutoMapper.Mapper.Map <PatientTestDetailModel, PatientTestDetail>(model.PatientTestDetailModel);
                            objToSavePatientTestDetailsForTim.PatientID     = model.PatientInformationModel.EmergencyMasterId;
                            objToSavePatientTestDetailsForTim.PatientTestID = objTosavePatientTestforTim.PatientTestID;
                            //objToSavePatientTestDetails.DepartmentID = model.DepartmentID;
                            objToSavePatientTestDetailsForTim.DepartmentID = PatientDepartmentId;
                            objToSavePatientTestDetailsForTim.SectionID    = item.SectionId;
                            objToSavePatientTestDetailsForTim.TestID       = item.TestId;
                            objToSavePatientTestDetailsForTim.TestDate     = DateTime.Now;
                            //objToSavePatientTestDetails.TestTime = item.TestTime;
                            //objToSavePatientTestDetails.DeliveryDate = item.DeliveryDate;
                            objToSavePatientTestDetailsForTim.Amount         = (decimal)item.Price;
                            objToSavePatientTestDetailsForTim.Discount       = item.DiscountPer;
                            objToSavePatientTestDetailsForTim.TotalAmount    = (decimal)item.Price - item.DiscountPer;
                            objToSavePatientTestDetailsForTim.DeliveryStatus = false;
                            ent.PatientTestDetails.Add(objToSavePatientTestDetailsForTim);
                            ent.SaveChanges();
                        }
                    }


                    // }
                }
                //added by Gopal on April 4 2014-Centralized Billing
                int    BillNumberInt = Utility.GetMaxBillNumberFromDepartment("Hospital", 1);
                string BillNumberStr = "BL-" + BillNumberInt.ToString();
                foreach (var item in model.TestCheckBoxListModelList)
                {
                    //Rate
                    var objCentralizedBilling = new CentralizedBilling()
                    {
                        AccountHeadId       = 15,
                        Amount              = (decimal)item.Rate,
                        AmountDate          = DateTime.Now,
                        PaymentType         = "Cash",
                        Narration1          = item.TestName,
                        DepartmentName      = "Patho",
                        SubDepartmentId     = PatientDepartmentId,
                        BillNumber          = BillNumberStr,
                        LedgerMasterId      = GetSourceIdFromOpdEmrID,
                        PatientId           = model.PatientInformationModel.EmergencyMasterId,
                        PatientLogId        = HospitalManagementSystem.Utility.getPatientLogID(model.PatientInformationModel.EmergencyMasterId),
                        JVStatus            = false,
                        CreatedBy           = Utility.GetCurrentLoginUserId(),
                        CreatedDepartmentId = Utility.GetCurrentUserDepartmentId(),
                        CreatedDate         = DateTime.Now,
                        Remarks             = "NA",
                        Status              = true,
                        PaidOnPaid          = true,
                        Narration2          = item.Tim.ToString(),
                        ItemID              = item.TestId
                    };
                    ent.CentralizedBillings.Add(objCentralizedBilling);

                    //item wise tax
                    objCentralizedBilling = new CentralizedBilling()
                    {
                        AccountHeadId       = 16,
                        Amount              = (decimal)item.TaxAmount,
                        AmountDate          = DateTime.Now,
                        PaymentType         = "Cash",
                        Narration1          = item.TestName,
                        DepartmentName      = "Patho",
                        SubDepartmentId     = PatientDepartmentId,
                        BillNumber          = BillNumberStr,
                        LedgerMasterId      = GetSourceIdFromOpdEmrID,
                        PatientId           = model.PatientInformationModel.EmergencyMasterId,
                        PatientLogId        = HospitalManagementSystem.Utility.getPatientLogID(model.PatientInformationModel.EmergencyMasterId),
                        JVStatus            = false,
                        CreatedBy           = Utility.GetCurrentLoginUserId(),
                        CreatedDepartmentId = Utility.GetCurrentUserDepartmentId(),
                        CreatedDate         = DateTime.Now,
                        Remarks             = "NA",
                        Status              = true,
                        PaidOnPaid          = true,
                        Narration2          = item.Tim.ToString(),
                        ItemID              = item.TestId
                    };
                    ent.CentralizedBillings.Add(objCentralizedBilling);
                    //item wise discount
                    objCentralizedBilling = new CentralizedBilling()
                    {
                        AccountHeadId       = 22,
                        Amount              = (decimal)item.DiscountPer,
                        AmountDate          = DateTime.Now,
                        PaymentType         = "Cash",
                        Narration1          = item.TestName,
                        DepartmentName      = "Patho",
                        SubDepartmentId     = PatientDepartmentId,
                        BillNumber          = BillNumberStr,
                        LedgerMasterId      = GetSourceIdFromOpdEmrID,
                        PatientId           = model.PatientInformationModel.EmergencyMasterId,
                        PatientLogId        = HospitalManagementSystem.Utility.getPatientLogID(model.PatientInformationModel.EmergencyMasterId),
                        JVStatus            = false,
                        CreatedBy           = Utility.GetCurrentLoginUserId(),
                        CreatedDepartmentId = Utility.GetCurrentUserDepartmentId(),
                        CreatedDate         = DateTime.Now,
                        Remarks             = "NA",
                        Status              = true,
                        PaidOnPaid          = true,
                        Narration2          = item.Tim.ToString(),
                        ItemID              = item.TestId
                    };
                    ent.CentralizedBillings.Add(objCentralizedBilling);
                }
                //update Bill Number
                SetupHospitalBillNumber billNumber = (from x in ent.SetupHospitalBillNumbers
                                                      where x.DepartmentName == "Hospital" && x.FiscalYearId == 1
                                                      select x).First();
                billNumber.BillNumber = billNumber.BillNumber + 1;



                //update vouchernumber
                //SetupVoucherNumber vouchernumber = (from x in ent.SetupVoucherNumber
                //                                    where x.DepartmentID == 1002 && x.FiscalYear == 1
                //                                    select x).First();
                //vouchernumber.VoucherNo = vouchernumber.VoucherNo + 1;



                ent.SaveChanges();
            }
        }
        public int Insert(EmergecyMasterModel model)
        {
            int i = 0;

            using (EHMSEntities ent = new EHMSEntities())
            {
                int maxemerid;
                var query = ent.EmergencyMasters.Where(m => m.EmergencyMasterId == ent.EmergencyMasters.Max(n => n.EmergencyMasterId)).SingleOrDefault();
                if (query == null)
                {
                    maxemerid = 1;
                }
                else
                {
                    maxemerid = query.EmergencyMasterId + 1;
                }

                var objToSaveOpd = new OpdMaster()
                {
                    PatientTitle        = model.ObjOpdMaster.PatientTitle,
                    FirstName           = model.ObjOpdMaster.FirstName,
                    MiddleName          = model.ObjOpdMaster.MiddleName,
                    LastName            = model.ObjOpdMaster.LastName,
                    Sex                 = model.ObjOpdMaster.Sex,
                    AgeYear             = model.ObjOpdMaster.AgeYear,
                    MaritalStatus       = model.ObjOpdMaster.MaritalStatus,
                    BloodGroup          = model.ObjOpdMaster.BloodGroup,
                    RegistrationDate    = DateTime.Now,
                    RegistrationSource  = "Emer",
                    CreatedBy           = HospitalManagementSystem.Utility.GetCurrentLoginUserId(),
                    DepartmentId        = Utility.GetCurrentUserDepartmentId(),
                    DepartmentPatientId = maxemerid,
                    CreatedDate         = DateTime.Now,
                    RegistrationMode    = "Visit",
                    Address             = model.ObjOpdMaster.Address,
                    Status              = true,
                    PaidOnPaid          = true,
                    CountryID           = model.ObjOpdMaster.CountryID
                };

                ent.OpdMasters.Add(objToSaveOpd);
                ent.SaveChanges();

                var objToSave = AutoMapper.Mapper.Map <EmergecyMasterModel, EmergencyMaster>(model);
                try
                {
                    objToSave.OpdMasterId     = maxemerid;
                    objToSave.EmergencyNumber = maxemerid;
                    objToSave.SerialNumber    = maxemerid;
                    objToSave.CreatedBy       = HospitalManagementSystem.Utility.GetCurrentLoginUserId();
                    objToSave.Status          = 1;
                    objToSave.CreatedDate     = DateTime.Today;
                    objToSave.OutcomeTypeId   = 1;
                    objToSave.OpdMasterId     = objToSaveOpd.OpdID;
                    ent.EmergencyMasters.Add(objToSave);
                    ent.SaveChanges();
                }
                catch (DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                          eve.Entry.Entity.GetType().Name, eve.Entry.State);
                        foreach (var ve in eve.ValidationErrors)
                        {
                            Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                              ve.PropertyName, ve.ErrorMessage);
                        }
                    }
                    throw;
                }



                var objtosavedetails = AutoMapper.Mapper.Map <EmergencyTriageModel, EmergencyTriage>(model.EmergencyTriageModel);
                objtosavedetails.EmergencyMasterId = objToSave.EmergencyMasterId;
                objtosavedetails.sourceTypeId      = 1;
                objtosavedetails.SourceId          = 1;
                objtosavedetails.TriageLevel       = 1;
                ent.EmergencyTriages.Add(objtosavedetails);
                //feedetails
                var objTosaveFeedetails = AutoMapper.Mapper.Map <EmergencyFeeDetailsModel, EmergencyFeeDetail>(model.EmergencyFeeDetailsModel);
                // decimal? aa = objTosaveFeedetails.DoctorFee;
                objTosaveFeedetails.EmergencyMasterId       = objToSave.EmergencyMasterId;
                objTosaveFeedetails.FeeDate                 = objToSave.CreatedDate;
                objTosaveFeedetails.OtherDiscountPercentage = 0;
                objTosaveFeedetails.DoctorFee               = 0;
                objTosaveFeedetails.RegistrationFee         = model.EmergencyFeeDetailsModel.RegistrationFee;
                objTosaveFeedetails.TotalAmount             = model.EmergencyFeeDetailsModel.RegistrationFee;
                ent.EmergencyFeeDetails.Add(objTosaveFeedetails);

                //Legder&Transaction
                string LedgerName = "A/C " + model.ObjOpdMaster.FirstName + " " + (model.ObjOpdMaster.MiddleName + " " ?? string.Empty) + model.ObjOpdMaster.LastName;


                var objtoInsertLedger = new GL_LedgerMaster()
                {
                    AccountGroupID    = 1,
                    AccountSubGroupID = 1,
                    AccountTypeID     = 1,
                    CreatedBy         = Utility.GetCurrentLoginUserId(),
                    CreatedDate       = DateTime.Now,
                    DepartmentID      = 1001,
                    LedgerName        = LedgerName,
                    SourceID          = objToSaveOpd.OpdID,
                    LedgerSourceType  = "Patient",
                    Status            = 1
                };

                ent.GL_LedgerMaster.Add(objtoInsertLedger);
                ent.SaveChanges();


                var objToSavePatientLogMaster = new PatientLogMaster()
                {
                    PatientId        = objToSaveOpd.OpdID,
                    RegistrationDate = Convert.ToDateTime(objToSave.CreatedDate),
                    DepartmentId     = 1001,
                    Status           = true
                };

                ent.PatientLogMasters.Add(objToSavePatientLogMaster);
                ent.SaveChanges();

                //Patient logmaster max id

                int?intPatientLogID = objToSavePatientLogMaster.OpdMasterLogId;

                //if (intPatientLogID == null)
                //{
                //    intPatientLogID = 1;
                //}
                //else
                //{
                //    intPatientLogID = intPatientLogID;

                //}

                int    BillNumberInt = Utility.GetMaxBillNumberFromDepartment("Hospital", 1);
                string BillNumberStr = "BL-" + BillNumberInt.ToString();

                //Insert into new table

                //Emergency Ticket
                var ObjCentralizedBillingDetails = new CentralizedBillingDetail()
                {
                    BillNo        = BillNumberInt,
                    AccountHeadID = 357,//Emergency Ticket
                    Amount        = Convert.ToDecimal(404),
                    Status        = true,
                    DepartmentId  = 1001,
                    Times         = 1
                };
                ent.CentralizedBillingDetails.Add(ObjCentralizedBillingDetails);

                var ObjCentralizedBillingDetailstax = new CentralizedBillingDetail()
                {
                    BillNo        = BillNumberInt,
                    AccountHeadID = 1261,//Emergency Ticket
                    Amount        = Convert.ToDecimal(20.2),
                    Status        = true,
                    DepartmentId  = 1001,
                    Times         = 1
                };

                ent.CentralizedBillingDetails.Add(ObjCentralizedBillingDetailstax);


                var ObjCentralizedBillingPaymentType = new CentralizedBillingPaymentType()
                {
                    BillNo           = BillNumberInt,
                    PaymentTypeID    = 372,//Cash or bank from coa
                    PaymentSubTypeID = 0,
                    Amount           = model.EmergencyFeeDetailsModel.RegistrationFee,
                    Status           = true
                };
                ent.CentralizedBillingPaymentTypes.Add(ObjCentralizedBillingPaymentType);

                var ObjCentralizedBillingMaster = new CentralizedBillingMaster()
                {
                    BillNo              = BillNumberInt,
                    BillDate            = DateTime.Today,
                    TotalBillAmount     = model.EmergencyFeeDetailsModel.RegistrationFee,
                    TotalDiscountID     = 0,
                    TotalDiscountAmount = 0,
                    Narration1          = "Narraion",
                    Narration2          = "",
                    DepartmentName      = "Emergency",
                    SubDepartmentId     = 1,
                    PatientLogId        = (int)intPatientLogID,
                    PatientId           = objToSaveOpd.OpdID,
                    //JVNumber=1
                    JVStatus            = false,
                    CreatedDepartmentId = HospitalManagementSystem.Utility.GetCurrentUserDepartmentId(),
                    CreatedBy           = HospitalManagementSystem.Utility.GetCurrentLoginUserId(),
                    CreatedDate         = DateTime.Now,
                    Remarks             = "Emergency",
                    Status         = true,
                    BranchId       = 1,
                    IsHandover     = false,
                    ReceiptId      = 0,
                    ReturnedAmount = Convert.ToDecimal(0),
                    TenderAmount   = Convert.ToDecimal(0)
                };
                ent.CentralizedBillingMasters.Add(ObjCentralizedBillingMaster);


                var objtoSaveCentralizedBilling = new CentralizedBilling()
                {
                    AccountHeadId       = 19,
                    Amount              = model.EmergencyFeeDetailsModel.RegistrationFee,
                    AmountDate          = DateTime.Now,
                    PaymentType         = "Cash",
                    Narration1          = "Fee Details",
                    Narration2          = "Emergecy Fee",
                    DepartmentName      = "Emergency",
                    SubDepartmentId     = Utility.GetCurrentUserDepartmentId(),
                    BillNumber          = BillNumberStr,
                    LedgerMasterId      = objtoInsertLedger.LedgerMasterID,
                    PatientLogId        = (int)intPatientLogID,
                    PatientId           = objToSaveOpd.OpdID,
                    JVStatus            = false,
                    CreatedBy           = Utility.GetCurrentLoginUserId(),
                    CreatedDepartmentId = Utility.GetCurrentUserDepartmentId(),
                    CreatedDate         = DateTime.Now,
                    Remarks             = "Emergency",
                    PaidOnPaid          = false,
                    Status              = true
                };
                ent.CentralizedBillings.Add(objtoSaveCentralizedBilling);

                var objToInsertTran = new GL_Transaction()
                {
                    Amount            = model.EmergencyFeeDetailsModel.RegistrationFee,
                    DepartmentID      = 1001,
                    Dr_Cr             = "Cr",
                    LedgerMasterID    = objtoInsertLedger.LedgerMasterID,
                    Narration1        = "Emergency Fee",
                    RefNo             = maxemerid,
                    TransactionDate   = DateTime.Now,
                    TransactionTypeID = 1,
                    FeeTypeId         = 19,//emergency fee
                    CreatedBy         = HospitalManagementSystem.Utility.GetCurrentLoginUserId(),
                    CreatedDate       = DateTime.Now,
                };

                ent.GL_Transaction.Add(objToInsertTran);


                //update Bill Number
                SetupHospitalBillNumber billNumber = (from x in ent.SetupHospitalBillNumbers
                                                      where x.DepartmentName == "Hospital" && x.FiscalYearId == 1
                                                      select x).First();
                billNumber.BillNumber = billNumber.BillNumber + 1;


                //update vouchernumber
                //SetupVoucherNumber vouchernumber = (from x in ent.SetupVoucherNumber
                //                                    where x.DepartmentID == 1 && x.FiscalYear == 1
                //                                    select x).First();
                //vouchernumber.VoucherNo = vouchernumber.VoucherNo + 1;

                i = ent.SaveChanges();
            }

            return(i);
        }