public Result <PatientVitalSignDto> GetPatientVitalSigns(int patientConsultationId)
        {
            Result <PatientVitalSignDto> response = new Result <PatientVitalSignDto>();

            using (UnitOfWork unitOfWork = new UnitOfWork())
            {
                IEnumerable <VitalSign>        vitalSigns        = unitOfWork.VitalSignRepository.GetEntities();
                IEnumerable <PatientVitalSign> patientVitalSigns = unitOfWork.PatientVitalSignRepository.GetEntities(item => item.PatientConsultationId == patientConsultationId, p => p.OrderBy(o => o.VitalSign.Name));

                foreach (VitalSign vitalSign in vitalSigns)
                {
                    VitalSignDto     vitalSignDto     = _VitalSignMapper.MapToVitalSignDto(vitalSign);
                    PatientVitalSign patientVitalSign = patientVitalSigns.Where(item => item.VitalSignId == vitalSign.VitalSignId).FirstOrDefault();

                    PatientVitalSignDto patientVitalSignDto = new PatientVitalSignDto()
                    {
                        PatientVitalSignId    = patientVitalSign == null ? default(int?) : patientVitalSign.PatientVitalSignId,
                        PatientConsultationId = patientConsultationId,
                        VitalSign             = vitalSignDto,
                        VitalSignValue        = patientVitalSign == null ? null : patientVitalSign.VitalSignValue
                    };

                    response.Models.Add(patientVitalSignDto);
                }
            }

            return(response);
        }
        public void MapToPatientVitalSign(PatientVitalSignDto patientVitalSignDto, PatientVitalSign patientVitalSign)
        {
            if (patientVitalSignDto == null)
            {
                return;
            }

            patientVitalSign.PatientConsultationId = patientVitalSignDto.PatientConsultationId;
            patientVitalSign.PatientConsultationId = patientVitalSignDto.PatientConsultationId;

            if (patientVitalSignDto.VitalSign != null && patientVitalSignDto.VitalSign.VitalSignId != null)
            {
                patientVitalSign.VitalSignId = patientVitalSignDto.VitalSign.VitalSignId.Value;
            }

            patientVitalSign.VitalSignValue = patientVitalSignDto.VitalSignValue;
        }
        public PatientVitalSignDto MapToPatientVitalSignDto(PatientVitalSign patientVitalSign)
        {
            if (patientVitalSign == null)
            {
                return(null);
            }

            PatientVitalSignDto patientVitalSignDto = new PatientVitalSignDto();
            VitalSignMapper     vitalSignMapper     = new VitalSignMapper();

            patientVitalSignDto.PatientVitalSignId    = patientVitalSign.PatientVitalSignId;
            patientVitalSignDto.PatientConsultationId = patientVitalSign.PatientConsultationId;
            patientVitalSignDto.VitalSign             = vitalSignMapper.MapToVitalSignDto(patientVitalSign.VitalSign);
            patientVitalSignDto.VitalSignValue        = patientVitalSign.VitalSignValue;

            return(patientVitalSignDto);
        }
        public Response <PatientVitalSignDto> SavePatientVitalSigns(List <PatientVitalSignDto> patientVitalSigns)
        {
            Response <PatientVitalSignDto> response = new Response <PatientVitalSignDto>();

            foreach (PatientVitalSignDto patientVitalSignDto in patientVitalSigns)
            {
                response = _PatientVitalSignBusinessRules.SaveCheck(patientVitalSignDto);
                if (response.HasErrors)
                {
                    return(response);
                }
            }

            using (TransactionScope scope = new TransactionScope())
            {
                using (UnitOfWork unitOfWork = new UnitOfWork())
                {
                    unitOfWork.AutoDetectChanges = false;
                    unitOfWork.ValidateOnSave    = false;

                    try
                    {
                        foreach (PatientVitalSignDto patientVitalSignDto in patientVitalSigns)
                        {
                            bool             isNewPatientVitalSign = false;
                            PatientVitalSign patientVitalSign      = unitOfWork.PatientVitalSignRepository.GetByID(item => item.PatientConsultationId == patientVitalSignDto.PatientConsultationId &&
                                                                                                                   item.VitalSignId == patientVitalSignDto.VitalSign.VitalSignId.Value);

                            if (patientVitalSign != null && string.IsNullOrEmpty(patientVitalSignDto.VitalSignValue))
                            {
                                unitOfWork.PatientVitalSignRepository.Delete(patientVitalSign);
                                continue;
                            }

                            if (string.IsNullOrEmpty(patientVitalSignDto.VitalSignValue))
                            {
                                continue;
                            }

                            if (patientVitalSign == null)
                            {
                                isNewPatientVitalSign = true;
                                patientVitalSign      = new PatientVitalSign();
                            }

                            _PatientVitalSignMapper.MapToPatientVitalSign(patientVitalSignDto, patientVitalSign);

                            if (isNewPatientVitalSign)
                            {
                                unitOfWork.PatientVitalSignRepository.Insert(patientVitalSign);
                            }
                            else
                            {
                                unitOfWork.PatientVitalSignRepository.Update(patientVitalSign);
                            }
                        }
                    }
                    finally
                    {
                        unitOfWork.AutoDetectChanges = true;
                    }

                    unitOfWork.Save();
                }

                scope.Complete();
            }

            return(response);
        }