Search in sources :

Example 6 with Value

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

the class DynamicTabAdapter method renderQuestion.

public void renderQuestion(View rowView, int tabType, Question screenQuestion) {
    TableRow tableRow;
    IQuestionViewFactory questionViewFactory;
    questionViewFactory = (Tab.isMultiQuestionTab(tabType) || Tab.isDynamicTreatmentTab(tabType)) ? new MultiQuestionViewFactory() : new SingleQuestionViewFactory();
    // Se get the value from Session
    int visibility = View.GONE;
    Survey survey = (screenQuestion.isStockQuestion() || screenQuestion.isDynamicStockQuestion()) ? Session.getStockSurvey() : getMalariaSurvey();
    if (!screenQuestion.isHiddenBySurveyAndHeader(survey) || !Tab.isMultiQuestionTab(tabType)) {
        visibility = View.VISIBLE;
    }
    Value value = screenQuestion.getValueBySession();
    tableRow = new TableRow(context);
    IQuestionView questionView = questionViewFactory.getView(context, screenQuestion.getOutput());
    if (questionView != null) {
        if (questionView instanceof IMultiQuestionView) {
            mMultiQuestionViews.add((IMultiQuestionView) questionView);
            ((IMultiQuestionView) questionView).setHeader(Utils.getInternationalizedString(screenQuestion.getForm_name()));
        }
        addTagQuestion(screenQuestion, (View) questionView);
        configureLayoutParams(tabType, tableRow, (LinearLayout) questionView);
        questionView.setHelpText(Utils.getInternationalizedString(screenQuestion.getHelp_text()));
        questionView.setEnabled(!readOnly);
        if (questionView instanceof IImageQuestionView) {
            ((IImageQuestionView) questionView).setImage(screenQuestion.getInternationalizedPath());
        }
        if (screenQuestion.isDynamicStockQuestion()) {
            Treatment treatment = new Treatment(getMalariaSurvey(), Session.getStockSurvey());
            if (treatment.hasTreatment()) {
                org.eyeseetea.malariacare.data.database.model.Treatment dbTreatment = treatment.getTreatment();
                Question actAnsweredNo = treatment.getACTQuestionAnsweredNo();
                screenQuestion.setAnswer(treatment.getACTOptions(dbTreatment));
                ((DynamicStockImageRadioButtonSingleQuestionView) questionView).setOptionDose(treatment.getOptionDose(dbTreatment));
            }
            ((DynamicStockImageRadioButtonSingleQuestionView) questionView).setQuestion(screenQuestion);
            ((DynamicStockImageRadioButtonSingleQuestionView) questionView).setOptions(screenQuestion.getAnswer().getOptions());
            //Getting the question to put the correct values on it
            ArrayList<Question> questions = new ArrayList<>();
            for (Option option : screenQuestion.getAnswer().getOptions()) {
                Question question = Question.findByID(option.getId_option());
                if (question != null) {
                    questions.add(question);
                }
            }
            survey.getValuesFromDB();
            for (Question question : questions) {
                Value valueStock = question.getValueBySession();
                questionView.setValue(valueStock);
            }
        }
        if (questionView instanceof AOptionQuestionView) {
            ((AOptionQuestionView) questionView).setQuestion(screenQuestion);
            List<Option> options = screenQuestion.getAnswer().getOptions();
            ((AOptionQuestionView) questionView).setOptions(options);
        }
        if (questionView instanceof NumberRadioButtonMultiquestionView) {
            if (doseByQuestion != null) {
                ((NumberRadioButtonMultiquestionView) questionView).setDose(doseByQuestion.get(screenQuestion.getId_question()));
            }
            ((NumberRadioButtonMultiquestionView) questionView).setQuestion(screenQuestion);
            ((NumberRadioButtonMultiquestionView) questionView).setOptions(screenQuestion.getAnswer().getOptions());
        }
        if (!readOnly) {
            configureAnswerChangedListener(questionView);
        }
        if (reloadingQuestionFromInvalidOption) {
            reloadingQuestionFromInvalidOption = false;
        } else {
            questionView.setValue(value);
        }
        setupNavigationByQuestionView(rowView.getRootView(), questionView);
        tableRow.addView((View) questionView);
        swipeTouchListener.addClickableView(tableRow);
        setVisibilityAndAddRow(tableRow, screenQuestion, visibility);
    }
}
Also used : SingleQuestionViewFactory(org.eyeseetea.malariacare.presentation.factory.SingleQuestionViewFactory) IQuestionViewFactory(org.eyeseetea.malariacare.presentation.factory.IQuestionViewFactory) IMultiQuestionView(org.eyeseetea.malariacare.views.question.IMultiQuestionView) ArrayList(java.util.ArrayList) MultiQuestionViewFactory(org.eyeseetea.malariacare.presentation.factory.MultiQuestionViewFactory) AOptionQuestionView(org.eyeseetea.malariacare.views.question.AOptionQuestionView) Session.getMalariaSurvey(org.eyeseetea.malariacare.data.database.utils.Session.getMalariaSurvey) Survey(org.eyeseetea.malariacare.data.database.model.Survey) IQuestionView(org.eyeseetea.malariacare.views.question.IQuestionView) Treatment(org.eyeseetea.malariacare.domain.entity.Treatment) TableRow(android.widget.TableRow) Value(org.eyeseetea.malariacare.data.database.model.Value) DynamicStockImageRadioButtonSingleQuestionView(org.eyeseetea.malariacare.views.question.singlequestion.DynamicStockImageRadioButtonSingleQuestionView) NumberRadioButtonMultiquestionView(org.eyeseetea.malariacare.views.question.multiquestion.NumberRadioButtonMultiquestionView) Question(org.eyeseetea.malariacare.data.database.model.Question) QuestionOption(org.eyeseetea.malariacare.data.database.model.QuestionOption) ImageRadioButtonOption(org.eyeseetea.malariacare.views.option.ImageRadioButtonOption) Option(org.eyeseetea.malariacare.data.database.model.Option) IImageQuestionView(org.eyeseetea.malariacare.views.question.IImageQuestionView)

Example 7 with Value

use of org.eyeseetea.malariacare.data.database.model.Value 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)

Example 8 with Value

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

the class ReviewFragment method getReviewValues.

private List<Value> getReviewValues() {
    List<Value> reviewValues = new ArrayList<>();
    Survey survey = Session.getMalariaSurvey();
    List<Value> allValues = survey.getValuesFromDB();
    for (Value value : allValues) {
        boolean isReviewValue = true;
        if (value.getQuestion() == null) {
            continue;
        }
        for (QuestionRelation questionRelation : value.getQuestion().getQuestionRelations()) {
            if (questionRelation.isACounter() || questionRelation.isAReminder() || questionRelation.isAWarning() || questionRelation.isAMatch()) {
                isReviewValue = false;
            }
        }
        int output = value.getQuestion().getOutput();
        if (output == Constants.HIDDEN || output == Constants.DYNAMIC_STOCK_IMAGE_RADIO_BUTTON) {
            isReviewValue = false;
        }
        if (isReviewValue) {
            if (!isStockValue(value)) {
                reviewValues.add(value);
            }
        }
    }
    return reviewValues;
}
Also used : Survey(org.eyeseetea.malariacare.data.database.model.Survey) QuestionRelation(org.eyeseetea.malariacare.data.database.model.QuestionRelation) ArrayList(java.util.ArrayList) Value(org.eyeseetea.malariacare.data.database.model.Value)

Example 9 with Value

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

the class NewReceiptBalanceFragment method createNewSurvey.

private void createNewSurvey() {
    Survey survey = new Survey(null, Program.getStockProgram(), Session.getUser(), type);
    Calendar surveyDate;
    if (date.getText().toString().isEmpty()) {
        surveyDate = Calendar.getInstance();
    } else {
        surveyDate = Utils.parseStringToCalendar(date.getText().toString(), "yyyy/MM/dd");
    }
    survey.setEventDate(surveyDate.getTime());
    survey.setStatus(Constants.SURVEY_COMPLETED);
    survey.save();
    new Value(rdt.getText().toString().isEmpty() ? rdt.getHint().toString() : rdt.getText().toString(), Question.getStockRDTQuestion(), survey).save();
    new Value(act6.getText().toString().isEmpty() ? act6.getHint().toString() : act6.getText().toString(), Question.getACT6Question(), survey).save();
    new Value(act12.getText().toString().isEmpty() ? act12.getHint().toString() : act12.getText().toString(), Question.getACT12Question(), survey).save();
    new Value(act18.getText().toString().isEmpty() ? act18.getHint().toString() : act18.getText().toString(), Question.getACT18Question(), survey).save();
    new Value(act24.getText().toString().isEmpty() ? act24.getHint().toString() : act24.getText().toString(), Question.getACT24Question(), survey).save();
    new Value(pq.getText().toString().isEmpty() ? pq.getHint().toString() : pq.getText().toString(), Question.getPqQuestion(), survey).save();
    new Value(cq.getText().toString().isEmpty() ? cq.getHint().toString() : cq.getText().toString(), Question.getCqQuestion(), survey).save();
}
Also used : Survey(org.eyeseetea.malariacare.data.database.model.Survey) Calendar(java.util.Calendar) Value(org.eyeseetea.malariacare.data.database.model.Value)

Example 10 with Value

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

the class ConvertToSDKVisitor method visit.

@Override
public void visit(Survey survey) throws Exception {
    EventExtended event = null;
    try {
        //Precondition
        if (isEmpty(survey)) {
            survey.delete();
            return;
        }
        if (Survey.countSurveysByCompletiondate(survey.getCompletionDate()) > 1) {
            Log.d(TAG, String.format("Delete repeated survey", survey.toString()));
            survey.delete();
            return;
        }
        Log.d(TAG, String.format("Creating event for survey (%d) ...", survey.getId_survey()));
        event = buildEvent(survey);
        survey.setEventUid(event.getUid());
        survey.save();
        //Turn question values into dataValues
        Log.d(TAG, "Creating datavalues from questions...");
        for (Value value : survey.getValuesFromDB()) {
            if (value.getQuestion().hasDataElement()) {
                buildAndSaveDataValue(value.getQuestion().getUid(), value.getValue(), event);
            }
        }
        Log.d(TAG, "Saving control dataelements");
        buildControlDataElements(survey, event);
        if (Survey.countSurveysByCompletiondate(survey.getCompletionDate()) > 1) {
            Log.d(TAG, String.format("Delete repeated survey", survey.toString()));
            survey.delete();
            event.delete();
            return;
        }
        //Annotate both objects to update its state once the process is over
        annotateSurveyAndEvent(survey, event);
    } catch (Exception e) {
        e.printStackTrace();
        //If the conversion fails the survey is wrong and will be delete.
        removeSurveyAndEvent(survey, event);
    }
}
Also used : EventExtended(org.eyeseetea.malariacare.data.sync.importer.models.EventExtended) Value(org.eyeseetea.malariacare.data.database.model.Value) ImportSummaryErrorException(org.eyeseetea.malariacare.domain.exception.ImportSummaryErrorException)

Aggregations

Value (org.eyeseetea.malariacare.data.database.model.Value)21 Question (org.eyeseetea.malariacare.data.database.model.Question)15 Survey (org.eyeseetea.malariacare.data.database.model.Survey)6 Option (org.eyeseetea.malariacare.data.database.model.Option)5 ArrayList (java.util.ArrayList)3 ImageRadioButtonOption (org.eyeseetea.malariacare.views.option.ImageRadioButtonOption)3 TableRow (android.widget.TableRow)2 QuestionOption (org.eyeseetea.malariacare.data.database.model.QuestionOption)2 ImportSummaryErrorException (org.eyeseetea.malariacare.domain.exception.ImportSummaryErrorException)2 AOptionQuestionView (org.eyeseetea.malariacare.views.question.AOptionQuestionView)2 IQuestionView (org.eyeseetea.malariacare.views.question.IQuestionView)2 Handler (android.os.Handler)1 View (android.view.View)1 Calendar (java.util.Calendar)1 CompositeScore (org.eyeseetea.malariacare.data.database.model.CompositeScore)1 Match (org.eyeseetea.malariacare.data.database.model.Match)1 QuestionRelation (org.eyeseetea.malariacare.data.database.model.QuestionRelation)1 Session.getMalariaSurvey (org.eyeseetea.malariacare.data.database.utils.Session.getMalariaSurvey)1 EventExtended (org.eyeseetea.malariacare.data.sync.importer.models.EventExtended)1 Treatment (org.eyeseetea.malariacare.domain.entity.Treatment)1