Medial Code Documentation
Loading...
Searching...
No Matches
DynAMWrapper.h
1#ifndef __SODYNWRAPPER_H
2#define __SODYNWRAPPER_H
3
4#include <vector>
5#include <assert.h>
6
7class AlgoMarker;
8class AMRequest;
9class AMResponse;
10class AMResponses;
11
12class DynAM {
13public:
14 typedef int(*t_AM_API_Create)(int am_type, AlgoMarker **new_am);
15 typedef int(*t_AM_API_Load)(AlgoMarker * pAlgoMarker, const char *config_fname);
16 typedef int(*t_AM_API_AdditionalLoad)(AlgoMarker * pAlgoMarker, const int load_type, const char *load);
17 typedef int(*t_AM_API_ClearData)(AlgoMarker * pAlgoMarker);
18 typedef int(*t_AM_API_AddData)(AlgoMarker * pAlgoMarker, int patient_id, const char *signalName, int TimeStamps_len, long long* TimeStamps, int Values_len, float* Values);
19 typedef int(*t_AM_API_AddDataStr)(AlgoMarker * pAlgoMarker, int patient_id, const char *signalName, int TimeStamps_len, long long* TimeStamps, int Values_len, char** Values);
20 typedef int(*t_AM_API_AddDataByType)(AlgoMarker * pAlgoMarker, const char *data, char ** messages);
21 typedef int(*t_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);
22 typedef int(*t_AM_API_CreateResponses)(AMResponses **);
23 typedef int(*t_AM_API_Calculate)(AlgoMarker *pAlgoMarker, AMRequest *request, AMResponses *responses);
24 typedef int(*t_AM_API_CalculateByType)(AlgoMarker *pAlgoMarker, int CalcType, char *request, char **responses);
25 typedef int(*t_AM_API_GetSharedMessages)(AMResponses *responses, int *n_msgs, int **msgs_codes, char ***msgs_args);
26 typedef int(*t_AM_API_GetResponsesNum)(AMResponses *responses);
27 typedef int(*t_AM_API_GetResponseIndex)(AMResponses *responses, int _pid, long long _timestamp);
28 typedef int(*t_AM_API_GetResponsesRequestId)(AMResponses *responses, char **requestId);
29 typedef int(*t_AM_API_GetResponseScoreByType)(AMResponses *responses, int res_index, char *_score_type, float *out_score);
30 typedef int(*t_AM_API_GetResponseAtIndex)(AMResponses *responses, int index, AMResponse **response);
31 typedef int(*t_AM_API_GetResponseScoresNum)(AMResponse *response, int *n_scores);
32 typedef int(*t_AM_API_GetResponseScoreByIndex)(AMResponse *response, int score_index, float *score, char **_score_type);
33 typedef int(*t_AM_API_GetResponseExtendedScoreByIndex)(AMResponse *response, int score_index, char **ext_score, char **_score_type);
34 typedef int(*t_AM_API_GetResponseMessages)(AMResponse *response, int *n_msgs, int **msgs_codes, char ***msgs_args);
35 typedef int(*t_AM_API_GetScoreMessages)(AMResponse *response, int score_index, int *n_msgs, int **msgs_codes, char ***msgs_args);
36 typedef int(*t_AM_API_GetResponsePoint)(AMResponse *response, int *pid, long long *timestamp);
37 typedef int(*t_AM_API_GetName)(AlgoMarker * pAlgoMArker, char **name);
38 typedef void(*t_AM_API_DisposeAlgoMarker)(AlgoMarker*);
39 typedef void(*t_AM_API_DisposeResponses)(AMResponses*);
40 typedef void(*t_AM_API_DisposeRequest)(AMRequest*);
41 typedef void(*t_AM_API_Discovery)(AlgoMarker*, char **);
42 typedef void(*t_AM_API_Dispose)(char *);
43 void *addr_AM_API_Create = nullptr;
44 void *addr_AM_API_Load = nullptr;
45 void *addr_AM_API_AdditionalLoad = nullptr;
46 void *addr_AM_API_ClearData = nullptr;
47 void *addr_AM_API_AddData = nullptr;
48 void *addr_AM_API_AddDataStr = nullptr;
49 void *addr_AM_API_AddDataByType = nullptr;
50 void *addr_AM_API_CreateRequest = nullptr;
51 void *addr_AM_API_CreateResponses = nullptr;
52 void *addr_AM_API_Calculate = nullptr;
53 void *addr_AM_API_CalculateByType = nullptr;
54 void *addr_AM_API_GetSharedMessages = nullptr;
55 void *addr_AM_API_GetResponsesNum = nullptr;
56 void *addr_AM_API_GetResponseIndex = nullptr;
57 void *addr_AM_API_GetResponsesRequestId = nullptr;
58 void *addr_AM_API_GetResponseScoreByType = nullptr;
59 void *addr_AM_API_GetResponseAtIndex = nullptr;
60 void *addr_AM_API_GetResponseScoresNum = nullptr;
61 void *addr_AM_API_GetResponseScoreByIndex = nullptr;
62 void *addr_AM_API_GetResponseExtendedScoreByIndex = nullptr;
63 void *addr_AM_API_GetResponseMessages = nullptr;
64 void *addr_AM_API_GetScoreMessages = nullptr;
65 void *addr_AM_API_GetResponsePoint = nullptr;
66 void *addr_AM_API_GetName = nullptr;
67 void *addr_AM_API_DisposeAlgoMarker = nullptr;
68 void *addr_AM_API_DisposeResponses = nullptr;
69 void *addr_AM_API_DisposeRequest = nullptr;
70 void *addr_AM_API_Discovery = nullptr;
71 void *addr_AM_API_Dispose = nullptr;
72 // returns index in sos
73 static int load(const char * am_fname);
74 static DynAM* so;
75 static std::vector<DynAM> sos;
76 static void set_so_id(int id) { assert(id>=0 && id < sos.size()); so = &sos[id]; };
77
78 static int AM_API_ClearData(AlgoMarker * pAlgoMarker);
79 static void AM_API_DisposeAlgoMarker(AlgoMarker * pAlgoMarker);
80 static void AM_API_DisposeRequest(AMRequest *pRequest);
81 static void AM_API_Dispose(char *data);
82 static void AM_API_Discovery(AlgoMarker * pAlgoMarker, char **resp);
83 static void AM_API_DisposeResponses(AMResponses *responses);
84 static int AM_API_GetResponseScoresNum(AMResponse *response, int *n_scores);
85 static int AM_API_GetName(AlgoMarker * pAlgoMArker, char **name);
86 static int AM_API_GetScoreMessages(AMResponse *response, int score_index, int *n_msgs, int **msgs_codes, char ***msgs_args);
87 static int AM_API_GetResponseMessages(AMResponse *response, int *n_msgs, int **msgs_codes, char ***msgs_args);
88 static int AM_API_GetResponseScoreByType(AMResponses *responses, int res_index, char *_score_type, float *out_score);
89 static int AM_API_GetResponseScoreByIndex(AMResponse *response, int score_index, float *score, char **_score_type);
90 static int AM_API_GetResponseExtendedScoreByIndex(AMResponse *response, int score_index, char **ext_score, char **_score_type);
91 static int AM_API_GetResponsePoint(AMResponse *response, int *pid, long long *timestamp);
92 static int AM_API_GetSharedMessages(AMResponses *responses, int *n_msgs, int **msgs_codes, char ***msgs_args);
93 static int AM_API_GetResponsesNum(AMResponses *responses);
94 static int AM_API_GetResponseIndex(AMResponses *responses, int _pid, long long _timestamp);
95 static int AM_API_GetResponseIndex(AMResponses *responses, char **requestId);
96 static int AM_API_GetResponseAtIndex(AMResponses *responses, int index, AMResponse **response);
97 static int AM_API_Create(int am_type, AlgoMarker **new_am);
98 static int AM_API_Load(AlgoMarker * pAlgoMarker, const char *config_fname);
99 static int AM_API_AdditionalLoad(AlgoMarker * pAlgoMarker, const int load_type, const char *load);
100 static int AM_API_AddData(AlgoMarker * pAlgoMarker, int patient_id, const char *signalName, int TimeStamps_len, long long* TimeStamps, int Values_len, float* Values);
101 static int AM_API_AddDataStr(AlgoMarker * pAlgoMarker, int patient_id, const char *signalName, int TimeStamps_len, long long* TimeStamps, int Values_len, char** Values);
102 static int AM_API_AddDataByType(AlgoMarker * pAlgoMarker, const char *data, char ** messages);
103 static 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);
104 static int AM_API_CreateResponses(AMResponses **new_responses);
105 static int AM_API_Calculate(AlgoMarker *pAlgoMarker, AMRequest *request, AMResponses *responses);
106 static int AM_API_CalculateByType(AlgoMarker *pAlgoMarker, int CalcType, char *request, char **responses);
107
108 static bool initialized() { return (sos.size() > 0); }
109};
110
111
112
113void load_am(const char * am_fname);
114
115#endif //__SODYNWRAPPER_H
Definition AlgoMarker.h:233
Definition AlgoMarker.h:136
Definition AlgoMarker.h:184
Definition AlgoMarker.h:272
Definition DynAMWrapper.h:12