3#ifndef __MED_REGISTRY_H__
4#define __MED_REGISTRY_H__
7#include <InfraMed/InfraMed/MedPidRepository.h>
8#include <MedProcessTools/MedProcessTools/MedSamples.h>
14#include "MedRegistryRecord.h"
48 void create_registry(
MedPidRepository &dataManager, medial::repository::fix_method method = medial::repository::fix_method::none, vector<RepProcessor *> *rep_processors = NULL);
64 void get_pids(vector<int> &pids)
const;
87 const string &repository_path,
MedModel &model_with_rep_processor, medial::repository::fix_method method = medial::repository::fix_method::none);
100 virtual bool get_pid_records(
PidRec &rec,
int bDateCode,
const vector<int> &used_sigs, vector<MedRegistryRecord> &results);
114 virtual void get_registry_records(
int pid,
int bdate, vector<UniversalSigVec_mem> &usv, vector<MedRegistryRecord> &results) {
throw logic_error(
"Not Implemented"); };
124 namespace contingency_tables {
126 double calc_chi_square_dist(
const map<
float, vector<int>> &gender_sorted,
int smooth_balls = 0,
127 float allowed_error = 0,
int minimal_balls = 0);
130 double calc_mcnemar_square_dist(
const map<
float, vector<int>> &gender_sorted);
133 double calc_cmh_square_dist(
const map<
float, vector<int>> *gender_sorted,
const map<
float, vector<int>> *gender_sorted2,
bool &ok);
136 void calc_chi_scores(
const map<
float, map<
float, vector<int>>> &male_stats,
137 const map<
float, map<
float, vector<int>>> &female_stats,
138 vector<int> &all_signal_values, vector<int> &signal_indexes,
139 vector<double> &valCnts, vector<double> &posCnts,
140 vector<double> &lift, vector<double> &scores,
141 vector<double> &p_values, vector<double> &pos_ratio,
int smooth_balls = 0,
float allowed_error = 0,
142 int minimal_balls = 0);
145 void calc_mcnemar_scores(
const map<
float, map<
float, vector<int>>> &male_stats,
146 const map<
float, map<
float, vector<int>>> &female_stats,
147 vector<int> &all_signal_values, vector<int> &signal_indexes,
148 vector<double> &valCnts, vector<double> &posCnts, vector<double> &lift
149 , vector<double> &scores, vector<double> &p_values, vector<double> &pos_ratio);
152 void calc_cmh_scores(
const map<
float, map<
float, vector<int>>> &male_stats,
153 const map<
float, map<
float, vector<int>>> &female_stats,
154 vector<int> &all_signal_values, vector<int> &signal_indexes,
155 vector<double> &valCnts, vector<double> &posCnts, vector<double> &lift
156 , vector<double> &scores, vector<double> &p_values, vector<double> &pos_ratio);
159 void FilterRange(vector<int> &indexes,
const vector<double> &vecCnts
160 ,
double min_val,
double max_val);
166 void filterHirarchy(
const map<
int, vector<int>> &member2Sets,
const map<
int, vector<int>> &set2Members,
167 vector<int> &indexes,
const vector<int> &signal_values,
const vector<double> &pVals,
168 const vector<double> &valCnts,
const vector<double> &lifts,
const unordered_map<int, double> &code_unfiltered_cnts,
169 float pValue_diff,
float lift_th,
float count_similarity,
float child_fitlered_ratio,
const map<
int, vector<string>> *categoryId_to_name = NULL);
172 double chisqr(
int Dof,
double Cv);
174 void write_stats(
const string &file_path,
175 const map<
float, map<
float, vector<int>>> &males_stats,
const map<
float, map<
float, vector<int>>> &females_stats);
177 void read_stats(
const string &file_path,
178 map<
float, map<
float, vector<int>>> &males_stats, map<
float, map<
float, vector<int>>> &females_stats);
180 void FilterFDR(vector<int> &indexes,
181 const vector<double> &scores,
const vector<double> &p_vals,
const vector<double> &lift,
189 void print_reg_stats(
const vector<MedRegistryRecord> ®Records,
const string &log_file =
"");
196 void complete_active_period_as_controls(vector<MedRegistryRecord> ®istry,
197 const vector<MedRegistryRecord> &active_periods_registry,
bool unite_full_controls =
true);
226 virtual bool get_outcome(
const UniversalSigVec &s,
int current_i,
float &result) = 0;
240 vector<RegistrySignal *> &result);
244 int init(map<string, string>& mapper);
247 virtual void _init(
const map<string, string>& mapper) {};
265 RegistrySignalSet(
const string &sigName,
int durr_time,
int buffer_time,
bool take_first,
266 MedRepository &rep,
const vector<string> &sets,
const string &path_to_cfg_file,
float outcome_val = 1,
int chan = 0);
267 RegistrySignalSet(
const string &init_string,
MedRepository &rep,
const vector<string> &sets,
const string &path_to_cfg_file,
float outcome_val = 1);
268 bool get_outcome(
const UniversalSigVec &s,
int current_i,
float &result);
272 void _init(
const map<string, string>& mapper);
279 string base_cfg_path;
291 RegistrySignalRange(
const string &sigName,
int durr_time,
int buffer_time,
bool take_first,
292 float min_range,
float max_range,
float outcome_val = 1,
int chan = 0);
293 bool get_outcome(
const UniversalSigVec &s,
int current_i,
float &result);
297 void _init(
const map<string, string>& mapper);
309 bool get_outcome(
const UniversalSigVec &s,
int current_i,
float &result);
324 void _init(
const map<string, string>& mapper);
329 bool get_outcome(
const UniversalSigVec &s,
int current_i,
float &result);
332 vector<pair<float, float>> Flags_range;
348 void _init(
const map<string, string>& mapper);
350 bool get_outcome(
const UniversalSigVec &s,
int current_i,
float &result);
396 const vector<RegistrySignal *> signal_conditions,
const string &skip_pid_file =
"",
397 const unordered_map<int, int> *pid_to_censor_dates = NULL);
408 int init(map<string, string>& map);
418 vector<bool> SkipPids;
421 void get_registry_records(
int pid,
int bdate, vector<UniversalSigVec_mem> &usv, vector<MedRegistryRecord> &results);
439 int init(map<string, string>& map);
459 unordered_map<int, int> pid_to_max_allowed;
461 void get_registry_records(
int pid,
int bdate, vector<UniversalSigVec_mem> &usv, vector<MedRegistryRecord> &results);
488 int init(map<string, string>& map);
494 unordered_map<int, int> pid_to_max_allowed;
496 void get_registry_records(
int pid,
int bdate, vector<UniversalSigVec_mem> &usv, vector<MedRegistryRecord> &results);
registry methods over MedRegistry Object
Labeling methods over MedRegistry Object.
Sampling methods over MedRegistry Object.
RepProcessor is the parent class for processing a MedRepository or PidDynamicRec Basic functionalitie...
An Abstract class that can be serialized and written/read from file.
#define ADD_SERIALIZATION_FUNCS(...)
Definition SerializableObject.h:122
#define MEDSERIALIZE_SUPPORT(Type)
Definition SerializableObject.h:108
A model = repCleaner + featureGenerator + featureProcessor + MedPredictor.
Definition MedModel.h:56
Definition MedPidRepository.h:87
A Regsitry creator to create categoriezed outcome by signal rules.
Definition MedRegistry.h:429
void clear_create_variables()
clears the signals_rules
Definition MedRegistry.cpp:1888
vector< vector< RegistrySignal * > > signals_rules
the signal rules vectors, first index is signal id, second is list of rules
Definition MedRegistry.h:435
int max_repo_date
the maximal date for the repository
Definition MedRegistry.h:433
int end_buffer_duration
the duration buffer from last date
Definition MedRegistry.h:432
int start_buffer_duration
the duration buffer form start
Definition MedRegistry.h:431
ADD_SERIALIZATION_FUNCS(time_unit, registry_records, start_buffer_duration, end_buffer_duration, max_repo_date) private void get_registry_records(int pid, int bdate, vector< UniversalSigVec_mem > &usv, vector< MedRegistryRecord > &results)
< max date allowed to each pid constrain
Definition MedRegistry.cpp:1685
int init(map< string, string > &map)
Initialize class parameters - it also needs repository_path parameter which called "rep".
Definition MedRegistry.cpp:1602
A Class which creates registry based on readcode lists.
Definition MedRegistry.h:361
int start_buffer_duration
the duration buffer form start
Definition MedRegistry.h:363
vector< RegistrySignal * > signal_filters
the signal filters
Definition MedRegistry.h:369
int end_buffer_duration
the duration buffer from last date
Definition MedRegistry.h:364
bool seperate_cases
If true will seperate each "case" time zone.
Definition MedRegistry.h:367
void clear_create_variables()
clears the signal_filters
Definition MedRegistry.cpp:1897
ADD_SERIALIZATION_FUNCS(time_unit, registry_records, start_buffer_duration, end_buffer_duration, max_repo_date, allow_prediciton_in_case, seperate_cases) private unordered_map< int, int > pid_to_max_allowed
< black list of patients mask
Definition MedRegistry.h:414
bool init_called
a flag to mark that init was called
Definition MedRegistry.h:422
void init(MedRepository &rep, int start_dur, int end_durr, int max_repo, const vector< RegistrySignal * > signal_conditions, const string &skip_pid_file="", const unordered_map< int, int > *pid_to_censor_dates=NULL)
The init function in code API.
Definition MedRegistry.cpp:391
int max_repo_date
the maximal date for the repository
Definition MedRegistry.h:365
bool allow_prediciton_in_case
If True will allow to give prediciton after\in case time range.
Definition MedRegistry.h:366
Keep Alive registry - use for censoring "dead" times.
Definition MedRegistry.h:467
int start_buffer_duration
the buffer duration from first signal
Definition MedRegistry.h:471
ADD_SERIALIZATION_FUNCS(time_unit, registry_records, duration, max_repo_date, start_buffer_duration, secondry_start_buffer_duration, end_buffer_duration, signal_list) private void get_registry_records(int pid, int bdate, vector< UniversalSigVec_mem > &usv, vector< MedRegistryRecord > &results)
< max date allowed to each pid constrain
Definition MedRegistry.cpp:1958
int duration
the duration buffer form start
Definition MedRegistry.h:469
int end_buffer_duration
the buffer duration from last signal
Definition MedRegistry.h:473
int max_repo_date
the maximal date for the repository
Definition MedRegistry.h:470
int init(map< string, string > &map)
Definition MedRegistry.cpp:1903
vector< string > signal_list
list of signals to fetch for keep alive time ranges
Definition MedRegistry.h:474
int secondry_start_buffer_duration
the buffer duration for new region (after not active) - can be negative to look backward
Definition MedRegistry.h:472
A class that holds all registry records on all patients.
Definition MedRegistry.h:30
medial::repository::fix_method resolve_conlicts
resolve conflicts in registry method
Definition MedRegistry.h:111
void get_registry_creation_codes(vector< string > &signal_codes) const
returns the signal codes used to create the registry - to load from rep
Definition MedRegistry.cpp:201
virtual void clear_create_variables()
A function to clear creation variables that are on memory if needed.
Definition MedRegistry.h:98
void write_text_file(const string &file_path) const
Writes the file to text file in tab delimeted format: PID, Start_Date, End_Date, min_allowed_date,...
Definition MedRegistry.cpp:80
void create_registry(MedPidRepository &dataManager, medial::repository::fix_method method=medial::repository::fix_method::none, vector< RepProcessor * > *rep_processors=NULL)
Creates vector of registry using already initialized MedPidRepository with signals in parallel manner...
Definition MedRegistry.cpp:100
MedRegistry()
Default Ctor.
Definition MedRegistry.h:90
static MedRegistry * create_registry_full(const string ®istry_type, const string &init_str, const string &repository_path, MedModel &model_with_rep_processor, medial::repository::fix_method method=medial::repository::fix_method::none)
Creates vector of registry records - handles everything for you in parallel manner for each patient -...
Definition MedRegistry.cpp:1578
void * new_polymorphic(string dname)
for polymorphic classes that want to be able to serialize/deserialize a pointer * to the derived clas...
Definition MedRegistry.cpp:227
void set_rep_for_init(MedRepository &rep)
Sets Repository object to initialize all registry object, if not given will try to use repository pat...
Definition MedRegistry.h:104
MedRepository * rep_for_init
repository pointer to init dicts
Definition MedRegistry.h:112
void get_pids(vector< int > &pids) const
returns all patients ids from registry - unique patient ids
Definition MedRegistry.cpp:219
int time_unit
The time unit.
Definition MedRegistry.h:33
bool need_bdate
If true Bdate is also used in registry creation.
Definition MedRegistry.h:110
vector< MedRegistryRecord > registry_records
the registry records vector
Definition MedRegistry.h:32
void read_text_file(const string &file_path)
Reads the file in text format in tab delimeted.
Definition MedRegistry.cpp:39
void get_registry_use_codes(vector< string > &signal_codes) const
returns the signal codes used to create the registry - to use in create_registry command as input
Definition MedRegistry.cpp:206
static MedRegistry * make_registry(const string ®istry_type, const string &init_str="")
creates registry type and initialize it if init_str is not empty Use "binary" for MedRegistryCodesLis...
Definition MedRegistry.cpp:1532
vector< string > signalCodes_names
the signals codes by name
Definition MedRegistry.h:109
void merge_records()
Merges registry record with same registry values (and continues in time)
Definition MedRegistry.cpp:1561
Definition InfraMed.h:303
Definition MedPidRepository.h:43
A Registry Signal class wrapper for AND condition on multiple Registry signal channels.
Definition MedRegistry.h:341
void _init(const map< string, string > &mapper)
The parsed fields from init command.
Definition MedRegistry.cpp:575
bool get_outcome(const UniversalSigVec &s, int current_i, float &result)
a function that retrive current outcome based on new time point
Definition MedRegistry.cpp:554
vector< RegistrySignal * > conditions
the list of conditions to calc AND on them
Definition MedRegistry.h:343
A Class that conditions nothing, just exising of the signal.
Definition MedRegistry.h:307
A Registry operator to handle drugs with condition on drug type and dosage range.
Definition MedRegistry.h:318
bool get_outcome(const UniversalSigVec &s, int current_i, float &result)
a function that retrive current outcome based on new time point
Definition MedRegistry.cpp:541
bool is_empty()
Checks if has flags inside or it's empty one.
Definition MedRegistry.h:327
void _init(const map< string, string > &mapper)
The parsed fields from init command.
Definition MedRegistry.cpp:464
A Class that condition a value range.
Definition MedRegistry.h:286
bool get_outcome(const UniversalSigVec &s, int current_i, float &result)
a function that retrive current outcome based on new time point
Definition MedRegistry.cpp:431
void _init(const map< string, string > &mapper)
The parsed fields from init command.
Definition MedRegistry.cpp:438
float max_value
the maximal value to turn control into case. smaller than or equal
Definition MedRegistry.h:289
float min_value
the minimal value to turn control into case. greater than or equal
Definition MedRegistry.h:288
A Class that condition a set of codes in dictionary.
Definition MedRegistry.h:261
void _init(const map< string, string > &mapper)
The parsed fields from init command.
Definition MedRegistry.cpp:329
bool get_outcome(const UniversalSigVec &s, int current_i, float &result)
a function that retrive current outcome based on new time point
Definition MedRegistry.cpp:292
bool is_empty()
Checks if has flags inside or it's empty one.
Definition MedRegistry.h:275
A abstract class that represents a signal used to create registry and it's filter conditions to chang...
Definition MedRegistry.h:206
int duration_flag
the duration for each positive to merge time ranges
Definition MedRegistry.h:209
void * new_polymorphic(string dname)
for polymorphic classes that want to be able to serialize/deserialize a pointer * to the derived clas...
Definition MedRegistry.cpp:237
int buffer_duration
a buffer duration between positive to negative
Definition MedRegistry.h:210
static void parse_registry_rules(const string ®_cfg, MedRepository &rep, vector< RegistrySignal * > &result)
parsing of registry signal rules - each line is new signal rule in this format: Each line is TAB sepe...
Definition MedRegistry.cpp:1434
string signalName
the signal name
Definition MedRegistry.h:208
RegistrySignal()
Default init ctor for object, that won't contain garbage when not initialized specifically.
Definition MedRegistry.h:216
virtual void _init(const map< string, string > &mapper)
Each specific init function for pther arguments - called from init.
Definition MedRegistry.h:247
int init(map< string, string > &mapper)
The parsed fields from init command.
Definition MedRegistry.cpp:303
int channel
the channel number the rule operates on
Definition MedRegistry.h:212
static RegistrySignal * make_registry_signal(const string &type, MedRepository &rep, const string &path_to_cfg_file)
creates Registry rule.
Definition MedRegistry.cpp:1407
virtual bool get_outcome(const UniversalSigVec &s, int current_i, float &result)=0
a function that retrive current outcome based on new time point
bool take_only_first
if True will take only first occournce
Definition MedRegistry.h:211
float outcome_value
the outcome value when condition holds
Definition MedRegistry.h:213
Definition SerializableObject.h:32