23#include <kcenon/common/patterns/result.h>
31#ifdef PACS_WITH_DATABASE_SYSTEM
47class mpps_repository :
public base_repository<mpps_record, int64_t> {
74 [[nodiscard]] auto
create_mpps(std::string_view mpps_uid,
75 std::string_view station_ae = "",
76 std::string_view modality = "",
77 std::string_view study_uid = "",
78 std::string_view accession_no = "",
79 std::string_view start_datetime = "")
102 [[nodiscard]] auto
update_mpps(std::string_view mpps_uid,
103 std::string_view new_status,
104 std::string_view end_datetime = "",
105 std::string_view performed_series = "")
113 [[nodiscard]] auto
update_mpps(const mpps_record& record) -> VoidResult;
120 [[nodiscard]] auto
find_mpps(std::string_view mpps_uid)
121 -> std::optional<mpps_record>;
129 -> std::optional<mpps_record>;
137 ->
Result<std::vector<mpps_record>>;
145 ->
Result<std::vector<mpps_record>>;
152 [[nodiscard]] auto
search_mpps(const mpps_query& query)
153 ->
Result<std::vector<mpps_record>>;
160 [[nodiscard]] auto
delete_mpps(std::string_view mpps_uid) -> VoidResult;
176 [[nodiscard]] auto map_row_to_entity(const database_row& row) const
177 -> mpps_record override;
178 [[nodiscard]] auto entity_to_row(const mpps_record& entity) const
179 -> std::map<std::
string, database_value> override;
180 [[nodiscard]] auto get_pk(const mpps_record& entity) const
182 [[nodiscard]] auto has_pk(const mpps_record& entity) const
184 [[nodiscard]] auto select_columns() const -> std::vector<std::
string> override;
188 -> std::chrono::system_clock::time_point;
189 [[nodiscard]] auto format_timestamp(
190 std::chrono::system_clock::time_point tp) const -> std::
string;
204using VoidResult = kcenon::common::VoidResult;
227 [[nodiscard]] auto
create_mpps(std::string_view mpps_uid,
228 std::string_view station_ae = "",
229 std::string_view modality = "",
230 std::string_view study_uid = "",
231 std::string_view accession_no = "",
232 std::string_view start_datetime = "")
237 [[nodiscard]] auto
update_mpps(std::string_view mpps_uid,
238 std::string_view new_status,
239 std::string_view end_datetime = "",
240 std::string_view performed_series = "")
245 [[nodiscard]] auto
find_mpps(std::string_view mpps_uid) const
260 [[nodiscard]] auto
delete_mpps(std::string_view mpps_uid) -> VoidResult;
264 [[nodiscard]] auto
mpps_count(std::string_view status) const
270 -> std::chrono::system_clock::time_point;
Generic base repository for CRUD operations.
Legacy direct-SQLite fallback when database_system is disabled.
static auto parse_timestamp(const std::string &str) -> std::chrono::system_clock::time_point
auto find_mpps(std::string_view mpps_uid) const -> std::optional< mpps_record >
Look up an MPPS record by MPPS SOP Instance UID.
auto operator=(const mpps_repository &) -> mpps_repository &=delete
auto parse_mpps_row(void *stmt) const -> mpps_record
auto find_mpps_by_pk(int64_t pk) const -> std::optional< mpps_record >
Look up an MPPS record by database primary key.
auto update_mpps(std::string_view mpps_uid, std::string_view new_status, std::string_view end_datetime="", std::string_view performed_series="") -> VoidResult
Apply an MPPS status transition (N-SET)
auto create_mpps(std::string_view mpps_uid, std::string_view station_ae="", std::string_view modality="", std::string_view study_uid="", std::string_view accession_no="", std::string_view start_datetime="") -> Result< int64_t >
Create a new MPPS record in IN_PROGRESS state (inline fields)
auto search_mpps(const mpps_query &query) const -> Result< std::vector< mpps_record > >
Search MPPS records using a structured query.
mpps_repository(const mpps_repository &)=delete
auto mpps_count() const -> Result< size_t >
Total number of MPPS records currently stored.
auto delete_mpps(std::string_view mpps_uid) -> VoidResult
Delete an MPPS record by MPPS SOP Instance UID.
mpps_repository(sqlite3 *db)
Construct repository bound to a raw sqlite3 handle.
auto find_mpps_by_study(std::string_view study_uid) const -> Result< std::vector< mpps_record > >
Find all MPPS records referencing a Study Instance UID.
auto list_active_mpps(std::string_view station_ae) const -> Result< std::vector< mpps_record > >
List non-terminal MPPS records for a station AE.
MPPS (Modality Performed Procedure Step) record data structures.
kcenon::common::Result< T > Result
Result type alias for operations returning a value.
Query parameters for MPPS search.
MPPS record from the database.