diff --git a/Hospital/HospitalDataModels/Models/IPatientModel.cs b/Hospital/HospitalDataModels/Models/IPatientModel.cs
index c8aa3c0..c672536 100644
--- a/Hospital/HospitalDataModels/Models/IPatientModel.cs
+++ b/Hospital/HospitalDataModels/Models/IPatientModel.cs
@@ -2,7 +2,7 @@
{
public interface IPatientModel : IId
{
- string? Surname { get; }
+ string Surname { get; }
string Name { get; }
string? Patronymic { get; }
DateTime BirthDate { get; }
diff --git a/Hospital/HospitalDatabaseImplement/HospitalDatabaseImplement.csproj b/Hospital/HospitalDatabaseImplement/HospitalDatabaseImplement.csproj
index d95079c..5fd43f7 100644
--- a/Hospital/HospitalDatabaseImplement/HospitalDatabaseImplement.csproj
+++ b/Hospital/HospitalDatabaseImplement/HospitalDatabaseImplement.csproj
@@ -6,6 +6,24 @@
enable
+
+
+
+
+
+
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+
@@ -20,4 +38,19 @@
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
diff --git a/Hospital/HospitalDatabaseImplement/LoaderFromXML.cs b/Hospital/HospitalDatabaseImplement/LoaderFromXML.cs
new file mode 100644
index 0000000..3e42495
--- /dev/null
+++ b/Hospital/HospitalDatabaseImplement/LoaderFromXML.cs
@@ -0,0 +1,62 @@
+using HospitalDatabaseImplement.Models;
+using System.Xml.Linq;
+
+namespace HospitalDatabaseImplement
+{
+ public class LoaderFromXML
+ {
+ private static readonly string PatientFileName = "XMLData\\Patient.xml";
+ private static readonly string TreatmentFileName = "XMLData\\Treatment.xml";
+ private static readonly string ProcedureFileName = "XMLData\\Procedure.xml";
+
+ private static List? LoadData(string filename, string xmlNodeName, Func selectFunction)
+ {
+ if (File.Exists(filename))
+ {
+ return XDocument.Load(filename)?.Root?.Elements(xmlNodeName)?.Select(selectFunction)?.ToList();
+ }
+ return new List();
+ }
+
+ public static void LoadPatients()
+ {
+ // TODO return LoadData(PatientFileName, "Patient", x => Patient.Create(x)!)!;
+ using var context = new HospitalDatabase();
+ var list = LoadData(PatientFileName, "Patient", x => Patient.Create(x)!)!;
+ list.ForEach(x =>
+ {
+ context.Patients.Add(x);
+ context.SaveChanges();
+ });
+
+ }
+
+ public static void LoadTreatments()
+ {
+ using var context = new HospitalDatabase();
+ if (context.Treatments.ToList().Count > 0)
+ return;
+ var list = LoadData(TreatmentFileName, "Treatment", x => Treatment.Create(context, x)!)!;
+ list.ForEach(x =>
+ {
+ context.Treatments.Add(x);
+ });
+ context.SaveChanges();
+ }
+
+ public static void LoadProcedures()
+ {
+ using var context = new HospitalDatabase();
+ if (context.Procedures.ToList().Count > 0)
+ return;
+ // TODO return LoadData(ProcedureFileName, "Procedure", x => Procedure.Create(context, x)!)!;
+ var list = LoadData(ProcedureFileName, "Procedure", x => Procedure.Create(context, x)!)!;
+ list.ForEach(x =>
+ {
+ context.Procedures.Add(x);
+ context.SaveChanges();
+ });
+
+ }
+ }
+}
diff --git a/Hospital/HospitalDatabaseImplement/Models/Medicine.cs b/Hospital/HospitalDatabaseImplement/Models/Medicine.cs
index 3ef9684..2055f22 100644
--- a/Hospital/HospitalDatabaseImplement/Models/Medicine.cs
+++ b/Hospital/HospitalDatabaseImplement/Models/Medicine.cs
@@ -22,7 +22,7 @@ namespace HospitalDatabaseImplement.Models
public string Dose { get; private set; } = string.Empty;
[Required]
- public int ApothecaryId { get; private set; }
+ public int ApothecaryId { get; private set; } = -1;
public virtual Apothecary Apothecary { get; set; }
diff --git a/Hospital/HospitalDatabaseImplement/Models/Patient.cs b/Hospital/HospitalDatabaseImplement/Models/Patient.cs
index 43eef9d..a0f784b 100644
--- a/Hospital/HospitalDatabaseImplement/Models/Patient.cs
+++ b/Hospital/HospitalDatabaseImplement/Models/Patient.cs
@@ -7,6 +7,7 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Xml.Linq;
namespace HospitalDatabaseImplement.Models
{
@@ -14,7 +15,7 @@ namespace HospitalDatabaseImplement.Models
{
public int Id { get; private set; }
- public string? Surname { get; private set; } = string.Empty;
+ public string Surname { get; private set; } = string.Empty;
[Required]
public string Name { get; private set; } = string.Empty;
@@ -42,16 +43,19 @@ namespace HospitalDatabaseImplement.Models
};
}
- public static Patient Create(PatientViewModel model)
+ public static Patient? Create(XElement element)
{
- return new Patient
+ if (element == null)
{
- Id = model.Id,
- Surname = model.Surname,
- Name = model.Name,
- Patronymic = model.Patronymic,
- BirthDate = model.BirthDate,
- TreatmentId = model.TreatmentId
+ return null;
+ }
+ return new Patient()
+ {
+ Surname = element.Element("Surname")!.Value,
+ Name = element.Element("Name")!.Value,
+ Patronymic = element.Element("Patronymic")?.Value,
+ BirthDate = DateTime.ParseExact(element.Element("BirthDate")!.Value, "dd.mm.yyyy", null),
+ TreatmentId = Convert.ToInt32(element.Element("TreatmentId")!.Value)
};
}
diff --git a/Hospital/HospitalDatabaseImplement/Models/Procedure.cs b/Hospital/HospitalDatabaseImplement/Models/Procedure.cs
index 37327d4..52da479 100644
--- a/Hospital/HospitalDatabaseImplement/Models/Procedure.cs
+++ b/Hospital/HospitalDatabaseImplement/Models/Procedure.cs
@@ -8,6 +8,7 @@ using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Xml.Linq;
namespace HospitalDatabaseImplement.Models
{
@@ -52,6 +53,22 @@ namespace HospitalDatabaseImplement.Models
};
}
+ public static Procedure? Create(HospitalDatabase context, XElement element)
+ {
+ if (element == null)
+ {
+ return null;
+ }
+ return new Procedure()
+ {
+ Name = element.Element("Name")!.Value,
+ /* Medicines = element.Element("Medicines")!.Elements("MedicineId").Select(x => new ProcedureMedicine
+ {
+ Medicine = context.Medicines?.First(y => y.Id == Convert.ToInt32(x.Value))
+ }).ToList()*/
+ };
+ }
+
public void Update(ProcedureBindingModel model)
{
Name = model.Name;
diff --git a/Hospital/HospitalDatabaseImplement/Models/Treatment.cs b/Hospital/HospitalDatabaseImplement/Models/Treatment.cs
index 798abcd..4f8e2ee 100644
--- a/Hospital/HospitalDatabaseImplement/Models/Treatment.cs
+++ b/Hospital/HospitalDatabaseImplement/Models/Treatment.cs
@@ -8,6 +8,7 @@ using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Xml.Linq;
namespace HospitalDatabaseImplement.Models
{
@@ -54,6 +55,22 @@ namespace HospitalDatabaseImplement.Models
};
}
+ public static Treatment? Create(HospitalDatabase context, XElement element)
+ {
+ if (element == null)
+ {
+ return null;
+ }
+ return new Treatment()
+ {
+ Name = element.Element("Name")!.Value,
+ Procedures = element.Element("Procedures")!.Elements("ProcedureId").Select( x => new TreatmentProcedure
+ {
+ Procedure = context.Procedures.First(y => y.Id == Convert.ToInt32(x.Value))
+ }).ToList()
+ };
+ }
+
public void Update(TreatmentBindingModel model)
{
Name = model.Name;
diff --git a/Hospital/HospitalDatabaseImplement/XMLData/Patient.xml b/Hospital/HospitalDatabaseImplement/XMLData/Patient.xml
new file mode 100644
index 0000000..38b85ab
--- /dev/null
+++ b/Hospital/HospitalDatabaseImplement/XMLData/Patient.xml
@@ -0,0 +1,17 @@
+
+
+
+ Фамилия 1
+ Имя 1
+ Отчество 1
+ 10.01.2021
+ 1
+
+
+ Фамилия 2
+ Имя 2
+ Отчество 1
+ 15.04.2001
+ 2
+
+
\ No newline at end of file
diff --git a/Hospital/HospitalDatabaseImplement/XMLData/Procedure.xml b/Hospital/HospitalDatabaseImplement/XMLData/Procedure.xml
new file mode 100644
index 0000000..a046158
--- /dev/null
+++ b/Hospital/HospitalDatabaseImplement/XMLData/Procedure.xml
@@ -0,0 +1,30 @@
+
+
+
+ Процедура 1
+
+ 1
+ 2
+ 3
+
+
+
+ Процедура 2
+
+ 1
+
+
+
+ Процедура 3
+
+ 2
+ 3
+
+
+
+ Процедура 4
+
+
+ Процедура 5
+
+
\ No newline at end of file
diff --git a/Hospital/HospitalDatabaseImplement/XMLData/Treatment.xml b/Hospital/HospitalDatabaseImplement/XMLData/Treatment.xml
new file mode 100644
index 0000000..1d3159e
--- /dev/null
+++ b/Hospital/HospitalDatabaseImplement/XMLData/Treatment.xml
@@ -0,0 +1,34 @@
+
+
+
+ Лечение 1
+
+ 1
+ 2
+ 3
+
+
+
+ Лечение 2
+
+ 1
+
+
+
+ Лечение 3
+
+ 2
+ 3
+
+
+
+ Лечение 4
+
+
+
+
+ Лечение 5
+
+
+
+
\ No newline at end of file