Search in sources :

Example 26 with Concept

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());
}
Also used : Concept(org.openmrs.Concept) Obs(org.openmrs.Obs) FormSubmissionControllerAction(org.openmrs.module.htmlformentry.action.FormSubmissionControllerAction) ErrorWidget(org.openmrs.module.htmlformentry.widget.ErrorWidget) CodedOrFreeTextAnswerListWidget(org.openmrs.module.coreapps.htmlformentry.CodedOrFreeTextAnswerListWidget)

Example 27 with Concept

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;
}
Also used : Concept(org.openmrs.Concept) Obs(org.openmrs.Obs) ArrayList(java.util.ArrayList) CodedOrFreeTextAnswer(org.openmrs.module.emrapi.diagnosis.CodedOrFreeTextAnswer)

Example 28 with Concept

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();
}
Also used : Concept(org.openmrs.Concept) Obs(org.openmrs.Obs) FormSubmissionControllerAction(org.openmrs.module.htmlformentry.action.FormSubmissionControllerAction) FormEntryContext(org.openmrs.module.htmlformentry.FormEntryContext) CheckboxWidget(org.openmrs.module.htmlformentry.widget.CheckboxWidget) TextFieldWidget(org.openmrs.module.htmlformentry.widget.TextFieldWidget) ErrorWidget(org.openmrs.module.htmlformentry.widget.ErrorWidget)

Example 29 with Concept

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);
    }
}
Also used : Concept(org.openmrs.Concept) Obs(org.openmrs.Obs) Encounter(org.openmrs.Encounter)

Example 30 with Concept

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");
    }
}
Also used : Concept(org.openmrs.Concept) Obs(org.openmrs.Obs) Encounter(org.openmrs.Encounter) Date(java.util.Date)

Aggregations

Concept (org.openmrs.Concept)294 Test (org.junit.Test)210 BaseContextSensitiveTest (org.openmrs.test.BaseContextSensitiveTest)176 ConceptName (org.openmrs.ConceptName)62 OpenmrsMatchers.hasConcept (org.openmrs.test.OpenmrsMatchers.hasConcept)62 Obs (org.openmrs.Obs)49 Date (java.util.Date)48 Patient (org.openmrs.Patient)42 ConceptDescription (org.openmrs.ConceptDescription)33 Locale (java.util.Locale)32 ConceptDatatype (org.openmrs.ConceptDatatype)32 OrderUtilTest (org.openmrs.order.OrderUtilTest)29 ConceptClass (org.openmrs.ConceptClass)27 ArrayList (java.util.ArrayList)26 BindException (org.springframework.validation.BindException)26 DrugOrder (org.openmrs.DrugOrder)25 Encounter (org.openmrs.Encounter)25 Errors (org.springframework.validation.Errors)25 ConceptMapBuilder (org.openmrs.module.metadatadeploy.builder.ConceptMapBuilder)21 Location (org.openmrs.Location)19