26#if defined AM_DLL_IMPORT
27#define DLL_WORK_MODE __declspec(dllimport)
29#define DLL_WORK_MODE __declspec(dllexport)
32#if defined AM_DLL_IMPORT
35#define DLL_WORK_MODE __attribute__ ((visibility ("default")))
41#pragma warning(disable: 4251)
47#ifndef ALGOMARKER_FLAT_API
48#include "AlgoMarkerInternal.h"
50#include "AlgoMarkerErr.h"
54 AM_TYPE_UNDEFINED = 0,
55 AM_TYPE_MEDIAL_INFRA = 1,
56 AM_TYPE_SIMPLE_EXAMPLE_EGFR = 2,
61#define LOAD_DICT_FROM_JSON 1001
62#define LOAD_DICT_FROM_FILE 1002
64#define DATA_JSON_FORMAT 2001
65#define DATA_BATCH_JSON_FORMAT 2002
67#define JSON_REQ_JSON_RESP 3001
69#ifndef ALGOMARKER_FLAT_API
77 long long timestamp = -1;
79 void set(
int _pid,
long long _timestamp) { pid = _pid; timestamp = _timestamp; }
81 void clear() { pid = -1; timestamp = -1; }
84 static int auto_time_convert(
long long ts,
int to_format);
93 vector<string> args_strs;
96 int need_to_update_args = 0;
101 int get_n_msgs() {
return (
int)codes.size(); }
102 void get_messages(
int *n_msgs,
int **msgs_codes,
char ***msgs_args);
105 void insert_message(
int code,
const char *arg_ch);
108 void clear() { codes.clear(); args_strs.clear(); args.clear(); }
116 char *p_score_type = NULL;
117 float score = (float)AM_UNDEFINED_VALUE;
119 string extended_score;
122 void get_score(
float *_score,
char **_score_type) { *_score = score; *_score_type = p_score_type; }
123 void get_extended_score(
char** _ext_score,
char **_score_type) { *_ext_score = &extended_score[0]; *_score_type = p_score_type; }
127 void set_score_type(
char *_score_type) { p_score_type = _score_type; }
128 void set_score(
float _score) { score = _score; }
129 void set_ext_score(
const string& _ext__score) { extended_score = _ext__score; }
132 void clear() { msgs.clear(); p_score_type = NULL; score = (float)AM_UNDEFINED_VALUE; }
141 vector<AMScore> scores;
150 int get_patient_id() {
return point.pid; }
151 long long get_timestamp() {
return point.timestamp; }
152 int get_n_scores() {
return (
int)scores.size(); }
153 AMScore *get_am_score(
int idx) {
if (idx < 0 || idx >= scores.size())
return NULL;
return &scores[idx]; }
154 int get_score(
int idx,
float *_score,
char **_score_type) {
155 if (idx < 0 || idx >= scores.size())
return AM_FAIL_RC;
156 scores[idx].get_score(_score, _score_type);
159 int get_ext_score(
int idx,
char **_ext_score,
char **_score_type) {
160 if (idx < 0 || idx >= scores.size())
return AM_FAIL_RC;
161 scores[idx].get_extended_score(_ext_score, _score_type);
164 AMMessages *get_score_msgs(
int idx) {
if (idx < 0 || idx >= scores.size())
return NULL;
return scores[idx].get_msgs(); }
168 void set_patient_id(
int _patient_id) { point.pid = _patient_id; }
169 void set_timestamp(
long long _timestamp) { point.timestamp = _timestamp; }
170 void set_score(
int idx,
float _score,
char *_score_type,
const string& _ext_score) {
171 if (idx >= 0 && idx < scores.size()) scores[idx].set_score(_score);
172 scores[idx].set_score_type(_score_type);
173 scores[idx].set_ext_score(_ext_score);
175 void init_scores(
int size) { scores.clear(); scores.resize(size); }
178 void clear() { scores.clear(); point.clear(); }
188 string requestId =
"";
193 vector<AMResponse> responses;
194 map<pair<int, long long>,
int> point2response_idx;
197 vector<string> score_types_str;
198 vector<char *> score_types;
199 unordered_map<string, int> stype2idx;
209 int get_n_responses() {
return (
int)responses.size(); }
210 AMResponse *get_response(
int index) {
if (index >= (
int)responses.size())
return NULL;
return &(responses[index]); }
211 int get_response_index_by_point(
int _pid,
long long _timestamp);
212 AMResponse *get_response_by_point(
int _pid,
long long _timestamp);
213 void get_score_types(
int *n_score_types,
char ***_score_types);
214 AMMessages *get_shared_messages() {
return &shared_msgs; }
215 char *get_request_id() {
return (
char *)requestId.c_str(); }
216 char *get_version() {
return (
char *)version.c_str(); }
217 int get_score(
int _pid,
long long _timestamp,
char *_score_type,
float *out_score);
218 int get_score_by_type(
int index,
char *_score_type,
float *out_score);
219 vector<char *> *get_score_type_vec_ptr() {
return &score_types; }
222 void set_request_id(
char *request_id) { requestId = string(request_id); }
223 void set_version(
char *_version) { version = string(_version); }
224 void insert_score_types(
char **_score_type,
int n_score_types);
225 AMResponse *create_point_response(
int _pid,
long long _timestamp);
228 void clear() { requestId =
""; version =
""; responses.clear(); point2response_idx.clear(); score_types_str.clear(); score_types.clear(); stype2idx.clear(); shared_msgs.clear(); }
238 string requestId =
"";
242 vector<string> score_types_str;
245 vector<AMPoint> points;
250 char *get_request_id() {
return (
char *)requestId.c_str(); }
251 int get_n_score_types() {
return (
int)score_types_str.size(); }
252 char *get_score_type(
int index) {
if (index >= get_n_score_types())
return NULL;
return (
char *)score_types_str[index].c_str(); }
253 int get_n_points() {
return (
int)points.size(); }
254 AMPoint *get_point(
int index) {
if (index >= get_n_points())
return NULL;
return &points[index]; }
255 int get_pid(
int index) {
if (index >= get_n_points())
return -1;
return points[index].pid; }
256 long long get_timestamp(
int index) {
if (index >= get_n_points())
return -1;
return points[index].timestamp; }
259 void set_request_id(
char *req_id) { requestId = string(req_id); }
260 void insert_point(
int _pid,
long long _timestamp) {
AMPoint p; p.set(_pid, _timestamp); points.push_back(p); }
261 void insert_score_types(
char **_score_types,
int n_score_types) {
for (
int i = 0; i < n_score_types; i++) score_types_str.push_back(
string(_score_types[i])); }
264 void clear() { requestId =
""; score_types_str.clear(); points.clear(); }
276 string am_udi_di =
"";
277 string am_manfactor_date =
"";
278 string am_version =
"";
279 string config_fname =
"";
280 vector<string> supported_score_types;
288 virtual int Load(
const char *config_f) {
return 0; }
289 virtual int Unload() {
return 0; }
290 virtual int ClearData() {
return 0; }
291 virtual int AddData(
int patient_id,
const char *signalName,
int TimeStamps_len,
long long* TimeStamps,
int Values_len,
float* Values) {
return 0; }
292 virtual int AddDataStr(
int patient_id,
const char *signalName,
int TimeStamps_len,
long long* TimeStamps,
int Values_len,
char** Values) {
return 0; }
296 virtual int AdditionalLoad(
const int LoadType,
const char *load) {
return 0; }
297 virtual int AddDataByType(
const char *data,
char **messages) { *messages = NULL;
return 0; }
298 virtual int CalculateByType(
int CalculateType,
char *request,
char **response) { *response = NULL;
return 0; }
301 virtual int Discovery(
char **response) { *response = NULL;
return 0; }
304 int IsScoreTypeSupported(
const char *_stype);
307 int get_type() {
return (
int)type; }
308 char *get_name() {
return (
char *)name.c_str(); }
309 char *get_config() {
return (
char *)config_fname.c_str(); }
310 int get_time_unit() {
return time_unit; }
311 char *get_am_udi_di() {
return (
char *)am_udi_di.c_str(); }
312 char *get_manfactor_date() {
return (
char *)am_manfactor_date.c_str(); }
313 char *get_am_version() {
return (
char *)am_version.c_str(); }
314 virtual void show_rep_data(
char **response) { *response = NULL; }
317 void set_type(
int _type) { type = (AlgoMarkerType)_type; }
318 void set_name(
const char *_name) { name = string(_name); }
319 void set_config(
const char *_config_f) { config_fname = string(_config_f); }
320 void add_supported_stype(
const char *stype) { supported_score_types.push_back(
string(stype)); }
321 void set_time_unit(
int tu) { time_unit = tu; }
322 void set_am_udi_di(
const char *_am_udi_di) { am_udi_di = string(_am_udi_di); }
323 void set_manafactur_date(
const char *_am_man_date) { am_manfactor_date = string(_am_man_date); }
324 void set_am_version(
const char *_am_version) { am_version = string(_am_version); }
327 static AlgoMarker *make_algomarker(AlgoMarkerType am_type);
344 string type_in_config_file =
"";
345 string rep_fname =
"";
346 string model_fname =
"";
347 string input_tester_config_file =
"";
348 bool allow_rep_adjustments =
false;
350 int read_config(
const string &conf_f);
355 string am_matrix =
"";
356 bool first_write =
true;
358 vector<string> extended_result_fields;
359 bool is_loaded =
false;
361 void get_jsons_locations(
const char *data, vector<size_t> &j_start, vector<size_t> &j_len);
362 int AddJsonData(
int patient_id, json &j_data, vector<string> &messages, map<pair<int, int>, pair<
int, vector<char>>> *data = NULL);
363 int rec_AddDataByType(
int DataType,
const char *data, vector<string> &messages);
364 void clear_patients_data(
const vector<int> &pids);
365 int AddDataStr_data(
int patient_id,
const char *signalName,
int TimeStamps_len,
long long* TimeStamps,
int Values_len,
char** Values,
366 map<pair<int, int>, pair<
int, vector<char>>> *data);
367 int AddData_data(
int patient_id,
const char *signalName,
int TimeStamps_len,
long long* TimeStamps,
int Values_len,
float* Values,
368 map<pair<int, int>, pair<
int, vector<char>>> *data);
372 int Load(
const char *config_f);
375 int AddData(
int patient_id,
const char *signalName,
int TimeStamps_len,
long long* TimeStamps,
int Values_len,
float* Values);
376 int AddDataStr(
int patient_id,
const char *signalName,
int TimeStamps_len,
long long* TimeStamps,
int Values_len,
char** Values);
378 int AdditionalLoad(
const int LoadType,
const char *load);
379 int AddDataByType(
const char *data,
char **messages);
380 int CalculateByType(
int CalculateType,
char *request,
char **response);
381 int Discovery(
char **response);
383 int set_sort(
int s) { sort_needed = s;
return 0; }
384 void set_am_matrix(
string s) { am_matrix = s; }
385 void get_am_rep_signals(unordered_set<string> &am_sigs) { ma.get_rep_signals(am_sigs); }
386 void get_sig_structure(
string &sig,
int &n_time_channels,
int &n_val_channels,
int* &is_categ) { ma.get_signal_structure(sig, n_time_channels, n_val_channels, is_categ); }
388 string get_sig_unit(
const string &sig,
int val_channel) {
return ma.get_rep().sigs.unit_of_measurement(sig, val_channel); }
390 string get_lib_code_version();
392 void show_rep_data(
char **response);
403 float age = -1, gender = -1, creatinine = -1;
411 int Load(
const char *config_f) { ClearData();
return AM_OK_RC; }
412 int Unload() {
return AM_OK_RC; }
413 int ClearData() { age = -1; gender = -1; creatinine = -1;
return AM_OK_RC; }
414 int AddData(
int patient_id,
const char *signalName,
int TimeStamps_len,
long long* TimeStamps,
int Values_len,
float* Values);
430extern "C" DLL_WORK_MODE
int AM_API_Create(
int am_type,
AlgoMarker **new_am);
433extern "C" DLL_WORK_MODE
int AM_API_Load(
AlgoMarker* pAlgoMarker,
const char *config_fname);
436extern "C" DLL_WORK_MODE
int AM_API_AdditionalLoad(
AlgoMarker* pAlgoMarker,
const int load_type,
const char *load);
439extern "C" DLL_WORK_MODE
int AM_API_ClearData(
AlgoMarker* pAlgoMarker);
443extern "C" DLL_WORK_MODE
int AM_API_AddData(
AlgoMarker* pAlgoMarker,
int patient_id,
const char *signalName,
int TimeStamps_len,
long long* TimeStamps,
int Values_len,
float* Values);
444extern "C" DLL_WORK_MODE
int AM_API_AddDataStr(
AlgoMarker* pAlgoMarker,
int patient_id,
const char *signalName,
int TimeStamps_len,
long long* TimeStamps,
int Values_len,
char** Values);
447extern "C" DLL_WORK_MODE
int AM_API_AddDataByType(
AlgoMarker* pAlgoMarker,
const char *data,
char **messages);
451extern "C" DLL_WORK_MODE
int AM_API_CreateRequest(
char *requestId,
char **score_types,
int n_score_types,
int *patient_ids,
long long *time_stamps,
int n_points,
AMRequest **new_req);
454extern "C" DLL_WORK_MODE
int AM_API_CreateResponses(
AMResponses **new_responses);
460extern "C" DLL_WORK_MODE
int AM_API_CalculateByType(
AlgoMarker *pAlgoMarker,
int CalcType,
char *request,
char **responses);
463extern "C" DLL_WORK_MODE
int AM_API_GetResponsesNum(
AMResponses *responses);
466extern "C" DLL_WORK_MODE
int AM_API_GetSharedMessages(
AMResponses *responses,
int *n_msgs,
int **msgs_codes,
char ***msgs_args);
469extern "C" DLL_WORK_MODE
int AM_API_GetResponseIndex(
AMResponses *responses,
int _pid,
long long _timestamp);
472extern "C" DLL_WORK_MODE
int AM_API_GetResponsesRequestId(
AMResponses *responses,
char **requestId);
475extern "C" DLL_WORK_MODE
int AM_API_GetResponseScoreByType(
AMResponses *responses,
int res_index,
char *_score_type,
float *out_score);
478extern "C" DLL_WORK_MODE
int AM_API_GetResponseAtIndex(
AMResponses *responses,
int index,
AMResponse **response);
481extern "C" DLL_WORK_MODE
int AM_API_GetResponseScoresNum(
AMResponse *response,
int *n_scores);
484extern "C" DLL_WORK_MODE
int AM_API_GetResponseScoreByIndex(
AMResponse *response,
int score_index,
float *score,
char **_score_type);
487extern "C" DLL_WORK_MODE
int AM_API_GetResponseExtendedScoreByIndex(
AMResponse *response,
int score_index,
char **ext_score,
char **_score_type);
490extern "C" DLL_WORK_MODE
int AM_API_GetResponseMessages(
AMResponse *response,
int *n_msgs,
int **msgs_codes,
char ***msgs_args);
493extern "C" DLL_WORK_MODE
int AM_API_GetScoreMessages(
AMResponse *response,
int score_index,
int *n_msgs,
int **msgs_codes,
char ***msgs_args);
496extern "C" DLL_WORK_MODE
int AM_API_GetResponsePoint(
AMResponse *response,
int *pid,
long long *timestamp);
499extern "C" DLL_WORK_MODE
int AM_API_GetName(
AlgoMarker *pAlgoMArker,
char **name);
502extern "C" DLL_WORK_MODE
void AM_API_DisposeAlgoMarker(
AlgoMarker *pAlgoMarker);
505extern "C" DLL_WORK_MODE
void AM_API_DisposeRequest(
AMRequest *pRequest);
508extern "C" DLL_WORK_MODE
void AM_API_DisposeResponses(
AMResponses *responses);
510extern "C" DLL_WORK_MODE
void AM_API_Discovery(
AlgoMarker *pAlgoMarker,
char **resp);
513extern "C" DLL_WORK_MODE
void AM_API_Dispose(
char *data);
516extern "C" DLL_WORK_MODE
int AM_API_DebugRepMemory(
AlgoMarker *pAlgoMarker,
char **resp);
521#ifndef ALGOMARKER_FLAT_API
527 vector<string> signals;
537extern "C" DLL_WORK_MODE
int DATA_API_RepositoryHandle_Create(
RepositoryHandle **new_rep,
char *fname,
int *pids,
int n_pids,
char **sigs,
int n_sigs);
540extern "C" DLL_WORK_MODE
int DATA_API_SignalDataHandle_Create(
SignalDataHandle **new_sdh);
546extern "C" DLL_WORK_MODE
int DATA_API_GetTime(
SignalDataHandle *sdh,
int idx,
int time_channel,
int *time);
549extern "C" DLL_WORK_MODE
int DATA_API_GetVal(
SignalDataHandle *sdh,
int idx,
int val_channel,
float *val);
552extern "C" DLL_WORK_MODE
void DATA_API_Dispose_SignalDataHandle(
SignalDataHandle *sdh);
555extern "C" DLL_WORK_MODE
void DATA_API_Dispose_RepositoryHandle(
RepositoryHandle *rep_h);
@ MED_MDL_END
All Done.
Definition MedModel.h:33
Definition AlgoMarker.h:88
Definition AlgoMarker.h:74
Definition AlgoMarker.h:233
Definition AlgoMarker.h:136
Definition AlgoMarker.h:184
Definition AlgoMarker.h:113
Definition AlgoMarker.h:272
Definition AlgoMarkerInternal.h:154
Definition InfraMed.h:303
static const int Date
dates are in full regular format YYYYMMDD
Definition MedTime.h:25
Definition AlgoMarker.h:523
Definition AlgoMarker.h:531
Definition AlgoMarker.h:398