use of org.openmrs.Concept in project openmrs-module-pihcore by PIH.
the class CauseOfDeathListTagHandler method getSubstitution.
@Override
protected String getSubstitution(FormEntrySession session, FormSubmissionController controllerActions, Map<String, String> parameters) throws BadFormDesignException {
Concept causeGroupConcept = HtmlFormEntryUtil.getConcept(CAUSES_OF_DEATH_CONCEPT);
List<Obs> existingObs = session.getContext().removeExistingObs(causeGroupConcept);
CodedOrFreeTextAnswerListWidget widget = new CodedOrFreeTextAnswerListWidget();
widget.setUiUtils((UiUtils) session.getAttribute("uiUtils"));
widget.setBetweenElementsCode("mirebalais.deathCertificate.due_to_or_following");
widget.setTitleCode("mirebalais.deathCertificate.cause_of_death");
widget.setPlaceholderCode("mirebalais.deathCertificate.cause_of_death_instructions");
widget.setContainerClasses("required");
if (parameters.get("locale") != null) {
widget.setLocale(parameters.get("locale"));
}
if (existingObs != null && existingObs.size() > 0) {
widget.setInitialValue(initialValue(existingObs));
}
session.getContext().registerWidget(widget);
ErrorWidget errorWidget = new ErrorWidget();
session.getContext().registerErrorWidget(widget, errorWidget);
session.getSubmissionController().addAction(new Action(widget, errorWidget, existingObs));
return widget.generateHtml(session.getContext());
}
use of org.openmrs.Concept in project openmrs-module-pihcore by PIH.
the class CauseOfDeathListTagHandler method initialValue.
private List<CodedOrFreeTextAnswer> initialValue(List<Obs> existingList) {
Concept codedCauseConcept = HtmlFormEntryUtil.getConcept(CODED_CAUSE_OF_DEATH_CONCEPT);
Concept nonCodedCauseConcept = HtmlFormEntryUtil.getConcept(NON_CODED_CAUSE_OF_DEATH_CONCEPT);
final Concept orderConcept = HtmlFormEntryUtil.getConcept(DIAGNOSIS_SEQUENCE_CONCEPT);
List<CodedOrFreeTextAnswer> list = new ArrayList<CodedOrFreeTextAnswer>();
Collections.sort(existingList, new Comparator<Obs>() {
@Override
public int compare(Obs left, Obs right) {
return OpenmrsUtil.compareWithNullAsGreatest(getMemberValueNumeric(orderConcept, left), getMemberValueNumeric(orderConcept, right));
}
});
for (Obs existing : existingList) {
Obs coded = findMember(existing, codedCauseConcept);
if (coded != null) {
list.add(new CodedOrFreeTextAnswer(coded));
} else {
Obs nonCoded = findMember(existing, nonCodedCauseConcept);
list.add(new CodedOrFreeTextAnswer(nonCoded));
}
}
return list;
}
use of org.openmrs.Concept in project openmrs-module-pihcore by PIH.
the class PastMedicalHistoryCheckboxTagHandler method getSubstitution.
@Override
protected String getSubstitution(FormEntrySession session, FormSubmissionController controller, Map<String, String> attributes) throws BadFormDesignException {
Concept concept = HtmlFormEntryUtil.getConcept(attributes.get("concept"));
if (concept == null) {
throw new IllegalArgumentException("Concept not found: " + attributes.get("concept"));
}
boolean includeCommentField = parseBooleanAttribute(attributes.get("specify"), false);
String label = attributes.get("label");
String translateLabel = null;
if (label == null) {
translateLabel = concept.getName().getName();
} else {
translateLabel = MessageUtil.translate(label);
}
FormEntryContext context = session.getContext();
Obs existingObs = findExistingObs(context, HtmlFormEntryUtil.getConcept(PihCoreConstants.PAST_MEDICAL_HISTORY_CONSTRUCT), HtmlFormEntryUtil.getConcept(PihCoreConstants.PAST_MEDICAL_HISTORY_FINDING), concept);
CheckboxWidget checkboxWidget = new CheckboxWidget(translateLabel, PRESENT);
checkboxWidget.setInitialValue(existingObs);
context.registerWidget(checkboxWidget);
TextFieldWidget textFieldWidget = null;
ErrorWidget errorWidget = new ErrorWidget();
if (includeCommentField) {
textFieldWidget = new TextFieldWidget();
textFieldWidget.setPlaceholder(messageSourceService.getMessage("zl.pastMedicalHistory.specifyLabel"));
if (existingObs != null) {
Obs candidate = findMember(existingObs, HtmlFormEntryUtil.getConcept(PihCoreConstants.PAST_MEDICAL_HISTORY_FINDING_TEXT));
if (candidate != null) {
String comments = candidate.getValueText();
if (StringUtils.isNotBlank(comments)) {
textFieldWidget.setInitialValue(comments);
}
}
}
context.registerWidget(textFieldWidget);
context.registerErrorWidget(textFieldWidget, errorWidget);
}
String clazz = attributes.get("class");
String elementId = attributes.get("id");
StringBuilder html = new StringBuilder();
html.append("<div ");
if (StringUtils.isNotBlank(elementId)) {
html.append("id=\"").append(elementId).append("\" ");
}
html.append("class=\"past-medical-history-item");
if (StringUtils.isNotBlank(clazz)) {
html.append(" ").append(clazz);
}
html.append("\">");
html.append(checkboxWidget.generateHtml(context));
if (includeCommentField) {
html.append(textFieldWidget.generateHtml(context));
html.append(errorWidget.generateHtml(context));
}
html.append("</div>");
session.getSubmissionController().addAction(new Action(concept, checkboxWidget, textFieldWidget, existingObs));
return html.toString();
}
use of org.openmrs.Concept in project openmrs-module-pihcore by PIH.
the class CleanDiagnosisConstructAction method applyAction.
@Override
public void applyAction(FormEntrySession formEntrySession) {
Concept diagnosisConstructConcept = Context.getConceptService().getConceptByMapping(EmrApiConstants.CONCEPT_CODE_DIAGNOSIS_CONCEPT_SET, EmrApiConstants.EMR_CONCEPT_SOURCE_NAME);
Concept codedDiagnosisConcept = Context.getConceptService().getConceptByMapping(EmrApiConstants.CONCEPT_CODE_CODED_DIAGNOSIS, EmrApiConstants.EMR_CONCEPT_SOURCE_NAME);
Concept nonCodedDiagnosisConcept = Context.getConceptService().getConceptByMapping(EmrApiConstants.CONCEPT_CODE_NON_CODED_DIAGNOSIS, EmrApiConstants.EMR_CONCEPT_SOURCE_NAME);
Concept orderDiagnosisConcept = Context.getConceptService().getConceptByMapping(EmrApiConstants.CONCEPT_CODE_DIAGNOSIS_ORDER, EmrApiConstants.EMR_CONCEPT_SOURCE_NAME);
Encounter encounter = formEntrySession.getEncounter();
boolean updateEncounter = false;
for (Obs obsGroup : encounter.getObsAtTopLevel(false)) {
if (obsGroup.getConcept().equals(diagnosisConstructConcept)) {
// we found a diagnosis construct
Set<Obs> groupMembers = obsGroup.getGroupMembers();
if (groupMembers != null && groupMembers.size() > 0) {
boolean hasDiagnosis = false;
boolean hasOrder = false;
for (Obs member : groupMembers) {
if (member.getConcept().equals(codedDiagnosisConcept) || member.getConcept().equals(nonCodedDiagnosisConcept)) {
hasDiagnosis = true;
} else if (member.getConcept().equals(orderDiagnosisConcept)) {
hasOrder = true;
}
}
if (!hasDiagnosis) {
// we do not have a diagnosis but have other dangling construct obs
removeGivenObsAndTheirGroupMembersFromEncounter(Arrays.asList(obsGroup), encounter);
updateEncounter = true;
} else if (!hasOrder) {
// add by default SECONDARY order
Obs order = new Obs();
order.setConcept(Context.getConceptService().getConceptByMapping(EmrApiConstants.CONCEPT_CODE_DIAGNOSIS_ORDER, EmrApiConstants.EMR_CONCEPT_SOURCE_NAME));
order.setValueCoded(Context.getConceptService().getConceptByMapping(EmrApiConstants.CONCEPT_CODE_DIAGNOSIS_ORDER_SECONDARY, EmrApiConstants.EMR_CONCEPT_SOURCE_NAME));
order.setObsDatetime(encounter.getEncounterDatetime());
order.setLocation(encounter.getLocation());
order.setEncounter(encounter);
order.setPerson(encounter.getPatient());
obsGroup.addGroupMember(order);
Context.getObsService().saveObs(obsGroup, "add diagnosis order");
}
}
}
}
if (updateEncounter) {
Context.getEncounterService().saveEncounter(encounter);
}
}
use of org.openmrs.Concept in project openmrs-module-pihcore by PIH.
the class SetObsDatesToSpecimenCollectionDateAction method applyAction.
@Override
public void applyAction(FormEntrySession formEntrySession) {
Concept specimenCollectionDateConcept = Context.getConceptService().getConceptByMapping(SPECIMEN_DATE_COLLECTED_CONCEPT_CODE_PIH, "PIH");
Date specimenCollectionDate = null;
Encounter encounter = formEntrySession.getEncounter();
if (specimenCollectionDateConcept != null) {
for (Obs candidate : encounter.getAllObs(false)) {
if (candidate.getConcept().equals(specimenCollectionDateConcept)) {
specimenCollectionDate = candidate.getValueDate();
candidate.setObsDatetime(specimenCollectionDate);
break;
}
}
if (specimenCollectionDate != null) {
for (Obs candidate : encounter.getAllObs(false)) {
if (!candidate.getConcept().getDatatype().containsDate()) {
// the logic here is that we don't want to change the obs date of other dates like "Test Result Date"
candidate.setObsDatetime(specimenCollectionDate);
}
}
Context.getEncounterService().saveEncounter(encounter);
}
} else {
log.error("Unable to final specimen collection date cnept when applying setObsDatesToSpecimenCollectionDateAction");
}
}
Aggregations