/** * Returns a Set<Obs> of all root-level Obs of an Encounter, including obsGroups * * @param includeVoided specifies whether or not to include voided Obs * @return Returns all obs at top level -- will not be null * @should not return null with null obs set * @should get obs * @should not get voided obs * @should only get parents obs * @should only return the grouped top level obs * @should get both child and parent obs after removing child from parent grouping */ public Set<Obs> getObsAtTopLevel(boolean includeVoided) { return getAllObs(includeVoided).stream() .filter(o -> o.getObsGroup() == null) .collect(Collectors.toCollection(LinkedHashSet::new)); }
ret.addAll(this.getGroupMembers()); Obs parentObs = this; while (parentObs.getObsGroup() != null) { for (Obs obsSibling : parentObs.getObsGroup().getGroupMembers()) { if (!obsSibling.isObsGrouping()) { ret.add(obsSibling); parentObs = parentObs.getObsGroup(); } else if (this.getObsGroup() != null) { for (Obs obsSibling : this.getObsGroup().getGroupMembers()) { if (!obsSibling.isObsGrouping()) { ret.add(obsSibling);
Obs obsGroup = firstContactMethodObs.getObsGroup(); assertNotNull("Their should be a grouping obs", obsGroup); assertNotNull("Their should be an associated encounter", firstContactMethodObs.getEncounter()); if (groupedConceptIds.contains(obs.getConcept().getConceptId())) { groupedObsCount += 1; assertEquals("All of the parent groups should match", obsGroup, obs.getObsGroup());
public static String getObsGroupPath(Obs o){ StringBuilder st = new StringBuilder(EMPTY); if (o != null) while (o.getObsGroup() != null){ o = o.getObsGroup(); st.insert(0, o.getObsId() + "|"); } return st.toString(); }
groupMember.setValueNumeric(50d); origParentObs.addGroupMember(groupMember); assertNotNull(groupMember.getObsGroup());
/** * * returns the obsgroup hierarchy path of an obsgroup Obs, including itself * * @param o * @return */ public static String getObsGroupPath(Obs o){ StringBuilder st = new StringBuilder("/" + o.getConcept().getConceptId()); while (o.getObsGroup() != null){ o = o.getObsGroup(); st.insert(0, "/" + o.getConcept().getConceptId()); } return st.toString(); }
while (i.hasNext()) { Obs o = i.next(); if (o.getObsGroup() == null || !groupingConceptUuids.contains(o.getObsGroup().getConcept().getUuid())) { i.remove();
/** * Removes any Obs that are empty or which have only empty children */ public static void removeEmptyObs(Collection<Obs> obsList) { if (obsList != null) { Set<Obs> obsToRemove = new HashSet<Obs>(); for (Obs o : obsList) { removeEmptyObs(o.getGroupMembers()); boolean valueEmpty = StringUtils.isEmpty(o.getValueAsString(Context.getLocale())); boolean membersEmpty = o.getGroupMembers() == null || o.getGroupMembers().isEmpty(); if (valueEmpty && membersEmpty) { obsToRemove.add(o); } } for (Obs o : obsToRemove) { if (o.getObsGroup() != null) { o.getObsGroup().removeGroupMember(o); o.setObsGroup(null); } if (o.getEncounter() != null) { o.getEncounter().removeObs(o); o.setEncounter(null); } obsList.remove(o); } } }
/** * Returns true if group is an obs group that has no unvoided members. * * @param group * @return */ private void voidObsGroupIfAllChildObsVoided(Obs group) { if (group != null) { // probably should be able to just tet if group.getGroupMembers() == 0 since // getGroupMembers only returns non-voided members? boolean allObsVoided = true; for (Obs member : group.getGroupMembers()) { allObsVoided = allObsVoided && member.isVoided(); } if (allObsVoided) { Context.getObsService().voidObs(group, "htmlformentry"); } voidObsGroupIfAllChildObsVoided(group.getObsGroup()); } }
obsToCopy.getLocation()); newObs.setObsGroup(obsToCopy.getObsGroup()); newObs.setAccessionNumber(obsToCopy.getAccessionNumber()); newObs.setValueCoded(obsToCopy.getValueCoded());
obsService.voidObs(o, "htmlformentry"); voidObsGroupIfAllChildObsVoided(o.getObsGroup());
@Override public void validateDefaultRepresentation() throws Exception { super.validateDefaultRepresentation(); assertPropPresent("person"); assertPropPresent("concept"); assertPropPresent("value"); assertPropEquals("obsDatetime", getObject().getObsDatetime()); assertPropEquals("accessionNumber", getObject().getAccessionNumber()); assertPropEquals("obsGroup", getObject().getObsGroup()); assertPropPresent("groupMembers"); assertPropEquals("comment", getObject().getComment()); assertPropPresent("location"); assertPropPresent("order"); assertPropPresent("encounter"); assertPropEquals("voided", getObject().getVoided()); }
@Override public void validateFullRepresentation() throws Exception { super.validateFullRepresentation(); assertPropPresent("person"); assertPropPresent("concept"); assertPropPresent("value"); assertPropEquals("obsDatetime", getObject().getObsDatetime()); assertPropEquals("accessionNumber", getObject().getAccessionNumber()); assertPropEquals("obsGroup", getObject().getObsGroup()); assertPropPresent("groupMembers"); assertPropEquals("comment", getObject().getComment()); assertPropPresent("location"); assertPropPresent("order"); assertPropPresent("encounter"); assertPropEquals("voided", getObject().getVoided()); assertPropPresent("auditInfo"); }