Creado apartir del commit b888de6c92056de294456f581a56e25e734d4ab7 de develop

This commit is contained in:
jrojas
2026-06-26 09:52:35 +02:00
commit 319fd3dfb0
746 changed files with 106610 additions and 0 deletions
@@ -0,0 +1,927 @@
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;
/*
* Tests shift observations
*/
namespace adas_core.Test.Services;
[TestFixture]
public class ObservationServiceTest
{
[SetUp]
public void Setup()
{
//_observationServiceMock = new Mock<IObservationService>();
//var medicineServiceMock = new Mock<IMedicineService>();1
var groupedObservationServiceMock = new Mock<IGroupedObservationService>();
var alarmServiceMock = new Mock<IAlarmService>();
var clientMessageServiceMock = new Mock<IClientMessageService>();
var subscribersServiceMock = new Mock<ISubscribersService>();
var subscriberGroupedServiceMock = new Mock<ISubscriberGroupedService>();
_patientServiceMock = new Mock<IPatientService>();
_configObservationService = new Mock<IConfigObservationService>();
_observationRepository = new Mock<IObservationRepository>();
var observationArchiveRepository = new Mock<IObservationArchiveRepository>();
var calculatedObservationsServiceMock = new Mock<ICalculatedObservationsService>();
var calculatedObservationsServiceLazy =
new Lazy<ICalculatedObservationsService>(() => calculatedObservationsServiceMock.Object);
calculatedObservationsServiceMock.Setup(o => o.Map(It.IsAny<PatientObservation>(), It.IsAny<bool>()))
.ReturnsAsync((PatientObservation obs, bool _) => obs);
_configUnitsService = new Mock<IConfigUnitsService>();
_unitServiceMock = new Mock<IUnitService>();
var diagnosisServiceMock = new Mock<IDiagnosisService>();
_optionsApiSettings = Options.Create(_apiSettings);
Options.Create(_recordingSettings);
_optionsCacheSettings = Options.Create(_cacheSettings);
var balizaService = new Mock<ILightBeaconService>();
var pocService = new Mock<IPointOfCareService>();
var relayService = new Mock<IRelayService>();
var recordingService = new Mock<IRecordingService>();
_logger = new Mock<ILogger<ObservationService>>();
_observationService = new ObservationService(
_patientServiceMock.Object,
//Ipoc.Object,
_configObservationService.Object,
_observationRepository.Object,
observationArchiveRepository.Object,
_configUnitsService.Object,
diagnosisServiceMock.Object,
_optionsApiSettings,
_optionsCacheSettings,
balizaService.Object,
relayService.Object,
recordingService.Object,
_logger.Object,
groupedObservationServiceMock.Object,
alarmServiceMock.Object,
clientMessageServiceMock.Object,
subscribersServiceMock.Object,
subscriberGroupedServiceMock.Object,
calculatedObservationsServiceLazy,
_httpContextAccessor.Object,
_auditService.Object,
pocService.Object,
Mock.Of<ICacheService>()
);
// 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<PatientObservation>(), It.IsAny<bool>()))
.ReturnsAsync((PatientObservation? value, bool _) => value);
var unitId = ObjectId.GenerateNewId();
var unit = new Unit
{
Id = unitId,
Name = "UCI5C",
Title = "CONTROLC",
Configuration = new UnitConfiguration
{
AutoAdt = true
}
};
_unitServiceMock.Setup(u => u.FindByName(unit.Name)).ReturnsAsync(unit);
_unitServiceMock.Setup(u => u.FindById(unit.Id)).ReturnsAsync(unit);
}
private ObservationService _observationService;
//Mock<IObservationService> _observationServiceMock ;
private Mock<IPatientService> _patientServiceMock;
private Mock<IConfigObservationService> _configObservationService;
private Mock<IConfigUnitsService> _configUnitsService;
private Mock<IObservationRepository> _observationRepository;
private Mock<IUnitService> _unitServiceMock;
private readonly Mock<IHttpContextAccessor> _httpContextAccessor = new();
private readonly Mock<ILocalAuditService> _auditService = new();
private readonly ApiSettings _apiSettings = new()
{
ConfigObservation = new ConfigObservationSettings
{
IgnoreUnknownObservation = false
},
Customize = "H12O",
IntravenousLinesCode = ["10546003"],
AllergiesCode = ["473011001"],
DrainageCode = ["56868008"],
IsolationCode = ["302147001"],
PositionCode = ["386053000"]
};
private readonly CacheSettings _cacheSettings = new();
private IOptions<ApiSettings> _optionsApiSettings;
private IOptions<CacheSettings> _optionsCacheSettings;
private readonly RecordingSettings _recordingSettings = new();
private Mock<ILogger<ObservationService>> _logger;
private static readonly DateTime Now = DateTime.Now;
private static readonly ObjectId PatientId = ObjectId.GenerateNewId();
[Test]
public async Task ProcessAllergiesObservation__apiRequest_No_Allergies_Return_Nothing()
{
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 = "473011001",
CodingSystem = "SNM",
Text = "Alergias",
Time = Now,
Value = ""
},
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 ltex?",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "No"
}
],
Patient = patientObs,
PatientNumber = "437537",
Type = "ORU_R01",
PatientId = PatientId.ToString()
};
//PatientObservation expectedObs = new();
_patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
await _observationService.SaveRequest(apiRequest);
_observationRepository.Verify(o => o.InsertOneAsync(It.Is<PatientObservation>(arg =>
arg.Name == "AllergiesObs" &&
arg.PatientId == PatientId
)), Times.Never);
}
[Test]
public async Task ProcessAllergiesObservation_apiRequest_Allergies_Latex_Return_AllergiesObs_Latex()
{
//Falla CalculatedObservationService.Instance = null
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,
UnitId = ObjectId.GenerateNewId(),
PointOfCareId = ObjectId.GenerateNewId()
};
var apiRequest = new ApiRequest
{
Location = new PatientLocation("UCI5C", "Box4"),
ObservationData = new ObservationData
{
Code = "473011001",
CodingSystem = "SNM",
Text = "Alergias",
Time = Now
},
Observations =
[
new PatientObservation
{
Code = "263490005",
CodingSystem = "SNM",
Name = "Estado",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Alergias"
},
new PatientObservation
{
Code = "300916003",
CodingSystem = "SNM",
Name = "Alergia al ltex?",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Si"
}
],
Patient = patientObs,
PatientNumber = "437537",
Type = "ORU_R01",
PatientId = PatientId.ToString()
};
List<PatientAllergiesValue> expectePatientAllergiesValues =
[
new()
{
Type = "Latex",
Value = "Si"
}
];
PatientObservation expectedObs = new()
{
Time = apiRequest.ObservationData.Time.Value,
Code = apiRequest.ObservationData.Code,
CodingSystem = apiRequest.ObservationData.CodingSystem,
PatientId = patient.Id,
ParentData = new ParentDataClass
{
Code = apiRequest.ObservationData.Code,
CodingSystem = apiRequest.ObservationData.CodingSystem,
Name = apiRequest.ObservationData.Text
},
Value = expectePatientAllergiesValues
};
_patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
_configObservationService.Setup(o => o.Map(It.IsAny<PatientObservation>(), false)).ReturnsAsync(expectedObs);
_configUnitsService.Setup(o => o.Map(It.IsAny<PatientObservation>())).ReturnsAsync(expectedObs);
_configObservationService.Setup(o => o.RetentionActions(It.IsAny<PatientObservation>()))
.ReturnsAsync(new ObservatitonRetentionResult());
_unitServiceMock.Setup(o => o.FindById(It.IsAny<ObjectId>())).ReturnsAsync(new Unit
{ Configuration = new UnitConfiguration { AutoAdt = true } });
await _observationService.SaveRequest(apiRequest);
_observationRepository.Verify(o => o.InsertOneAsync(expectedObs));
}
[Test]
public async Task ProcessAllergiesObservation_apiRequest_Allergies_Return_AllergiesObs()
{
//Falla CalculatedObservationService.Instance = null
var patientObs = new Person
{
FirstName = "Miguel",
LastName = "Villanueva",
Ids = new Dictionary<string, string> { { "MR", "437537" } }
};
var patient = new Patient
{
Id = ObjectId.GenerateNewId(),
UnitId = ObjectId.GenerateNewId(),
UnitString = "UCI5C",
Bed = "Box4",
PatientNumber = "437537",
Person = patientObs
};
var apiRequest = new ApiRequest
{
Location = new PatientLocation("UCI5C", "Box4"),
ObservationData = new ObservationData
{
Code = "473011001",
CodingSystem = "SNM",
Text = "Alergias",
Time = Now
},
Observations =
[
new PatientObservation
{
Code = "263490005",
CodingSystem = "SNM",
Name = "Estado",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Alergias"
},
new PatientObservation
{
Code = "419199007",
CodingSystem = "SNM",
Name = "Tipo",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Alergia ambienta"
},
new PatientObservation
{
Code = "277054007",
CodingSystem = "SNM",
Name = "Alergeno",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Estacional"
},
new PatientObservation
{
Code = "281296001",
CodingSystem = "SNM",
Name = "Comentarios",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "epitelio de perro, mezcla de gramneas salvajes,"
},
new PatientObservation
{
Code = "419199007",
CodingSystem = "SNM",
Name = "Tipo",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Alergia a frmacos"
},
new PatientObservation
{
Code = "416098002",
CodingSystem = "SNM",
Name = "Frmacos alrgenos",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "METILPREDNISOLONA"
},
new PatientObservation
{
Code = "281296001",
CodingSystem = "SNM",
Name = "Comentarios",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Tolera dexametasona y actocortina"
},
new PatientObservation
{
Code = "419199007",
CodingSystem = "SNM",
Name = "Tipo",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Alergia a frmacos"
},
new PatientObservation
{
Code = "277054007",
CodingSystem = "SNM",
Name = "Alergeno",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Penicilina/cefalosporinas"
}
],
Patient = patientObs,
PatientNumber = "437537",
Type = "ORU_R01",
PatientId = PatientId.ToString()
};
List<PatientAllergiesValue> expectePatientAllergiesValues =
[
new()
{
Type = "Alergia ambienta",
Value = "Estacional",
Notes = "epitelio de perro, mezcla de gramneas salvajes,"
},
new()
{
Type = "Alergia a frmacos",
Value = "METILPREDNISOLONA",
Notes = "Tolera dexametasona y actocortina"
},
new()
{
Type = "Alergia a frmacos",
Value = "Penicilina/cefalosporinas"
}
];
PatientObservation expectedObs = new()
{
Time = apiRequest.ObservationData.Time.Value,
Code = apiRequest.ObservationData?.Code,
CodingSystem = apiRequest.ObservationData?.CodingSystem,
PatientId = patient.Id,
ParentData = new ParentDataClass
{
Code = apiRequest.ObservationData?.Code,
CodingSystem = apiRequest.ObservationData?.CodingSystem,
Name = apiRequest.ObservationData?.Text
},
Value = expectePatientAllergiesValues
};
_patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
_configObservationService.Setup(o => o.Map(It.IsAny<PatientObservation>(), false)).ReturnsAsync(expectedObs);
_configUnitsService.Setup(o => o.Map(It.IsAny<PatientObservation>())).ReturnsAsync(expectedObs);
_unitServiceMock.Setup(o => o.FindById(It.IsAny<ObjectId>())).ReturnsAsync(new Unit
{ Configuration = new UnitConfiguration { AutoAdt = true } });
// sectionServiceMock.Setup(s => s.FindByPatient(It.Is<ObjectId>(arg => arg == patient.id))).Returns(Task.FromResult<Section>(null));
_configObservationService.Setup(o => o.RetentionActions(It.IsAny<PatientObservation>()))
.ReturnsAsync(new ObservatitonRetentionResult());
await _observationService.SaveRequest(apiRequest);
_observationRepository.Verify(o => o.InsertOneAsync(expectedObs));
}
[Test]
public async Task ProcessDrainagesObservation_apiRequest_Drainages_Return_DrainagesObs()
{
//Falla CalculatedObservationService.Instance = null
var patientObs = new Person
{
FirstName = "Miguel",
LastName = "Villanueva",
Ids = new Dictionary<string, string> { { "MR", "437537" } }
};
var patient = new Patient
{
Id = ObjectId.GenerateNewId(),
UnitId = ObjectId.GenerateNewId(),
UnitString = "UCI5C",
Bed = "Box4",
PatientNumber = "437537",
Person = patientObs
};
var apiRequest = new ApiRequest
{
Location = new PatientLocation("UCI5C", "Box4"),
ObservationData = new ObservationData
{
Code = "56868008",
CodingSystem = "SNM",
Text = "Drenaje: Cabeza",
Time = Now
},
Observations =
[
new PatientObservation
{
Code = "56868008",
CodingSystem = "SNM",
Name = "Volumen",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = 100
},
new PatientObservation
{
Code = "10546003",
CodingSystem = "SNM",
Name = "Localizacin",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Cabeza"
},
new PatientObservation
{
Code = "138875005",
CodingSystem = "SNM",
Name = "Tipo de drenaje",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Drenaje ventricular"
},
new PatientObservation
{
Code = "138875005",
CodingSystem = "SNM",
Name = "Altura columna(cmH2O)",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = 88
}
],
Patient = patientObs,
PatientNumber = "437537",
Type = "ORU_R01",
PatientId = PatientId.ToString()
};
List<PatientDrainagesValue> expectePatientDraingesValues =
[
new()
{
Type = "Drenaje ventricular",
Location = "Cabeza",
Volume = 1001,
Height = 8
}
];
PatientObservation expectedObs = new()
{
Time = apiRequest.ObservationData.Time.Value,
Code = apiRequest.ObservationData.Code,
CodingSystem = apiRequest.ObservationData.CodingSystem,
PatientId = patient.Id,
ParentData = new ParentDataClass
{
Code = apiRequest.ObservationData.Code,
CodingSystem = apiRequest.ObservationData.CodingSystem,
Name = apiRequest.ObservationData.Text
},
Value = expectePatientDraingesValues
};
_patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
_configObservationService
.Setup(o => o.Map(It.Is<PatientObservation>(arg => arg.PatientId == patient.Id), false))
.ReturnsAsync(expectedObs);
_configUnitsService.Setup(o => o.Map(It.Is<PatientObservation>(arg => arg.PatientId == patient.Id)))
.ReturnsAsync(expectedObs);
_configObservationService.Setup(o => o.RetentionActions(It.IsAny<PatientObservation>()))
.ReturnsAsync(new ObservatitonRetentionResult());
_unitServiceMock.Setup(o => o.FindById(It.IsAny<ObjectId>())).ReturnsAsync(new Unit
{ Configuration = new UnitConfiguration { AutoAdt = true } });
await _observationService.SaveRequest(apiRequest);
_observationRepository.Verify(o => o.InsertOneAsync(It.Is<PatientObservation>(arg =>
arg.Value == expectedObs.Value &&
arg.PatientId == expectedObs.PatientId &&
arg.ParentData == expectedObs.ParentData &&
arg.Time == expectedObs.Time &&
arg.Code == expectedObs.Code &&
arg.CodingSystem == expectedObs.CodingSystem
)));
}
[Test]
public async Task ProcessIsolationObservation_Return_IsolationObs()
{
var patientObs = new Person
{
FirstName = "Miguel",
LastName = "Villanueva",
Ids = new Dictionary<string, string> { { "MR", "437537" } }
};
var patient = new Patient
{
Id = ObjectId.GenerateNewId(),
UnitId = 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 = "code",
CodingSystem = "SNM",
Name = "name",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "value"
}
],
Patient = patientObs,
PatientNumber = "437537",
Type = "ORU_R01",
PatientId = PatientId.ToString(),
MessageTime = Now
};
var newObs = new PatientObservation
{
Value = "Aire, Contacto, Preventivo",
Name = "Isolation",
CodingSystem = "ADAS",
PatientId = patient.Id,
MessageTime = Now,
Time = Now
};
_patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
_configObservationService
.Setup(o => o.Map(It.Is<PatientObservation>(arg => arg.PatientId == patient.Id), false))
.ReturnsAsync(newObs);
_configUnitsService.Setup(o => o.Map(It.Is<PatientObservation>(arg => arg.PatientId == patient.Id)))
.ReturnsAsync(newObs);
_configObservationService.Setup(o => o.RetentionActions(It.IsAny<PatientObservation>()))
.ReturnsAsync(new ObservatitonRetentionResult());
_unitServiceMock.Setup(o => o.FindById(It.IsAny<ObjectId>())).ReturnsAsync(new Unit
{ Configuration = new UnitConfiguration { AutoAdt = true } });
await _observationService.SaveRequest(apiRequest);
_observationRepository.Verify(o => o.InsertOneAsync(It.Is<PatientObservation>(arg =>
arg.Value == newObs.Value &&
arg.PatientId == newObs.PatientId &&
arg.Name == newObs.Name &&
arg.Time == newObs.Time &&
arg.MessageTime == newObs.MessageTime &&
arg.CodingSystem == newObs.CodingSystem
)));
}
[Test]
public async Task ProcessPositionObservation_Return_PositionObs()
{
var patientObs = new Person
{
FirstName = "Miguel",
LastName = "Villanueva",
Ids = new Dictionary<string, string> { { "MR", "437537" } }
};
var patient = new Patient
{
Id = ObjectId.GenerateNewId(),
UnitId = ObjectId.GenerateNewId(),
UnitString = "UCI5C",
Bed = "Box4",
PatientNumber = "437537",
Person = patientObs
};
var apiRequest = new ApiRequest
{
Location = new PatientLocation("UCI5C", "Box4"),
ObservationData = new ObservationData
{
Code = "386053000",
CodingSystem = "SNM",
Text = "CAMBIOS POSTURALES",
Value = "Cama Hill-rom",
Time = Now
},
Observations =
[
new PatientObservation
{
Code = "code",
CodingSystem = "SNM",
Name = "name",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Cama Hill-rom"
}
],
Patient = patientObs,
PatientNumber = "437537",
Type = "ORU_R01",
PatientId = PatientId.ToString(),
MessageTime = Now
};
var newObs = new PatientObservation
{
Value = "Cama Hill-rom",
Name = "Patient_Position",
CodingSystem = "ADAS",
PatientId = patient.Id,
MessageTime = Now,
Time = Now
};
_patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
_configObservationService
.Setup(o => o.Map(It.Is<PatientObservation>(arg => arg.PatientId == patient.Id), false))
.ReturnsAsync(newObs);
_configUnitsService.Setup(o => o.Map(It.Is<PatientObservation>(arg => arg.PatientId == patient.Id)))
.ReturnsAsync(newObs);
_configObservationService.Setup(o => o.RetentionActions(It.IsAny<PatientObservation>()))
.ReturnsAsync(new ObservatitonRetentionResult());
_unitServiceMock.Setup(o => o.FindById(It.IsAny<ObjectId>())).ReturnsAsync(new Unit
{ Configuration = new UnitConfiguration { AutoAdt = true } });
await _observationService.SaveRequest(apiRequest);
_observationRepository.Verify(o => o.InsertOneAsync(It.Is<PatientObservation>(arg =>
arg.Value == newObs.Value &&
arg.PatientId == newObs.PatientId &&
arg.Name == newObs.Name &&
arg.Time == newObs.Time &&
arg.MessageTime == newObs.MessageTime &&
arg.CodingSystem == newObs.CodingSystem
)));
}
[Test]
public async Task ProcessIntravenousLinesObservation_Return_PositionObs()
{
var patientObs = new Person
{
FirstName = "Miguel",
LastName = "Villanueva",
Ids = new Dictionary<string, string> { { "MR", "437537" } }
};
var patient = new Patient
{
Id = ObjectId.GenerateNewId(),
UnitId = ObjectId.GenerateNewId(),
UnitString = "UCI5C",
Bed = "Box4",
PatientNumber = "437537",
Person = patientObs
};
var apiRequest = new ApiRequest
{
Location = new PatientLocation("UCI5C", "Box4"),
ObservationData = new ObservationData
{
Code = "10546003",
CodingSystem = "SNM",
Text = "Catter EPICUTNEO PERIFRICO: Zona temporal derecha",
Time = Now
},
Observations =
[
new PatientObservation
{
Code = "439272007",
CodingSystem = "SNM",
Name = "Fecha insercin",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = Now
},
new PatientObservation
{
Code = "228864003",
CodingSystem = "SNM",
Name = "Duracin (das)",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = 7
},
new PatientObservation
{
Code = "273248003",
CodingSystem = "SNM",
Name = "Actuacin",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Insertado"
},
new PatientObservation
{
Code = "10546003",
CodingSystem = "SNM",
Name = "Localizacin",
Status = StatusEnum.Type.Ok,
Time = Now,
Value = "Zona temporal derecha"
}
],
Patient = patientObs,
PatientNumber = "437537",
Type = "ORU_R01",
PatientId = PatientId.ToString(),
MessageTime = Now
};
var obsIntravenousLines = new PatientIntravenousLinesValue
{
Type = "Catter EPICUTNEO PERIFRICO",
Location = "Zona temporal derecha",
Action = "Insertado",
InsertTime = Now,
Duration = "7"
};
var newObs = new PatientObservation
{
Value = obsIntravenousLines,
Code = "10546003",
CodingSystem = "SNM",
PatientId = patient.Id,
MessageTime = Now,
Time = Now
};
_patientServiceMock.Setup(cm => cm.FindPatientByApiRequest(apiRequest)).ReturnsAsync(patient);
_configObservationService
.Setup(o => o.Map(It.Is<PatientObservation>(arg => arg.PatientId == patient.Id), false))
.ReturnsAsync(newObs);
_configUnitsService.Setup(o => o.Map(It.Is<PatientObservation>(arg => arg.PatientId == patient.Id)))
.ReturnsAsync(newObs);
_configObservationService.Setup(o => o.RetentionActions(It.IsAny<PatientObservation>()))
.ReturnsAsync(new ObservatitonRetentionResult());
_unitServiceMock.Setup(o => o.FindById(It.IsAny<ObjectId>())).ReturnsAsync(new Unit
{ Configuration = new UnitConfiguration { AutoAdt = true } });
await _observationService.SaveRequest(apiRequest);
_observationRepository.Verify(o => o.InsertOneAsync(It.Is<PatientObservation>(arg =>
arg.Value == newObs.Value &&
arg.PatientId == newObs.PatientId &&
arg.Code == newObs.Code &&
arg.Time == newObs.Time &&
arg.MessageTime == newObs.MessageTime &&
arg.CodingSystem == newObs.CodingSystem
)));
}
}