Class AdmissionRepository
- Namespace
- adas_core.Infrastructure.Repositories
- Assembly
- adas-core.Infrastructure.dll
Repositorio para gestionar las operaciones de la entidad Admission en MongoDB. Proporciona métodos para insertar, actualizar, eliminar y buscar admisiones, así como para manejar opciones de listas maestras relacionadas con las admisiones. Utiliza Serilog para el registro de errores y eventos importantes durante las operaciones de la base de datos.
public class AdmissionRepository : MongoRepository<Admission>, IAdmissionRepository, IMongoRepository<Admission>
- Inheritance
-
AdmissionRepository
- Implements
- Inherited Members
- Extension Methods
Constructors
AdmissionRepository(IOptions<ApiSettings>, IMongoDatabase)
public AdmissionRepository(IOptions<ApiSettings> apiSettings, IMongoDatabase database)
Parameters
apiSettingsIOptions<ApiSettings>databaseIMongoDatabase
Methods
CountByUnitId(ObjectId)
Cuenta el número de admisiones en la base de datos que coinciden con un identificador de unidad (unitId) específico. El método construye un filtro para encontrar admisiones que coincidan con el unitId especificado y luego utiliza el método CountDocumentsAsync para obtener el conteo.
public Task<long> CountByUnitId(ObjectId unitId)
Parameters
unitIdObjectIdEl identificador de la unidad a buscar.
Returns
- Task<long>
Una tarea que representa la operación asincrónica y devuelve el número de admisiones que coinciden con el unitId especificado.
CreateIndexes()
Crea índices en la colección de admisiones para mejorar el rendimiento de las consultas. En este caso, se crea un índice único en el campo "nhc" (número de paciente) que solo se aplica a los documentos que tienen un valor para "nhc".
public override Task CreateIndexes()
Returns
- Task
Una tarea que representa la operación asincrónica.
Delete(ObjectId)
Elimina una admisión de la base de datos utilizando su identificador único (ObjectId). El método construye un filtro para encontrar la admisión por su Id y luego utiliza el método DeleteOneAsync para eliminarla. Si ocurre una excepción durante el proceso, se registra un error con Serilog y se vuelve a lanzar la excepción para que pueda ser manejada por el llamador.
public Task Delete(ObjectId id)
Parameters
idObjectIdEl identificador único (ObjectId) de la admisión a eliminar.
Returns
- Task
Una tarea que representa la operación asincrónica.
DeleteAdmissionsByUnitId(ObjectId)
Elimina todas las admisiones de la base de datos que coinciden con un identificador de unidad (unitId) específico. El método construye un filtro para encontrar admisiones que coincidan con el unitId especificado y luego utiliza el método DeleteManyAsync para eliminarlas.
public Task<bool> DeleteAdmissionsByUnitId(ObjectId unitId)
Parameters
unitIdObjectIdEl identificador de la unidad cuyas admisiones se eliminarán.
Returns
- Task<bool>
Una tarea que representa la operación asincrónica y devuelve un valor booleano que indica si la eliminación fue exitosa.
DeleteMasterListOption(List<ObjectId>, OptionList, string)
Elimina las opciones de la lista maestra en las admisiones que coinciden con los identificadores de unidad especificados. El método recibe una lista de identificadores de unidad, una opción de actualización de la lista maestra y el nombre del tipo de lista maestra.
public Task<IEnumerable<Admission>> DeleteMasterListOption(List<ObjectId> unitIds, OptionList opt, string typeName)
Parameters
unitIdsList<ObjectId>La lista de identificadores de unidad a buscar.
optOptionListLa opción de actualización de la lista maestra.
typeNamestringEl nombre del tipo de lista maestra.
Returns
- Task<IEnumerable<Admission>>
Una tarea que representa la operación asincrónica y devuelve una lista de admisiones actualizadas.
FindAll()
Recupera todas las admisiones almacenadas en la base de datos. El método utiliza el método FindAsync con un filtro vacío para obtener todas las admisiones y luego convierte el resultado a una lista. Si ocurre una excepción durante el proceso, se registra un error con Serilog y se devuelve una lista vacía.
public Task<IEnumerable<Admission>> FindAll()
Returns
- Task<IEnumerable<Admission>>
Una lista de todas las admisiones almacenadas en la base de datos.
FindByDiagnosis(string)
Busca admisiones en la base de datos utilizando el diagnóstico de la admisión (Diagnosis). El método construye un filtro para encontrar admisiones que tengan un diagnóstico que coincida con el nombre del diagnóstico especificado y luego utiliza el método FindAsync para obtenerlas.
public Task<IEnumerable<Admission>?> FindByDiagnosis(string diagnosis)
Parameters
diagnosisstringEl nombre del diagnóstico que se utilizará para buscar admisiones.
Returns
- Task<IEnumerable<Admission>>
Una tarea que representa la operación asincrónica y devuelve una colección de admisiones que coinciden con el diagnóstico especificado.
FindById(ObjectId)
Busca una admisión en la base de datos utilizando su identificador único (ObjectId). El método construye un filtro para encontrar la admisión por su Id y luego utiliza el método FindAsync para obtenerla.
public Task<Admission?> FindById(ObjectId id)
Parameters
idObjectIdEl identificador único (ObjectId) de la admisión a buscar.
Returns
- Task<Admission>
Una tarea que representa la operación asincrónica y devuelve la admisión encontrada o null si no se encuentra ninguna.
FindByLocation(PatientLocation)
Busca admisiones en la base de datos utilizando la ubicación del paciente (PatientLocation). El método construye un filtro para encontrar admisiones que coincidan con la unidad, cama y habitación especificadas en la ubicación del paciente.
public Task<List<Admission>> FindByLocation(PatientLocation location)
Parameters
locationPatientLocationLa ubicación del paciente (PatientLocation) a buscar.
Returns
- Task<List<Admission>>
Una tarea que representa la operación asincrónica y devuelve una lista de admisiones que coinciden con la ubicación especificada.
FindByNhc(string)
Busca una admisión en la base de datos utilizando el número de paciente (NHC). El método construye un filtro para encontrar la admisión por su NHC y luego utiliza el método FindAsync para obtenerla.
public Task<Admission?> FindByNhc(string nhc)
Parameters
nhcstringEl número de paciente (NHC) a buscar.
Returns
- Task<Admission>
Una tarea que representa la operación asincrónica y devuelve la admisión encontrada o null si no se encuentra ninguna.
FindByOrigin(string)
Busca admisiones en la base de datos utilizando el origen de la admisión (Origin). El método construye un filtro para encontrar admisiones que tengan un origen que coincida con el nombre del origen especificado.
public Task<IEnumerable<Admission>?> FindByOrigin(string origin)
Parameters
originstringEl nombre del origen de la admisión a buscar.
Returns
- Task<IEnumerable<Admission>>
Una tarea que representa la operación asincrónica y devuelve una lista de admisiones que coinciden con el origen especificado.
FindByPointOfCareId(ObjectId)
Busca admisiones en la base de datos utilizando el identificador de punto de atención (PointOfCareId). El método construye un filtro para encontrar admisiones que coincidan con el PointOfCareId especificado y luego utiliza el método FindAsync para obtenerlas.
public Task<List<Admission>> FindByPointOfCareId(ObjectId pocId)
Parameters
pocIdObjectIdEl identificador del punto de atención a buscar.
Returns
- Task<List<Admission>>
Una tarea que representa la operación asincrónica y devuelve una lista de admisiones que coinciden con el PointOfCareId especificado.
FindByUnitIds(List<ObjectId>)
Busca admisiones en la base de datos utilizando una lista de identificadores de unidad (unitIds). El método construye un filtro para encontrar admisiones que tengan un unitId que coincida con cualquiera de los unitIds especificados y luego utiliza el método FindAsync para obtenerlas.
public Task<List<Admission>> FindByUnitIds(List<ObjectId> unitIds)
Parameters
unitIdsList<ObjectId>La lista de identificadores de unidad a buscar.
Returns
- Task<List<Admission>>
Una tarea que representa la operación asincrónica y devuelve una lista de admisiones que coinciden con los unitIds especificados.
GetAdmissionByUnitIdWithOutPoC(ObjectId)
Busca admisiones en la base de datos utilizando el identificador de unidad (unitId) y que no tengan un PointOfCareId asignado. El método construye un filtro para encontrar admisiones que coincidan con el unitId especificado y que tengan un PointOfCareId nulo.
public Task<List<Admission>> GetAdmissionByUnitIdWithOutPoC(ObjectId unitId)
Parameters
unitIdObjectIdEl identificador de la unidad a buscar.
Returns
- Task<List<Admission>>
Una tarea que representa la operación asincrónica y devuelve una lista de admisiones que coinciden con los criterios especificados.
GetCollectionName()
Sobrescribe el método GetCollectionName para devolver el nombre de la colección de admisiones en MongoDB, que se obtiene de la configuración de la aplicación a través de ApiSettings. Esto permite que el repositorio se conecte a la colección correcta para realizar las operaciones de base de datos relacionadas con las admisiones.
public override string GetCollectionName()
Returns
- string
El nombre de la colección de admisiones en MongoDB.
InsertOneAsync(Admission)
Sobrescribe el método InsertOneAsync para insertar una nueva admisión en la base de datos. Antes de insertar, establece la fecha de admisión (AdmissionDate) a la fecha y hora actual en formato UTC.
public override Task InsertOneAsync(Admission admission)
Parameters
admissionAdmissionLa admisión a insertar en la base de datos.
Returns
- Task
Una tarea que representa la operación asincrónica.
InsertOneAsyncAndReturn(Admission)
Inserta una nueva admisión en la base de datos y devuelve la admisión insertada. El método establece la fecha de admisión (AdmissionDate) a la fecha y hora actual en formato UTC antes de insertar la admisión.
public Task<Admission?> InsertOneAsyncAndReturn(Admission origin)
Parameters
originAdmissionLa admisión a insertar.
Returns
- Task<Admission>
Una tarea que representa la operación asincrónica y devuelve la admisión insertada o null si ocurre un error.
SearchByPatientNumberAndDistinctUnit(string, ObjectId)
Busca una admisión en la base de datos utilizando el número de paciente (patientNumber) y un identificador de unidad (unitId) distinto. El método construye un filtro para encontrar una admisión que coincida con el número de paciente pero que tenga un unitId diferente al proporcionado.
public Task<Admission?> SearchByPatientNumberAndDistinctUnit(string patientNumber, ObjectId unitId)
Parameters
patientNumberstringEl número de paciente (NHC) a buscar.
unitIdObjectIdEl identificador de unidad (ObjectId) que debe ser distinto al de la admisión encontrada.
Returns
- Task<Admission>
Una tarea que representa la operación asincrónica y devuelve la admisión encontrada o null si no se encuentra ninguna.
Update(Admission)
Actualiza una admisión existente en la base de datos. El método recibe una instancia de Admission con los datos actualizados, construye un filtro para encontrar la admisión por su Id y luego utiliza el método UpdateOneAsync para aplicar los cambios.
public Task Update(Admission admission)
Parameters
admissionAdmissionLa admisión con los datos actualizados.
Returns
- Task
Una tarea que representa la operación asincrónica.
UpdateLocation(ObjectId, ObjectId)
Actualiza la ubicación de una admisión existente en la base de datos. El método recibe el identificador único (ObjectId) de la admisión a actualizar y el nuevo identificador de la ubicación (PointOfCareId). Construye un filtro para encontrar la admisión por su Id y luego utiliza el método UpdateOneAsync para establecer el nuevo PointOfCareId.
public Task UpdateLocation(ObjectId id, ObjectId newLocation)
Parameters
idObjectIdEl identificador único (ObjectId) de la admisión a actualizar.
newLocationObjectIdEl nuevo identificador de la ubicación (PointOfCareId) de la admisión.
Returns
- Task
Una tarea que representa la operación asincrónica.
UpdateMasterListOption(List<ObjectId>, UpdateOptionMasterListDto, string)
Actualiza las opciones de la lista maestra en las admisiones que coinciden con los identificadores de unidad especificados.
public Task<IEnumerable<Admission>> UpdateMasterListOption(List<ObjectId> unitIds, UpdateOptionMasterListDto opt, string typeName)
Parameters
unitIdsList<ObjectId>La lista de identificadores de unidad a buscar.
optUpdateOptionMasterListDtoLa opción de actualización de la lista maestra.
typeNamestringEl nombre del tipo de lista maestra.
Returns
- Task<IEnumerable<Admission>>
Una tarea que representa la operación asincrónica y devuelve una lista de admisiones actualizadas.
UpdatePatient(ObjectId, Person)
Actualiza los datos personales de una admisión existente en la base de datos. El método recibe el identificador único (ObjectId) de la admisión a actualizar y una instancia de Person con los nuevos datos personales.
public Task UpdatePatient(ObjectId id, Person patient)
Parameters
idObjectIdEl identificador único (ObjectId) de la admisión a actualizar.
patientPersonLa instancia de Person con los nuevos datos personales.
Returns
- Task
Una tarea que representa la operación asincrónica.