package dk.silverbullet.telemed.deleteme; import dk.silverbullet.telemed.questionnaire.Questionnaire; import dk.silverbullet.telemed.questionnaire.QuestionnaireFragment; import dk.silverbullet.telemed.questionnaire.R; import dk.silverbullet.telemed.questionnaire.element.ButtonElement; import dk.silverbullet.telemed.questionnaire.element.EditTextElement; import dk.silverbullet.telemed.questionnaire.element.TextViewElement; import dk.silverbullet.telemed.questionnaire.element.TwoButtonElement; import dk.silverbullet.telemed.questionnaire.expression.AddExpression; import dk.silverbullet.telemed.questionnaire.expression.Constant; import dk.silverbullet.telemed.questionnaire.expression.Expression; import dk.silverbullet.telemed.questionnaire.expression.LessThan; import dk.silverbullet.telemed.questionnaire.expression.MultiplyExpression; import dk.silverbullet.telemed.questionnaire.expression.Variable; import dk.silverbullet.telemed.questionnaire.node.AssignmentNode; import dk.silverbullet.telemed.questionnaire.node.DecisionNode; import dk.silverbullet.telemed.questionnaire.node.EndNode; import dk.silverbullet.telemed.questionnaire.node.IONode; import dk.silverbullet.telemed.questionnaire.node.MonicaDeviceNode; import dk.silverbullet.telemed.questionnaire.node.Node; import dk.silverbullet.telemed.questionnaire.node.UnknownNodeException; import dk.silverbullet.telemed.questionnaire.output.OutputSkema; import dk.silverbullet.telemed.questionnaire.skema.Skema; import dk.silverbullet.telemed.utils.Json; import dk.silverbullet.telemed.utils.Util; public class TestJordemoder implements TestSkema { public String buttonOkText; public IONode getIONodeText(Questionnaire questionnaire, String name, String text, String button, String next) { IONode ioNode = new IONode(questionnaire, name); this.buttonOkText = Util.getString(R.string.default_ok, questionnaire); TextViewElement tve2 = new TextViewElement(ioNode); tve2.setText(text); ioNode.addElement(tve2); ButtonElement be2 = new ButtonElement(ioNode); be2.setText(button); be2.setGravity(ButtonElement.GRAVITY_RIGHT); be2.setNext(next); ioNode.addElement(be2); return ioNode; } public IONode getIONodeYesNo(Questionnaire questionnaire, String name, String text, String noNext, String yesNext) { return getIONodeYesNo(questionnaire, name, text, noNext, Util.getString(R.string.default_no, questionnaire), yesNext, Util.getString(R.string.default_yes, questionnaire)); } public IONode getIONodeYesNo(Questionnaire questionnaire, String name, String text, String leftNext, String leftText, String rightNext, String rightText) { IONode ioNode = new IONode(questionnaire, name); TextViewElement tve2 = new TextViewElement(ioNode); tve2.setText(text); ioNode.addElement(tve2); TwoButtonElement tbe = new TwoButtonElement(ioNode); tbe.setLeftNext(leftNext); tbe.setLeftText(leftText); tbe.setRightNext(rightNext); tbe.setRightText(rightText); ioNode.addElement(tbe); return ioNode; } public AssignmentNode<Boolean> getAssignmentNode(Questionnaire questionnaire, String name, Variable<Boolean> variable, boolean val, Node node) { AssignmentNode<Boolean> assignmentNode = new AssignmentNode<Boolean>(questionnaire, name, variable, new Constant<Boolean>(val)); assignmentNode.setNext(node.getNodeName()); return assignmentNode; } public Skema getSkema(Questionnaire questionnaire) throws UnknownNodeException { // //////////////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////////////// // Variable OutputSkema outputSkema = new OutputSkema(); Variable<Boolean> variableBevaegerBarnetsSig = new Variable<Boolean>("variableBevaegerBarnetsSig", Boolean.class); Variable<Boolean> variableErDuUtilpas = new Variable<Boolean>("variableErDuUtilpas", Boolean.class); Variable<Boolean> variableHarDuAandenoed = new Variable<Boolean>("variableHarDuAandenoed", Boolean.class); Variable<Boolean> variableOndtIMaven = new Variable<Boolean>("variableOndtIMaven", Boolean.class); Variable<Boolean> variableVaerreOejnene = new Variable<Boolean>("variableVaerreOejnene", Boolean.class); Variable<Boolean> variableFlimrenForOejnene = new Variable<Boolean>("variableFlimrenForOejnene", Boolean.class); Variable<Boolean> variableVaerreHovedpine = new Variable<Boolean>("variableVaerreHovedpine", Boolean.class); Variable<Boolean> variableHovedpine = new Variable<Boolean>("variableHovedpine", Boolean.class); Variable<Float> variableUrintest = new Variable<Float>("variableUrintest", Float.class); Variable<Boolean> variableKontakt = new Variable<Boolean>("variableKontakt", Boolean.class); Variable<Integer> variableDia = new Variable<Integer>("variableDia", Integer.class); Variable<Integer> variableSys = new Variable<Integer>("variableSys", Integer.class); Variable<Float> variableVaegt = new Variable<Float>("variableVaegt", Float.class); Variable<Float[]> variableMhr = new Variable<Float[]>("variableMhr", Float[].class); Variable<Float[]> variableFhr = new Variable<Float[]>("variableFhr", Float[].class); Variable<Integer[]> variableFmp = new Variable<Integer[]>("variableFmp", Integer[].class); Variable<Float[]> variableToco = new Variable<Float[]>("variableToco", Float[].class); Variable<Integer[]> variableQfhr = new Variable<Integer[]>("variableQfhr", Integer[].class); Variable<String[]> variableSignal = new Variable<String[]>("variableSignal", String[].class); Variable<String> variableStartTime = new Variable<String>("variableStartTime", String.class); Variable<String> variableEndTime = new Variable<String>("variableEndTime", String.class); Variable<Float> variableStartVoltage = new Variable<Float>("variableStartVoltage", Float.class); Variable<Float> variableEndVoltage = new Variable<Float>("variableEndVoltage", Float.class); outputSkema.addVariable(variableBevaegerBarnetsSig); outputSkema.addVariable(variableErDuUtilpas); outputSkema.addVariable(variableHarDuAandenoed); outputSkema.addVariable(variableOndtIMaven); outputSkema.addVariable(variableVaerreOejnene); outputSkema.addVariable(variableFlimrenForOejnene); outputSkema.addVariable(variableVaerreHovedpine); outputSkema.addVariable(variableHovedpine); outputSkema.addVariable(variableUrintest); outputSkema.addVariable(variableKontakt); outputSkema.addVariable(variableDia); outputSkema.addVariable(variableSys); outputSkema.addVariable(variableVaegt); outputSkema.addVariable(variableMhr); outputSkema.addVariable(variableFhr); outputSkema.addVariable(variableFmp); outputSkema.addVariable(variableToco); outputSkema.addVariable(variableQfhr); outputSkema.addVariable(variableSignal); outputSkema.addVariable(variableStartTime); outputSkema.addVariable(variableEndTime); outputSkema.addVariable(variableStartVoltage); outputSkema.addVariable(variableEndVoltage); // //////////////////////////////////////////////////////////////////////////////// EndNode end = new EndNode(questionnaire, "slut"); // //////////////////////////////////////////////////////////////////////////////// IONode svarSendes = getIONodeText(questionnaire, "svarSendes", "Dine svar sendes nu til hospitalet", buttonOkText, end.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// IONode kontaktJordemoder = getIONodeText(questionnaire, "kontaktJordemoder", "Kontakt venligst din jordemoder.", buttonOkText, svarSendes.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// // IONode paasaetMonica = getIONodeText(questionnaire, "paasaetMonica", "Påsæt Monica", buttonOkText, // svarSendes.getNodeName()); MonicaDeviceNode paasaetMonica = new MonicaDeviceNode(questionnaire, "paasaetMonica"); paasaetMonica.setFhr(variableFhr); paasaetMonica.setQfhr(variableQfhr); paasaetMonica.setMhr(variableMhr); paasaetMonica.setToco(variableToco); paasaetMonica.setSignal(variableSignal); paasaetMonica.setStartTime(variableStartTime); paasaetMonica.setEndTime(variableEndTime); paasaetMonica.setVoltageStart(variableStartVoltage); paasaetMonica.setVoltageEnd(variableEndVoltage); paasaetMonica.setNext(svarSendes.getNodeName()); paasaetMonica.setNextFail(svarSendes.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// DecisionNode kontakt = new DecisionNode(questionnaire, "kontakt", variableKontakt); kontakt.setNext(kontaktJordemoder.getNodeName()); kontakt.setNextFalse(paasaetMonica.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> kontaktJordemoderEfter1 = getAssignmentNode(questionnaire, "kontaktJordemoderEfter1", variableKontakt, true, kontakt); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> assignmentBevaegerBarnetsSig = new AssignmentNode<Boolean>(questionnaire, "assignmentBevaegerBarnetsSig", variableBevaegerBarnetsSig, new Constant<Boolean>(false)); assignmentBevaegerBarnetsSig.setNext(kontaktJordemoderEfter1.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// IONode bevaegerBarnetsSig = getIONodeYesNo(questionnaire, "bevaegerBarnetsSig", "Bevæger barnets sig som det plejer?", assignmentBevaegerBarnetsSig.getNodeName(), kontakt.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> kontaktJordemoderEfter2 = getAssignmentNode(questionnaire, "kontaktJordemoderEfter2", variableKontakt, true, bevaegerBarnetsSig); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> assignmentErDuUtilpas = new AssignmentNode<Boolean>(questionnaire, "assignmentErDuUtilpas", variableErDuUtilpas, new Constant<Boolean>(true)); assignmentErDuUtilpas.setNext(kontaktJordemoderEfter2.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// IONode erDuUtilpas = getIONodeYesNo(questionnaire, "erDuUtilpas", "Er du alment utilpas?", bevaegerBarnetsSig.getNodeName(), assignmentErDuUtilpas.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> kontaktJordemoderEfter3 = getAssignmentNode(questionnaire, "kontaktJordemoderEfter3", variableKontakt, true, erDuUtilpas); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> assignmentHarDuAandenoed = new AssignmentNode<Boolean>(questionnaire, "assignmentHarDuAandenoed", variableHarDuAandenoed, new Constant<Boolean>(true)); assignmentHarDuAandenoed.setNext(kontaktJordemoderEfter3.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// IONode harDuAandenoed = getIONodeYesNo(questionnaire, "harDuAandenoed", "Har du åndenød?", erDuUtilpas.getNodeName(), assignmentHarDuAandenoed.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> kontaktJordemoderEfter4 = getAssignmentNode(questionnaire, "kontaktJordemoderEfter4", variableKontakt, true, harDuAandenoed); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> assignmentOndtIMaven = new AssignmentNode<Boolean>(questionnaire, "assignmentOndtIMaven", variableOndtIMaven, new Constant<Boolean>(true)); assignmentOndtIMaven.setNext(kontaktJordemoderEfter4.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// IONode ondtIMaven = getIONodeYesNo(questionnaire, "ondtIMaven", "Har du ondt i øverste højre del af maven?", harDuAandenoed.getNodeName(), assignmentOndtIMaven.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> kontaktJordemoderEfter5 = getAssignmentNode(questionnaire, "kontaktJordemoderEfter5", variableKontakt, true, ondtIMaven); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> assignmentVaerreOejnene = new AssignmentNode<Boolean>(questionnaire, "assignmentVaerreOejnene", variableVaerreOejnene, new Constant<Boolean>(true)); assignmentVaerreOejnene.setNext(kontaktJordemoderEfter5.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// IONode vaerreOejnene = getIONodeYesNo(questionnaire, "vaerreOejnene", "Er din flimren for øjnene værre end i går?", ondtIMaven.getNodeName(), assignmentVaerreOejnene.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> assignmentFlimrenForOejnene = new AssignmentNode<Boolean>(questionnaire, "assignmentFlimrenForOejnene", variableFlimrenForOejnene, new Constant<Boolean>(true)); assignmentFlimrenForOejnene.setNext(vaerreOejnene.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// IONode flimrenForOejnene = getIONodeYesNo(questionnaire, "flimrenForOejnene", "Har du flimren for øjnene?", ondtIMaven.getNodeName(), assignmentFlimrenForOejnene.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> kontaktJordemoderEfter6 = getAssignmentNode(questionnaire, "kontaktJordemoderEfter6", variableKontakt, true, flimrenForOejnene); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> assignmentVaerreHovedpine = new AssignmentNode<Boolean>(questionnaire, "assignmentVaerreHovedpine", variableVaerreHovedpine, new Constant<Boolean>(true)); assignmentVaerreHovedpine.setNext(kontaktJordemoderEfter6.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// IONode vaerreHovedpine = getIONodeYesNo(questionnaire, "vaerreHovedpine", "Er din hovedpine værre end i går?", flimrenForOejnene.getNodeName(), assignmentVaerreHovedpine.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> assignmentHovedpine = new AssignmentNode<Boolean>(questionnaire, "assignmentHovedpine", variableHovedpine, new Constant<Boolean>(true)); assignmentHovedpine.setNext(vaerreHovedpine.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// IONode hovedpine = getIONodeYesNo(questionnaire, "hovedpine", "Har du hovedpine?", flimrenForOejnene.getNodeName(), assignmentHovedpine.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// // IONode vaegt = getIONodeText(questionnaire, "vaegt", "Vægt", buttonOkText, hovedpine.getNodeName()); IONode vaegt = new IONode(questionnaire, "vaegt"); TextViewElement tve = new TextViewElement(vaegt); tve.setText("Hvad er din vægt?"); vaegt.addElement(tve); TextViewElement tve3 = new TextViewElement(vaegt); tve3.setText("Indtast her:"); vaegt.addElement(tve3); EditTextElement ete2 = new EditTextElement(vaegt); ete2.setOutputVariable(variableVaegt); vaegt.addElement(ete2); ButtonElement be2 = new ButtonElement(vaegt); be2.setGravity(ButtonElement.GRAVITY_RIGHT); be2.setNext(hovedpine.getNodeName()); be2.setText(buttonOkText); vaegt.addElement(be2); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> kontaktJordemoderEfter7 = getAssignmentNode(questionnaire, "kontaktJordemoderEfter7", variableKontakt, true, vaegt); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> kontaktJordemoderEfter8 = getAssignmentNode(questionnaire, "kontaktJordemoderEfter8", variableKontakt, true, vaegt); // //////////////////////////////////////////////////////////////////////////////// IONode proteinHoejere = getIONodeYesNo(questionnaire, "proteinHoejere", "Er proteintallet højere end vanligt?", vaegt.getNodeName(), kontaktJordemoderEfter8.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// Expression<Boolean> e1 = new Constant<Boolean>(true); DecisionNode decision2Protein = new DecisionNode(questionnaire, "decision2Protein", e1); decision2Protein.setNext(kontaktJordemoderEfter7.getNodeName()); decision2Protein.setNextFalse(proteinHoejere.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// Expression<Boolean> e2 = new Constant<Boolean>(true); DecisionNode decisionSpor1Protein = new DecisionNode(questionnaire, "decisionSpor1Protein", e2); decisionSpor1Protein.setNext(vaegt.getNodeName()); decisionSpor1Protein.setNextFalse(decision2Protein.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// IONode urintest = new IONode(questionnaire, "urintest"); TextViewElement tve2 = new TextViewElement(urintest); tve2.setText("Indtast svaret på din urintest"); urintest.addElement(tve2); EditTextElement ete = new EditTextElement(urintest); ete.setOutputVariable(variableUrintest); urintest.addElement(ete); ButtonElement be = new ButtonElement(urintest); be.setGravity(ButtonElement.GRAVITY_RIGHT); be.setNext(decisionSpor1Protein.getNodeName()); be.setText(buttonOkText); urintest.addElement(be); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> kontaktJordemoderEfter9 = getAssignmentNode(questionnaire, "kontaktJordemoderEfter9", variableKontakt, true, urintest); // //////////////////////////////////////////////////////////////////////////////// IONode btHoejere = getIONodeYesNo(questionnaire, "btHoejere", "Er dit blodtryk højere end vanligt?", urintest.getNodeName(), kontaktJordemoderEfter9.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// Expression<Integer> left = new AddExpression<Integer>(new MultiplyExpression<Integer>(variableDia, new Constant<Integer>(2)), variableSys); Expression<Integer> right2 = new AddExpression<Integer>(new Constant<Integer>(150), new MultiplyExpression<Integer>(new Constant<Integer>(100), new Constant<Integer>(2))); DecisionNode decisionBT140to150 = new DecisionNode(questionnaire, "decisionBT140to150", new LessThan<Integer>( left, right2)); decisionBT140to150.setNext(btHoejere.getNodeName()); decisionBT140to150.setNextFalse(kontaktJordemoderEfter9.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// Expression<Integer> right = new AddExpression<Integer>(new Constant<Integer>(140), new MultiplyExpression<Integer>(new Constant<Integer>(90), new Constant<Integer>(2))); DecisionNode decisionBTlt140 = new DecisionNode(questionnaire, "decisionBTlt140", new LessThan<Integer>(left, right)); decisionBTlt140.setNext(urintest.getNodeName()); decisionBTlt140.setNextFalse(decisionBT140to150.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// IONode blodtryk = new IONode(questionnaire, "blodtryk"); TextViewElement tve6 = new TextViewElement(blodtryk); tve6.setText("Indtast værdier for dit blodtryk:"); blodtryk.addElement(tve6); TextViewElement tve4 = new TextViewElement(blodtryk); tve4.setText("Systolisk:"); blodtryk.addElement(tve4); EditTextElement ete4 = new EditTextElement(blodtryk); ete4.setOutputVariable(variableSys); blodtryk.addElement(ete4); TextViewElement tve5 = new TextViewElement(blodtryk); tve5.setText("Diatolisk:"); blodtryk.addElement(tve5); EditTextElement ete3 = new EditTextElement(blodtryk); ete3.setOutputVariable(variableDia); blodtryk.addElement(ete3); ButtonElement be3 = new ButtonElement(blodtryk); be3.setGravity(ButtonElement.GRAVITY_RIGHT); be3.setNext(decisionBTlt140.getNodeName()); be3.setText(buttonOkText); blodtryk.addElement(be3); // //////////////////////////////////////////////////////////////////////////////// AssignmentNode<Boolean> init = new AssignmentNode<Boolean>(questionnaire, "init", variableKontakt, new Constant<Boolean>(false)); init.setNext(blodtryk.getNodeName()); // //////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// Skema skema = new Skema(); skema.setStartNode(init.getNodeName()); skema.setEndNode(end.getNodeName()); skema.setName("skema-navn"); skema.setVersion("1.0"); for (Variable<?> output : outputSkema.getOutput()) { questionnaire.addSkemaVariable(output); skema.addVariable(output); } skema.addNode(end); skema.addNode(svarSendes); skema.addNode(kontaktJordemoder); skema.addNode(paasaetMonica); skema.addNode(kontakt); skema.addNode(kontaktJordemoderEfter1); skema.addNode(assignmentBevaegerBarnetsSig); skema.addNode(bevaegerBarnetsSig); skema.addNode(kontaktJordemoderEfter2); skema.addNode(assignmentErDuUtilpas); skema.addNode(erDuUtilpas); skema.addNode(kontaktJordemoderEfter3); skema.addNode(assignmentHarDuAandenoed); skema.addNode(harDuAandenoed); skema.addNode(kontaktJordemoderEfter4); skema.addNode(assignmentOndtIMaven); skema.addNode(ondtIMaven); skema.addNode(kontaktJordemoderEfter5); skema.addNode(assignmentVaerreOejnene); skema.addNode(vaerreOejnene); skema.addNode(assignmentFlimrenForOejnene); skema.addNode(flimrenForOejnene); skema.addNode(kontaktJordemoderEfter6); skema.addNode(assignmentVaerreHovedpine); skema.addNode(vaerreHovedpine); skema.addNode(assignmentHovedpine); skema.addNode(hovedpine); skema.addNode(vaegt); skema.addNode(kontaktJordemoderEfter7); skema.addNode(kontaktJordemoderEfter8); skema.addNode(proteinHoejere); skema.addNode(decision2Protein); skema.addNode(decisionSpor1Protein); skema.addNode(urintest); skema.addNode(kontaktJordemoderEfter9); skema.addNode(btHoejere); skema.addNode(decisionBT140to150); skema.addNode(decisionBTlt140); skema.addNode(blodtryk); skema.addNode(init); skema.link(); // //////////////////////////////////////////////////////////////////////////////// // end.. // //////////////////////////////////////////////////////////////////////////////// return skema; } @Override public Skema getSkema() throws UnknownNodeException { Questionnaire q = new Questionnaire(new QuestionnaireFragment()); String json = Json.print(getSkema(q)); return Json.parse(json, Skema.class); } }