Creado apartir del commit b888de6c92056de294456f581a56e25e734d4ab7 de develop
This commit is contained in:
@@ -0,0 +1,541 @@
|
||||
using adas_core.Application.Repositories.Interfaces;
|
||||
using adas_core.Application.Services;
|
||||
using adas_core.Application.Services.Interfaces;
|
||||
using adas_core.Domain.Enums;
|
||||
using adas_core.Domain.Models;
|
||||
using adas_core.Domain.Models.AppSettings;
|
||||
using adas_core.Domain.Models.MongoModels;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using MongoDB.Bson;
|
||||
using Moq;
|
||||
using Options = Microsoft.Extensions.Options.Options;
|
||||
|
||||
namespace adas_core.Test.Services;
|
||||
|
||||
[TestFixture]
|
||||
public class DiagnosisServiceTest
|
||||
{
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_patientServiceMock = new Mock<IPatientService>();
|
||||
_patientServiceLazy = new Lazy<IPatientService>(() => _patientServiceMock.Object);
|
||||
|
||||
//var sectionServiceMock = new Mock<ISectionService>();
|
||||
//sectionServiceLazy = new Lazy<ISectionService>(() => sectionServiceMock.Object);
|
||||
|
||||
_diagnosisRepositoryMock = new Mock<IDiagnosisRepository>();
|
||||
_diagnosisArchiveRepositoryMock = new Mock<IDiagnosisArchiveRepository>();
|
||||
_clientMessageServiceMock = new Mock<IClientMessageService>();
|
||||
_subscribersServiceMock = new Mock<ISubscribersService>();
|
||||
_unitServiceMock = new Mock<IUnitService>();
|
||||
_httpContextAccessor = new Mock<IHttpContextAccessor>();
|
||||
_auditService = new Mock<ILocalAuditService>();
|
||||
_calculatedObservationsServiceMock = new Mock<ICalculatedObservationsService>();
|
||||
_calculatedObservationsServiceLazy =
|
||||
new Lazy<ICalculatedObservationsService>(() => _calculatedObservationsServiceMock.Object);
|
||||
_calculatedObservationsServiceMock.Setup(x => x.Map(It.IsAny<PatientDiagnosis>()))
|
||||
.ReturnsAsync((PatientDiagnosis? value) => value);
|
||||
_optionsApiSettings = Options.Create(_apiSettings);
|
||||
_logger = new Mock<ILogger<DiagnosisService>>();
|
||||
_diagnosisService = new DiagnosisService(
|
||||
_patientServiceLazy,
|
||||
//sectionServiceLazy,
|
||||
_optionsApiSettings,
|
||||
_diagnosisRepositoryMock.Object,
|
||||
_diagnosisArchiveRepositoryMock.Object,
|
||||
_logger.Object,
|
||||
_clientMessageServiceMock.Object,
|
||||
_subscribersServiceMock.Object,
|
||||
_calculatedObservationsServiceLazy,
|
||||
_httpContextAccessor.Object,
|
||||
_auditService.Object,
|
||||
_unitServiceMock.Object
|
||||
);
|
||||
|
||||
|
||||
// Create a mock of the singleton class subscribers
|
||||
var mockSingleton = new Mock<ICalculatedObservationsService>();
|
||||
|
||||
// Set up the mock object to return a specific value when a method is called
|
||||
mockSingleton.Setup(x => x.Map(It.IsAny<PatientDiagnosis>())).ReturnsAsync((PatientDiagnosis? value) => value);
|
||||
}
|
||||
|
||||
private DiagnosisService _diagnosisService;
|
||||
|
||||
private Lazy<IPatientService> _patientServiceLazy;
|
||||
|
||||
private Mock<IPatientService> _patientServiceMock;
|
||||
private Mock<IDiagnosisRepository> _diagnosisRepositoryMock;
|
||||
private Mock<IDiagnosisArchiveRepository> _diagnosisArchiveRepositoryMock;
|
||||
|
||||
private Mock<IClientMessageService> _clientMessageServiceMock;
|
||||
private Mock<ISubscribersService> _subscribersServiceMock;
|
||||
private Mock<IUnitService> _unitServiceMock;
|
||||
private Lazy<ICalculatedObservationsService> _calculatedObservationsServiceLazy;
|
||||
private Mock<ICalculatedObservationsService> _calculatedObservationsServiceMock;
|
||||
private Mock<IHttpContextAccessor> _httpContextAccessor = new();
|
||||
private Mock<ILocalAuditService> _auditService = new();
|
||||
|
||||
private readonly ApiSettings _apiSettings = new()
|
||||
{
|
||||
DiagnosisSystem = "Snomed-CT",
|
||||
DiagnosisCode = { "55607006" }
|
||||
};
|
||||
|
||||
private IOptions<ApiSettings> _optionsApiSettings;
|
||||
|
||||
|
||||
private Mock<ILogger<DiagnosisService>> _logger;
|
||||
|
||||
private static readonly DateTime Now = DateTime.Now;
|
||||
private static readonly ObjectId PatientId = ObjectId.GenerateNewId();
|
||||
|
||||
// [Test]
|
||||
// public void SaveRequest_patientNumber_and_pointOfCare_null_Return_not_insert()
|
||||
// {
|
||||
// var apiRequest = new ApiRequest();
|
||||
//
|
||||
// Assert.ThrowsAsync<Exception>(async () => await _diagnosisService.SaveRequest(apiRequest, null));
|
||||
// }
|
||||
|
||||
// [Test]
|
||||
// public void SaveRequest_Not_ORU_R01_Return_not_insert()
|
||||
// {
|
||||
// var patientObs = new Person
|
||||
// {
|
||||
// FirstName = "Miguel",
|
||||
// LastName = "Villanueva",
|
||||
// Ids = new Dictionary<string, string> { { "MR", "437537" } }
|
||||
// };
|
||||
//
|
||||
// var patient = new Patient
|
||||
// {
|
||||
// Id = ObjectId.GenerateNewId(),
|
||||
// UnitString = "UCI5C",
|
||||
// Bed = "Box4",
|
||||
// PatientNumber = "437537",
|
||||
// Person = patientObs
|
||||
//
|
||||
// };
|
||||
//
|
||||
// var apiRequest = new ApiRequest
|
||||
// {
|
||||
// Location = new PatientLocation("UCI5C", "Box4"),
|
||||
// Patient = patientObs,
|
||||
// PatientNumber = "437537",
|
||||
// Type = "ORU_R11",
|
||||
// PatientId = PatientId.ToString(),
|
||||
// MessageTime = Now
|
||||
// };
|
||||
//
|
||||
// _patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
|
||||
//
|
||||
// Assert.ThrowsAsync<Exception>(async () => await _diagnosisService.SaveRequest(apiRequest, null));
|
||||
// }
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task SaveRequest_Not_FindPatient_Return_not_insert()
|
||||
{
|
||||
var apiRequest = new ApiRequest
|
||||
{
|
||||
Location = new PatientLocation("UCI5C", "Box4"),
|
||||
PatientNumber = "437537",
|
||||
Type = "ORU_R01",
|
||||
PatientId = PatientId.ToString(),
|
||||
MessageTime = Now
|
||||
};
|
||||
|
||||
_patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync((Patient?)null);
|
||||
|
||||
await _diagnosisService.SaveRequest(apiRequest, null);
|
||||
|
||||
_diagnosisRepositoryMock.Verify(d => d.InsertOneAsync(It.IsAny<PatientDiagnosis>()), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task SaveRequest_Not_Observations_Return_not_insert()
|
||||
{
|
||||
var patientObs = new Person
|
||||
{
|
||||
FirstName = "Miguel",
|
||||
LastName = "Villanueva",
|
||||
Ids = new Dictionary<string, string> { { "MR", "437537" } }
|
||||
};
|
||||
|
||||
var patient = new Patient
|
||||
{
|
||||
Id = ObjectId.GenerateNewId(),
|
||||
UnitString = "UCI5C",
|
||||
Bed = "Box4",
|
||||
PatientNumber = "437537",
|
||||
Person = patientObs
|
||||
};
|
||||
|
||||
var apiRequest = new ApiRequest
|
||||
{
|
||||
Location = new PatientLocation("UCI5C", "Box4"),
|
||||
ObservationData = new ObservationData
|
||||
{
|
||||
Code = "302147001",
|
||||
CodingSystem = "SNM",
|
||||
Value = "Aire; Contacto; Preventivo",
|
||||
Text = "Aislamiento",
|
||||
Time = Now
|
||||
},
|
||||
Patient = patientObs,
|
||||
PatientNumber = "437537",
|
||||
Type = "ORU_R01",
|
||||
PatientId = PatientId.ToString(),
|
||||
MessageTime = Now
|
||||
};
|
||||
|
||||
|
||||
_patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
|
||||
|
||||
await _diagnosisService.SaveRequest(apiRequest, null);
|
||||
|
||||
_diagnosisRepositoryMock.Verify(d => d.InsertOneAsync(It.IsAny<PatientDiagnosis>()), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task SaveRequest_Not_DiagnosisCodeSettings_Return_not_insert()
|
||||
{
|
||||
var patientObs = new Person
|
||||
{
|
||||
FirstName = "Miguel",
|
||||
LastName = "Villanueva",
|
||||
Ids = new Dictionary<string, string> { { "MR", "437537" } }
|
||||
};
|
||||
|
||||
var patient = new Patient
|
||||
{
|
||||
Id = ObjectId.GenerateNewId(),
|
||||
UnitString = "UCI5C",
|
||||
Bed = "Box4",
|
||||
PatientNumber = "437537",
|
||||
Person = patientObs
|
||||
};
|
||||
|
||||
var apiRequest = new ApiRequest
|
||||
{
|
||||
Location = new PatientLocation("UCI5C", "Box4"),
|
||||
ObservationData = new ObservationData
|
||||
{
|
||||
Code = "302147001",
|
||||
CodingSystem = "SNM",
|
||||
Value = "Aire; Contacto; Preventivo",
|
||||
Text = "Aislamiento",
|
||||
Time = Now
|
||||
},
|
||||
Observations =
|
||||
[
|
||||
new PatientObservation
|
||||
{
|
||||
Code = "263490005",
|
||||
CodingSystem = "SNM",
|
||||
Name = "Estado",
|
||||
Status = StatusEnum.Type.Ok,
|
||||
Time = Now,
|
||||
Value = "Sin alergias conocidas"
|
||||
},
|
||||
|
||||
new PatientObservation
|
||||
{
|
||||
Code = "300916003",
|
||||
CodingSystem = "SNM",
|
||||
Name = "¿Alergia al látex?",
|
||||
Status = StatusEnum.Type.Ok,
|
||||
Time = Now,
|
||||
Value = "No"
|
||||
}
|
||||
],
|
||||
Patient = patientObs,
|
||||
PatientNumber = "437537",
|
||||
Type = "ORU_R01",
|
||||
PatientId = PatientId.ToString(),
|
||||
MessageTime = Now
|
||||
};
|
||||
|
||||
Options.Create(new ApiSettings());
|
||||
|
||||
var diagnosisService = new DiagnosisService(
|
||||
_patientServiceLazy,
|
||||
//sectionServiceLazy,
|
||||
_optionsApiSettings,
|
||||
_diagnosisRepositoryMock.Object,
|
||||
_diagnosisArchiveRepositoryMock.Object,
|
||||
_logger.Object,
|
||||
_clientMessageServiceMock.Object,
|
||||
_subscribersServiceMock.Object,
|
||||
_calculatedObservationsServiceLazy,
|
||||
_httpContextAccessor.Object,
|
||||
_auditService.Object,
|
||||
_unitServiceMock.Object);
|
||||
|
||||
_patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
|
||||
|
||||
await diagnosisService.SaveRequest(apiRequest, null);
|
||||
|
||||
_diagnosisRepositoryMock.Verify(d => d.InsertOneAsync(It.IsAny<PatientDiagnosis>()), Times.Never);
|
||||
}
|
||||
|
||||
|
||||
// [Test]
|
||||
// public async Task SaveRequest_DiagnosisCodeSettings_Return_insert()
|
||||
// {
|
||||
// var patientObs = new Person
|
||||
// {
|
||||
// FirstName = "Miguel",
|
||||
// LastName = "Villanueva",
|
||||
// Ids = new Dictionary<string, string> { { "MR", "437537" } }
|
||||
// };
|
||||
//
|
||||
// var patient = new Patient
|
||||
// {
|
||||
// Id = ObjectId.GenerateNewId(),
|
||||
// UnitString = "UCI5C",
|
||||
// Bed = "Box4",
|
||||
// PatientNumber = "437537",
|
||||
// Person = patientObs
|
||||
// };
|
||||
//
|
||||
// var apiRequest = new ApiRequest
|
||||
// {
|
||||
// Location = new PatientLocation("UCI5C", "Box4"),
|
||||
// ObservationData= new ObservationData
|
||||
// {
|
||||
// Code = "55607006",
|
||||
// CodingSystem = "SNM",
|
||||
// Value = "Diagnosis",
|
||||
// Time = Now
|
||||
//
|
||||
// },
|
||||
// Observations = new List<PatientObservation>
|
||||
// {
|
||||
// new()
|
||||
// {
|
||||
// Code = "272099008",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "description",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = "Daño axonal difuso"
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "1000000013",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "label",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = "Daño axonal difuso"
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "1000000014",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "code",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = "262693007"
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "394731006",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "state",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = "state"
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "272125009",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "category",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = "category"
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "398201009",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "starTime",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = Now.AddHours(1)
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "397898000",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "endTime",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = Now.AddHours(2)
|
||||
// }
|
||||
//
|
||||
// },
|
||||
// Patient = patientObs,
|
||||
// PatientNumber = "437537",
|
||||
// Type = "ORU_R01",
|
||||
// PatientId = PatientId.ToString(),
|
||||
// MessageTime = Now
|
||||
// };
|
||||
//
|
||||
// _diagnosisService = new DiagnosisService(
|
||||
// _patientServiceLazy,
|
||||
// //sectionServiceLazy,
|
||||
// _optionsApiSettings,
|
||||
// _diagnosisRepositoryMock.Object,
|
||||
// _diagnosisArchiveRepositoryMock.Object,
|
||||
// _logger.Object,
|
||||
// _clientMessageServiceMock.Object,
|
||||
// _subscribersServiceMock.Object,
|
||||
// _calculatedObservationsServiceLazy,
|
||||
// _unitServiceMock.Object);
|
||||
//
|
||||
// _patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
|
||||
//
|
||||
// await _diagnosisService.SaveRequest(apiRequest, null);
|
||||
//
|
||||
// _diagnosisRepositoryMock.Verify(d => d.InsertOneAsync(It.IsAny<PatientDiagnosis>()), Times.Once);
|
||||
// _diagnosisRepositoryMock.Verify(d => d.UpdateOneAsync(It.IsAny<ObjectId>(),It.IsAny<PatientDiagnosis>()), Times.Never);
|
||||
// }
|
||||
|
||||
// [Test]
|
||||
// public async Task SaveRequest_DiagnosisCodeSettings_Return_Update()
|
||||
// {
|
||||
// var patientObs = new Person
|
||||
// {
|
||||
// FirstName = "Miguel",
|
||||
// LastName = "Villanueva",
|
||||
// Ids = new Dictionary<string, string> { { "MR", "437537" } }
|
||||
// };
|
||||
//
|
||||
// var patient = new Patient
|
||||
// {
|
||||
// Id = ObjectId.GenerateNewId(),
|
||||
// UnitString = "UCI5C",
|
||||
// Bed = "Box4",
|
||||
// PatientNumber = "437537",
|
||||
// Person = patientObs
|
||||
// };
|
||||
//
|
||||
// var apiRequest = new ApiRequest
|
||||
// {
|
||||
// Location = new PatientLocation("UCI5C", "Box4"),
|
||||
// ObservationData= new ObservationData
|
||||
// {
|
||||
// Code = "55607006",
|
||||
// CodingSystem = "SNM",
|
||||
// Value = "Diagnosis",
|
||||
// Time = Now
|
||||
//
|
||||
// },
|
||||
// Observations = new List<PatientObservation>
|
||||
// {
|
||||
// new()
|
||||
// {
|
||||
// Code = "272099008",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "description",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = "Daño axonal difuso"
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "1000000013",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "label",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = "Daño axonal difuso"
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "1000000014",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "code",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = "262693007"
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "394731006",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "state",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = "state"
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "272125009",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "category",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = "category"
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "398201009",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "starTime",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = Now.AddHours(1)
|
||||
// },
|
||||
// new()
|
||||
// {
|
||||
// Code = "397898000",
|
||||
// CodingSystem = "SNM",
|
||||
// Name = "endTime",
|
||||
// Status = ObservationStatus.Ok,
|
||||
// Time = Now,
|
||||
// Value = Now.AddHours(2)
|
||||
// }
|
||||
//
|
||||
// },
|
||||
// Patient = patientObs,
|
||||
// PatientNumber = "437537",
|
||||
// Type = "ORU_R01",
|
||||
// PatientId = patient.Id.ToString(),
|
||||
// MessageTime = Now
|
||||
// };
|
||||
//
|
||||
// var patientDiagnosis = new PatientDiagnosis
|
||||
// {
|
||||
// Id = ObjectId.GenerateNewId(),
|
||||
// Time = Now
|
||||
// };
|
||||
//
|
||||
// _diagnosisService = new DiagnosisService(
|
||||
// _patientServiceLazy,
|
||||
// //sectionServiceLazy,
|
||||
// _optionsApiSettings,
|
||||
// _diagnosisRepositoryMock.Object,
|
||||
// _diagnosisArchiveRepositoryMock.Object,
|
||||
// _logger.Object,
|
||||
// _clientMessageServiceMock.Object,
|
||||
// _subscribersServiceMock.Object,
|
||||
// _calculatedObservationsServiceLazy,
|
||||
// _unitServiceMock.Object);
|
||||
//
|
||||
// _patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
|
||||
// _diagnosisRepositoryMock.Setup(d => d.FindByPatientIdAndCode(patient.Id, "262693007", "Snomed-CT")).ReturnsAsync(patientDiagnosis);
|
||||
//
|
||||
// await _diagnosisService.SaveRequest(apiRequest, null);
|
||||
//
|
||||
// //_diagnosisRepositoryMock.Verify(d => d.InsertOneAsync(It.IsAny<PatientDiagnosis>()), Times.Never);
|
||||
// _diagnosisRepositoryMock.Verify(d => d.UpdateOneAsync(It.IsAny<ObjectId>(), It.IsAny<PatientDiagnosis>()), Times.Once);
|
||||
// }
|
||||
}
|
||||
Reference in New Issue
Block a user