Esempio n. 1
0
        public Models.UpdateResult SaveListItem(Models.ListItem model)
        {
            return(Execute(context =>
            {
                Guid lastUpdateAccountId = context.Accounts.Single(a => a.Username == model.LastUpdateUsername).AccountId;
                Data.ListItem listItem;
                if (!string.IsNullOrEmpty(model.ID))
                {
                    Guid listItemId = BaseModel.DecryptId(model.ID);
                    listItem = context.ListItems.Single(li => li.ListItemId == listItemId);

                    if (listItem.LastUpdateTimestamp.Ticks != model.Age)
                    {
                        return new UpdateResult(UpdateResult.ResultType.DataChanged);
                    }
                }
                else
                {
                    listItem = new Data.ListItem
                    {
                        ParentId = BaseModel.DecryptNullableId(model.ParentID),
                        StatusId = GetListItem("Status", "Active").GUID
                    };
                    context.ListItems.Add(listItem);
                }

                if (!string.IsNullOrWhiteSpace(model.Name))
                {
                    listItem.Name = model.Name;
                }

                listItem.Description = model.Description;
                listItem.SortOrder = model.SortOrder;
                listItem.Code = model.Code;
                listItem.Value = model.Value;

                WriteAudit(context, lastUpdateAccountId);

                listItem.LastUpdateAccountId = lastUpdateAccountId;
                listItem.LastUpdateTimestamp = DateTime.Now;

                context.SaveChanges();

                return new UpdateResult(true);
            }));
        }
Esempio n. 2
0
        public UpdateResult UpdatePatient(Data.Models.Patient model, Guid accountId)
        {
            return(Execute(context =>
            {
                Guid patientId = BaseModel.DecryptId(model.ID);

                Data.Patient patient = context.Patients.FirstOrDefault(x => x.PatientId == patientId);


                patient.FirstName = model.FirstName;
                patient.LastName = model.LastName;
                patient.TitleId = BaseModel.DecryptNullableId(model.TitleId);
                patient.BirthDate = model.BirthDate;
                patient.GenderId = BaseModel.DecryptNullableId(model.GenderID);
                patient.RaceId = BaseModel.DecryptNullableId(model.RaceID);
                patient.ContactNumber = model.ContactNumber;
                patient.IDNumber = model.IDNumber;
                patient.Street = model.Street;
                patient.CityId = BaseModel.DecryptNullableId(model.CityId);
                patient.ProvinceId = BaseModel.DecryptNullableId(model.ProvinceId);
                patient.CountryId = BaseModel.DecryptNullableId(model.CountryID);
                patient.PostalCode = model.PostalCode;
                patient.NextOfKinName = model.NextOfKinName;
                patient.NextOfKinContact = model.NextOfKinContact;
                patient.MedicalSchemeMembershipNumber = model.MedicalSchemeNo;
                patient.MedicalSchemeId = BaseModel.DecryptNullableId(model.MedicalSchemeID);
                patient.NextOfKinEmail = model.NextOfKinEmail;
                patient.NextOfKinRelationship = model.NextOfKinRelationship;
                patient.ResidentialEnvironmentId = BaseModel.DecryptNullableId(model.ResidentialEnvironmentID);
                patient.AdmitFromId = BaseModel.DecryptNullableId(model.AdmitFromID);
                patient.DischargeToId = BaseModel.DecryptNullableId(model.DischargeToID);

                var deleteList = new List <PatientSupportService>();

                foreach (var supportService in patient.PatientSupportServices)
                {
                    if (model.SupportServices.Count(x => x.SupportServiceId == supportService.SupportServiceId) == 0)
                    {
                        deleteList.Add(supportService);
                    }
                    else
                    {
                        supportService.Note = model.SupportServices.Single(x => x.SupportServiceId == supportService.SupportServiceId).Note;
                    }
                }

                foreach (var supportService in deleteList)
                {
                    context.PatientSupportServices.Remove(supportService);
                }

                if (model.SupportServices != null)
                {
                    foreach (var supportService in model.SupportServices)
                    {
                        if (patient.PatientSupportServices.Count(x => x.SupportServiceId == supportService.SupportServiceId) == 0)
                        {
                            patient.PatientSupportServices.Add(new PatientSupportService()
                            {
                                SupportServiceId = supportService.SupportServiceId,
                                Note = supportService.Note,
                                LastUpdatedTimestamp = DateTime.Now,
                                LastUpdatedAccountId = accountId
                            });
                        }
                    }
                }



                WriteAudit(context, accountId);


                patient.LastUpdateTimestamp = DateTime.Now;
                patient.LastUpdateAccountId = accountId;

                context.SaveChanges();

                return new UpdateResult(true);
            }));
        }
Esempio n. 3
0
        public UpdateResult SaveNewProvider(Models.Provider model, Guid accountId)
        {
            return(Execute(context =>
            {
                if (model.ProviderID == null)
                {
                    Data.Provider newProvider = new Data.Provider
                    {
                        Name = model.Name,
                        IsGroup = model.IsGroup,
                        AcuityTypeId = model.AcuityTypeId,
                        DateCreatedTimestamp = DateTime.Now,
                        LastUpdateTimestamp = DateTime.Now,
                        LastUpdateAccountId = accountId,
                        MonthlyRate = Convert.ToDecimal(model.MonthlyRate),
                        ProfileImage = model.ProfileImage != null ? Convert.FromBase64String(model.ProfileImage) : null
                    };

                    if (model.ParentID != null)
                    {
                        newProvider.ParentId = BaseModel.DecryptNullableId(model.ParentID);
                    }
                    else
                    {
                        newProvider.ParentId = null;
                    }

                    if (!model.IsGroup)
                    {
                        List <Data.ProviderServiceType> providerServiceTypeList = new List <ProviderServiceType>();

                        foreach (Data.Models.ProviderServiceType pst in model.ServiceTypes)
                        {
                            Data.ProviderServiceType providerServiceType = new Data.ProviderServiceType()
                            {
                                CityId = BaseModel.DecryptNullableId(pst.CityID),
                                ContactNumber = pst.ContactNumber,
                                CountryId = BaseModel.DecryptNullableId(pst.CountryID),
                                DateCreatedTimestamp = DateTime.Now,
                                LastUpdateAccountId = accountId,
                                LastUpdateTimestamp = DateTime.Now,
                                PostalCode = pst.PostalCode,
                                ProvinceId = BaseModel.DecryptNullableId(pst.ProvinceID),
                                Street = pst.Street,
                                ServiceTypeId = BaseModel.DecryptId(pst.ServiceTypeID),
                            };

                            List <Data.ProviderServiceTypeScale> scaleList = new List <ProviderServiceTypeScale>();

                            foreach (string s in pst.ScaleList)
                            {
                                scaleList.Add(new Data.ProviderServiceTypeScale()
                                {
                                    ScaleId = BaseModel.DecryptId(s)
                                });
                            }

                            providerServiceType.ProviderServiceTypeScales = scaleList;

                            providerServiceTypeList.Add(providerServiceType);
                        }

                        newProvider.ProviderServiceTypes = providerServiceTypeList;
                    }

                    context.Providers.Add(newProvider);
                    WriteAudit(context, accountId);
                    context.SaveChanges();

                    foreach (ProviderServiceType pst in newProvider.ProviderServiceTypes)
                    {
                        foreach (ProviderServiceTypeScale psts in pst.ProviderServiceTypeScales)
                        {
                            WriteManualAudit(context, new Data.Audit()
                            {
                                TableName = "ProviderServiceTypeScale",
                                FieldName = "ScaleId",
                                OldValue = null,
                                NewValue = psts.ScaleId.ToString(),
                                UpdateDate = DateTime.Now,
                                AccountId = accountId,
                                PrimaryKeyId = newProvider.ProviderId,
                                ChangeTypeId = DataAccess.ListItem.GetList("ChangeType").Single(x => x.Name == "Insert").GetId()
                            });
                        }
                    }

                    context.SaveChanges();
                }
                else
                {
                    Guid providerGUID = Data.Models.BaseModel.DecryptId(model.ProviderID);
                    Data.Provider provider = context.Providers.SingleOrDefault(x => x.ProviderId == providerGUID);


                    provider.Name = model.Name;
                    provider.IsGroup = model.IsGroup;
                    provider.AcuityTypeId = model.AcuityTypeId;
                    provider.MonthlyRate = Convert.ToDecimal(model.MonthlyRate);
                    provider.ProfileImage = model.ProfileImage != null ? Convert.FromBase64String(model.ProfileImage) : null;


                    if (model.ParentID != null)
                    {
                        provider.ParentId = BaseModel.DecryptNullableId(model.ParentID);
                    }
                    else
                    {
                        provider.ParentId = null;
                    }

                    if (!model.IsGroup)
                    {
                        List <ProviderServiceType> tempListProviderServiceType = new List <ProviderServiceType>();

                        foreach (ProviderServiceType pst in provider.ProviderServiceTypes)
                        {
                            if (model.ServiceTypes.Where(x => x.ID != null).Where(x => BaseModel.DecryptId(x.ID) == pst.ProviderServiceTypeId).ToList().Count == 0)
                            {
                                tempListProviderServiceType.Add(pst);
                            }
                        }

                        foreach (ProviderServiceType pst in tempListProviderServiceType)
                        {
                            List <ProviderServiceTypeScale> tempScaleList = pst.ProviderServiceTypeScales.ToList();
                            foreach (ProviderServiceTypeScale psts in tempScaleList)
                            {
                                context.ProviderServiceTypeScales.Remove(psts);



                                WriteManualAudit(context, new Data.Audit()
                                {
                                    TableName = "ProviderServiceTypeScale",
                                    FieldName = "ScaleId",
                                    OldValue = psts.ScaleId.ToString(),
                                    NewValue = null,
                                    UpdateDate = DateTime.Now,
                                    AccountId = accountId,
                                    PrimaryKeyId = provider.ProviderId,
                                    ChangeTypeId = DataAccess.ListItem.GetList("ChangeType").Single(x => x.Name == "Delete").GetId()
                                });
                            }

                            context.ProviderServiceTypes.Remove(pst);
                        }

                        if (model.ServiceTypes != null)
                        {
                            foreach (Data.Models.ProviderServiceType pst in model.ServiceTypes)
                            {
                                Guid ID;
                                Data.ProviderServiceType providerServiceType;
                                if (pst.ID != null)
                                {
                                    ID = Data.Models.BaseModel.DecryptId(pst.ID);
                                    providerServiceType = provider.ProviderServiceTypes.Single(x => x.ProviderServiceTypeId == ID);
                                }
                                else
                                {
                                    providerServiceType = new ProviderServiceType();
                                    providerServiceType.ProviderServiceTypeId = Guid.NewGuid();
                                }


                                providerServiceType.CityId = BaseModel.DecryptNullableId(pst.CityID);
                                providerServiceType.ContactNumber = pst.ContactNumber;
                                providerServiceType.CountryId = BaseModel.DecryptNullableId(pst.CountryID);
                                providerServiceType.LastUpdateAccountId = accountId;
                                providerServiceType.LastUpdateTimestamp = DateTime.Now;
                                providerServiceType.PostalCode = pst.PostalCode;
                                providerServiceType.ProvinceId = BaseModel.DecryptNullableId(pst.ProvinceID);
                                providerServiceType.Street = pst.Street;

                                List <ProviderServiceTypeScale> tempList = new List <ProviderServiceTypeScale>();
                                foreach (ProviderServiceTypeScale psts in providerServiceType.ProviderServiceTypeScales)
                                {
                                    if (pst.ScaleList.Where(x => BaseModel.DecryptId(x) == psts.ScaleId).ToList().Count == 0)
                                    {
                                        tempList.Add(psts);
                                    }
                                }

                                foreach (ProviderServiceTypeScale psts in tempList)
                                {
                                    providerServiceType.ProviderServiceTypeScales.Remove(psts);
                                    context.ProviderServiceTypeScales.Remove(psts);

                                    WriteManualAudit(context, new Data.Audit()
                                    {
                                        TableName = "ProviderServiceTypeScale",
                                        FieldName = "ScaleId",
                                        OldValue = psts.ScaleId.ToString(),
                                        NewValue = null,
                                        UpdateDate = DateTime.Now,
                                        AccountId = accountId,
                                        PrimaryKeyId = provider.ProviderId,
                                        ChangeTypeId = DataAccess.ListItem.GetList("ChangeType").Single(x => x.Name == "Delete").GetId()
                                    });
                                }

                                foreach (string scaleId in pst.ScaleList)
                                {
                                    if (providerServiceType.ProviderServiceTypeScales.Where(x => x.ScaleId == BaseModel.DecryptId(scaleId)).ToList().Count == 0)
                                    {
                                        ProviderServiceTypeScale tempScale = new ProviderServiceTypeScale()
                                        {
                                            ScaleId = BaseModel.DecryptId(scaleId)
                                        };
                                        if (pst.ID != null)
                                        {
                                            tempScale.ProviderServiceTypeId = BaseModel.DecryptId(pst.ID);
                                        }

                                        providerServiceType.ProviderServiceTypeScales.Add(tempScale);


                                        WriteManualAudit(context, new Data.Audit()
                                        {
                                            TableName = "ProviderServiceTypeScale",
                                            FieldName = "ScaleId",
                                            OldValue = null,
                                            NewValue = tempScale.ScaleId.ToString(),
                                            UpdateDate = DateTime.Now,
                                            AccountId = accountId,
                                            PrimaryKeyId = provider.ProviderId,
                                            ChangeTypeId = DataAccess.ListItem.GetList("ChangeType").Single(x => x.Name == "Insert").GetId()
                                        });
                                    }
                                }

                                if (pst.ID == null)
                                {
                                    providerServiceType.ServiceTypeId = BaseModel.DecryptId(pst.ServiceTypeID);
                                    providerServiceType.ProviderId = provider.ProviderId;
                                    providerServiceType.DateCreatedTimestamp = DateTime.Now;
                                    provider.ProviderServiceTypes.Add(providerServiceType);
                                }
                            }
                        }
                    }



                    WriteAudit(context, accountId);

                    context.SaveChanges();
                }

                return new UpdateResult(true);
            }));
        }
Esempio n. 4
0
        public JsonResult NewCase(ViewModels.Case model)
        {
            string ICD10 = model.ICD10ID.Split(' ')[0];

            SADFM.Data.Models.ListItem icd10_ListItem = SADFM.Data.DataAccess.ListItem.GetList("ICD10", filter: li => li.Name == ICD10).FirstOrDefault();
            if (icd10_ListItem == null)
            {
                return(Json(new { Success = false, Error = "Cannot find ICD" }));
            }

            if (model.CaseId == null)
            {
                Data.Models.Account account = UserHelper.GetCurrentAccount();
                Guid accountId = account.GetId();

                SADFM.Data.Case caseObject = new SADFM.Data.Case()
                {
                    ICD10Id = icd10_ListItem.GetId(),
                    CaseId  = Guid.NewGuid(),
                    DateCreatedTimestamp = DateTime.Now,
                    LastUpdateTimestamp  = DateTime.Now,
                    StartDate            = model.StartDate,
                    EndDate             = model.EndDate,
                    PatientId           = SADFM.Data.Models.BaseModel.DecryptId(model.PatientId),
                    LastUpdateAccountId = UserHelper.GetCurrentAccount().GetId(),
                    ImpairmentGroupId   = model.ImpairmentGroupId != null?BaseModel.DecryptNullableId(model.ImpairmentGroupId) : null,
                                              ReferringDoctor               = model.ReferringDoctor,
                                              ReferringDoctorContact        = model.ReferringDoctorContact,
                                              ReferringDoctorEmail          = model.ReferringDoctorEmail,
                                              ReferringDoctorPracticeNumber = model.ReferringDoctorPracticeNumber,
                                              TreatingDoctor               = model.TreatingDoctor,
                                              TreatingDoctorContact        = model.TreatingDoctorContact,
                                              TreatingDoctorEmail          = model.TreatingDoctorEmail,
                                              TreatingDoctorPracticeNumber = model.TreatingDoctorPracticeNumber,
                                              AdmissionStatusId            = SADFM.Data.Models.BaseModel.DecryptNullableId(model.AdmissionStatusId)
                };



                if (UserHelper.GetCurrentAccount().Permissions.Count(x => x.GetClientId() == UserHelper.SelectedClientId && (x.PermissionDescription.Equals("Clinician"))) != 0)
                {
                    caseObject.PatientProviders.Add(new Data.PatientProvider()
                    {
                        AccountId           = UserHelper.GetCurrentAccount().GetId(),
                        AssignedTimestamp   = DateTime.Now,
                        CreatedTimestamp    = DateTime.Now,
                        LastUpdateAccountId = UserHelper.GetCurrentAccount().GetId(),
                        LastUpdateTimestamp = DateTime.Now,
                        ProviderId          = UserHelper.SelectedClientId.Value,
                        PatientProviderId   = Guid.NewGuid(),
                        PatientId           = SADFM.Data.Models.BaseModel.DecryptId(model.PatientId)
                    });
                }

                DataAccess.Account.AddCase(caseObject, UserHelper.GetCurrentAccount().GetId());

                return(Json(new
                {
                    Success = true,
                    Id = caseObject.CaseId.ToString("N")
                }));
            }
            else
            {
                return(Json(DataAccess.Account.UpdateCase(new Data.Case()
                {
                    CaseId = Data.Models.BaseModel.DecryptId(model.CaseId),
                    StartDate = model.StartDate,
                    EndDate = model.EndDate,
                    ICD10Id = icd10_ListItem.GetId(),
                    PatientId = Data.Models.BaseModel.DecryptId(model.PatientId),
                    ImpairmentGroupId = model.ImpairmentGroupId != null ? BaseModel.DecryptNullableId(model.ImpairmentGroupId) : null,
                    ReferringDoctor = model.ReferringDoctor,
                    ReferringDoctorContact = model.ReferringDoctorContact,
                    ReferringDoctorEmail = model.ReferringDoctorEmail,
                    ReferringDoctorPracticeNumber = model.ReferringDoctorPracticeNumber,
                    TreatingDoctor = model.TreatingDoctor,
                    TreatingDoctorContact = model.TreatingDoctorContact,
                    TreatingDoctorEmail = model.TreatingDoctorEmail,
                    TreatingDoctorPracticeNumber = model.TreatingDoctorPracticeNumber,
                    AdmissionStatusId = SADFM.Data.Models.BaseModel.DecryptNullableId(model.AdmissionStatusId)
                }, UserHelper.GetCurrentAccount().GetId())));
            }
        }