Table of Contents

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

apiSettings IOptions<ApiSettings>
database IMongoDatabase

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

unitId ObjectId

El 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

id ObjectId

El 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

unitId ObjectId

El 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

unitIds List<ObjectId>

La lista de identificadores de unidad a buscar.

opt OptionList

La opción de actualización de la lista maestra.

typeName string

El 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

diagnosis string

El 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

id ObjectId

El 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

location PatientLocation

La 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

nhc string

El 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

origin string

El 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

pocId ObjectId

El 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

unitIds List<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

unitId ObjectId

El 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

admission Admission

La 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

origin Admission

La 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

patientNumber string

El número de paciente (NHC) a buscar.

unitId ObjectId

El 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

admission Admission

La 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

id ObjectId

El identificador único (ObjectId) de la admisión a actualizar.

newLocation ObjectId

El 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

unitIds List<ObjectId>

La lista de identificadores de unidad a buscar.

opt UpdateOptionMasterListDto

La opción de actualización de la lista maestra.

typeName string

El 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

id ObjectId

El identificador único (ObjectId) de la admisión a actualizar.

patient Person

La instancia de Person con los nuevos datos personales.

Returns

Task

Una tarea que representa la operación asincrónica.