Example #1
0
        public async Task <IActionResult> Edit([FromForm] PatientDetailsDto updatedPatientDetails)
        {
            if (updatedPatientDetails == null)
            {
                Alert("Failed to receive new patient details for patient update");
                throw new ArgumentNullException(nameof(updatedPatientDetails));
            }

            // Send the newPatientDetails to the Patient service to be processed
            var result = await _patientSvc.UpdatePatientDetailsAsync(updatedPatientDetails);

            if (result == ServiceResultStatusCode.Success)
            {
                Alert(
                    "Patient details updated successfully. " +
                    $"Name={updatedPatientDetails.Firstname + " " + updatedPatientDetails.Lastname}. PatientId={updatedPatientDetails.Id}",
                    AlertType.success);
                return(View("Details", updatedPatientDetails));
            }

            Alert(
                $"Failed to save updated patient details. Name={updatedPatientDetails.Firstname + " " + updatedPatientDetails.Lastname}",
                AlertType.danger);
            return(View("Edit", updatedPatientDetails));
        }
        /// <summary>
        /// Return the Patient including all of their associated MedicalPractitioners with
        /// the Appointments and PatientNotes filtered to the calling user's Id
        /// </summary>
        /// <returns></returns>
        public async Task <PatientDetailsDto> GetPatientDetailsAsync(int patientId, int callingUserId)
        {
            if (patientId <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(patientId));
            }

            if (callingUserId <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(callingUserId));
            }

            var patient = await _patientDal.GetEntityAsync(patientId);

            var patientDetails = new PatientDetailsDto(patient);

            if (patient.PatientsMedicalPractitioners != null)
            {
                var medicalPractitionersIds = patient.PatientsMedicalPractitioners.Select(m => m.MedicalPractitioner.Id).ToList();
                var medicalPractitioners    = await _userDal.GetEntitiesAsync(medicalPractitionersIds);

                if (medicalPractitioners.Any())
                {
                    patientDetails.MedicalPractitioners =
                        medicalPractitioners.Select(userAccount =>
                                                    new MedicalPractitionerDetails(userAccount.Id, userAccount.JobDescription.Description, userAccount.EmployeeDetails)).ToList();
                }
            }

            return(patientDetails);
        }
 private void UpdatePatientProperties(ref Patient patient, PatientDetailsDto updatedDetails)
 {
     patient.Id            = updatedDetails.Id;
     patient.Title         = updatedDetails.Title;
     patient.Firstname     = updatedDetails.Firstname;
     patient.Lastname      = updatedDetails.Lastname;
     patient.DateOfBirth   = updatedDetails.DateOfBirth;
     patient.HealthAndCare = updatedDetails.HealthAndCare;
     patient.Address1      = updatedDetails.Address1;
     patient.Address2      = updatedDetails.Address2;
     patient.City          = updatedDetails.City;
     patient.County        = updatedDetails.County;
     patient.PostCode      = updatedDetails.PostCode.ToUpper();
     patient.PhoneNumber   = updatedDetails.PhoneNumber;
     patient.MobilePhone   = updatedDetails.MobilePhone;
     patient.Email         = updatedDetails.Email.ToLower();
     patient.Status        = updatedDetails.PatientStatus;
 }
        /// <summary>
        /// Saves the updated user details
        /// </summary>
        /// <param name="patientDetails"></param>
        /// <returns></returns>
        public async Task <ServiceResultStatusCode> UpdatePatientDetailsAsync(PatientDetailsDto patientDetails)
        {
            if (patientDetails == null)
            {
                throw new ArgumentNullException(nameof(patientDetails));
            }

            var patient = await _patientDal.GetEntityAsync(patientDetails.Id);

            if (patient == null)
            {
                return(ServiceResultStatusCode.NotFound);
            }

            UpdatePatientProperties(ref patient, patientDetails);

            return(await _patientDal.UpdateAsync(patient) != null ? ServiceResultStatusCode.Success : ServiceResultStatusCode.Failed);
        }