Работает редактирование пациентов, врачей, также добавил редактирование по двойному клику

This commit is contained in:
Никита Потапов 2024-05-16 01:04:54 +04:00
parent 2becaa2045
commit 440a888011
8 changed files with 155 additions and 35 deletions

View File

@ -4,7 +4,7 @@ namespace MedicalDatabaseContracts.Models
{ {
public class Patient : AbstractPersonModel public class Patient : AbstractPersonModel
{ {
public char Gender { get; set; } public string Gender { get; set; } = string.Empty;
public DateTime Birthday { get; set; } public DateTime Birthday { get; set; }
public int Weight { get; set; } public int Weight { get; set; }
public int Height { get; set; } public int Height { get; set; }

View File

@ -2,6 +2,6 @@
{ {
public class PatientSearchModel : AbstractPersonSearchModel public class PatientSearchModel : AbstractPersonSearchModel
{ {
public char? Gender { get; set; } public string? Gender { get; set; }
} }
} }

View File

@ -5,7 +5,7 @@ namespace MedicalDatabaseContracts.ViewModels
public class PatientViewModel : AbstractPersonViewModel public class PatientViewModel : AbstractPersonViewModel
{ {
[DisplayName("Пол")] [DisplayName("Пол")]
public char Gender { get; set; } public string Gender { get; set; }
[DisplayName("Дата рождения")] [DisplayName("Дата рождения")]
public DateTime Birthday { get; set; } public DateTime Birthday { get; set; }
[DisplayName("Вес, кг")] [DisplayName("Вес, кг")]

View File

@ -18,7 +18,7 @@ namespace MedicalPostgresqlDatabase.Storages
Surname = Convert.ToString(reader.GetValue("surname")), Surname = Convert.ToString(reader.GetValue("surname")),
Patronymic = Convert.ToString(reader.GetValue("patronymic")), Patronymic = Convert.ToString(reader.GetValue("patronymic")),
PhoneNumber = Convert.ToString(reader.GetValue("phone_number")), PhoneNumber = Convert.ToString(reader.GetValue("phone_number")),
Gender = Convert.ToChar(reader.GetValue("gender")), Gender = Convert.ToString(reader.GetValue("gender")),
Birthday = Convert.ToDateTime(reader.GetValue("birthday")), Birthday = Convert.ToDateTime(reader.GetValue("birthday")),
Weight = Convert.ToInt32(reader.GetValue("weight")), Weight = Convert.ToInt32(reader.GetValue("weight")),
Height = Convert.ToInt32(reader.GetValue("height")), Height = Convert.ToInt32(reader.GetValue("height")),

View File

@ -19,6 +19,8 @@ namespace MedicalView
public FormAbstractList(ILogger<FormAbstractList<M, V, S, F>> logger, ILogic<M, V, S> logic) public FormAbstractList(ILogger<FormAbstractList<M, V, S, F>> logger, ILogic<M, V, S> logic)
{ {
InitializeComponent(); InitializeComponent();
dataGridView.CellDoubleClick += EditItemToolStripMenuItem_Click;
dataGridView.CellContentDoubleClick += EditItemToolStripMenuItem_Click;
_logger = logger; _logger = logger;
_logic = logic; _logic = logic;
} }

View File

@ -17,6 +17,8 @@ namespace MedicalView.Visits
public FormMain(ILogger<FormMain> logger, ILogic<Visit, VisitViewModel, VisitSearchModel> visitLogic) public FormMain(ILogger<FormMain> logger, ILogic<Visit, VisitViewModel, VisitSearchModel> visitLogic)
{ {
InitializeComponent(); InitializeComponent();
dataGridView.CellDoubleClick += buttonEdit_Click;
dataGridView.CellContentDoubleClick += buttonEdit_Click;
_logger = logger; _logger = logger;
_visitLogic = visitLogic; _visitLogic = visitLogic;
} }

View File

@ -28,11 +28,11 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
numericUpDown2 = new NumericUpDown(); numericUpDownWeight = new NumericUpDown();
numericUpDown1 = new NumericUpDown(); numericUpDownHeight = new NumericUpDown();
radioButtonGenderFemale = new RadioButton(); radioButtonGenderFemale = new RadioButton();
radioButtonGenderMale = new RadioButton(); radioButtonGenderMale = new RadioButton();
dateTimePicker1 = new DateTimePicker(); datePickerBirthday = new DateTimePicker();
label8 = new Label(); label8 = new Label();
label7 = new Label(); label7 = new Label();
label6 = new Label(); label6 = new Label();
@ -48,24 +48,28 @@
label3 = new Label(); label3 = new Label();
label2 = new Label(); label2 = new Label();
label1 = new Label(); label1 = new Label();
((System.ComponentModel.ISupportInitialize)numericUpDown2).BeginInit(); ((System.ComponentModel.ISupportInitialize)numericUpDownWeight).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDown1).BeginInit(); ((System.ComponentModel.ISupportInitialize)numericUpDownHeight).BeginInit();
menuStrip.SuspendLayout(); menuStrip.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// numericUpDown2 // numericUpDownWeight
// //
numericUpDown2.Location = new Point(86, 263); numericUpDownWeight.Location = new Point(86, 263);
numericUpDown2.Name = "numericUpDown2"; numericUpDownWeight.Maximum = new decimal(new int[] { 500, 0, 0, 0 });
numericUpDown2.Size = new Size(150, 27); numericUpDownWeight.Name = "numericUpDownWeight";
numericUpDown2.TabIndex = 44; numericUpDownWeight.Size = new Size(150, 27);
numericUpDownWeight.TabIndex = 44;
numericUpDownWeight.Value = new decimal(new int[] { 50, 0, 0, 0 });
// //
// numericUpDown1 // numericUpDownHeight
// //
numericUpDown1.Location = new Point(86, 230); numericUpDownHeight.Location = new Point(86, 230);
numericUpDown1.Name = "numericUpDown1"; numericUpDownHeight.Maximum = new decimal(new int[] { 300, 0, 0, 0 });
numericUpDown1.Size = new Size(150, 27); numericUpDownHeight.Name = "numericUpDownHeight";
numericUpDown1.TabIndex = 43; numericUpDownHeight.Size = new Size(150, 27);
numericUpDownHeight.TabIndex = 43;
numericUpDownHeight.Value = new decimal(new int[] { 150, 0, 0, 0 });
// //
// radioButtonGenderFemale // radioButtonGenderFemale
// //
@ -74,27 +78,30 @@
radioButtonGenderFemale.Name = "radioButtonGenderFemale"; radioButtonGenderFemale.Name = "radioButtonGenderFemale";
radioButtonGenderFemale.Size = new Size(43, 24); radioButtonGenderFemale.Size = new Size(43, 24);
radioButtonGenderFemale.TabIndex = 42; radioButtonGenderFemale.TabIndex = 42;
radioButtonGenderFemale.TabStop = true; radioButtonGenderFemale.Tag = "Ж";
radioButtonGenderFemale.Text = "Ж"; radioButtonGenderFemale.Text = "Ж";
radioButtonGenderFemale.UseVisualStyleBackColor = true; radioButtonGenderFemale.UseVisualStyleBackColor = true;
// //
// radioButtonGenderMale // radioButtonGenderMale
// //
radioButtonGenderMale.AutoSize = true; radioButtonGenderMale.AutoSize = true;
radioButtonGenderMale.Checked = true;
radioButtonGenderMale.Location = new Point(71, 199); radioButtonGenderMale.Location = new Point(71, 199);
radioButtonGenderMale.Name = "radioButtonGenderMale"; radioButtonGenderMale.Name = "radioButtonGenderMale";
radioButtonGenderMale.Size = new Size(43, 24); radioButtonGenderMale.Size = new Size(43, 24);
radioButtonGenderMale.TabIndex = 41; radioButtonGenderMale.TabIndex = 41;
radioButtonGenderMale.TabStop = true; radioButtonGenderMale.TabStop = true;
radioButtonGenderMale.Tag = "М";
radioButtonGenderMale.Text = "М"; radioButtonGenderMale.Text = "М";
radioButtonGenderMale.UseVisualStyleBackColor = true; radioButtonGenderMale.UseVisualStyleBackColor = true;
// //
// dateTimePicker1 // datePickerBirthday
// //
dateTimePicker1.Location = new Point(140, 165); datePickerBirthday.Format = DateTimePickerFormat.Short;
dateTimePicker1.Name = "dateTimePicker1"; datePickerBirthday.Location = new Point(140, 165);
dateTimePicker1.Size = new Size(185, 27); datePickerBirthday.Name = "datePickerBirthday";
dateTimePicker1.TabIndex = 40; datePickerBirthday.Size = new Size(120, 27);
datePickerBirthday.TabIndex = 40;
// //
// label8 // label8
// //
@ -147,12 +154,14 @@
ApplyToolStripMenuItem.Name = "ApplyToolStripMenuItem"; ApplyToolStripMenuItem.Name = "ApplyToolStripMenuItem";
ApplyToolStripMenuItem.Size = new Size(97, 24); ApplyToolStripMenuItem.Size = new Size(97, 24);
ApplyToolStripMenuItem.Text = "Сохранить"; ApplyToolStripMenuItem.Text = "Сохранить";
ApplyToolStripMenuItem.Click += ApplyToolStripMenuItem_Click;
// //
// CancelToolStripMenuItem // CancelToolStripMenuItem
// //
CancelToolStripMenuItem.Name = "CancelToolStripMenuItem"; CancelToolStripMenuItem.Name = "CancelToolStripMenuItem";
CancelToolStripMenuItem.Size = new Size(76, 24); CancelToolStripMenuItem.Size = new Size(76, 24);
CancelToolStripMenuItem.Text = "Отмена"; CancelToolStripMenuItem.Text = "Отмена";
CancelToolStripMenuItem.Click += CancelToolStripMenuItem_Click;
// //
// textBoxPhoneNumber // textBoxPhoneNumber
// //
@ -227,11 +236,11 @@
AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleDimensions = new SizeF(8F, 20F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(570, 297); ClientSize = new Size(570, 297);
Controls.Add(numericUpDown2); Controls.Add(numericUpDownWeight);
Controls.Add(numericUpDown1); Controls.Add(numericUpDownHeight);
Controls.Add(radioButtonGenderFemale); Controls.Add(radioButtonGenderFemale);
Controls.Add(radioButtonGenderMale); Controls.Add(radioButtonGenderMale);
Controls.Add(dateTimePicker1); Controls.Add(datePickerBirthday);
Controls.Add(label8); Controls.Add(label8);
Controls.Add(label7); Controls.Add(label7);
Controls.Add(label6); Controls.Add(label6);
@ -248,8 +257,9 @@
MinimumSize = new Size(0, 344); MinimumSize = new Size(0, 344);
Name = "FormPatient"; Name = "FormPatient";
Text = "Редактировать пациента"; Text = "Редактировать пациента";
((System.ComponentModel.ISupportInitialize)numericUpDown2).EndInit(); Load += FormPatient_Load;
((System.ComponentModel.ISupportInitialize)numericUpDown1).EndInit(); ((System.ComponentModel.ISupportInitialize)numericUpDownWeight).EndInit();
((System.ComponentModel.ISupportInitialize)numericUpDownHeight).EndInit();
menuStrip.ResumeLayout(false); menuStrip.ResumeLayout(false);
menuStrip.PerformLayout(); menuStrip.PerformLayout();
ResumeLayout(false); ResumeLayout(false);
@ -258,11 +268,11 @@
#endregion #endregion
private NumericUpDown numericUpDown2; private NumericUpDown numericUpDownWeight;
private NumericUpDown numericUpDown1; private NumericUpDown numericUpDownHeight;
private RadioButton radioButtonGenderFemale; private RadioButton radioButtonGenderFemale;
private RadioButton radioButtonGenderMale; private RadioButton radioButtonGenderMale;
private DateTimePicker dateTimePicker1; private DateTimePicker datePickerBirthday;
private Label label8; private Label label8;
private Label label7; private Label label7;
private Label label6; private Label label6;

View File

@ -1,10 +1,116 @@
namespace MedicalView.Patients using MedicalDatabaseContracts.Models;
using MedicalDatabaseContracts.SearchModels;
using MedicalDatabaseContracts.ViewModels;
using MedicalDatabaseContracts;
using Microsoft.Extensions.Logging;
using MedicalBusinessLogic.BusinessLogics;
namespace MedicalView.Patients
{ {
public partial class FormPatient : FormAbstractDetail public partial class FormPatient : FormAbstractDetail
{ {
public FormPatient() private readonly ILogger<FormPatient> _logger;
private readonly ILogic<Patient, PatientViewModel, PatientSearchModel> _logic;
public FormPatient(
ILogger<FormPatient> logger,
ILogic<Patient, PatientViewModel, PatientSearchModel> logic)
{ {
InitializeComponent(); InitializeComponent();
_logger = logger;
_logic = logic;
}
private void ApplyToolStripMenuItem_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBoxName.Text))
{
MessageBox.Show("Заполните имя", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else if (string.IsNullOrEmpty(textBoxSurname.Text))
{
MessageBox.Show("Заполните фамилию", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else if (string.IsNullOrEmpty(textBoxPhoneNumber.Text))
{
MessageBox.Show("Заполните номер телефона", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else if (!radioButtonGenderMale.Checked && !radioButtonGenderFemale.Checked)
{
MessageBox.Show("Укажите пол", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
_logger.LogInformation("Сохранение модели пациента");
try
{
var model = new Patient
{
Id = ModelId ?? 0,
Name = textBoxName.Text,
Surname = textBoxSurname.Text,
Patronymic = textBoxPatronymic.Text,
PhoneNumber = textBoxPhoneNumber.Text,
Birthday = datePickerBirthday.Value,
Gender = (string)(radioButtonGenderMale.Checked ? radioButtonGenderMale.Tag : radioButtonGenderFemale.Tag),
Weight = (int)numericUpDownWeight.Value,
Height = (int)numericUpDownHeight.Value
};
var operationResult = ModelId.HasValue ? _logic.Update(model) : _logic.Create(model);
if (!operationResult)
{
throw new Exception("Ошибка при сохранении. Дополнительная информация в логах.");
}
MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
DialogResult = DialogResult.OK;
Close();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка сохранения пациента");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void CancelToolStripMenuItem_Click(object sender, EventArgs e)
{
Cancel();
}
private void FormPatient_Load(object sender, EventArgs e)
{
if (ModelId.HasValue)
{
try
{
_logger.LogInformation("Получение модели врача");
var view = _logic.ReadElement(ModelId.Value);
if (view != null)
{
textBoxName.Text = view.Name;
textBoxSurname.Text = view.Surname;
textBoxPatronymic.Text = view.Patronymic;
textBoxPhoneNumber.Text = view.PhoneNumber;
datePickerBirthday.Value = view.Birthday;
if (view.Gender == (string)radioButtonGenderMale.Tag)
{
radioButtonGenderMale.Checked = true;
}
else
{
radioButtonGenderFemale.Checked = true;
}
numericUpDownHeight.Value = view.Height;
numericUpDownWeight.Value = view.Weight;
}
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения модели пациента");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
} }
} }
} }