Search in sources :

Example 1 with Match

use of org.eyeseetea.malariacare.data.database.model.Match in project pictureapp by EyeSeeTea.

the class PopulateDB method populateDB.

public static void populateDB(Context context) throws IOException {
    //Reset inner references
    cleanInnerLists();
    for (String table : tables2populate) {
        Log.i(TAG, "Loading csv: " + table);
        CSVReader reader = new CSVReader(new InputStreamReader(context.openFileInput(table)), SEPARATOR, QUOTECHAR);
        String[] line;
        while ((line = reader.readNext()) != null) {
            switch(table) {
                case PROGRAMS_CSV:
                    Program program = new Program();
                    program.setUid(line[1]);
                    program.setName(line[2]);
                    program.setStageUid(line[3]);
                    program.save();
                    programList.put(Integer.valueOf(line[0]), program);
                    break;
                case TABS_CSV:
                    Tab tab = new Tab();
                    tab.setName(line[1]);
                    tab.setOrder_pos(Integer.valueOf(line[2]));
                    tab.setProgram(programList.get(Integer.valueOf(line[3])));
                    tab.setType(Integer.valueOf(line[4]));
                    tab.save();
                    tabList.put(Integer.valueOf(line[0]), tab);
                    break;
                case HEADERS_CSV:
                    Header header = new Header();
                    header.setShort_name(line[1]);
                    header.setName(line[2]);
                    header.setOrder_pos(Integer.valueOf(line[3]));
                    header.setTab(tabList.get(Integer.valueOf(line[4])));
                    header.save();
                    headerList.put(Integer.valueOf(line[0]), header);
                    break;
                case ANSWERS_CSV:
                    Answer answer = new Answer();
                    answer.setName(line[1]);
                    answer.save();
                    answerList.put(Integer.valueOf(line[0]), answer);
                    break;
                case OPTION_ATTRIBUTES_CSV:
                    OptionAttribute optionAttribute = new OptionAttribute();
                    optionAttribute.setBackground_colour(line[1]);
                    optionAttribute.setPath(line[2]);
                    if (line.length > 3 && !line[3].equals("")) {
                        optionAttribute.setHorizontal_alignment(Integer.valueOf(line[3]));
                    } else {
                        optionAttribute.setHorizontal_alignment(OptionAttribute.DEFAULT_HORIZONTAL_ALIGNMENT);
                    }
                    if (line.length > 4 && !line[4].equals("")) {
                        optionAttribute.setVertical_alignment(Integer.valueOf(line[4]));
                    } else {
                        optionAttribute.setHorizontal_alignment(OptionAttribute.DEFAULT_VERTICAL_ALIGNMENT);
                    }
                    if (line.length > 5 && !line[5].equals("")) {
                        optionAttribute.setText_size(Integer.valueOf(line[5]));
                    } else {
                        optionAttribute.setText_size(Integer.parseInt(PreferencesState.getInstance().getContext().getResources().getString(R.string.default_option_text_size)));
                    }
                    if (line.length > 6 && !line[6].equals("")) {
                        optionAttribute.setDefaultOption(Integer.valueOf(line[6]));
                    } else {
                        optionAttribute.setDefaultOption(0);
                    }
                    optionAttribute.save();
                    optionAttributeList.put(Integer.valueOf(line[0]), optionAttribute);
                    break;
                case OPTIONS_CSV:
                    Option option = new Option();
                    option.setCode(line[1]);
                    option.setName(line[2]);
                    option.setFactor(Float.valueOf(line[3]));
                    option.setAnswer(answerList.get(Integer.valueOf(line[4])));
                    if (line[5] != null && !line[5].isEmpty()) {
                        option.setOptionAttribute(optionAttributeList.get(Integer.valueOf(line[5])));
                    }
                    option.save();
                    optionList.put(Integer.valueOf(line[0]), option);
                    break;
                case QUESTIONS_CSV:
                    Question question = new Question();
                    question.setCode(line[1]);
                    question.setDe_name(line[2]);
                    question.setHelp_text(line[3]);
                    question.setForm_name(line[4]);
                    question.setUid(line[5]);
                    question.setOrder_pos(Integer.valueOf(line[6]));
                    question.setNumerator_w(Float.valueOf(line[7]));
                    question.setDenominator_w(Float.valueOf(line[8]));
                    question.setHeader(headerList.get(Integer.valueOf(line[9])));
                    if (!line[10].equals("")) {
                        question.setAnswer(answerList.get(Integer.valueOf(line[10])));
                    }
                    if (!line[11].equals("")) {
                        question.setQuestion(questionList.get(Integer.valueOf(line[11])));
                    }
                    question.setOutput(Integer.valueOf(line[12]));
                    question.setTotalQuestions(Integer.valueOf(line[13]));
                    question.setVisible(Integer.valueOf(line[14]));
                    if (line.length > 15 && !line[15].equals("")) {
                        question.setPath((line[15]));
                    }
                    if (line.length > 16 && !line[16].equals("")) {
                        question.setCompulsory(Integer.valueOf(line[16]));
                    } else {
                        question.setCompulsory(Question.QUESTION_NOT_COMPULSORY);
                    }
                    question.save();
                    questionList.put(Integer.valueOf(line[0]), question);
                    break;
                case QUESTION_RELATIONS_CSV:
                    QuestionRelation questionRelation = new QuestionRelation();
                    questionRelation.setOperation(Integer.valueOf(line[1]));
                    questionRelation.setQuestion(questionList.get(Integer.valueOf(line[2])));
                    questionRelation.save();
                    questionRelationList.put(Integer.valueOf(line[0]), questionRelation);
                    break;
                case MATCHES:
                    Match match = new Match();
                    match.setQuestionRelation(questionRelationList.get(Integer.valueOf(line[1])));
                    match.save();
                    matchList.put(Long.valueOf(line[0]), match);
                    break;
                case QUESTION_OPTIONS_CSV:
                    QuestionOption questionOption = new QuestionOption();
                    questionOption.setQuestion(questionList.get(Integer.valueOf(line[1])));
                    if (!line[2].equals("")) {
                        questionOption.setOption(optionList.get(Integer.valueOf(line[2])));
                    }
                    if (!line[3].equals("")) {
                        questionOption.setMatch(matchList.get(Long.valueOf(line[3])));
                    }
                    questionOption.save();
                    break;
                case QUESTION_THRESHOLDS_CSV:
                    QuestionThreshold questionThreshold = new QuestionThreshold();
                    questionThreshold.setMatch(matchList.get(Long.valueOf(line[1])));
                    questionThreshold.setQuestion(questionList.get(Integer.valueOf(line[2])));
                    if (!line[3].equals("")) {
                        questionThreshold.setMinValue(Integer.valueOf(line[3]));
                    }
                    if (!line[4].equals("")) {
                        questionThreshold.setMaxValue(Integer.valueOf(line[4]));
                    }
                    questionThreshold.save();
                    break;
                case DRUGS_CSV:
                    Drug drug = PopulateRow.populateDrugs(line, null);
                    drug.insert();
                    drugList.put(Long.parseLong(line[0]), drug);
                    break;
                case ORGANISATIONS_CSV:
                    Organisation organisation = PopulateRow.populateOrganisations(line, null);
                    organisation.insert();
                    organisationList.put(Long.parseLong(line[0]), organisation);
                    break;
                case TREATMENT_CSV:
                    Treatment treatment = PopulateRow.populateTreatments(line, organisationList, stringKeyList, null);
                    treatment.insert();
                    treatmentList.put(Long.parseLong(line[0]), treatment);
                    break;
                case DRUG_COMBINATIONS_CSV:
                    PopulateRow.populateDrugCombinations(line, drugList, treatmentList, null).insert();
                    break;
                case TREATMENT_MATCHES_CSV:
                    PopulateRow.populateTreatmentMatches(line, treatmentList, matchList, null).insert();
                    break;
                case STRING_KEY_CSV:
                    StringKey stringKey = PopulateRow.populateStringKey(line, null);
                    stringKey.insert();
                    stringKeyList.put(Long.valueOf(line[0]), stringKey);
                    break;
                case TRANSLATION_CSV:
                    PopulateRow.populateTranslation(line, stringKeyList, null).insert();
                    break;
            }
        }
        reader.close();
    }
    //Free references since the maps are static
    cleanInnerLists();
}
Also used : Drug(org.eyeseetea.malariacare.data.database.model.Drug) QuestionThreshold(org.eyeseetea.malariacare.data.database.model.QuestionThreshold) QuestionOption(org.eyeseetea.malariacare.data.database.model.QuestionOption) Program(org.eyeseetea.malariacare.data.database.model.Program) InputStreamReader(java.io.InputStreamReader) Organisation(org.eyeseetea.malariacare.data.database.model.Organisation) CSVReader(com.opencsv.CSVReader) QuestionRelation(org.eyeseetea.malariacare.data.database.model.QuestionRelation) StringKey(org.eyeseetea.malariacare.data.database.model.StringKey) OptionAttribute(org.eyeseetea.malariacare.data.database.model.OptionAttribute) Match(org.eyeseetea.malariacare.data.database.model.Match) TreatmentMatch(org.eyeseetea.malariacare.data.database.model.TreatmentMatch) Answer(org.eyeseetea.malariacare.data.database.model.Answer) Treatment(org.eyeseetea.malariacare.data.database.model.Treatment) Tab(org.eyeseetea.malariacare.data.database.model.Tab) Header(org.eyeseetea.malariacare.data.database.model.Header) QuestionOption(org.eyeseetea.malariacare.data.database.model.QuestionOption) Option(org.eyeseetea.malariacare.data.database.model.Option) Question(org.eyeseetea.malariacare.data.database.model.Question)

Example 2 with Match

use of org.eyeseetea.malariacare.data.database.model.Match in project pictureapp by EyeSeeTea.

the class PopulateDB method addNotTestedRemminder.

public static void addNotTestedRemminder(Context context) throws IOException {
    //Reset inner references
    cleanInnerLists();
    List<Option> actualOptions = Option.getAllOptions();
    List<Question> actualQuestions = Question.getAllQuestions();
    questionList = new LinkedHashMap<Integer, Question>();
    optionAttributeList = new LinkedHashMap<Integer, OptionAttribute>();
    optionList = new LinkedHashMap<Integer, Option>();
    questionRelationList = new LinkedHashMap();
    matchList = new LinkedHashMap();
    int updateQRFromPosition = 24;
    int updateMatchFromPosition = 25;
    int updateQOFromPosition = 51;
    int QRRow = 0;
    int MatchRow = 0;
    int QORow = 0;
    for (String table : tables2updateQuestions) {
        Log.i(TAG, "Loading csv: " + table);
        CSVReader reader = new CSVReader(new InputStreamReader(context.openFileInput(table)), SEPARATOR, QUOTECHAR);
        String[] line;
        while ((line = reader.readNext()) != null) {
            boolean isNew = true;
            switch(table) {
                case OPTION_ATTRIBUTES_CSV:
                    OptionAttribute optionAttribute = new OptionAttribute();
                    optionAttribute.setBackground_colour(line[1]);
                    optionAttribute.setPath(line[2]);
                    if (line.length > 3 && !line[3].equals("")) {
                        optionAttribute.setHorizontal_alignment(Integer.valueOf(line[3]));
                    } else {
                        optionAttribute.setHorizontal_alignment(OptionAttribute.DEFAULT_HORIZONTAL_ALIGNMENT);
                    }
                    if (line.length > 4 && !line[4].equals("")) {
                        optionAttribute.setVertical_alignment(Integer.valueOf(line[4]));
                    } else {
                        optionAttribute.setHorizontal_alignment(OptionAttribute.DEFAULT_VERTICAL_ALIGNMENT);
                    }
                    if (line.length > 5 && !line[5].equals("")) {
                        optionAttribute.setText_size(Integer.valueOf(line[5]));
                    } else {
                        optionAttribute.setText_size(Integer.parseInt(PreferencesState.getInstance().getContext().getResources().getString(R.string.default_option_text_size)));
                    }
                    if (line.length > 6 && !line[6].equals("")) {
                        optionAttribute.setDefaultOption(Integer.valueOf(line[6]));
                    } else {
                        optionAttribute.setDefaultOption(0);
                    }
                    optionAttributeList.put(Integer.valueOf(line[0]), optionAttribute);
                    break;
                case OPTIONS_CSV:
                    //Ignore if the option already exists.
                    for (Option option : actualOptions) {
                        if (String.valueOf(option.getId_option()).equals(line[0])) {
                            isNew = false;
                        }
                    }
                    Option option;
                    if (isNew) {
                        option = new Option();
                        option.setCode(line[1]);
                        option.setName(line[2]);
                        option.setFactor(Float.valueOf(line[3]));
                        option.setAnswer(Answer.findById(Long.valueOf(line[4])));
                        if (line[5] != null && !line[5].isEmpty()) {
                            OptionAttribute localOptionAttribute = OptionAttribute.findById(Long.valueOf(line[5]));
                            if (localOptionAttribute == null) {
                                localOptionAttribute = optionAttributeList.get(Integer.valueOf(line[5]));
                                localOptionAttribute.save();
                            }
                            option.setOptionAttribute(localOptionAttribute);
                        }
                        option.save();
                    } else {
                        option = Option.findById(Long.valueOf(line[0]));
                    }
                    optionList.put(Integer.valueOf(line[0]), option);
                    break;
                case QUESTIONS_CSV:
                    //Ignore if the question already exists.
                    for (Question question : actualQuestions) {
                        if (String.valueOf(question.getId_question()).equals(line[0])) {
                            isNew = false;
                        }
                    }
                    Question question;
                    if (isNew) {
                        question = new Question();
                        question.setCode(line[1]);
                        question.setDe_name(line[2]);
                        question.setHelp_text(line[3]);
                        question.setForm_name(line[4]);
                        question.setUid(line[5]);
                        question.setOrder_pos(Integer.valueOf(line[6]));
                        question.setNumerator_w(Float.valueOf(line[7]));
                        question.setDenominator_w(Float.valueOf(line[8]));
                        question.setHeader(Header.findById(Long.valueOf(line[9])));
                        if (!line[10].equals("")) {
                            question.setAnswer(Answer.findById(Long.valueOf(line[10])));
                        }
                        if (!line[11].equals("")) {
                            question.setQuestion(questionList.get(Integer.valueOf(line[11])));
                        }
                        question.setOutput(Integer.valueOf(line[12]));
                        question.setTotalQuestions(Integer.valueOf(line[13]));
                        question.setVisible(Integer.valueOf(line[14]));
                        if (line.length > 15 && !line[15].equals("")) {
                            question.setPath((line[15]));
                        }
                        if (line.length > 16 && !line[16].equals("")) {
                            question.setCompulsory(Integer.valueOf(line[16]));
                        } else {
                            question.setCompulsory(Question.QUESTION_NOT_COMPULSORY);
                        }
                        question.save();
                    } else {
                        question = Question.findByUID(line[5]);
                    }
                    questionList.put(Integer.valueOf(line[0]), question);
                    break;
                case QUESTION_RELATIONS_CSV:
                    //Ignore if the option already exists.
                    QRRow++;
                    if (updateQRFromPosition > QRRow) {
                        break;
                    }
                    QuestionRelation questionRelation = new QuestionRelation();
                    questionRelation.setOperation(Integer.valueOf(line[1]));
                    questionRelation.setQuestion(questionList.get(Integer.valueOf(line[2])));
                    questionRelation.save();
                    questionRelationList.put(Integer.valueOf(line[0]), questionRelation);
                    break;
                case MATCHES:
                    //Ignore if the match already exists.
                    MatchRow++;
                    if (updateMatchFromPosition > MatchRow) {
                        break;
                    }
                    Match match = new Match();
                    match.setQuestionRelation(questionRelationList.get(Integer.valueOf(line[1])));
                    match.save();
                    matchList.put(Long.valueOf(line[0]), match);
                    break;
                case QUESTION_OPTIONS_CSV:
                    //Ignore if the question option already exists.
                    QORow++;
                    if (updateQOFromPosition > QORow) {
                        break;
                    }
                    QuestionOption questionOption = new QuestionOption();
                    questionOption.setQuestion(questionList.get(Integer.valueOf(line[1])));
                    questionOption.setOption(optionList.get(Integer.valueOf(line[2])));
                    if (!line[3].equals("")) {
                        questionOption.setMatch(matchList.get(Integer.valueOf(line[3])));
                    }
                    questionOption.save();
                    break;
            }
        }
    }
}
Also used : QuestionOption(org.eyeseetea.malariacare.data.database.model.QuestionOption) InputStreamReader(java.io.InputStreamReader) CSVReader(com.opencsv.CSVReader) QuestionRelation(org.eyeseetea.malariacare.data.database.model.QuestionRelation) OptionAttribute(org.eyeseetea.malariacare.data.database.model.OptionAttribute) LinkedHashMap(java.util.LinkedHashMap) Match(org.eyeseetea.malariacare.data.database.model.Match) TreatmentMatch(org.eyeseetea.malariacare.data.database.model.TreatmentMatch) QuestionOption(org.eyeseetea.malariacare.data.database.model.QuestionOption) Option(org.eyeseetea.malariacare.data.database.model.Option) Question(org.eyeseetea.malariacare.data.database.model.Question)

Example 3 with Match

use of org.eyeseetea.malariacare.data.database.model.Match in project pictureapp by EyeSeeTea.

the class UpdateDB method updateQuestionThresholds.

public static void updateQuestionThresholds(Context context, boolean updateCSV) throws IOException {
    if (updateCSV) {
        FileCsvs fileCsvs = new FileCsvs();
        fileCsvs.saveCsvFromAssetsToFile(PopulateDB.QUESTION_THRESHOLDS_CSV);
    }
    List<QuestionThreshold> questionThresholds = QuestionThreshold.getAllQuestionThresholds();
    HashMap<Long, Match> matchIds = RelationsIdCsvDB.getMatchIdRelationCsvDB(context);
    HashMap<Long, Question> questionsIds = RelationsIdCsvDB.getQuestionIdRelationCsvDB(context);
    CSVReader reader = new CSVReader(new InputStreamReader(context.openFileInput(PopulateDB.QUESTION_THRESHOLDS_CSV)), PopulateDB.SEPARATOR, PopulateDB.QUOTECHAR);
    String[] line;
    int i = 0;
    while ((line = reader.readNext()) != null) {
        if (i < questionThresholds.size()) {
            PopulateRow.populateQuestionThreshold(line, matchIds, questionsIds, questionThresholds.get(i)).save();
        } else {
            QuestionThreshold questionThreshold = PopulateRow.populateQuestionThreshold(line, matchIds, questionsIds, null);
            questionThreshold.insert();
        }
    }
}
Also used : QuestionThreshold(org.eyeseetea.malariacare.data.database.model.QuestionThreshold) InputStreamReader(java.io.InputStreamReader) CSVReader(com.opencsv.CSVReader) PopulateRow.populateMatch(org.eyeseetea.malariacare.data.database.utils.populatedb.PopulateRow.populateMatch) Match(org.eyeseetea.malariacare.data.database.model.Match) TreatmentMatch(org.eyeseetea.malariacare.data.database.model.TreatmentMatch) Question(org.eyeseetea.malariacare.data.database.model.Question)

Example 4 with Match

use of org.eyeseetea.malariacare.data.database.model.Match in project pictureapp by EyeSeeTea.

the class UpdateDB method updateMatches.

public static void updateMatches(Context context, boolean updateCSV) throws IOException {
    if (updateCSV) {
        FileCsvs fileCsvs = new FileCsvs();
        fileCsvs.saveCsvFromAssetsToFile(PopulateDB.MATCHES);
    }
    List<Match> matches = Match.listAll();
    HashMap<Long, QuestionRelation> questionsrelationIds = RelationsIdCsvDB.getQuestionRelationIdRelationCsvDB(context);
    CSVReader reader = new CSVReader(new InputStreamReader(context.openFileInput(PopulateDB.MATCHES)), PopulateDB.SEPARATOR, PopulateDB.QUOTECHAR);
    String[] line;
    int i = 0;
    while ((line = reader.readNext()) != null) {
        if (i < matches.size()) {
            populateMatch(line, questionsrelationIds, matches.get(i)).save();
        } else {
            Match match = populateMatch(line, questionsrelationIds, null);
            match.insert();
        }
        i++;
    }
}
Also used : InputStreamReader(java.io.InputStreamReader) CSVReader(com.opencsv.CSVReader) PopulateRow.populateQuestionRelation(org.eyeseetea.malariacare.data.database.utils.populatedb.PopulateRow.populateQuestionRelation) QuestionRelation(org.eyeseetea.malariacare.data.database.model.QuestionRelation) PopulateRow.populateMatch(org.eyeseetea.malariacare.data.database.utils.populatedb.PopulateRow.populateMatch) Match(org.eyeseetea.malariacare.data.database.model.Match) TreatmentMatch(org.eyeseetea.malariacare.data.database.model.TreatmentMatch)

Example 5 with Match

use of org.eyeseetea.malariacare.data.database.model.Match in project pictureapp by EyeSeeTea.

the class Treatment method getTreatmentFromSurvey.

private org.eyeseetea.malariacare.data.database.model.Treatment getTreatmentFromSurvey() {
    List<Value> values = mMalariaSurvey.getValuesFromDB();
    List<Match> ageMatches = new ArrayList<>();
    List<Match> pregnantMatches = new ArrayList<>();
    List<Match> severeMatches = new ArrayList<>();
    List<Match> rdtMatches = new ArrayList<>();
    for (Value value : values) {
        Question question = value.getQuestion();
        //Getting matches for questions of age, pregnant, severe and rdt.
        if (question == null) {
            continue;
        }
        if (question.getUid().equals(getContext().getString(R.string.ageQuestionUID))) {
            ageMatches = QuestionThreshold.getMatchesWithQuestionValue(question.getId_question(), Integer.parseInt(value.getValue()));
            Log.d(TAG, "age size: " + ageMatches.size());
        } else if (question.getUid().equals(getContext().getString(R.string.sexPregnantQuestionUID))) {
            pregnantMatches = QuestionOption.getMatchesWithQuestionOption(question.getId_question(), value.getId_option());
            Log.d(TAG, "pregnant size: " + pregnantMatches.size());
        } else if (question.getUid().equals(getContext().getString(R.string.severeSymtomsQuestionUID))) {
            severeMatches = QuestionOption.getMatchesWithQuestionOption(question.getId_question(), value.getId_option());
            Log.d(TAG, "severe size: " + severeMatches.size());
        } else if (question.getUid().equals(getContext().getString(R.string.rdtQuestionUID))) {
            rdtMatches = QuestionOption.getMatchesWithQuestionOption(question.getId_question(), value.getId_option());
            Log.d(TAG, "rdt size: " + rdtMatches.size());
        }
    }
    Log.d(TAG, "matches obtained");
    List<Match> treatmentMatches = new ArrayList<>();
    for (Match match : ageMatches) {
        if (pregnantMatches.contains(match) && severeMatches.contains(match) && rdtMatches.contains(match)) {
            treatmentMatches.add(match);
        }
    }
    org.eyeseetea.malariacare.data.database.model.Treatment treatment = null;
    for (Match treatmentMatch : treatmentMatches) {
        if (Session.getCredentials().isDemoCredentials()) {
            return treatmentMatch.getTreatment();
        }
        if (treatmentMatch.getTreatment().getOrganisation().getId_organisation() == Session.getUser().getOrganisation()) {
            Log.d(TAG, "match: " + treatmentMatch.toString());
            treatment = treatmentMatch.getTreatment();
            Log.d(TAG, "treatment: " + treatment.toString());
            break;
        }
    }
    return treatment;
}
Also used : Value(org.eyeseetea.malariacare.data.database.model.Value) ArrayList(java.util.ArrayList) Question(org.eyeseetea.malariacare.data.database.model.Question) Match(org.eyeseetea.malariacare.data.database.model.Match)

Aggregations

Match (org.eyeseetea.malariacare.data.database.model.Match)11 CSVReader (com.opencsv.CSVReader)8 InputStreamReader (java.io.InputStreamReader)8 TreatmentMatch (org.eyeseetea.malariacare.data.database.model.TreatmentMatch)8 Question (org.eyeseetea.malariacare.data.database.model.Question)5 QuestionOption (org.eyeseetea.malariacare.data.database.model.QuestionOption)5 QuestionRelation (org.eyeseetea.malariacare.data.database.model.QuestionRelation)4 PopulateRow.populateMatch (org.eyeseetea.malariacare.data.database.utils.populatedb.PopulateRow.populateMatch)4 ArrayList (java.util.ArrayList)3 Option (org.eyeseetea.malariacare.data.database.model.Option)3 QuestionThreshold (org.eyeseetea.malariacare.data.database.model.QuestionThreshold)3 HashMap (java.util.HashMap)2 OptionAttribute (org.eyeseetea.malariacare.data.database.model.OptionAttribute)2 Treatment (org.eyeseetea.malariacare.data.database.model.Treatment)2 LinkedHashMap (java.util.LinkedHashMap)1 Answer (org.eyeseetea.malariacare.data.database.model.Answer)1 Drug (org.eyeseetea.malariacare.data.database.model.Drug)1 Header (org.eyeseetea.malariacare.data.database.model.Header)1 Organisation (org.eyeseetea.malariacare.data.database.model.Organisation)1 Program (org.eyeseetea.malariacare.data.database.model.Program)1