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);
}
}
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;
}
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;
}
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();
}
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);
}
}
Aggregations