Пример #1
0
        public async Task <Prescription_Model> GetPrescription(int prescriptionId)
        {
            Prescription_Model model = new Prescription_Model();

            try
            {
                SqlCommand cmd = new SqlCommand
                {
                    Connection  = cn,
                    CommandType = System.Data.CommandType.Text,
                    CommandText = $"SELECT * FROM Prescription WHERE PrescriptionId = @prescriptionId"
                };
                cmd.Parameters.AddWithValue("@prescriptionId", prescriptionId);

                await cn.OpenAsync().ConfigureAwait(false);

                using (var reader = cmd.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        model = DataRowToPrescriptionDetailMapper.Map(reader);
                    }
                }
                return(model);
            }
            catch (Exception ex)
            {
                throw new DatabaseException($"Something went wrong getting the prescription info for prescriptionId {prescriptionId}", ex);
            }
            finally
            {
                cn.Close();
            }
        }
Пример #2
0
        public async Task <int> SavePrescription(Prescription_Model model)
        {
            try
            {
                SqlCommand cmd = new SqlCommand
                {
                    Connection  = cn,
                    CommandType = System.Data.CommandType.Text,
                    CommandText = "INSERT INTO [dbo].[Prescription] " +
                                  "([Ndc], PrescriptionName, [PatientId],[Color],[Dosage],[Identifier]," +
                                  "[Shape], [Rxcui], [ImageUrl], [DoctorNote],[Warning],[OriginalNumberOfDoses],[CurrentNumberOfDoses]," +
                                  "[OriginalNumberOfRefills],[CurrentNumberOfRefills],[IsActive],[EnteredBy]," +
                                  "[EnteredDate],[ModifiedBy],[ModifiedDate])" +
                                  "OUTPUT inserted.PrescriptionId " +
                                  "VALUES(@Ndc, @PrescriptionName, @PatientId, @Color, @Dosage, @Identifier, " +
                                  "@Shape, @Rxcui, @ImageUrl, @DoctorNote, @Warning, @OriginalNumberOfDoses, @CurrentNumberOfDoses, @OriginalNumberOfRefills, " +
                                  "@CurrentNumberOfRefills, @IsActive, @EnteredBy, @EnteredDate, @ModifiedBy, @ModifiedDate)"
                };

                DateTime now = DateTime.Now;

                cmd.Parameters.AddWithValue("@Ndc", model.Ndc);
                cmd.Parameters.AddWithValue("@PrescriptionName", model.PrescriptionName);
                cmd.Parameters.AddWithValue("@PatientId", model.PatientId);
                cmd.Parameters.AddWithValue("@Color", model.Color);
                cmd.Parameters.AddWithValue("@Dosage", model.Dosage);
                cmd.Parameters.AddWithValue("@Identifier", model.Identifiers);
                cmd.Parameters.AddWithValue("@Shape", model.Shape);
                cmd.Parameters.AddWithValue("@Rxcui", model.Rxcui ?? (object)DBNull.Value);
                cmd.Parameters.AddWithValue("@ImageUrl", model.ImageUrl ?? (object)DBNull.Value);
                cmd.Parameters.AddWithValue("@DoctorNote", model.DoctorNotes ?? (object)DBNull.Value);
                cmd.Parameters.AddWithValue("@Warning", model.Warnings ?? (object)DBNull.Value);
                cmd.Parameters.AddWithValue("@OriginalNumberOfDoses", model.OriginalNumberOfDoses);
                cmd.Parameters.AddWithValue("@CurrentNumberOfDoses", model.OriginalNumberOfDoses);
                cmd.Parameters.AddWithValue("@OriginalNumberOfRefills", model.OriginalNumberOfRefills);
                cmd.Parameters.AddWithValue("@CurrentNumberOfRefills", model.OriginalNumberOfRefills);
                cmd.Parameters.AddWithValue("@IsActive", 1);
                cmd.Parameters.AddWithValue("@EnteredBy", "Where do I get user info?");
                cmd.Parameters.AddWithValue("@EnteredDate", now);
                cmd.Parameters.AddWithValue("@ModifiedBy", "SomeDumbUser");
                cmd.Parameters.AddWithValue("@ModifiedDate", now);

                await cn.OpenAsync().ConfigureAwait(false);

                return((int)await cmd.ExecuteScalarAsync().ConfigureAwait(false));
            }
            catch (Exception ex)
            {
                throw new DatabaseException("Something went wrong saving the prescription", ex);
            }
            finally
            {
                cn.Close();
            }
        }
        public async Task <bool> UpdatePrescription(Prescription_Model model)
        {
            var prescriptionSuccess = await _dal.UpdatePrescription(model).ConfigureAwait(false);

            bool alertSuccess = true;

            if (model.ScheduledAlerts != null)
            {
                alertSuccess = await _dal.UpdatePrescriptionAlerts(model).ConfigureAwait(false);
            }

            return(alertSuccess && prescriptionSuccess);
        }
Пример #4
0
        public async Task <bool> UpdatePrescriptionAlerts(Prescription_Model model)
        {
            try
            {
                SqlCommand cmd = new SqlCommand
                {
                    CommandType = System.Data.CommandType.Text,
                    Connection  = cn,
                    CommandText =
                        "DELETE FROM PrescriptionAlert where PrescriptionId = @PrescriptionId AND IsActive = 1"
                };

                cmd.Parameters.AddWithValue("@PrescriptionId", model.PrescriptionId);
                await cn.OpenAsync().ConfigureAwait(false);

                //Just delete all upcoming ones, nothing to really check against ?
                await cmd.ExecuteNonQueryAsync().ConfigureAwait(false);


                cmd.CommandText = "INSERT INTO PrescriptionAlert (PrescriptionId, AlertDateTime, IsActive) VALUES ";
                for (int i = 0; i < model.ScheduledAlerts.Count; i++)
                {
                    cmd.CommandText += $" (@PrescriptionId, @AlertDateTime{i}, @IsActive), ";
                    cmd.Parameters.AddWithValue($"@AlertDateTime{i}", model.ScheduledAlerts[i].AlertDateTime);
                }
                cmd.Parameters.AddWithValue("@IsActive", 1);

                cmd.CommandText = cmd.CommandText.Remove(cmd.CommandText.LastIndexOf(","), 1);

                var rowsAdded = await cmd.ExecuteNonQueryAsync().ConfigureAwait(false);

                if (rowsAdded != model.ScheduledAlerts.Count)
                {
                    throw new InvalidOperationException("Incorrect number of rows added/updated");
                }

                return(true);
            }
            catch (Exception ex)
            {
                throw new DatabaseException("Something went wrong updating the prescription alerts", ex);
            }
            finally
            {
                cn.Close();
            }
        }
Пример #5
0
        public async Task <IActionResult> SavePrescription([FromBody] Prescription_Model model)
        {
            try
            {
                var result = await _bll.SavePrescription(model).ConfigureAwait(false);

                if (result)
                {
                    return(Ok());
                }

                return(BadRequest(new { errors = "Unable to save the prescription, please try again" }));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new { errors = ex.Message }));
            }
        }
Пример #6
0
        public async Task <IActionResult> UpdatePrescription([FromBody] Prescription_Model model)
        {
            try
            {
                var result = await _bll.UpdatePrescription(model).ConfigureAwait(false);

                if (result)
                {
                    return(Ok());
                }

                return(BadRequest(new { errors = "Unable to update the prescription, please try again" }));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new { errors = "Something went wrong updating the prescription details" }));
            }
        }
Пример #7
0
        public async Task <bool> SavePrescriptionAlerts(Prescription_Model model)
        {
            try
            {
                SqlCommand cmd = new SqlCommand
                {
                    CommandType = System.Data.CommandType.Text,
                    Connection  = cn
                };


                string cmdString = "INSERT INTO PrescriptionAlert (PrescriptionId, AlertDateTime, IsActive) VALUES ";
                cmd.Parameters.AddWithValue("@PrescriptionId", model.PrescriptionId);
                cmd.Parameters.AddWithValue("@IsActive", 1);

                for (int i = 0; i < model.ScheduledAlerts.Count; i++)
                {
                    cmdString += $"(@PrescriptionId, @ScheduledAlert{i}, @IsActive),";
                    cmd.Parameters.AddWithValue($"@ScheduledAlert{i}", model.ScheduledAlerts[i].AlertDateTime);
                }
                cmd.CommandText = cmdString.Remove(cmdString.LastIndexOf(","), 1);

                await cn.OpenAsync().ConfigureAwait(false);

                var numOfInserts = await cmd.ExecuteNonQueryAsync().ConfigureAwait(false);

                if (numOfInserts != model.ScheduledAlerts.Count)
                {
                    throw new Exception("Could not insert alerts for previously inserted prescription");
                }

                return(true);
            }
            catch (Exception ex)
            {
                throw new DatabaseException(ex.Message);
            }
            finally
            {
                cn.Close();
            }
        }
Пример #8
0
        public async Task <bool> UpdatePrescription(Prescription_Model model)
        {
            try
            {
                SqlCommand cmd = new SqlCommand
                {
                    CommandType = System.Data.CommandType.Text,
                    Connection  = cn,
                    CommandText = "UPDATE Prescription SET PrescriptionName = @PrescriptionName,  Color = @Color," +
                                  " Dosage = @Dosage, Identifier = @Identifier, Shape = @Shape, DoctorNote = @DoctorNote," +
                                  " Warning = @Warning, CurrentNumberOfDoses = @CurrentNumberOfDoses, CurrentNumberOfRefills = @CurrentNumberOfRefills," +
                                  " ModifiedBy = @ModifiedBy, ModifiedDate = @ModifiedDate " +
                                  " where PrescriptionId = @PrescriptionId"
                };

                cmd.Parameters.AddWithValue("@PrescriptionName", model.PrescriptionName);
                cmd.Parameters.AddWithValue("@Color", model.Color);
                cmd.Parameters.AddWithValue("@Dosage", model.Dosage);
                cmd.Parameters.AddWithValue("@Identifier", model.Identifiers);
                cmd.Parameters.AddWithValue("@Shape", model.Shape);
                cmd.Parameters.AddWithValue("@DoctorNote", model.DoctorNotes);
                cmd.Parameters.AddWithValue("@Warning", model.Warnings);
                cmd.Parameters.AddWithValue("@CurrentNumberOfDoses", model.CurrentNumberOfDoses);
                cmd.Parameters.AddWithValue("@CurrentNumberOfRefills", model.CurrentNumberOfRefills);
                cmd.Parameters.AddWithValue("@ModifiedBy", "Where to get this user");
                cmd.Parameters.AddWithValue("@ModifiedDate", DateTime.Now);
                cmd.Parameters.AddWithValue("@PrescriptionId", model.PrescriptionId);

                await cn.OpenAsync().ConfigureAwait(false);

                return(await cmd.ExecuteNonQueryAsync().ConfigureAwait(false) == 1);
            }
            catch (Exception ex)
            {
                throw new DatabaseException("Something went wrong updating the prescription", ex);
            }
            finally
            {
                cn.Close();
            }
        }
Пример #9
0
        public async Task <Prescription_Model> GetPrescription(int prescriptionId)
        {
            Prescription_Model model = new Prescription_Model();

            try
            {
                SqlCommand cmd = new SqlCommand
                {
                    Connection  = cn,
                    CommandType = System.Data.CommandType.Text,
                    CommandText = " SELECT p.*, min(pa.AlertDateTime) as NextAlert FROM Prescription p " +
                                  " JOIN PrescriptionAlert pa on pa.PrescriptionId = p.PrescriptionId " +
                                  " WHERE p.PrescriptionId = @PrescriptionId AND pa.IsActive = 1 AND p.IsActive = 1 " +
                                  " group by p.PrescriptionId,Ndc,PrescriptionName,PatientId,Color,Dosage,Identifier,Shape,Rxcui,ImageUrl,DoctorNote, " +
                                  " Warning,OriginalNumberOfDoses,CurrentNumberOfDoses,OriginalNumberOfRefills,CurrentNumberOfRefills,p.IsActive, " +
                                  " EnteredBy,EnteredDate,ModifiedBy,ModifiedDate"
                };
                cmd.Parameters.AddWithValue("@PrescriptionId", prescriptionId);

                await cn.OpenAsync().ConfigureAwait(false);

                using (var reader = cmd.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        model = DataRowToAllPrescriptionsMapper.Map(reader);
                    }
                }
                return(model);
            }
            catch (Exception ex)
            {
                throw new DatabaseException($"Something went wrong getting the prescription info for prescriptionId {prescriptionId}", ex);
            }
            finally
            {
                cn.Close();
            }
        }
        public async Task <bool> SavePrescription(Prescription_Model model)
        {
            model.PrescriptionId = await _dal.SavePrescription(model).ConfigureAwait(false);

            return(await _dal.SavePrescriptionAlerts(model).ConfigureAwait(false));
        }