1#ifndef __REP_CREATE_REGISTRY_H__
2#define __REP_CREATE_REGISTRY_H__
15 REP_REGISTRY_PROTEINURIA,
26 REG_EVENT_DM_DIAGNOSES
37 RegistryEvent(
int _time,
int _type,
float _val,
int _severity) { time = _time; event_type = _type; event_val = _val; event_severity = _severity; }
47 vector<vector<string>> categories;
48 vector<vector<int>> categories_i;
49 vector<pair<float, float>> ranges;
63 bool ht_systolic_first =
false;
71 bool ht_identifiers_given =
false, chf_identifiers_given =
false, mi_identifiers_given =
false, af_identifiers_given =
false;
73 vector<string>
ht_drugs = {
"ATC_C08C____",
"ATC_C07B____",
"ATC_C07C____",
"ATC_C07D____",
"ATC_C07F____",
"ATC_C07A_G__",
"ATC_C09B____",
"ATC_C09D____",
"ATC_C02D_A01" };
75 vector<string>
ht_dm_drugs = {
"ATC_C09A____",
"ATC_C09C____" };
82 if (custom_registry != NULL) {
83 delete custom_registry;
84 custom_registry = NULL;
89 string dm_drug_sig =
"Drug";
90 vector<string> dm_drug_sets = {
"ATC_A10_____" };
91 string dm_diagnoses_sig =
"RC";
92 vector<string> dm_diagnoses_sets;
93 string dm_glucose_sig =
"Glucose";
94 string dm_hba1c_sig =
"HbA1C";
95 int dm_diagnoses_severity = 4;
102 vector<string> urine_tests_categories = {
103 "Urine_Microalbumin:1:0,30:30,300:300,1000000",
104 "UrineTotalProtein:1:0,0.15:0.15,0.60:0.60,1000000",
105 "UrineAlbumin:1:0,30:30,300:300,1000000",
106 "Urine_dipstick_for_protein:0:Urine_dipstick_for_protein_normal:Urine_dipstick_for_protein_medium:Urine_dipstick_for_protein_severe",
107 "Urinalysis_Protein:0:Urinalysis_Protein_normal:Urinalysis_Protein_medium:Urinalysis_Protein_severe",
108 "Urine_Protein_Creatinine:1:0,15:15,100:100,1000000",
109 "UrineAlbumin_over_Creatinine:1:0,3.5:3.5,27:27,1000000" };
113 string ckd_egfr_sig =
"eGFR_CKD_EPI";
114 string ckd_proteinuria_sig =
"Proteinuria_State";
117 string registry_custom_type =
"";
118 string registry_custom_args =
"";
121 int init(map<string, string>& mapper);
124 void post_deserialization();
136 int _apply(
PidDynamicRec& rec, vector<int>& time_points, vector<vector<float>>& attributes_mat);
144 ADD_SERIALIZATION_FUNCS(
processor_type,
registry,
names,
signals,
time_unit,
req_signals,
aff_signals,
virtual_signals, virtual_signals_generic,
registry_values,
147 dm_drug_sig, dm_drug_sets, dm_diagnoses_sig, dm_diagnoses_sets, dm_glucose_sig, dm_hba1c_sig, dm_diagnoses_severity,
148 urine_tests_categories,
149 ckd_egfr_sig, ckd_proteinuria_sig, registry_custom_type, registry_custom_args, custom_registry, ht_systolic_first)
154 vector<int> create_custom_input_sigs;
155 string registry_name;
157 int num_ht_measurements = 0;
160 const map<string, RegistryTypes>
name2type = { {
"dm" , REP_REGISTRY_DM },{
"ht", REP_REGISTRY_HT },{
"proteinuria", REP_REGISTRY_PROTEINURIA },{
"ckd", REP_REGISTRY_CKD },{
"custom", REP_REGISTRY_CUSTOM } };
163 const map<RegistryTypes, vector<pair<string, string>>> type2Virtuals = { { REP_REGISTRY_DM,{ {
"DM_Registry",
"T(l,l),V(f)" } } },
164 { REP_REGISTRY_HT,{ {
"HT_Registry",
"T(l,l),V(f)" } } },
165 { REP_REGISTRY_PROTEINURIA,{ {
"Proteinuria_State",
"T(i),V(f)" } } } ,
166 { REP_REGISTRY_CKD,{ {
"CKD_Registry",
"T(i),V(f)" } } },
167 { REP_REGISTRY_CUSTOM,{ {
"CUSTOM_Registry",
"T(l,l),V(f)" } } } };
170 const map<RegistryTypes, vector<string>> type2reqSigs = { { REP_REGISTRY_DM,{
"Glucose",
"HbA1C",
"Drug",
"RC" } },
171 { REP_REGISTRY_HT,{
"BP",
"RC",
"Drug",
"BDATE",
"DM_Registry" } },
172 { REP_REGISTRY_PROTEINURIA ,{
"Urine_Microalbumin",
"UrineTotalProtein" ,
"UrineAlbumin" ,
"Urine_dipstick_for_protein" ,
"Urinalysis_Protein" ,
"Urine_Protein_Creatinine" ,
"UrineAlbumin_over_Creatinine" } },
173 { REP_REGISTRY_CKD,{
"Proteinuria_State",
"eGFR_CKD_EPI" } } };
180 int dm_drug_idx = -1;
181 int dm_diagnoses_idx = -1;
182 vector<char> dm_drug_lut;
183 vector<char> dm_diagnoses_lut;
184 int dm_glucose_idx = -1;
185 int dm_hba1c_idx = -1;
189 vector<string> dm_reg_values = {
"DM_Registry_Non_diabetic",
"DM_Registry_Pre_diabetic",
"DM_Registry_Diabetic" };
193 vector<string> proteinuria_reg_values = {
"Proteinuria_Normal",
"Proteinuria_Medium" ,
"Proteinuria_Severe" };
194 vector<RegistryDecisionRanges> proteinuria_ranges;
197 vector<string> ckd_reg_values = {
"CKD_State_Normal" ,
"CKD_State_Level_1",
"CKD_State_Level_2",
"CKD_State_Level_3",
"CKD_State_Level_4" };
198 int ckd_egfr_idx = -1;
199 int ckd_proteinuria_idx = -1;
207 void ht_registry_apply(
PidDynamicRec& rec, vector<int>& time_points,
int iver, vector<UniversalSigVec>& usvs, vector<vector<float>>& all_v_vals, vector<vector<int>>& all_v_times, vector<int>& final_sizes);
208 void ht_init_defaults();
209 void fillLookupTableForHTDrugs(
MedDictionary& dict, vector<char>& lut, vector<string>& sets,
char val);
210 void buildLookupTableForHTDrugs(
MedDictionary& dict, vector<char>& lut);
212 vector<string> ht_def_values = {
"HT_Registry_Non_Hypertensive",
"HT_Registry_Hypertensive" };
213 int bp_idx = 0, rc_idx = 1, drug_idx = 2, bdate_idx = 3, dm_registry_idx = 4;
214 vector<char> htLut, chfLut, miLut, afLut;
215 vector<char> htDrugLut;
219 void dm_registry_apply(
PidDynamicRec& rec, vector<int>& time_points,
int iver, vector<UniversalSigVec>& usvs, vector<vector<float>>& all_v_vals, vector<vector<int>>& all_v_times, vector<int>& final_sizes);
223 void proteinuria_registry_apply(
PidDynamicRec& rec, vector<int>& time_points,
int iver, vector<UniversalSigVec>& usvs, vector<vector<float>>& all_v_vals, vector<vector<int>>& all_v_times, vector<int>& final_sizes);
227 void ckd_registry_apply(
PidDynamicRec& rec, vector<int>& time_points,
int iver, vector<UniversalSigVec>& usvs, vector<vector<float>>& all_v_vals, vector<vector<int>>& all_v_times, vector<int>& final_sizes);
229 void custom_registry_apply(
PidDynamicRec& rec, vector<int>& time_points,
int iver,
230 const vector<UniversalSigVec>& usvs, vector<vector<float>>& all_v_vals, vector<vector<int>>& all_v_times, vector<int>& final_sizes);
registry methods over MedRegistry Object
RepProcessor is the parent class for processing a MedRepository or PidDynamicRec Basic functionalitie...
@ REP_PROCESS_CREATE_REGISTRY
"create_registry" creates a registry signal (TimeRange to values). creates RepCreateRegistry
Definition RepProcess.h:37
#define ADD_SERIALIZATION_FUNCS(...)
Definition SerializableObject.h:122
#define MEDSERIALIZE_SUPPORT(Type)
Definition SerializableObject.h:108
Definition MedDictionary.h:87
Definition MedDictionary.h:17
Definition MedPidRepository.h:87
A class that holds all registry records on all patients.
Definition MedRegistry.h:30
MedSamples represent a collection of samples per different id The data is conatined in a vector of ...
Definition MedSamples.h:129
Definition MedSignals.h:719
Definition MedPidRepository.h:127
Definition RepCreateRegistry.h:41
Definition RepCreateRegistry.h:29
Definition RepCreateRegistry.h:52
const map< string, RegistryTypes > name2type
registry name to type
Definition RepCreateRegistry.h:160
vector< string > names
name(s) of registry signal(s) to create
Definition RepCreateRegistry.h:56
int ht_drugs_gap
Gap (in days) from drug input to following indication.
Definition RepCreateRegistry.h:78
vector< string > registry_values
values of registry (to appear in relevant section of dictionary)
Definition RepCreateRegistry.h:59
void get_required_signal_categories(unordered_map< string, vector< string > > &signal_categories_in_use) const
returns for each used signal it's used categories
Definition RepCreateRegistry.cpp:219
RegistryTypes registry
type of registry to create
Definition RepCreateRegistry.h:55
int _apply(PidDynamicRec &rec, vector< int > &time_points, vector< vector< float > > &attributes_mat)
apply processing on a single PidDynamicRec at a set of time-points : Should be implemented for all in...
Definition RepCreateRegistry.cpp:281
vector< string > af_identifiers
identifiers (ReadCodes) of AF
Definition RepCreateRegistry.h:70
vector< int > sig_ids
ids of signals used as input by the calculator (for faster usage at run time: save name conversions)
Definition RepCreateRegistry.h:176
vector< string > ht_drugs
drugs indicative of HT
Definition RepCreateRegistry.h:73
vector< string > ht_identifiers
identifiers (ReadCodes) of HT
Definition RepCreateRegistry.h:67
vector< string > ht_dm_drugs
drugs indicative of HT, unless DM
Definition RepCreateRegistry.h:75
vector< string > chf_identifiers
identifiers (ReadCodes) of CHF
Definition RepCreateRegistry.h:68
void init_lists()
Required/Affected signals.
Definition RepCreateRegistry.cpp:137
vector< string > signals
Vector of required signals, to override default ones.
Definition RepCreateRegistry.h:58
vector< int > signal_time_units
time-units of all signals
Definition RepCreateRegistry.h:202
vector< string > ht_chf_drugs
drugs indicative of HT, unless CHF
Definition RepCreateRegistry.h:74
int _learn(MedPidRepository &rep, MedSamples &samples, vector< RepProcessor * > &prev_processors)
In this class there's never learning - we return 0 immediately.
Definition RepCreateRegistry.h:132
bool verbose
verbosity
Definition RepCreateRegistry.h:62
vector< string > ht_extra_drugs
drugs indicative of HT, unless CHF/MI/AF.
Definition RepCreateRegistry.h:76
int init(map< string, string > &mapper)
Init from map.
Definition RepCreateRegistry.cpp:16
vector< int > virtual_ids
ids of signals created by the calculator (for faster usage at run time: save name conversions)
Definition RepCreateRegistry.h:177
vector< string > mi_identifiers
identifiers (ReadCodes) of MI
Definition RepCreateRegistry.h:69
int time_unit
time-unit of registry
Definition RepCreateRegistry.h:60
void init_tables(MedDictionarySections &dict, MedSignals &sigs)
Init required tables : Should be implemented for inheriting classes that have such tables.
Definition RepCreateRegistry.cpp:158
Definition RepProcess.h:53
unordered_set< string > aff_signals
names of signals affected by processing
Definition RepProcess.h:61
unordered_set< string > req_signals
names of signals required for processsing
Definition RepProcess.h:58
RepProcessorTypes processor_type
type of repository processor
Definition RepProcess.h:56
vector< pair< string, int > > virtual_signals
virtual signals are created only in rep processors but can be used by any rep processor that comes af...
Definition RepProcess.h:77