Files
adas-core/adas-core.Application/Services/Interfaces/ITreatmentService.cs
T
2026-06-26 10:29:23 +02:00

94 lines
6.3 KiB
C#

using adas_core.Domain.Models;
using adas_core.Domain.Models.Filter;
using adas_core.Domain.Models.MongoModels;
using adas_core.Domain.Models.Responses;
using MongoDB.Bson;
using MongoDB.Driver;
namespace adas_core.Application.Services.Interfaces;
public interface ITreatmentService : IApiRequestService
{
/// <summary>
/// Inserts a new <see cref="PatientTreatment"/> record into the underlying data store.
/// </summary>
/// <param name="treatment">The patient treatment entity to be added.</param>
Task Insert(PatientTreatment treatment);
/// <summary>
/// Asynchronously deletes an entity associated with the specified patient identifier.
/// </summary>
/// <param name="id">The <see cref="ObjectId"/> representing the unique identifier of the patient whose related entity should be removed.</param>
/// <returns>A <see cref="Task{TResult}"/> containing <c>true</c> if the deletion was successful; otherwise, <c>false</c>.</returns>
Task<bool> DeleteByPatientId(ObjectId id);
/// <summary>
/// Asynchronously deletes the entity identified by the specified identifier.
/// </summary>
/// <param name="id">The unique identifier of the entity to delete.</param>
Task DeleteById(ObjectId id);
/// <summary>
/// Archives records associated with the specified patient identifier.
/// </summary>
/// <param name="id">The ObjectId of the patient whose records should be archived.</param>
Task ArchiveByPatientId(ObjectId id);
/// <summary>
/// Archives the specified patient, marking them as archived in the system.
/// </summary>
/// <param name="patient">The patient to archive.</param>
Task Archive(Patient patient);
/// <summary>
/// Updates an existing patient treatment record in the system.
/// </summary>
/// <param name="patientTreatment">The patient treatment entity containing the updated information to be persisted.</param>
/// <returns>A task that represents the asynchronous operation. The task result contains <c>true</c> if the treatment was updated successfully; otherwise, <c>false</c>.</returns>
Task<bool> UpdateTreatment(PatientTreatment patientTreatment);
/// <summary>
/// Updates many records by replacing the specified old ObjectId with the new ObjectId in the field identified by nameId.
/// </summary>
/// <param name="nameId">The name of the field that contains the ObjectId to be updated.</param>
/// <param name="id">The new ObjectId value that will replace the existing one.</param>
/// <param name="oldId">The existing ObjectId value to be replaced.</param>
Task UpdateManyObjectId(string nameId, ObjectId id, ObjectId oldId);
/// <summary>
/// Retrieves all treatments associated with the specified patient identifier.
/// </summary>
/// <param name="id">The unique identifier of the patient whose treatments are to be retrieved.</param>
/// <returns>A task that represents the asynchronous operation, containing a collection of PatientTreatment objects for the specified patient.</returns>
Task<IEnumerable<PatientTreatment>> GetTreatmentsByPatientId(ObjectId id);
/// <summary>
/// Retrieves the active treatment records associated with the specified patient identifier.
/// </summary>
/// <param name="id">The unique identifier of the patient whose active treatments should be retrieved.</param>
/// <returns>A task that represents the asynchronous operation, containing an enumerable collection of active <see cref="PatientTreatment"/> records, which may include null entries.</returns>
Task<IEnumerable<PatientTreatment?>> GetActiveTreatmentsByPatient(ObjectId id);
/// <summary>
/// Asynchronously retrieves a cursor over the <see cref="PatientTreatment"/> records associated with the specified patient identifier.
/// </summary>
/// <param name="patientId">The unique identifier of the patient whose treatments should be returned.</param>
/// <returns>A <see cref="Task{TResult}"/> yielding an <see cref="IAsyncCursor{TDocument}"/> that iterates the matching <see cref="PatientTreatment"/> documents.</returns>
Task<IAsyncCursor<PatientTreatment>> FindByPatientIdAsync(ObjectId patientId);
/// <summary>
/// Asynchronously retrieves all patient treatments associated with the specified patient identifier.
/// </summary>
/// <param name="patientId">The unique identifier of the patient whose treatments are being queried.</param>
/// <returns>A task that represents the asynchronous operation, containing a collection of <see cref="PatientTreatment"/> instances for the specified patient.</returns>
Task<IEnumerable<PatientTreatment>> FindByPatientId(ObjectId patientId);
/// <summary>
/// Retrieves the list of bolus treatments associated with the specified patient.
/// </summary>
/// <param name="patientId">The unique identifier of the patient whose bolus treatments are being retrieved.</param>
/// <returns>A task that represents the asynchronous operation, containing a list of <see cref="PatientTreatment"/> records representing the patient's bolus treatments.</returns>
Task<List<PatientTreatment>> GetBolusTreatments(ObjectId patientId);
/// <summary>
/// Retrieves a paginated list of patient treatments based on the specified filter criteria.
/// </summary>
/// <param name="filter">The pagination filter used to control the page number, page size, and other query options.</param>
/// <returns>A task that represents the asynchronous operation, containing the paginated patient treatment results.</returns>
Task<PaginationResponse<PatientTreatment>> GetPaginatedTreatments(PaginationFilter filter);
/// <summary>
/// Retrieves the list of active treatments associated with the specified patient, sorted according to the provided order parameter.
/// </summary>
/// <param name="patientId">The unique identifier of the patient whose active treatments are being queried.</param>
/// <param name="order">A string defining the ordering criteria applied to the returned treatments.</param>
/// <returns>A task that represents the asynchronous operation, containing a list of active <see cref="PatientTreatment"/> entries for the patient.</returns>
Task<List<PatientTreatment>> GetActiveTreatmentsByPatientIdAndOrder(ObjectId patientId, string order);
}