Добавлены необходимые модели для отчетов от исполнителя, осталось реализовать еще одну функцию в логике отчетов
This commit is contained in:
parent
c349a09117
commit
c73e54da8e
@ -0,0 +1,84 @@
|
|||||||
|
using PolyclinicContracts.BindingModels;
|
||||||
|
using PolyclinicContracts.BusinessLogicsContracts;
|
||||||
|
using PolyclinicContracts.SearchModels;
|
||||||
|
using PolyclinicContracts.StoragesContracts;
|
||||||
|
using PolyclinicContracts.ViewModels;
|
||||||
|
|
||||||
|
namespace PolyclinicBusinessLogic.BusinessLogics
|
||||||
|
{
|
||||||
|
public class ImplementerReportLogic : IImplementerReportLogic
|
||||||
|
{
|
||||||
|
private readonly IDiagnoseStorage _diagnoseStorage;
|
||||||
|
private readonly IMedicamentStorage _medicamentStorage;
|
||||||
|
private readonly ICourseStorage _courseStorage;
|
||||||
|
private readonly ISymptomStorage _symptomStorage;
|
||||||
|
|
||||||
|
public ImplementerReportLogic(IDiagnoseStorage diagnoseStorage, IMedicamentStorage medicamentStorage, ICourseStorage courseStorage, ISymptomStorage symptomStorage)
|
||||||
|
{
|
||||||
|
_diagnoseStorage = diagnoseStorage;
|
||||||
|
_medicamentStorage = medicamentStorage;
|
||||||
|
_courseStorage = courseStorage;
|
||||||
|
_symptomStorage = symptomStorage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ReportDiagnoseWithCoursesAndSymptomesViewModel> GetDiagnoses()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ReportMedicamentsByDiagnoseViewModel> GetMedicamentsByDiagnoses(ReportBindingModel model)
|
||||||
|
{
|
||||||
|
var diagnoses = _diagnoseStorage
|
||||||
|
.GetFilteredList(new DiagnoseSearchModel
|
||||||
|
{
|
||||||
|
From = model.DateFrom,
|
||||||
|
To = model.DateTo
|
||||||
|
});
|
||||||
|
|
||||||
|
var symptomes = _symptomStorage
|
||||||
|
.GetFullList();
|
||||||
|
|
||||||
|
var medicaments = _medicamentStorage.GetFullList();
|
||||||
|
|
||||||
|
List<ReportMedicamentsByDiagnoseViewModel> result = new();
|
||||||
|
|
||||||
|
foreach (var diagnose in diagnoses)
|
||||||
|
{
|
||||||
|
var diagnoseSymptomes = symptomes
|
||||||
|
.Where(x => x.SymptomDiagnoses.ContainsKey(diagnose.Id))
|
||||||
|
.ToList();
|
||||||
|
var diagnoseMedicaments = new List<MedicamentViewModel>();
|
||||||
|
foreach (var symptom in diagnoseSymptomes)
|
||||||
|
{
|
||||||
|
diagnoseMedicaments.AddRange(medicaments.Where(x => x.SymptomId == symptom.Id));
|
||||||
|
}
|
||||||
|
diagnoseMedicaments.Distinct();
|
||||||
|
var diagnoseReportModel = new ReportMedicamentsByDiagnoseViewModel {
|
||||||
|
DiagnoseId = diagnose.Id,
|
||||||
|
DiagnoseName = diagnose.Name,
|
||||||
|
DiagnoseComment = diagnose.Comment,
|
||||||
|
DiagnoseDateStart = diagnose.DateStartDiagnose,
|
||||||
|
DiagnoseDateStop = diagnose.DateStopDiagnose,
|
||||||
|
Medicaments = diagnoseMedicaments.Select(x => x.Name).ToList()
|
||||||
|
};
|
||||||
|
result.Add(diagnoseReportModel);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SaveOrdersToPdfFile(ReportBindingModel model)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SaveSecureComponentToExcelFile(ReportBindingModel model)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SaveSecuresToWordFile(ReportBindingModel model)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using PolyclinicContracts.BindingModels;
|
||||||
|
using PolyclinicContracts.ViewModels;
|
||||||
|
|
||||||
|
namespace PolyclinicContracts.BusinessLogicsContracts
|
||||||
|
{
|
||||||
|
public interface IImplementerReportLogic
|
||||||
|
{
|
||||||
|
List<ReportDiagnoseWithCoursesAndSymptomesViewModel> GetDiagnoses();
|
||||||
|
List<ReportMedicamentsByDiagnoseViewModel> GetMedicamentsByDiagnoses(ReportBindingModel model);
|
||||||
|
void SaveSecuresToWordFile(ReportBindingModel model);
|
||||||
|
void SaveSecureComponentToExcelFile(ReportBindingModel model);
|
||||||
|
void SaveOrdersToPdfFile(ReportBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -5,7 +5,7 @@
|
|||||||
public int? Id { get; set; }
|
public int? Id { get; set; }
|
||||||
public string? Name { get; set; }
|
public string? Name { get; set; }
|
||||||
public int? UserId { get; set; }
|
public int? UserId { get; set; }
|
||||||
public DateTime? From { get; }
|
public DateTime? From { get; set; }
|
||||||
public DateTime? To { get; }
|
public DateTime? To { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
namespace PolyclinicContracts.ViewModels
|
||||||
|
{
|
||||||
|
public class ReportDiagnoseWithCoursesAndSymptomesViewModel
|
||||||
|
{
|
||||||
|
public int DiagnoseId { get; set; }
|
||||||
|
public string DiagnoseName { get; set; } = string.Empty;
|
||||||
|
public string DiagnoseComment { get; set; } = string.Empty;
|
||||||
|
public DateTime DiagnoseDateStart { get; set; }
|
||||||
|
public DateTime? DiagnoseDateStop { get; set; } = null;
|
||||||
|
public List<string> Symptomes { get; set; } = new();
|
||||||
|
public List<(int DaysCount, int PillsPerDay)> Courses = new();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
namespace PolyclinicContracts.ViewModels
|
||||||
|
{
|
||||||
|
public class ReportMedicamentsByDiagnoseViewModel
|
||||||
|
{
|
||||||
|
public int DiagnoseId { get; set; }
|
||||||
|
public string DiagnoseName { get; set; } = string.Empty;
|
||||||
|
public string DiagnoseComment { get; set; } = string.Empty;
|
||||||
|
public DateTime DiagnoseDateStart { get; set; }
|
||||||
|
public DateTime? DiagnoseDateStop { get; set; } = null;
|
||||||
|
public List<string> Medicaments = new();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user