Class AppointmentRepository
- Namespace
- adas_core.Infrastructure.Repositories
- Assembly
- adas-core.Infrastructure.dll
Repository for managing patient appointments in a MongoDB database. This class provides methods to perform CRUD operations and queries related to patient appointments, such as retrieving appointments by patient ID, finding appointments by point of care, and updating or deleting appointments. It utilizes the MongoDB driver for database interactions and is configured using application settings for collection names and other parameters.
public class AppointmentRepository : MongoRepository<PatientAppointment>, IAppointmentRepository, IMongoRepository<PatientAppointment>
- Inheritance
-
AppointmentRepository
- Implements
- Inherited Members
- Extension Methods
Constructors
AppointmentRepository(IOptions<ApiSettings>, IMongoDatabase)
Initializes a new instance of the AppointmentRepository class with the specified API settings and MongoDB database.
public AppointmentRepository(IOptions<ApiSettings> apiSettings, IMongoDatabase database)
Parameters
apiSettingsIOptions<ApiSettings>The API settings containing configuration for the repository.
databaseIMongoDatabaseThe MongoDB database instance.
Exceptions
- ArgumentNullException
Thrown when any of the input parameters are null.
Methods
CreateIndexes()
Creates indexes for the patient appointments collection in MongoDB. This method defines a list of indexes to be created, including an index on the patient ID field, and then calls the EnsureIndexes method from the MongoUtils class to ensure that the specified indexes are created in the database. The indexes are created in the background and are not unique.
public override Task CreateIndexes()
Returns
- Task
A task representing the asynchronous operation.
DeleteAsync(ObjectId)
Deletes a patient appointment from the MongoDB collection based on the appointment's ID. This method constructs a filter to identify the document to be deleted using the appointment's ID and then calls the DeleteOneAsync method to remove the document from the database.
public Task DeleteAsync(ObjectId id)
Parameters
idObjectIdThe ID of the patient appointment to be deleted.
Returns
- Task
A task representing the asynchronous operation.
DeleteByPatientId(ObjectId)
Deletes all patient appointments associated with a specific patient ID. This method constructs a filter to identify all documents in the MongoDB collection that match the specified patient ID and then calls the DeleteManyAsync method to remove all matching documents from the database.
public Task DeleteByPatientId(ObjectId patientId)
Parameters
patientIdObjectIdThe ID of the patient whose appointments are to be deleted.
Returns
- Task
A task representing the asynchronous operation.
FindByLocation(PatientLocation)
Finds patient appointments based on a given patient location. This method constructs a filter to query the MongoDB collection for appointments that match the specified patient location, which includes details such as bed, room, and unit name. It uses the Builders class to create a filter that checks for the existence of the Locations field and matches the specified location details within the ResourceGroups of the appointments.
public Task<List<PatientAppointment>> FindByLocation(PatientLocation location)
Parameters
locationPatientLocationThe location details to filter patient appointments by.
Returns
- Task<List<PatientAppointment>>
A list of patient appointments that match the specified location.
FindByPatientAndReason(ObjectId, string?)
Finds a patient appointment based on the patient ID and appointment reason. This method constructs a filter to query the MongoDB collection for an appointment that matches both the specified patient ID and appointment reason, and returns the first matching appointment if found, or null if no match is found.
public Task<PatientAppointment?> FindByPatientAndReason(ObjectId patientId, string? appointmentReason)
Parameters
patientIdObjectIdThe ID of the patient whose appointment is to be retrieved.
appointmentReasonstringThe reason for the appointment to be retrieved.
Returns
- Task<PatientAppointment>
The first matching patient appointment if found, or null if no match is found.
FindByPatientAndVisitNumber(ObjectId, string)
Finds a patient appointment based on the patient ID and visit number. This method constructs a filter to query the MongoDB collection for an appointment that matches both the specified patient ID and visit number, and returns the first matching appointment if found, or null if no match is found.
public Task<PatientAppointment?> FindByPatientAndVisitNumber(ObjectId patientId, string visitNumber)
Parameters
patientIdObjectIdThe ID of the patient whose appointment is to be retrieved.
visitNumberstringThe visit number of the appointment to be retrieved.
Returns
- Task<PatientAppointment>
The first matching patient appointment if found, or null if no match is found.
FindByPatientIdAsync(ObjectId)
Finds patient appointments based on the patient ID. This method constructs a filter to query the MongoDB collection for appointments that match the specified patient ID and returns an asynchronous cursor to iterate through the results.
public Task<IAsyncCursor<PatientAppointment>> FindByPatientIdAsync(ObjectId patientId)
Parameters
patientIdObjectIdThe ID of the patient whose appointments are to be retrieved.
Returns
- Task<IAsyncCursor<PatientAppointment>>
An asynchronous cursor to iterate through the patient appointments.
FindByPoC(PointOfCare)
Finds patient appointments based on a given point of care (PoC). This method constructs a filter to query the MongoDB collection for appointments that match the specified point of care, which includes details such as bed, room, and unit name. It utilizes the FindByLocation method to perform the actual query based on the constructed patient location.
public Task<List<PatientAppointment>> FindByPoC(PointOfCare poc)
Parameters
pocPointOfCareThe point of care details to filter appointments.
Returns
- Task<List<PatientAppointment>>
A list of patient appointments that match the specified point of care.
GetByPatient(ObjectId)
Retrieves a list of patient appointments for a given patient ID. This method constructs a filter to query the MongoDB collection based on the patient ID and sorts the results by creation time in descending order.
public Task<List<PatientAppointment>> GetByPatient(ObjectId patientId)
Parameters
patientIdObjectIdThe ID of the patient whose appointments are to be retrieved.
Returns
- Task<List<PatientAppointment>>
A list of patient appointments for the specified patient ID.
GetCollectionName()
Gets the name of the MongoDB collection for patient appointments. This method retrieves the collection name from the API settings, allowing for flexible configuration. If the collection name is not specified in the settings, it defaults to "patients_appointments".
public override string GetCollectionName()
Returns
- string
The name of the MongoDB collection for patient appointments.
InsertOneAsync(PatientAppointment)
Inserts a new patient appointment into the MongoDB collection. This method ensures that the creation time of the appointment is set to the current UTC time if it is not already specified before inserting the appointment into the database using the base class's InsertOneAsync method.
public override Task InsertOneAsync(PatientAppointment appointment)
Parameters
appointmentPatientAppointmentThe patient appointment to be inserted.
Returns
- Task
A task representing the asynchronous operation.
Update(PatientAppointment)
Updates an existing patient appointment in the MongoDB collection. This method takes a patient appointment object as input and updates the corresponding document in the database based on the appointment's ID. It uses the UpdateOneAsync method from the base class to perform the update operation.
public Task Update(PatientAppointment appointment)
Parameters
appointmentPatientAppointmentThe patient appointment to be updated.
Returns
- Task
A task representing the asynchronous operation.
UpdateManyObjectId(string, ObjectId, ObjectId)
Updates the ObjectId references in patient appointments when a patient's ID changes. This method constructs a filter to identify all documents in the MongoDB collection that match the specified old patient ID and then updates those documents to reference the new patient ID using the UpdateManyAsync method.
public Task UpdateManyObjectId(string nameId, ObjectId id, ObjectId oldId)
Parameters
nameIdstringThe name ID associated with the patient appointments to be updated.
idObjectIdThe new ObjectId to replace the old patient ID.
oldIdObjectIdThe old ObjectId of the patient whose appointments are to be updated.
Returns
- Task
A task representing the asynchronous operation.