/** * Fails if there isn't an obs group with these exact characteristics * * @param groupingConceptId the concept id of the grouping obs * @param conceptIdsAndValues these parameters must be given in pairs, the first element of * which is the conceptId of a child obs (Integer) and the second element of which is the * value of the child obs */ public void assertObsGroupCreated(int groupingConceptId, Object... conceptIdsAndValues) { // quick checks Assert.assertNotNull(encounterCreated); Collection<Obs> temp = encounterCreated.getAllObs(); Assert.assertNotNull(temp); List<ObsValue> expected = new ArrayList<ObsValue>(); for (int i = 0; i < conceptIdsAndValues.length; i += 2) { int conceptId = (Integer) conceptIdsAndValues[i]; Object value = conceptIdsAndValues[i + 1]; expected.add(new ObsValue(conceptId, value)); } for (Obs o : temp) { if (o.getConcept().getConceptId() == groupingConceptId) { if (o.getValueCoded() != null || o.getValueComplex() != null || o.getValueDatetime() != null || o.getValueDrug() != null || o.getValueNumeric() != null || o.getValueText() != null) { Assert.fail( "Obs group with groupingConceptId " + groupingConceptId + " should has a non-null value"); } if (TestUtil.isMatchingObsGroup(o, expected)) { return; } } } Assert.fail("Cannot find an obs group matching " + expected); }
/** * This is an equivalent to a copy constructor. Creates a new copy of the given <code>obsToCopy * </code> with a null obs id * * @param obsToCopy The Obs that is going to be copied * @return a new Obs object with all the same attributes as the given obs */ public static Obs newInstance(Obs obsToCopy) { Obs newObs = new Obs( obsToCopy.getPerson(), obsToCopy.getConcept(), obsToCopy.getObsDatetime(), obsToCopy.getLocation()); newObs.setObsGroup(obsToCopy.getObsGroup()); newObs.setAccessionNumber(obsToCopy.getAccessionNumber()); newObs.setValueCoded(obsToCopy.getValueCoded()); newObs.setValueDrug(obsToCopy.getValueDrug()); newObs.setValueGroupId(obsToCopy.getValueGroupId()); newObs.setValueDatetime(obsToCopy.getValueDatetime()); newObs.setValueNumeric(obsToCopy.getValueNumeric()); newObs.setValueModifier(obsToCopy.getValueModifier()); newObs.setValueText(obsToCopy.getValueText()); newObs.setComment(obsToCopy.getComment()); newObs.setOrder(obsToCopy.getOrder()); newObs.setEncounter(obsToCopy.getEncounter()); newObs.setDateStarted(obsToCopy.getDateStarted()); newObs.setDateStopped(obsToCopy.getDateStopped()); newObs.setCreator(obsToCopy.getCreator()); newObs.setDateCreated(obsToCopy.getDateCreated()); newObs.setVoided(obsToCopy.getVoided()); newObs.setVoidedBy(obsToCopy.getVoidedBy()); newObs.setDateVoided(obsToCopy.getDateVoided()); newObs.setVoidReason(obsToCopy.getVoidReason()); newObs.setValueComplex(obsToCopy.getValueComplex()); newObs.setComplexData(obsToCopy.getComplexData()); if (obsToCopy.getGroupMembers() != null) for (Obs member : obsToCopy.getGroupMembers()) { // if the obs hasn't been saved yet, no need to duplicate it if (member.getObsId() == null) newObs.addGroupMember(member); else newObs.addGroupMember(Obs.newInstance(member)); } return newObs; }