22#include <kcenon/common/patterns/result.h>
30#ifdef PACS_WITH_DATABASE_SYSTEM
47class study_repository :
public base_repository<study_record, int64_t> {
65 std::string_view study_uid,
66 std::string_view study_id = "",
67 std::string_view study_date = "",
68 std::string_view study_time = "",
69 std::string_view accession_number = "",
70 std::string_view referring_physician = "",
71 std::string_view study_description = "")
77 [[nodiscard]] auto
upsert_study(const study_record& record)
83 [[nodiscard]] auto
find_study(std::string_view study_uid)
84 -> std::optional<study_record>;
90 -> std::optional<study_record>;
99 ->
Result<std::vector<study_record>>;
104 [[nodiscard]] auto
delete_study(std::string_view study_uid) -> VoidResult;
131 [[nodiscard]] auto map_row_to_entity(const database_row& row) const
132 -> study_record override;
134 [[nodiscard]] auto entity_to_row(const study_record& entity) const
135 -> std::map<std::
string, database_value> override;
137 [[nodiscard]] auto get_pk(const study_record& entity) const
140 [[nodiscard]] auto has_pk(const study_record& entity) const
143 [[nodiscard]] auto select_columns() const
144 -> std::vector<std::
string> override;
150 [[nodiscard]] auto parse_timestamp(const std::
string& str) const
151 -> std::chrono::system_clock::time_point;
153 [[nodiscard]] auto format_timestamp(
154 std::chrono::system_clock::time_point tp) const -> std::
string;
168using VoidResult = kcenon::common::VoidResult;
184 std::string_view study_uid,
185 std::string_view study_id = "",
186 std::string_view study_date = "",
187 std::string_view study_time = "",
188 std::string_view accession_number = "",
189 std::string_view referring_physician = "",
190 std::string_view study_description = "")
194 [[nodiscard]] auto
find_study(std::string_view study_uid) const
200 [[nodiscard]] auto
delete_study(std::string_view study_uid) -> VoidResult;
Generic base repository for CRUD operations.
Repository for study metadata persistence (legacy SQLite interface)
auto find_study_by_pk(int64_t pk) const -> std::optional< study_record >
study_repository(sqlite3 *db)
auto study_count_for_patient(int64_t patient_pk) const -> Result< size_t >
auto delete_study(std::string_view study_uid) -> VoidResult
auto find_study(std::string_view study_uid) const -> std::optional< study_record >
auto upsert_study(int64_t patient_pk, std::string_view study_uid, std::string_view study_id="", std::string_view study_date="", std::string_view study_time="", std::string_view accession_number="", std::string_view referring_physician="", std::string_view study_description="") -> Result< int64_t >
auto parse_study_row(void *stmt) const -> study_record
auto update_modalities_in_study(int64_t study_pk) -> VoidResult
study_repository(const study_repository &)=delete
auto operator=(const study_repository &) -> study_repository &=delete
auto search_studies(const study_query &query) const -> Result< std::vector< study_record > >
study_repository(study_repository &&) noexcept
static auto to_like_pattern(std::string_view pattern) -> std::string
auto study_count() const -> Result< size_t >
kcenon::common::Result< T > Result
Result type alias for operations returning a value.
Study record from the database.
Study record data structures for database operations.