/** * @see org.openmrs.module.htmlformentry.element.HtmlGeneratorElement#generateHtml(org.openmrs.module.htmlformentry.FormEntryContext) */ @Override public String generateHtml(FormEntryContext context) { StringBuilder ret = new StringBuilder(); if (roleWidget != null) { ret.append(roleWidget.generateHtml(context)); if (context.getMode() != Mode.VIEW) ret.append(roleErrorWidget.generateHtml(context)); ret.append(": "); } Iterator<ErrorWidget> errorWidgetIterator = providerErrorWidgets.iterator(); for (Widget providerWidget : providerWidgets) { ret.append(providerWidget.generateHtml(context)); if (context.getMode() != Mode.VIEW) { ret.append(errorWidgetIterator.next().generateHtml(context)); } } return ret.toString(); }
/** * @see org.openmrs.module.htmlformentry.action.FormSubmissionControllerAction#validateSubmission(org.openmrs.module.htmlformentry.FormEntryContext, javax.servlet.http.HttpServletRequest) */ @Override public Collection<FormSubmissionError> validateSubmission(FormEntryContext context, HttpServletRequest submission) { if (!required) { return null; } EncounterRole role = encounterRole; Provider provider = null; List<FormSubmissionError> ret = new ArrayList<FormSubmissionError>(); if (roleWidget != null) { role = (EncounterRole) roleWidget.getValue(context, submission); if (role == null) ret.add(new FormSubmissionError(roleWidget, Context.getMessageSourceService().getMessage("htmlformentry.error.required"))); } boolean atLeastOneProviderSpecified = false; for (Widget providerWidget : providerWidgets) { if (providerWidget != null) { provider = (Provider) providerWidget.getValue(context, submission); if (provider != null) { atLeastOneProviderSpecified = true; } } } if (!atLeastOneProviderSpecified) { ret.add(new FormSubmissionError(providerWidgets.get(0), Context.getMessageSourceService().getMessage("htmlformentry.error.required"))); } return ret; }
roleWidget = new EncounterRoleWidget(); roleErrorWidget = new ErrorWidget(); context.registerWidget(roleWidget); providerWidget.setInitialValue(p); initialProviderSet = true; roleWidget.setInitialValue(roleAndProvider.getKey());
/** * @see org.openmrs.module.htmlformentry.action.FormSubmissionControllerAction#handleSubmission(org.openmrs.module.htmlformentry.FormEntrySession, javax.servlet.http.HttpServletRequest) */ @Override public void handleSubmission(FormEntrySession session, HttpServletRequest submission) { EncounterRole role = encounterRole; Provider provider = null; if (roleWidget != null) { role = (EncounterRole) roleWidget.getValue(session.getContext(), submission); } Set<Provider> currentProvidersForRole = session.getSubmissionActions().getCurrentEncounter().getProvidersByRole(role); for (Widget providerWidget : providerWidgets) { provider = (Provider) providerWidget.getValue(session.getContext(), submission); if (provider != null) { // if this provider it not currently one of the provider, add her if (currentProvidersForRole != null || !currentProvidersForRole.contains(provider)) { session.getSubmissionActions().getCurrentEncounter().addProvider(role, provider); } // we remove this provider so that we end up with a list of providers to void currentProvidersForRole.remove(provider); } } // now remove any current providers that we haven't found in the provider list for (Provider providerToRemove : currentProvidersForRole) { session.getSubmissionActions().getCurrentEncounter().removeProvider(role, providerToRemove); } }