Example usage for org.apache.wicket.extensions.markup.html.form DateTextField DateTextField

List of usage examples for org.apache.wicket.extensions.markup.html.form DateTextField DateTextField

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.markup.html.form DateTextField DateTextField.

Prototype

public DateTextField(final String id, final IModel<Date> model, final String datePattern) 

Source Link

Document

Creates a new DateTextField bound with a specific SimpleDateFormat pattern.

Usage

From source file:au.org.theark.core.web.component.customfield.dataentry.DateDataEntryPanel.java

License:Open Source License

/**
 * DateDataEntryPanel Constructor/*  w w w . j a v a 2s.  c om*/
 * 
 * @param id
 *           - component id
 * @param dateDataModel
 *           - must be a model for a Date dataValue
 * @param labelModel
 *           - field-specific String label model to be used for feedback
 */
public DateDataEntryPanel(String id, IModel<Date> dateDataModel, IModel<String> labelModel) {
    super(id, labelModel);
    dataValueModel = dateDataModel;

    dataValueDateFld = new DateTextField("dateDataValue", dataValueModel,
            au.org.theark.core.Constants.DD_MM_YYYY);
    ArkDatePicker datePicker = new ArkDatePicker();
    datePicker.bind(dataValueDateFld);
    dataValueDateFld.setLabel(fieldLabelModel); // set the ${label} for feedback messages
    dataValueDateFld.add(datePicker);

    this.add(dataValueDateFld);
}

From source file:au.org.theark.lims.web.component.biospecimen.batchcreate.form.AutoGenBatchCreateBiospecimenForm.java

License:Open Source License

/**
 * //from w w  w .  j  av a2 s  .  c o  m
 * @return the listEditor of BatchBiospecimen(s)
 */
public AbstractListEditor<BatchBiospecimenVO> buildListEditor() {
    listEditor = new AbstractListEditor<BatchBiospecimenVO>("batchBiospecimenList",
            new PropertyModel(this, "batchBiospecimenList")) {

        private static final long serialVersionUID = 1L;

        @SuppressWarnings("serial")
        @Override
        protected void onPopulateItem(final ListItem<BatchBiospecimenVO> item) {
            item.setOutputMarkupId(true);
            item.getModelObject().getBiospecimen()
                    .setLinkSubjectStudy(cpModel.getObject().getLinkSubjectStudy());
            item.getModelObject().getBiospecimen()
                    .setStudy(cpModel.getObject().getLinkSubjectStudy().getStudy());

            numberToCreateTxtFld = new TextField<Number>("numberToCreate",
                    new PropertyModel(item.getModelObject(), "numberToCreate"));

            initBioCollectionDdc(item);
            initSampleTypeDdc(item);

            sampleDateTxtFld = new DateTextField("biospecimen.sampleDate",
                    new PropertyModel(item.getModelObject(), "biospecimen.sampleDate"),
                    au.org.theark.core.Constants.DD_MM_YYYY);
            ArkDatePicker sampleDatePicker = new ArkDatePicker();
            sampleDatePicker.bind(sampleDateTxtFld);
            sampleDateTxtFld.add(sampleDatePicker);

            quantityTxtFld = new TextField<Double>("biospecimen.quantity",
                    new PropertyModel(item.getModelObject(), "biospecimen.quantity")) {
                private static final long serialVersionUID = 1L;

                @Override
                public <C> IConverter<C> getConverter(Class<C> type) {
                    DoubleConverter doubleConverter = new DoubleConverter();
                    NumberFormat numberFormat = NumberFormat.getInstance();
                    numberFormat.setMinimumFractionDigits(1);
                    doubleConverter.setNumberFormat(getLocale(), numberFormat);
                    return (IConverter<C>) doubleConverter;
                }
            };
            initUnitDdc(item);
            initTreatmentTypeDdc(item);
            concentrationTxtFld = new TextField<Number>("biospecimen.concentration",
                    new PropertyModel(item.getModelObject(), "biospecimen.concentration"));

            // Added onchange events to ensure model updated when any change made
            item.add(numberToCreateTxtFld.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(bioCollectionDdc.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(sampleTypeDdc.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(sampleDateTxtFld.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(quantityTxtFld.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(unitDdc.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(treatmentTypeDdc.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(concentrationTxtFld.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));

            // Copy button allows entire row details to be copied
            item.add(new AjaxEditorButton(Constants.COPY) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onError(AjaxRequestTarget target, Form<?> form) {
                    target.add(feedbackPanel);
                }

                @Override
                protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                    BatchBiospecimenVO batchBiospecimenVo = new BatchBiospecimenVO();
                    try {
                        batchBiospecimenVo.setNumberToCreate(item.getModelObject().getNumberToCreate());
                        PropertyUtils.copyProperties(batchBiospecimenVo.getBiospecimen(),
                                item.getModelObject().getBiospecimen());
                        listEditor.addItem(batchBiospecimenVo);
                        target.add(form);
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    } catch (InvocationTargetException e) {
                        e.printStackTrace();
                    } catch (NoSuchMethodException e) {
                        e.printStackTrace();
                    }
                }
            }.setDefaultFormProcessing(false));

            item.add(new AjaxEditorButton(Constants.DELETE) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onError(AjaxRequestTarget target, Form<?> form) {
                    target.add(feedbackPanel);
                }

                @Override
                protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                    listEditor.removeItem(item);
                    target.add(form);
                }
            }.setDefaultFormProcessing(false).setVisible(item.getIndex() > 0));

            item.add(new AttributeModifier(Constants.CLASS, new AbstractReadOnlyModel() {

                private static final long serialVersionUID = 1L;

                @Override
                public String getObject() {
                    return (item.getIndex() % 2 == 1) ? Constants.EVEN : Constants.ODD;
                }
            }));
        }

    };
    return listEditor;
}

From source file:au.org.theark.lims.web.component.biospecimen.batchcreate.form.ManualBatchCreateBiospecimenForm.java

License:Open Source License

/**
 * /*from   w  ww .ja v a 2  s .  c  om*/
 * @return the listEditor of BatchBiospecimen(s)
 */
public AbstractListEditor<BatchBiospecimenVO> buildListEditor() {
    listEditor = new AbstractListEditor<BatchBiospecimenVO>("batchBiospecimenList",
            new PropertyModel(this, "batchBiospecimenList")) {

        private static final long serialVersionUID = 1L;

        @SuppressWarnings("serial")
        @Override
        protected void onPopulateItem(final ListItem<BatchBiospecimenVO> item) {
            item.setOutputMarkupId(true);
            item.getModelObject().getBiospecimen()
                    .setLinkSubjectStudy(cpModel.getObject().getLinkSubjectStudy());
            item.getModelObject().getBiospecimen()
                    .setStudy(cpModel.getObject().getLinkSubjectStudy().getStudy());

            biospecimenUidTxtFld = new TextField<String>("biospecimen.biospecimenUid",
                    new PropertyModel(item.getModelObject(), "biospecimen.biospecimenUid"));

            initBioCollectionDdc(item);
            initSampleTypeDdc(item);

            sampleDateTxtFld = new DateTextField("biospecimen.sampleDate",
                    new PropertyModel(item.getModelObject(), "biospecimen.sampleDate"),
                    au.org.theark.core.Constants.DD_MM_YYYY);
            ArkDatePicker sampleDatePicker = new ArkDatePicker();
            sampleDatePicker.bind(sampleDateTxtFld);
            sampleDateTxtFld.add(sampleDatePicker);

            quantityTxtFld = new TextField<Double>("biospecimen.quantity",
                    new PropertyModel(item.getModelObject(), "biospecimen.quantity")) {
                private static final long serialVersionUID = 1L;

                @Override
                public <C> IConverter<C> getConverter(Class<C> type) {
                    DoubleConverter doubleConverter = new DoubleConverter();
                    NumberFormat numberFormat = NumberFormat.getInstance();
                    numberFormat.setMinimumFractionDigits(1);
                    doubleConverter.setNumberFormat(getLocale(), numberFormat);
                    return (IConverter<C>) doubleConverter;
                }
            };
            initUnitDdc(item);
            initTreatmentTypeDdc(item);

            concentrationTxtFld = new TextField<Number>("biospecimen.concentration",
                    new PropertyModel(item.getModelObject(), "biospecimen.concentration"));

            // Added onchange events to ensure model updated when any change made
            item.add(biospecimenUidTxtFld.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    // Check BiospecimenUID is unique
                    String biospecimenUid = (getComponent().getDefaultModelObject().toString() != null
                            ? getComponent().getDefaultModelObject().toString()
                            : new String());
                    Biospecimen biospecimen = iLimsService.getBiospecimenByUid(biospecimenUid,
                            item.getModelObject().getBiospecimen().getStudy());
                    if (biospecimen != null && biospecimen.getId() != null) {
                        ManualBatchCreateBiospecimenForm.this
                                .error("Biospecimen UID must be unique. Please try again.");
                        target.focusComponent(getComponent());
                    }
                    target.add(feedbackPanel);
                }
            }));

            item.add(bioCollectionDdc.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(sampleTypeDdc.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(sampleDateTxtFld.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(quantityTxtFld.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(unitDdc.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(treatmentTypeDdc.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));
            item.add(concentrationTxtFld.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            }));

            // Copy button allows entire row details to be copied
            item.add(new AjaxEditorButton(Constants.COPY) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onError(AjaxRequestTarget target, Form<?> form) {
                    target.add(feedbackPanel);
                }

                @Override
                protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                    BatchBiospecimenVO batchBiospecimenVo = new BatchBiospecimenVO();
                    try {
                        PropertyUtils.copyProperties(batchBiospecimenVo.getBiospecimen(),
                                item.getModelObject().getBiospecimen());
                        batchBiospecimenVo.getBiospecimen().setBiospecimenUid(new String());
                        listEditor.addItem(batchBiospecimenVo);
                        target.add(form);
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    } catch (InvocationTargetException e) {
                        e.printStackTrace();
                    } catch (NoSuchMethodException e) {
                        e.printStackTrace();
                    }
                }
            }.setDefaultFormProcessing(false));

            item.add(new AjaxEditorButton(Constants.DELETE) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onError(AjaxRequestTarget target, Form<?> form) {
                    target.add(feedbackPanel);
                }

                @Override
                protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                    listEditor.removeItem(item);
                    target.add(form);
                }
            }.setDefaultFormProcessing(false).setVisible(item.getIndex() > 0));

            item.add(new AttributeModifier(Constants.CLASS, new AbstractReadOnlyModel() {

                private static final long serialVersionUID = 1L;

                @Override
                public String getObject() {
                    return (item.getIndex() % 2 == 1) ? Constants.EVEN : Constants.ODD;
                }
            }));
        }

    };
    return listEditor;
}

From source file:au.org.theark.lims.web.component.panel.subject.SubjectDetailForm.java

License:Open Source License

public void initialiseDetailForm() {
    subjectUIDTxtFld = new TextField<String>("subjectUID",
            new PropertyModel<String>(getDefaultModel(), "subjectUID"));
    subjectUIDTxtFld.setOutputMarkupId(true);
    firstNameTxtFld = new TextField<String>("person.firstName",
            new PropertyModel<String>(getDefaultModel(), "person.firstName"));
    lastNameTxtFld = new TextField<String>("person.lastName",
            new PropertyModel<String>(getDefaultModel(), "person.lastName"));
    dateOfBirthTxtFld = new DateTextField("person.dateOfBirth",
            new PropertyModel<Date>(getDefaultModel(), "person.dateOfBirth"),
            au.org.theark.core.Constants.DD_MM_YYYY);
    addDetailFormComponents();//from   w ww.  j  a v  a  2 s . c om
}

From source file:com.doculibre.constellio.wicket.panels.admin.stats.CollectionStatsPanel.java

License:Open Source License

public CollectionStatsPanel(String id, final String collectionName) {
    super(id);/*w w w. ja  va 2s.c o m*/

    endDate = new Date();
    startDate = DateUtils.addMonths(endDate, -1);

    Form form = new Form("form") {
        @Override
        protected void onSubmit() {
            statsPanel.replaceWith(statsPanel = new CollectionStatsReportPanel(statsPanel.getId(),
                    collectionName, statsType, startDate, endDate, rows, includeFederatedCollections));
        }
    };
    add(form);

    IModel queryExcludeRegexpsModel = new Model() {
        @Override
        public Object getObject() {
            String result;
            AdminCollectionPanel adminCollectionPanel = (AdminCollectionPanel) findParent(
                    AdminCollectionPanel.class);
            RecordCollection collection = adminCollectionPanel.getCollection();
            CollectionStatsFilter statsFilter = collection.getStatsFilter();
            if (statsFilter != null) {
                StringBuffer sb = new StringBuffer();
                Set<String> existingRegexps = statsFilter.getQueryExcludeRegexps();
                for (String existingRegexp : existingRegexps) {
                    sb.append(existingRegexp);
                    sb.append("\n");
                }
                result = sb.toString();
            } else {
                result = null;
            }
            return result;
        }

        @Override
        public void setObject(Object object) {
            String queryExcludeRegexpsStr = (String) object;
            String[] newRegexpsArray = StringUtils.split(queryExcludeRegexpsStr, "\n");
            List<String> newRegexps = new ArrayList<String>();
            for (String newRegexp : newRegexpsArray) {
                newRegexps.add(newRegexp.trim());
            }

            AdminCollectionPanel adminCollectionPanel = (AdminCollectionPanel) findParent(
                    AdminCollectionPanel.class);
            RecordCollection collection = adminCollectionPanel.getCollection();
            CollectionStatsFilter statsFilter = collection.getStatsFilter();
            if (statsFilter == null) {
                statsFilter = new CollectionStatsFilter();
                statsFilter.setRecordCollection(collection);
                collection.setStatsFilter(statsFilter);
            }

            Set<String> existingRegexps = statsFilter.getQueryExcludeRegexps();
            if (!CollectionUtils.isEqualCollection(existingRegexps, newRegexps)) {
                RecordCollectionServices collectionServices = ConstellioSpringUtils
                        .getRecordCollectionServices();
                EntityManager entityManager = ConstellioPersistenceContext.getCurrentEntityManager();
                if (!entityManager.getTransaction().isActive()) {
                    entityManager.getTransaction().begin();
                }
                existingRegexps.clear();
                existingRegexps.addAll(newRegexps);
                collectionServices.makePersistent(collection, false);

                entityManager.getTransaction().commit();
            }
        }
    };

    form.add(new TextArea("queryExcludeRegexps", queryExcludeRegexpsModel));
    form.add(new DateTextField("startDate", new PropertyModel(this, "startDate"), "yyyy-MM-dd")
            .add(new DatePicker()));
    form.add(new DateTextField("endDate", new PropertyModel(this, "endDate"), "yyyy-MM-dd")
            .add(new DatePicker()));
    form.add(new TextField("rows", new PropertyModel(this, "rows"), Integer.class));
    form.add(new CheckBox("includeFederatedCollections",
            new PropertyModel(this, "includeFederatedCollections")) {
        @Override
        public boolean isVisible() {
            boolean visible = super.isVisible();
            if (visible) {
                AdminCollectionPanel adminCollectionPanel = (AdminCollectionPanel) findParent(
                        AdminCollectionPanel.class);
                RecordCollection collection = adminCollectionPanel.getCollection();
                visible = collection.isFederationOwner();
            }
            return visible ? visible : false;
        }
    });

    form.add(new DropDownChoice("statsType", new PropertyModel(this, "statsType"), StatsConstants.ALL_STATS,
            new StringResourceChoiceRenderer("statsType", this)));

    form.add(new Label("title", new PropertyModel(this, "statsType")));
    statsPanel = new AjaxLazyLoadPanel("statsPanel") {
        @Override
        public Component getLazyLoadComponent(String markupId) {
            return new CollectionStatsReportPanel(markupId, collectionName, statsType, startDate, endDate, rows,
                    includeFederatedCollections);
        }
    };
    form.add(statsPanel);
}

From source file:org.dcache.webadmin.view.panels.alarms.QueryPanel.java

License:Open Source License

private void addDateFields(AlarmTableProvider provider) {
    DateTextField beginning = new DateTextField("beginDate", new PropertyModel<Date>(provider, "after"), DATE);
    DatePicker dp = new DatePicker();
    dp.setShowOnFieldClick(true);/*from  ww w.ja  v  a  2 s .c o  m*/
    beginning.add(dp);
    add(beginning);
    DateTextField ending = new DateTextField("endDate", new PropertyModel<Date>(provider, "before"), DATE);
    dp = new DatePicker();
    dp.setShowOnFieldClick(true);
    ending.add(dp);
    add(ending);
}

From source file:org.patientview.radar.web.panels.DiagnosisPanel.java

License:Open Source License

public DiagnosisPanel(String id, final IModel<Long> radarNumberModel) {
    super(id);//from   ww w.ja va 2s . co m
    setOutputMarkupId(true);
    setOutputMarkupPlaceholderTag(true);

    // Set up model
    // Set up loadable detachable, working for null radar numbers (new patients) and existing
    final CompoundPropertyModel<Diagnosis> model = new CompoundPropertyModel<Diagnosis>(
            new LoadableDetachableModel<Diagnosis>() {
                @Override
                protected Diagnosis load() {
                    if (radarNumberModel.getObject() != null) {
                        Long radarNumber;
                        try {
                            radarNumber = radarNumberModel.getObject();
                        } catch (ClassCastException e) {
                            Object obj = radarNumberModel.getObject();
                            radarNumber = Long.parseLong((String) obj);
                        }
                        Diagnosis diagnosis = diagnosisManager.getDiagnosisByRadarNumber(radarNumber);
                        if (diagnosis != null) {
                            return diagnosis;
                        } else {
                            return new Diagnosis();
                        }
                    } else {
                        return new Diagnosis();
                    }
                }
            });

    // Clinical presentation A - goes here in the file as referenced in form submit
    final DropDownChoice<ClinicalPresentation> clinicalPresentationA = new ClinicalPresentationDropDownChoice(
            "clinicalPresentationA");
    clinicalPresentationA.setOutputMarkupId(true);
    clinicalPresentationA.setOutputMarkupPlaceholderTag(true);

    final Form<Diagnosis> form = new Form<Diagnosis>("form", model) {
        @Override
        protected void onValidateModelObjects() {
            super.onValidateModelObjects();
            Diagnosis diagnosis = getModelObject();
            ClinicalPresentation presentationA = diagnosis.getClinicalPresentationA();
            ClinicalPresentation presentationB = diagnosis.getClinicalPresentationB();

            // Validate that the two aren't the same
            if (presentationA != null && presentationB != null && presentationA.equals(presentationB)) {
                clinicalPresentationA.error("A and B cannot be the same");
            }
        }

        @Override
        protected void onSubmit() {
            Diagnosis diagnosis = getModelObject();
            Date dateOfDiagnosis = diagnosis.getBiopsyDate();
            Long radarNumber;
            try {
                radarNumber = radarNumberModel.getObject();
            } catch (ClassCastException e) {
                Object obj = radarNumberModel.getObject();
                radarNumber = Long.parseLong((String) obj);
            }

            Patient patient = patientManager.getPatientByRadarNumber(radarNumber);
            Date dob = patient.getDob();
            if (dateOfDiagnosis != null && dob != null) {
                int age = Years.yearsBetween(new DateTime(dob), new DateTime(dateOfDiagnosis)).getYears();
                diagnosis.setAgeAtDiagnosis(age);
            }
            diagnosisManager.saveDiagnosis(diagnosis);

            // additional significant diagnosis needs to carry through to clinical data
            List<ClinicalData> clinicalDataList = clinicalDataManager
                    .getClinicalDataByRadarNumber(diagnosis.getRadarNumber());
            if (clinicalDataList.isEmpty()) {
                ClinicalData clinicalData = new ClinicalData();
                clinicalData.setSequenceNumber(1);
                clinicalData.setRadarNumber(diagnosis.getRadarNumber());
                clinicalDataList.add(clinicalData);
            }

            for (ClinicalData clinicalData : clinicalDataList) {
                clinicalData.setSignificantDiagnosis1(diagnosis.getSignificantDiagnosis1());
                clinicalData.setSignificantDiagnosis2(diagnosis.getSignificantDiagnosis2());
                clinicalDataManager.saveClinicalDate(clinicalData);
            }

        }
    };
    add(form);

    final List<Component> componentsToUpdate = new ArrayList<Component>();

    Label successLabel = RadarComponentFactory.getSuccessMessageLabel("successMessage", form,
            componentsToUpdate);
    Label successLabelDown = RadarComponentFactory.getSuccessMessageLabel("successMessageDown", form,
            componentsToUpdate);

    Label errorLabel = RadarComponentFactory.getErrorMessageLabel("errorMessage", form, componentsToUpdate);
    Label errorLabelDown = RadarComponentFactory.getErrorMessageLabel("errorMessageDown", form,
            componentsToUpdate);

    TextField<Long> radarNumber = new TextField<Long>("radarNumber");
    radarNumber.setEnabled(false);
    form.add(radarNumber);

    TextField hospitalNumber = new TextField("hospitalNumber",
            RadarModelFactory.getHospitalNumberModel(radarNumberModel, patientManager));
    form.add(hospitalNumber);

    TextField firstName = new TextField("firstName",
            RadarModelFactory.getFirstNameModel(radarNumberModel, patientManager));
    form.add(firstName);

    TextField surname = new TextField("surname",
            RadarModelFactory.getSurnameModel(radarNumberModel, patientManager));
    form.add(surname);

    TextField dob = new DateTextField("dateOfBirth",
            RadarModelFactory.getDobModel(radarNumberModel, patientManager), RadarApplication.DATE_PATTERN);
    form.add(dob);

    DropDownChoice<DiagnosisCode> diagnosisCodeDropDownChoice = new DropDownChoice<DiagnosisCode>(
            "diagnosisCode", diagnosisManager.getDiagnosisCodes(),
            new ChoiceRenderer<DiagnosisCode>("abbreviation", "id"));
    diagnosisCodeDropDownChoice.setEnabled(false);
    form.add(diagnosisCodeDropDownChoice);

    form.add(new TextArea("text"));

    form.add(new Label("diagnosisOrBiopsy", new LoadableDetachableModel<Object>() {
        @Override
        protected Object load() {
            Diagnosis diagnosis = model.getObject();
            if (diagnosis.getDiagnosisCode() != null) {
                return diagnosis.getDiagnosisCode().getId().equals(SRNS_ID) ? "diagnosis" : "original biopsy";
            }
            return "";
        }
    }));

    // this field is also used for date of diagnosis
    RadarDateTextField biopsyDate = new RadarDateTextField("biopsyDate", form, componentsToUpdate);

    form.add(biopsyDate);

    RadarDateTextField esrfDate = new RadarDateTextField("esrfDate", form, componentsToUpdate);
    form.add(esrfDate);

    TextField ageAtDiagnosis = new TextField("ageAtDiagnosis");
    ageAtDiagnosis.setOutputMarkupId(true);
    ageAtDiagnosis.setOutputMarkupPlaceholderTag(true);
    form.add(ageAtDiagnosis);
    componentsToUpdate.add(ageAtDiagnosis);
    form.add(new CheckBox("prepubertalAtDiagnosis"));

    final RadarTextFieldWithValidation heightAtDiagnosis = new RadarTextFieldWithValidation("heightAtDiagnosis",
            new RangeValidator<Double>(RadarApplication.MIN_HEIGHT, RadarApplication.MAX_HEIGHT), form,
            componentsToUpdate);
    form.add(heightAtDiagnosis);

    // Clinical presentation B - A is further up the file
    final DropDownChoice<ClinicalPresentation> clinicalPresentationB = new ClinicalPresentationDropDownChoice(
            "clinicalPresentationB");
    clinicalPresentationB.setOutputMarkupId(true);
    clinicalPresentationB.setOutputMarkupPlaceholderTag(true);

    form.add(clinicalPresentationA, clinicalPresentationB);
    form.add(new RadarDateTextField("onsetSymptomsDate", form, componentsToUpdate));

    ComponentFeedbackPanel clinicalPresentationFeedback = new ComponentFeedbackPanel(
            "clinicalPresentationFeedback", clinicalPresentationA);
    clinicalPresentationFeedback.setOutputMarkupId(true);
    clinicalPresentationFeedback.setOutputMarkupPlaceholderTag(true);
    form.add(clinicalPresentationFeedback);

    // Steroid resistance radio groups
    RadioGroup steroidRadioGroup = new RadioGroup("steroidResistance") {
        @Override
        public boolean isVisible() {
            DiagnosisCode diagnosisCode = model.getObject().getDiagnosisCode();
            if (diagnosisCode != null) {
                return diagnosisCode.getId().equals(SRNS_ID);
            } else {
                return false;
            }

        }
    };
    steroidRadioGroup.setRequired(true);
    steroidRadioGroup.add(new Radio<Diagnosis.SteroidResistance>("primarySteroidResistance",
            new Model<Diagnosis.SteroidResistance>(Diagnosis.SteroidResistance.PRIMARY)));
    steroidRadioGroup.add(new Radio<Diagnosis.SteroidResistance>("secondarySteroidResistance",
            new Model<Diagnosis.SteroidResistance>(Diagnosis.SteroidResistance.SECONDARY)));
    steroidRadioGroup.add(new Radio<Diagnosis.SteroidResistance>("presumedSteroidResistance",
            new Model<Diagnosis.SteroidResistance>(Diagnosis.SteroidResistance.PRESUMED)));
    steroidRadioGroup.add(new Radio<Diagnosis.SteroidResistance>("biopsyProven",
            new Model<Diagnosis.SteroidResistance>(Diagnosis.SteroidResistance.BPS)));
    form.add(steroidRadioGroup);

    // Construct feedback panel
    final ComponentFeedbackPanel steroidFeedbackPanel = new ComponentFeedbackPanel("steroidResistanceFeedback",
            steroidRadioGroup);
    steroidFeedbackPanel.setOutputMarkupPlaceholderTag(true);
    form.add(steroidFeedbackPanel);
    steroidRadioGroup.setOutputMarkupPlaceholderTag(true);
    steroidRadioGroup.add(steroidFeedbackPanel);
    componentsToUpdate.add(steroidFeedbackPanel);

    // Additional significant diagnosis
    form.add(new TextField("significantDiagnosis1"));
    form.add(new TextField("significantDiagnosis2"));

    // Biopsy Diagnosis visibilities
    IModel<String> biopsyLabelModel = new LoadableDetachableModel<String>() {
        @Override
        protected String load() {
            Diagnosis diagnosis = model.getObject();
            if (diagnosis.getDiagnosisCode() != null) {
                if (diagnosis.getDiagnosisCode().getId().equals(SRNS_ID)) {
                    return "Biopsy Diagnosis";
                } else {
                    return "Biopsy Proven Diagnosis";
                }
            } else {
                return "";
            }
        }
    };

    IModel<List> biopsyDiagnosisModel = new LoadableDetachableModel<List>() {
        @Override
        protected List load() {
            Diagnosis diagnosis = model.getObject();
            if (diagnosis.getDiagnosisCode() != null) {
                if (diagnosis.getDiagnosisCode().getId().equals(SRNS_ID)) {
                    return Arrays.asList(Diagnosis.BiopsyDiagnosis.MINIMAL_CHANGE,
                            Diagnosis.BiopsyDiagnosis.FSGS, Diagnosis.BiopsyDiagnosis.MESANGIAL_HYPERTROPHY,
                            Diagnosis.BiopsyDiagnosis.OTHER);
                } else {
                    return Arrays.asList(Diagnosis.BiopsyDiagnosis.YES, Diagnosis.BiopsyDiagnosis.NO);
                }
            }
            return Collections.emptyList();
        }
    };

    DropDownChoice biopsyDiagnosis = new DropDownChoice("biopsyProvenDiagnosis", biopsyDiagnosisModel,
            new ChoiceRenderer("label", "id"));

    Label biopsyDiagnosisLabel = new Label("biopsyDiagnosisLabel", biopsyLabelModel);

    form.add(biopsyDiagnosis, biopsyDiagnosisLabel);

    Diagnosis diagnosis = model.getObject();
    boolean showOtherDetailsOnInit;
    showOtherDetailsOnInit = diagnosis.getMutationYorN9() == Diagnosis.MutationYorN.Y;
    final IModel<Boolean> otherDetailsVisibilityModel = new Model<Boolean>(showOtherDetailsOnInit);

    boolean showMoreDetailsOnInit = false;
    if (diagnosis.getMutationYorN1() == Diagnosis.MutationYorN.Y
            || diagnosis.getMutationYorN2() == Diagnosis.MutationYorN.Y
            || diagnosis.getMutationYorN3() == Diagnosis.MutationYorN.Y
            || diagnosis.getMutationYorN4() == Diagnosis.MutationYorN.Y
            || diagnosis.getMutationYorN5() == Diagnosis.MutationYorN.Y
            || diagnosis.getMutationYorN6() == Diagnosis.MutationYorN.Y
            || diagnosis.getMutationYorN7() == Diagnosis.MutationYorN.Y
            || diagnosis.getMutationYorN8() == Diagnosis.MutationYorN.Y) {

        showMoreDetailsOnInit = true;
    }

    final IModel<Boolean> moreDetailsVisibilityModel = new Model<Boolean>(showMoreDetailsOnInit);

    WebMarkupContainer geneMutationContainer = new WebMarkupContainer("geneMutationContainer") {
        @Override
        public boolean isVisible() {
            Diagnosis diagnosis = model.getObject();
            if (diagnosis.getDiagnosisCode() != null) {
                return diagnosis.getDiagnosisCode().getId().equals(SRNS_ID);
            }
            return false;
        }
    };

    WebMarkupContainer mutationContainer = new WebMarkupContainer("mutationContainer");

    form.add(geneMutationContainer);

    Label geneMutationLabel = new Label("geneMutationLabel", "Gene Mutation");

    geneMutationContainer.add(geneMutationLabel);
    geneMutationContainer.add(mutationContainer);

    // Gene mutations
    mutationContainer
            .add(new DiagnosisGeneMutationPanel("nphs1Container", 1, (CompoundPropertyModel) form.getModel(),
                    otherDetailsVisibilityModel, moreDetailsVisibilityModel, componentsToUpdate));

    mutationContainer
            .add(new DiagnosisGeneMutationPanel("nphs2Container", 2, (CompoundPropertyModel) form.getModel(),
                    otherDetailsVisibilityModel, moreDetailsVisibilityModel, componentsToUpdate));

    mutationContainer
            .add(new DiagnosisGeneMutationPanel("nphs3Container", 3, (CompoundPropertyModel) form.getModel(),
                    otherDetailsVisibilityModel, moreDetailsVisibilityModel, componentsToUpdate));

    mutationContainer
            .add(new DiagnosisGeneMutationPanel("wt1Container", 4, (CompoundPropertyModel) form.getModel(),
                    otherDetailsVisibilityModel, moreDetailsVisibilityModel, componentsToUpdate));

    mutationContainer
            .add(new DiagnosisGeneMutationPanel("cd2apContainer", 5, (CompoundPropertyModel) form.getModel(),
                    otherDetailsVisibilityModel, moreDetailsVisibilityModel, componentsToUpdate));

    mutationContainer
            .add(new DiagnosisGeneMutationPanel("trpc6Container", 6, (CompoundPropertyModel) form.getModel(),
                    otherDetailsVisibilityModel, moreDetailsVisibilityModel, componentsToUpdate));

    mutationContainer
            .add(new DiagnosisGeneMutationPanel("actn4Container", 7, (CompoundPropertyModel) form.getModel(),
                    otherDetailsVisibilityModel, moreDetailsVisibilityModel, componentsToUpdate));

    mutationContainer
            .add(new DiagnosisGeneMutationPanel("lamb2Container", 8, (CompoundPropertyModel) form.getModel(),
                    otherDetailsVisibilityModel, moreDetailsVisibilityModel, componentsToUpdate));

    mutationContainer
            .add(new DiagnosisGeneMutationPanel(OTHER_CONTAINER_ID, 9, (CompoundPropertyModel) form.getModel(),
                    otherDetailsVisibilityModel, moreDetailsVisibilityModel, componentsToUpdate));

    // Other gene mutation container
    MarkupContainer otherGeneMutationContainer = new WebMarkupContainer("otherGeneMutationContainer") {

        @Override
        public boolean isVisible() {
            return otherDetailsVisibilityModel.getObject();
        }
    };

    otherGeneMutationContainer.setOutputMarkupId(true);
    otherGeneMutationContainer.setOutputMarkupPlaceholderTag(true);

    otherGeneMutationContainer.add(new TextArea("otherGeneMutation"));

    geneMutationContainer.add(otherGeneMutationContainer);

    // more details
    MarkupContainer moreDetailsContainer = new WebMarkupContainer("moreDetailsContainer") {

        @Override
        public boolean isVisible() {
            return moreDetailsVisibilityModel.getObject();
        }
    };
    moreDetailsContainer.setOutputMarkupId(true);
    moreDetailsContainer.setOutputMarkupPlaceholderTag(true);
    moreDetailsContainer.add(new TextArea("moreDetails", new Model()));
    geneMutationContainer.add(moreDetailsContainer);
    componentsToUpdate.add(moreDetailsContainer);

    componentsToUpdate.add(otherGeneMutationContainer);

    boolean showKaroTypeOtherOnInit = false;
    if (diagnosis.getKarotype() != null) {
        showKaroTypeOtherOnInit = diagnosis.getKarotype().getId().equals(KAROTYPE_OTHER_ID);
    }
    final IModel<Boolean> karoTypeOtherVisibilityModel = new Model<Boolean>(showKaroTypeOtherOnInit);

    // Add Karotype
    DropDownChoice<Karotype> karotypeDropDownChoice = new DropDownChoice<Karotype>("karotype",
            diagnosisManager.getKarotypes(), new ChoiceRenderer<Karotype>("description", "id"));

    WebMarkupContainer karoTypeContainer = new WebMarkupContainer("karoTypeContainer") {
        @Override
        public boolean isVisible() {
            Diagnosis diagnosis = model.getObject();
            if (diagnosis.getDiagnosisCode() != null) {
                return diagnosis.getDiagnosisCode().getId().equals(SRNS_ID);
            }
            return false;
        }
    };
    karoTypeContainer.add(karotypeDropDownChoice);
    form.add(karoTypeContainer);

    karotypeDropDownChoice.add(new AjaxFormComponentUpdatingBehavior("onChange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Diagnosis diagnosis = model.getObject();
            Karotype karotype = diagnosis.getKarotype();
            if (karotype != null) {
                karoTypeOtherVisibilityModel.setObject(karotype.getId().equals(KAROTYPE_OTHER_ID));
                ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
            }
        }
    });

    // karotype other
    MarkupContainer karoTypeOtherContainer = new WebMarkupContainer("karoTypeOtherContainer") {
        @Override
        public boolean isVisible() {
            return karoTypeOtherVisibilityModel.getObject();
        }
    };
    karoTypeOtherContainer.setOutputMarkupId(true);
    karoTypeOtherContainer.setOutputMarkupPlaceholderTag(true);
    karoTypeOtherContainer.add(new TextArea("karoTypeOtherText"));
    componentsToUpdate.add(karoTypeOtherContainer);
    form.add(karoTypeOtherContainer);

    // Parental consanguinity and family history
    form.add(new YesNoDropDownChoice("parentalConsanguinity"));

    YesNoDropDownChoice familyHistory = new YesNoDropDownChoice("familyHistory");

    boolean showFamilyOnInit = false;
    showFamilyOnInit = diagnosis.getFamilyHistory() == Diagnosis.YesNo.YES;
    final IModel<Boolean> familyVisibilityModel = new Model<Boolean>(showFamilyOnInit);

    familyHistory.add(new AjaxFormComponentUpdatingBehavior("onChange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Diagnosis diagnosis = model.getObject();
            if (diagnosis.getFamilyHistory() != null) {
                familyVisibilityModel.setObject(diagnosis.getFamilyHistory() == Diagnosis.YesNo.YES);
            }
            ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
        }
    });

    form.add(familyHistory);
    // Family history containers
    form.add(new DiagnosisRelativePanel("relative1Container", 1, (CompoundPropertyModel) form.getModel(),
            familyVisibilityModel, componentsToUpdate));
    form.add(new DiagnosisRelativePanel("relative2Container", 2, (CompoundPropertyModel) form.getModel(),
            familyVisibilityModel, componentsToUpdate));
    form.add(new DiagnosisRelativePanel("relative3Container", 3, (CompoundPropertyModel) form.getModel(),
            familyVisibilityModel, componentsToUpdate));
    form.add(new DiagnosisRelativePanel("relative4Container", 4, (CompoundPropertyModel) form.getModel(),
            familyVisibilityModel, componentsToUpdate));
    form.add(new DiagnosisRelativePanel("relative5Container", 5, (CompoundPropertyModel) form.getModel(),
            familyVisibilityModel, componentsToUpdate));
    form.add(new DiagnosisRelativePanel("relative6Container", 6, (CompoundPropertyModel) form.getModel(),
            familyVisibilityModel, componentsToUpdate));

    componentsToUpdate.add(clinicalPresentationFeedback);

    Label radarFamilyLabel = new Label("radarFamilyLabel", "RaDaR No") {

        @Override
        public boolean isVisible() {
            return familyVisibilityModel.getObject();
        }
    };
    radarFamilyLabel.setOutputMarkupId(true);
    radarFamilyLabel.setOutputMarkupPlaceholderTag(true);
    componentsToUpdate.add(radarFamilyLabel);
    form.add(radarFamilyLabel);

    DiagnosisAjaxSubmitLink save = new DiagnosisAjaxSubmitLink("save") {
        @Override
        protected List<? extends Component> getComponentsToUpdate() {
            return componentsToUpdate;
        }
    };

    DiagnosisAjaxSubmitLink saveDown = new DiagnosisAjaxSubmitLink("saveDown") {

        @Override
        protected List<? extends Component> getComponentsToUpdate() {
            return componentsToUpdate;
        }
    };

    form.add(save, saveDown);
}

From source file:org.patientview.radar.web.panels.firstvisit.ClinicalPicturePanel.java

License:Open Source License

public ClinicalPicturePanel(String id, final IModel<Long> radarNumberModel, final boolean isFirstVisit) {

    super(id);/*from  w  w w .  j  a  v  a2s  .  c  o  m*/
    setOutputMarkupId(true);
    setOutputMarkupPlaceholderTag(true);

    // set srns elements to hide
    srnsElementsToHide = Arrays.asList(URTICARIA_CONTAINER_ID, URTICARIA_DETAIL_CONTAINER_ID,
            PARTIAL_LIPODYSTROPHY_CONTAINER_ID, PRECEEDING_INFECTION_CONTAINER_ID,
            PRECEEDING_INFECTION_DETAIL_CONTAINER_ID, CHRONIC_INFECTION_ACTIVE_CONTAINER_ID,
            CHRONIC_INFECTION_DETAIL_CONTAINER_ID);

    // set mpgn elements to hide
    mpgnElementsToHide = Arrays.asList(THROMBOSIS_CONTAINER_ID, PERITONITIS_CONTAINER_ID,
            PULMONARY_OEDEMA_CONTAINER_ID, DIABETES_TYPE_CONTAINER_ID, RASH_CONTAINER_ID,
            RASH_DETAIL_CONTAINER_ID, POSSIBLE_IMMUNISATION_TRIGGER_CONTAINER_ID, PHENOTYPE_CONTAINER_1,
            PHENOTYPE_CONTAINER_2, PHENOTYPE_CONTAINER_3, PHENOTYPE_CONTAINER_4);

    // set srns elements to hide on follow up
    srnsElementsToHideFollowup = Arrays.asList(PATIENT_DETAILS_CONTAINER);

    final WebMarkupContainer clinicalPictureContainer = new WebMarkupContainer("clinicalPictureContainer");
    clinicalPictureContainer.setVisible(isFirstVisit);
    clinicalPictureContainer.setOutputMarkupId(true);
    clinicalPictureContainer.setOutputMarkupPlaceholderTag(true);
    add(clinicalPictureContainer);

    final TextField<Double> diastolicBloodPressure = new TextField<Double>("diastolicBloodPressure");

    final CompoundPropertyModel<ClinicalData> firstVisitModel = new CompoundPropertyModel<ClinicalData>(
            new LoadableDetachableModel<ClinicalData>() {
                @Override
                protected ClinicalData load() {
                    if (radarNumberModel.getObject() != null) {
                        // If we have a radar number get the list from DAO
                        ClinicalData clinicalData;
                        clinicalData = clinicalDataManager
                                .getFirstClinicalDataByRadarNumber(radarNumberModel.getObject());

                        if (clinicalData != null) {
                            return clinicalData;
                        }
                    }
                    // By default just return new one
                    ClinicalData clinicalDataNew = new ClinicalData();
                    clinicalDataNew.setSequenceNumber(1);
                    return clinicalDataNew;
                }
            });

    final IModel<ClinicalData> followUpModel = new LoadableDetachableModel<ClinicalData>() {
        private Long id;

        @Override
        protected ClinicalData load() {
            if (id == null) {
                return new ClinicalData();
            } else {
                return clinicalDataManager.getClinicalData(id);
            }
        }

        @Override
        public void detach() {
            ClinicalData clinicalData = getObject();
            if (clinicalData != null) {
                id = clinicalData.getId();
            }
            super.detach();
        }
    };

    final IModel<ClinicalData> formModel;
    if (isFirstVisit) {
        formModel = firstVisitModel;
    } else {
        formModel = new CompoundPropertyModel<ClinicalData>(followUpModel);
    }

    IModel<List> clinicalPictureListModel = new AbstractReadOnlyModel<List>() {
        @Override
        public List getObject() {

            if (radarNumberModel.getObject() != null) {
                List list = clinicalDataManager.getClinicalDataByRadarNumber(radarNumberModel.getObject());
                return !list.isEmpty() ? list : Collections.emptyList();
            }

            return Collections.emptyList();
        }
    };

    WebMarkupContainer followupContainer = new WebMarkupContainer("followupContainer");
    followupContainer.setVisible(!isFirstVisit);
    followupContainer.setOutputMarkupPlaceholderTag(true);

    final DropDownChoice clinicalPicturesSwitcher = new DropDownChoice("clinicalPicturesSwitcher",
            followUpModel, clinicalPictureListModel, new DateChoiceRenderer("clinicalPictureDate", "id") {
                @Override
                protected Date getDate(Object object) {
                    return ((ClinicalData) object).getClinicalPictureDate();
                }
            });

    clinicalPicturesSwitcher.setNullValid(true);

    clinicalPicturesSwitcher.setOutputMarkupId(true);
    clinicalPictureContainer.setOutputMarkupPlaceholderTag(true);
    followupContainer.add(clinicalPicturesSwitcher);
    clinicalPicturesSwitcher.add(new AjaxFormComponentUpdatingBehavior("onChange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            clinicalPictureContainer.setVisible(true);
            target.add(clinicalPictureContainer);

        }
    });

    AjaxLink addNew = new AjaxLink("addNew") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            ClinicalData clinicalData = new ClinicalData();
            Diagnosis daignosis = RadarModelFactory.getDiagnosisModel(radarNumberModel, diagnosisManager)
                    .getObject();
            if (daignosis != null) {
                clinicalData.setSignificantDiagnosis1(daignosis.getSignificantDiagnosis1());
                clinicalData.setSignificantDiagnosis2(daignosis.getSignificantDiagnosis2());
            }

            ClinicalData firstClinicalData = clinicalDataManager
                    .getFirstClinicalDataByRadarNumber(radarNumberModel.getObject());
            if (firstClinicalData != null) {
                clinicalData.setPhenotype1(firstClinicalData.getPhenotype1());
                clinicalData.setPhenotype2(firstClinicalData.getPhenotype2());
                clinicalData.setPhenotype3(firstClinicalData.getPhenotype3());
                clinicalData.setPhenotype4(firstClinicalData.getPhenotype4());
            }

            formModel.setObject(clinicalData);
            clinicalPictureContainer.setVisible(true);
            clinicalPicturesSwitcher.clearInput();
            target.add(clinicalPictureContainer, clinicalPicturesSwitcher);

        }
    };

    followupContainer.add(addNew);
    add(followupContainer);

    final List<Component> componentsToUpdate = new ArrayList<Component>();
    if (clinicalPicturesSwitcher.isVisible()) {
        componentsToUpdate.add(clinicalPicturesSwitcher);
    }

    final Form<ClinicalData> form = new Form<ClinicalData>("form", formModel) {
        @Override
        protected void onValidateModelObjects() {
            super.onValidateModelObjects();
            ClinicalData clinicalData = getModelObject();
            Integer systolicBloodPressureVal = clinicalData.getSystolicBloodPressure();
            Integer diastolicBloodPressureVal = clinicalData.getDiastolicBloodPressure();
            if (systolicBloodPressureVal != null && diastolicBloodPressureVal != null) {
                if (!(systolicBloodPressureVal.compareTo(diastolicBloodPressureVal) > 0)) {
                    diastolicBloodPressure.error("This value has to be less than the first value");
                }
            }

        }

        @Override
        protected void onSubmit() {
            ClinicalData clinicalData = getModelObject();
            Long radarNumber;

            if (clinicalData.getRadarNumber() == null) {
                try {
                    radarNumber = radarNumberModel.getObject();
                } catch (ClassCastException e) {
                    Object obj = radarNumberModel.getObject();
                    radarNumber = Long.parseLong((String) obj);
                }

                clinicalData.setRadarNumber(radarNumber);
            }
            clinicalDataManager.saveClinicalDate(clinicalData);

            // if first visit - follow through phenotypes to following visit records
            if (isFirstVisit) {
                List<ClinicalData> clinicalDatas = clinicalDataManager
                        .getClinicalDataByRadarNumber(clinicalData.getRadarNumber());

                for (ClinicalData cd : clinicalDatas) {
                    // ignore first visit
                    if (clinicalData.getId().equals(cd.getId())) {
                        continue;
                    }
                    cd.setPhenotype1(clinicalData.getPhenotype1());
                    cd.setPhenotype2(clinicalData.getPhenotype2());
                    cd.setPhenotype3(clinicalData.getPhenotype3());
                    cd.setPhenotype4(clinicalData.getPhenotype4());
                    clinicalDataManager.saveClinicalDate(cd);
                }
            }
        }
    };

    clinicalPictureContainer.add(form);

    final IModel<Boolean> isSrnsModel = new AbstractReadOnlyModel<Boolean>() {
        private DiagnosisCode diagnosisCode = null;

        @Override
        public Boolean getObject() {
            if (diagnosisCode == null) {
                if (radarNumberModel.getObject() != null) {
                    Diagnosis diagnosis = diagnosisManager
                            .getDiagnosisByRadarNumber(radarNumberModel.getObject());
                    diagnosisCode = diagnosis != null ? diagnosis.getDiagnosisCode() : null;
                }
            }

            if (diagnosisCode != null) {
                return diagnosisCode.getId().equals(DiagnosisPanel.SRNS_ID);
            }
            return false;
        }
    };

    Label successLabel = RadarComponentFactory.getSuccessMessageLabel("successMessage", form,
            componentsToUpdate);
    Label successLabelDown = RadarComponentFactory.getSuccessMessageLabel("successMessageDown", form,
            componentsToUpdate);

    Label errorLabel = RadarComponentFactory.getErrorMessageLabel("errorMessage", form, componentsToUpdate);
    Label errorLabelDown = RadarComponentFactory.getErrorMessageLabel("errorMessageDown", form,
            componentsToUpdate);

    TextField<Long> radarNumber = new TextField<Long>("radarNumber", radarNumberModel);
    radarNumber.setEnabled(false);
    form.add(radarNumber);

    form.add(new TextField("hospitalNumber",
            RadarModelFactory.getHospitalNumberModel(radarNumberModel, patientManager)));

    form.add(new TextField("diagnosis", new PropertyModel(
            RadarModelFactory.getDiagnosisCodeModel(radarNumberModel, diagnosisManager), "abbreviation")));

    form.add(new TextField("firstName", RadarModelFactory.getFirstNameModel(radarNumberModel, patientManager)));

    form.add(new TextField("surname", RadarModelFactory.getSurnameModel(radarNumberModel, patientManager)));

    form.add(new DateTextField("dob", RadarModelFactory.getDobModel(radarNumberModel, patientManager),
            RadarApplication.DATE_PATTERN));

    RadarRequiredDateTextField clinicalPictureDate = new RadarRequiredDateTextField("clinicalPictureDate", form,
            componentsToUpdate);
    form.add(clinicalPictureDate);

    RadarTextFieldWithValidation height = new RadarTextFieldWithValidation("height",
            new RangeValidator<Double>(RadarApplication.MIN_HEIGHT, RadarApplication.MAX_HEIGHT), form,
            componentsToUpdate);
    form.add(height);

    RadarTextFieldWithValidation weight = new RadarTextFieldWithValidation("weight",
            new RangeValidator<Double>(3.0, 100.0), form, componentsToUpdate);
    form.add(weight);
    // Blood pressure
    TextField<Double> systolicBloodPressure = new TextField("systolicBloodPressure");
    systolicBloodPressure.add(new RangeValidator<Integer>(50, 200));
    form.add(systolicBloodPressure);

    final ComponentFeedbackPanel systolicBloodPressureFeedback = new ComponentFeedbackPanel(
            "systolicBloodPressureFeedback", systolicBloodPressure);
    systolicBloodPressureFeedback.setOutputMarkupId(true);
    systolicBloodPressureFeedback.setOutputMarkupPlaceholderTag(true);
    form.add(systolicBloodPressureFeedback);

    diastolicBloodPressure.add(new RangeValidator<Integer>(20, 150));
    form.add(diastolicBloodPressure);

    final ComponentFeedbackPanel diastolicBloodPressureFeedback = new ComponentFeedbackPanel(
            "diastolicBloodPressureFeedback", diastolicBloodPressure);
    diastolicBloodPressureFeedback.setOutputMarkupId(true);
    diastolicBloodPressureFeedback.setOutputMarkupPlaceholderTag(true);
    form.add(diastolicBloodPressureFeedback);

    Component meanArterialPressure = new TextField("meanArterialPressure").setEnabled(false);
    meanArterialPressure.setOutputMarkupPlaceholderTag(true);
    meanArterialPressure.setOutputMarkupId(true);
    form.add(meanArterialPressure);
    componentsToUpdate.add(meanArterialPressure);

    WebMarkupContainer phenotypeContainer1 = new WebMarkupContainer(PHENOTYPE_CONTAINER_1) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    WebMarkupContainer phenotypeContainer2 = new WebMarkupContainer(PHENOTYPE_CONTAINER_2) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    WebMarkupContainer phenotypeContainer3 = new WebMarkupContainer(PHENOTYPE_CONTAINER_3) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    WebMarkupContainer phenotypeContainer4 = new WebMarkupContainer(PHENOTYPE_CONTAINER_4) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    phenotypeContainer1.add(new PhenotypeChooser("phenotype1"));
    phenotypeContainer2.add(new PhenotypeChooser("phenotype2"));
    phenotypeContainer3.add(new PhenotypeChooser("phenotype3"));
    phenotypeContainer4.add(new PhenotypeChooser("phenotype4"));

    form.add(phenotypeContainer1);
    form.add(phenotypeContainer2);
    form.add(phenotypeContainer3);
    form.add(phenotypeContainer4);

    form.add(new TextArea("comments"));
    form.add(new TextField("significantDiagnosis1"));
    form.add(new TextField("significantDiagnosis2"));

    // Yes/No/Unknown for the following
    WebMarkupContainer patientDetailsContainer = new WebMarkupContainer(PATIENT_DETAILS_CONTAINER) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    patientDetailsContainer.setOutputMarkupPlaceholderTag(true);
    form.add(patientDetailsContainer);

    patientDetailsContainer.add(new YesNoRadioGroup("oedema", true));
    patientDetailsContainer.add(new YesNoRadioGroup("hypovalaemia", true));
    patientDetailsContainer.add(new YesNoRadioGroup("fever", true));

    WebMarkupContainer thrombosisContainer = new WebMarkupContainer(THROMBOSIS_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    YesNoRadioGroup thrombosis = new YesNoRadioGroup("thrombosis", true);
    thrombosisContainer.add(thrombosis);
    patientDetailsContainer.add(thrombosisContainer);

    WebMarkupContainer peritonitisContainer = new WebMarkupContainer(PERITONITIS_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    peritonitisContainer.add(new YesNoRadioGroup("peritonitis", true));
    patientDetailsContainer.add(peritonitisContainer);

    WebMarkupContainer pulmonaryOedemaContainer = new WebMarkupContainer(PULMONARY_OEDEMA_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return isSrnsModel.getObject();
        }
    };
    pulmonaryOedemaContainer.add(new YesNoRadioGroup("pulmonaryOedema", true));
    patientDetailsContainer.add(pulmonaryOedemaContainer);
    patientDetailsContainer.add(new YesNoRadioGroup("hypertension", true));

    //urticaria
    boolean showUrticariaOnInit = form.getModelObject().getUrticaria() != null
            ? form.getModelObject().getUrticaria()
            : false;

    // only show if diag is mpgn/dd
    if (isSrnsModel.getObject().equals(true)) {
        showUrticariaOnInit = false;
    }

    final IModel<Boolean> showUrticariaIModel = new Model<Boolean>(showUrticariaOnInit);

    MarkupContainer urticariaDetailContainer = new WebMarkupContainer(URTICARIA_DETAIL_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            if (!hideElement(isFirstVisit, isSrnsModel.getObject(), getId())) {
                return showUrticariaIModel.getObject();
            }
            return false;
        }
    };
    componentsToUpdate.add(urticariaDetailContainer);

    urticariaDetailContainer.add(new TextArea("rashDetail")); // shares same field in db as rash detail It seems
    patientDetailsContainer.add(urticariaDetailContainer);
    urticariaDetailContainer.setOutputMarkupId(true);
    urticariaDetailContainer.setOutputMarkupPlaceholderTag(true);

    // More yes/no options
    WebMarkupContainer urticariaContainer = new WebMarkupContainer(URTICARIA_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    YesNoRadioGroup urticaria = new YesNoRadioGroup("urticaria", true);
    urticariaContainer.add(urticaria);
    patientDetailsContainer.add(urticariaContainer);
    urticaria.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            showUrticariaIModel.setObject(Boolean.TRUE.equals(form.getModelObject().getUrticaria()));
            ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
        }
    });

    // Diabetes
    WebMarkupContainer diabetesTypeContainer = new WebMarkupContainer(DIABETES_TYPE_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    diabetesTypeContainer.add(new DropDownChoice<ClinicalData.DiabetesType>("diabetesType",
            Arrays.asList(ClinicalData.DiabetesType.TYPE_I, ClinicalData.DiabetesType.TYPE_II,
                    ClinicalData.DiabetesType.NO),
            new ChoiceRenderer<ClinicalData.DiabetesType>("label", "id")));
    patientDetailsContainer.add(diabetesTypeContainer);

    boolean showRashDetailsOnInit = form.getModelObject().getRash() != null ? form.getModelObject().getRash()
            : false;
    // only show if diag is srns
    if (isSrnsModel.getObject().equals(false)) {
        showRashDetailsOnInit = false;
    }

    final IModel<Boolean> showRashDetailsIModel = new Model<Boolean>(showRashDetailsOnInit);

    // Rash details needs show/hide
    final MarkupContainer rashDetailContainer = new WebMarkupContainer(RASH_DETAIL_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            if (!hideElement(isFirstVisit, isSrnsModel.getObject(), getId())) {
                return showRashDetailsIModel.getObject();
            }
            return false;
        }
    };

    rashDetailContainer.add(new TextArea("rashDetail"));
    patientDetailsContainer.add(rashDetailContainer);
    rashDetailContainer.setOutputMarkupId(true);
    rashDetailContainer.setOutputMarkupPlaceholderTag(true);
    componentsToUpdate.add(rashDetailContainer);

    // More yes/no options
    WebMarkupContainer rashContainer = new WebMarkupContainer(RASH_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };
    YesNoRadioGroup rash = new YesNoRadioGroup("rash", true);
    rashContainer.add(rash);
    patientDetailsContainer.add(rashContainer);

    rash.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            showRashDetailsIModel.setObject(Boolean.TRUE.equals(form.getModelObject().getRash()));
            ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
        }
    });

    WebMarkupContainer possibleImmunisationTriggerContainer = new WebMarkupContainer(
            POSSIBLE_IMMUNISATION_TRIGGER_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    YesNoRadioGroup possibleImmunisationTrigger = new YesNoRadioGroup("possibleImmunisationTrigger", true);
    possibleImmunisationTriggerContainer.add(possibleImmunisationTrigger);
    patientDetailsContainer.add(possibleImmunisationTriggerContainer);

    WebMarkupContainer partialLipodystrophyContainer = new WebMarkupContainer(
            PARTIAL_LIPODYSTROPHY_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    YesNoRadioGroup partialLipodystrophy = new YesNoRadioGroup("partialLipodystrophy", true);

    partialLipodystrophyContainer.add(partialLipodystrophy);
    patientDetailsContainer.add(partialLipodystrophyContainer);

    WebMarkupContainer preceedingInfectionContainer = new WebMarkupContainer(
            PRECEEDING_INFECTION_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    // preceding infection
    boolean showPrecedingInfectionOnInit = form.getModelObject().getPreceedingInfection() != null
            ? form.getModelObject().getPreceedingInfection()
            : false;

    // only show if diag is mpgn/dd
    if (isSrnsModel.getObject().equals(true)) {
        showPrecedingInfectionOnInit = false;
    }

    final IModel<Boolean> showPrecedingInfectioModel = new Model<Boolean>(showPrecedingInfectionOnInit);

    YesNoRadioGroup preceedingInfection = new YesNoRadioGroup("preceedingInfection", true);
    preceedingInfectionContainer.add(preceedingInfection);
    preceedingInfection.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            showPrecedingInfectioModel
                    .setObject(Boolean.TRUE.equals(form.getModelObject().getPreceedingInfection()));
            ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
        }
    });
    patientDetailsContainer.add(preceedingInfectionContainer);

    // Preceeding infection show/hide
    MarkupContainer preceedingInfectionDetailContainer = new WebMarkupContainer(
            PRECEEDING_INFECTION_DETAIL_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return showPrecedingInfectioModel.getObject();
        }
    };
    TextAreaWithHelpText preceedingInfectionDetail = new TextAreaWithHelpText("preceedingInfectionDetail",
            "Enter details") {
        @Override
        public String getModelData() {
            ClinicalData clinicalData = formModel.getObject();
            return clinicalData != null ? clinicalData.getPreceedingInfectionDetail() != null
                    ? clinicalData.getPreceedingInfectionDetail()
                    : "" : "";
        }

        @Override
        public void setModelData(String data) {
            ClinicalData clinicalData = formModel.getObject();
            if (clinicalData != null) {
                clinicalData.setPreceedingInfectionDetail(data);
            }
        }
    };
    preceedingInfectionDetail.initBehaviour();
    preceedingInfectionDetailContainer.add(preceedingInfectionDetail);
    patientDetailsContainer.add(preceedingInfectionDetailContainer);
    componentsToUpdate.add(preceedingInfectionDetailContainer);
    preceedingInfectionDetailContainer.setOutputMarkupId(true);
    preceedingInfectionDetailContainer.setOutputMarkupPlaceholderTag(true);

    // chronic infection
    boolean showChronicOnInit = form.getModelObject().getChronicInfection() != null
            ? form.getModelObject().getChronicInfection()
            : false;

    // only show if diag is mpgn/dd
    if (isSrnsModel.getObject().equals(true)) {
        showChronicOnInit = false;
    }

    final IModel<Boolean> showChronicModel = new Model<Boolean>(showChronicOnInit);

    WebMarkupContainer chronicInfectionActiveContainer = new WebMarkupContainer(
            CHRONIC_INFECTION_ACTIVE_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            return !hideElement(isFirstVisit, isSrnsModel.getObject(), getId());
        }
    };

    YesNoRadioGroup chronicInfection = new YesNoRadioGroup("chronicInfection", true);
    chronicInfection.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            showChronicModel.setObject(Boolean.TRUE.equals(form.getModelObject().getChronicInfection()));
            ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
        }
    });
    chronicInfectionActiveContainer.add(chronicInfection);
    patientDetailsContainer.add(chronicInfectionActiveContainer);

    // Chronic infection show/hide
    MarkupContainer chronicInfectionDetailContainer = new WebMarkupContainer(
            CHRONIC_INFECTION_DETAIL_CONTAINER_ID) {
        @Override
        public boolean isVisible() {
            if (!hideElement(isFirstVisit, isSrnsModel.getObject(), getId())) {
                return showChronicModel.getObject();
            }
            return false;
        }
    };
    TextAreaWithHelpText chronicInfectionDetail = new TextAreaWithHelpText("chronicInfectionDetail",
            "Enter Details") {
        @Override
        public String getModelData() {
            ClinicalData clinicalData = formModel.getObject();
            return clinicalData != null ? clinicalData.getChronicInfectionDetail() != null
                    ? clinicalData.getChronicInfectionDetail()
                    : "" : "";
        }

        @Override
        public void setModelData(String data) {
            ClinicalData clinicalData = formModel.getObject();
            if (clinicalData != null) {
                clinicalData.setChronicInfectionDetail(data);
            }
        }
    };

    chronicInfectionDetail.initBehaviour();

    chronicInfectionDetailContainer.add(chronicInfectionDetail);
    componentsToUpdate.add(chronicInfectionDetailContainer);
    chronicInfectionDetailContainer.setOutputMarkupId(true);
    chronicInfectionDetailContainer.setOutputMarkupPlaceholderTag(true);

    patientDetailsContainer.add(chronicInfectionDetailContainer);

    boolean showOphthalmoscopyDetailsOnInit = form.getModelObject().getOphthalmoscopy() != null
            ? form.getModelObject().getOphthalmoscopy()
            : false;

    final IModel<Boolean> showOphthalmoscopyDetailsIModel = new Model<Boolean>(showOphthalmoscopyDetailsOnInit);

    YesNoRadioGroup ophthalmoscopy = new YesNoRadioGroup("ophthalmoscopy", true);
    patientDetailsContainer.add(ophthalmoscopy);
    ophthalmoscopy.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            showOphthalmoscopyDetailsIModel
                    .setObject(Boolean.TRUE.equals(form.getModelObject().getOphthalmoscopy()));
            ComponentHelper.updateComponentsIfParentIsVisible(target, componentsToUpdate);
        }
    });

    // Ophthalmoscopy show/hide
    MarkupContainer ophthalmoscopyDetailContainer = new WebMarkupContainer("ophthalmoscopyDetailContainer") {
        @Override
        public boolean isVisible() {
            return showOphthalmoscopyDetailsIModel.getObject();
        }
    };
    ophthalmoscopyDetailContainer.setOutputMarkupId(true);
    ophthalmoscopyDetailContainer.setOutputMarkupPlaceholderTag(true);
    componentsToUpdate.add(ophthalmoscopyDetailContainer);

    TextAreaWithHelpText ophthalmoscopyDetail = new TextAreaWithHelpText("ophthalmoscopyDetail",
            ClinicalData.OPHTHALMOSCOPY_HELP_TEXT) {
        @Override
        public String getModelData() {
            ClinicalData clinicalData = formModel.getObject();
            return clinicalData != null
                    ? clinicalData.getOphthalmoscopyDetail() != null ? clinicalData.getOphthalmoscopyDetail()
                            : ""
                    : "";
        }

        @Override
        public void setModelData(String data) {
            ClinicalData clinicalData = formModel.getObject();
            if (clinicalData != null) {
                clinicalData.setOphthalmoscopyDetail(data);
            }
        }
    };

    ophthalmoscopyDetail.initBehaviour();

    ophthalmoscopyDetailContainer.add(ophthalmoscopyDetail);

    patientDetailsContainer.add(ophthalmoscopyDetailContainer);

    componentsToUpdate.add(systolicBloodPressureFeedback);
    componentsToUpdate.add(diastolicBloodPressureFeedback);

    // Complications
    WebMarkupContainer complicationsContainer = new WebMarkupContainer("complicationsContainer") {
        @Override
        public boolean isVisible() {
            return !isFirstVisit && isSrnsModel.getObject();
        }
    };

    complicationsContainer.add(new YesNoRadioGroup("infectionNecessitatingHospitalisation", false, false));
    MarkupContainer infectionDetailContainer = new WebMarkupContainer("infectionDetailContainer");
    infectionDetailContainer.add(new TextArea("infectionDetail"));
    complicationsContainer.add(infectionDetailContainer);

    complicationsContainer.add(new YesNoRadioGroup("complicationThrombosis", false, false));
    MarkupContainer complicationThrombosisDetailContainer = new WebMarkupContainer(
            "complicationThrombosisContainer");
    complicationThrombosisDetailContainer.add(new TextArea("complicationThrombosisDetail"));
    complicationsContainer.add(complicationThrombosisDetailContainer);

    // Hypertension
    complicationsContainer.add(new YesNoRadioGroup("hypertension", true));

    // CKD stage
    complicationsContainer.add(new CkdStageRadioGroup("ckdStage"));
    form.add(complicationsContainer);

    // Listed for transplant?

    WebMarkupContainer listedForTransplantContainer = new WebMarkupContainer("listedForTransplantContainer") {
        @Override
        public boolean isVisible() {
            return !isFirstVisit && isSrnsModel.getObject();
        }
    };

    form.add(listedForTransplantContainer);
    listedForTransplantContainer.add(new YesNoRadioGroup("listedForTransplant"));

    ClinicalAjaxSubmitLink save = new ClinicalAjaxSubmitLink("save") {
        @Override
        protected List<? extends Component> getComponentsToUpdate() {
            return componentsToUpdate;
        }
    };

    ClinicalAjaxSubmitLink saveDown = new ClinicalAjaxSubmitLink("saveDown") {
        @Override
        protected List<? extends Component> getComponentsToUpdate() {
            return componentsToUpdate;
        }
    };

    form.add(save, saveDown);
}

From source file:org.patientview.radar.web.panels.firstvisit.FirstVisitLaboratoryResultsPanel.java

License:Open Source License

public FirstVisitLaboratoryResultsPanel(String id, IModel<Long> radarNumberModel) {
    super(id);//from  w w w  .  j  av a  2s.  c  o  m
    setOutputMarkupId(true);
    setOutputMarkupPlaceholderTag(true);

    // General details
    TextField<Long> radarNumber = new TextField<Long>("radarNumber", radarNumberModel);
    radarNumber.setEnabled(false);
    add(radarNumber);

    add(new TextField("hospitalNumber",
            RadarModelFactory.getHospitalNumberModel(radarNumberModel, patientManager)));

    add(new TextField("diagnosis", new PropertyModel(
            RadarModelFactory.getDiagnosisCodeModel(radarNumberModel, diagnosisManager), "abbreviation")));

    add(new TextField("firstName", RadarModelFactory.getFirstNameModel(radarNumberModel, patientManager)));
    add(new TextField("surname", RadarModelFactory.getSurnameModel(radarNumberModel, patientManager)));
    add(new DateTextField("dob", RadarModelFactory.getDobModel(radarNumberModel, patientManager),
            RadarApplication.DATE_PATTERN));

    add(new LaboratoryResultsPanel("formContainer", radarNumberModel, true, null, null));
}

From source file:org.patientview.radar.web.panels.firstvisit.FirstVisitTreatmentPanel.java

License:Open Source License

public FirstVisitTreatmentPanel(String id, IModel<Long> radarNumberModel) {
    super(id);/* ww w  . ja va2 s.co  m*/
    setOutputMarkupId(true);
    setOutputMarkupPlaceholderTag(true);
    // General details
    TextField<Long> radarNumber = new TextField<Long>("radarNumber", radarNumberModel);
    radarNumber.setEnabled(false);
    add(radarNumber);

    add(new TextField("hospitalNumber",
            RadarModelFactory.getHospitalNumberModel(radarNumberModel, patientManager)));

    add(new TextField("diagnosis", new PropertyModel(
            RadarModelFactory.getDiagnosisCodeModel(radarNumberModel, diagnosisManager), "abbreviation")));

    add(new TextField("firstName", RadarModelFactory.getFirstNameModel(radarNumberModel, patientManager)));
    add(new TextField("surname", RadarModelFactory.getSurnameModel(radarNumberModel, patientManager)));
    add(new DateTextField("dob", RadarModelFactory.getDobModel(radarNumberModel, patientManager),
            RadarApplication.DATE_PATTERN));

    add(new TreatmentPanel("treatmentPanel", radarNumberModel, true, null, null));
}