org.patientview.radar.web.pages.admin.AdminPatientAllPage.java Source code

Java tutorial

Introduction

Here is the source code for org.patientview.radar.web.pages.admin.AdminPatientAllPage.java

Source

/*
 * PatientView
 *
 * Copyright (c) Worth Solutions Limited 2004-2013
 *
 * This file is part of PatientView.
 *
 * PatientView is free software: you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation, either version 3 of the License,
 * or (at your option) any later version.
 * PatientView is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License along with PatientView in a file
 * titled COPYING. If not, see <http://www.gnu.org/licenses/>.
 *
 * @package PatientView
 * @link http://www.patientview.org
 * @author PatientView <info@patientview.org>
 * @copyright Copyright (c) 2004-2013, Worth Solutions Limited
 * @license http://www.gnu.org/licenses/gpl-3.0.html The GNU General Public License V3.0
 */

package org.patientview.radar.web.pages.admin;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.util.string.StringValue;
import org.patientview.model.Patient;
import org.patientview.radar.model.Diagnosis;
import org.patientview.radar.model.DiagnosisCode;
import org.patientview.radar.service.DiagnosisManager;
import org.patientview.radar.service.PatientManager;

import java.util.Collections;
import java.util.List;

public class AdminPatientAllPage extends AdminsBasePage {

    @SpringBean
    private PatientManager patientManager;
    @SpringBean
    private DiagnosisManager diagnosisManager;

    private static final String PARAM_ID = "ID";

    public AdminPatientAllPage(PageParameters parameters) {
        super();

        final Patient patient;

        StringValue idValue = parameters.get(PARAM_ID);
        patient = patientManager.getPatientByRadarNumber(idValue.toLongObject());

        Diagnosis diagnosis = diagnosisManager.getDiagnosisByRadarNumber(patient.getId());

        CompoundPropertyModel<Diagnosis> diagnosisModel = new CompoundPropertyModel<Diagnosis>(diagnosis);

        final FeedbackPanel feedback = new FeedbackPanel("feedback");
        feedback.setOutputMarkupId(true);
        feedback.setOutputMarkupPlaceholderTag(true);
        add(feedback);

        final Form<Diagnosis> userForm = new Form<Diagnosis>("patientForm", diagnosisModel) {
            protected void onSubmit() {
                try {
                    diagnosisManager.saveDiagnosis(getModelObject());
                } catch (Exception e) {
                    error("Could not save diagnosis: " + e.toString());
                }
            }
        };
        add(userForm);

        userForm.add(new Label("radarNo", patient.getId().toString()));
        userForm.add(new Label("forename", patient.getForename()));
        userForm.add(new Label("surname", patient.getSurname()));

        // get centres and sort by name
        List<DiagnosisCode> diagnosisCodes = diagnosisManager.getDiagnosisCodes();
        Collections.sort(diagnosisCodes, DiagnosisCode.getComparator());

        DropDownChoice<DiagnosisCode> diagnosisCode = new DropDownChoice<DiagnosisCode>("diagnosisCode",
                diagnosisCodes, new ChoiceRenderer<DiagnosisCode>("abbreviation", "id"));
        diagnosisCode.setRequired(true);
        userForm.add(diagnosisCode);

        userForm.add(new AjaxSubmitLink("updateTop") {
            protected void onSubmit(AjaxRequestTarget ajaxRequestTarget, Form<?> form) {
                setResponsePage(AdminPatientsAllPage.class);
            }

            protected void onError(AjaxRequestTarget ajaxRequestTarget, Form<?> form) {
                ajaxRequestTarget.add(feedback);
            }
        });

        userForm.add(new AjaxLink("cancelTop") {
            public void onClick(AjaxRequestTarget ajaxRequestTarget) {
                setResponsePage(AdminPatientsAllPage.class);
            }
        });

        userForm.add(new AjaxSubmitLink("updateBottom") {
            protected void onSubmit(AjaxRequestTarget ajaxRequestTarget, Form<?> form) {
                setResponsePage(AdminPatientsAllPage.class);
            }

            protected void onError(AjaxRequestTarget ajaxRequestTarget, Form<?> form) {
                ajaxRequestTarget.add(feedback);
            }
        });

        userForm.add(new AjaxLink("cancelBottom") {
            public void onClick(AjaxRequestTarget ajaxRequestTarget) {
                setResponsePage(AdminPatientsAllPage.class);
            }
        });
    }

    public static PageParameters getPageParameters(Patient patient) {
        return new PageParameters().set(PARAM_ID, patient.getId());
    }
}