@Test
  @Verifies(
      value = "should return a list consisting of active, not retired, states",
      method = "getPossibleNextStates")
  public void getPossibleNextStates_shouldReturnNonRetiredStates() throws Exception {
    executeDataSet(PROGRAM_NEXT_STATES_XML);

    Integer patient = 11;
    Integer workflow = 501;
    Vector<ListItem> possibleNextStates;

    /* retire a workflow state  */
    PatientProgram pp = Context.getProgramWorkflowService().getPatientProgram(patient);
    ProgramWorkflow pw = pp.getProgram().getWorkflow(workflow);
    Set<ProgramWorkflowState> pwss = pw.getStates();

    for (ProgramWorkflowState pws : pwss) {
      Concept cp = pws.getConcept();
      ConceptName cn = cp.getName();
      if (cn != null) {
        String cnn = cn.getName();
        if (cnn.equalsIgnoreCase("Test State 3")) {
          pws.setRetired(true);
        }
      }
    }

    possibleNextStates = dwrProgramWorkflowService.getPossibleNextStates(patient, workflow);
    assertFalse(possibleNextStates.isEmpty());
    assertEquals(2, possibleNextStates.size());
  }
  public DataObject simplifyConcept(Concept concept, Locale locale) throws Exception {

    List<Object> propertyNamesAndValues = new ArrayList<Object>();
    ConceptName preferredName = concept.getPreferredName(locale);

    propertyNamesAndValues.add("conceptId");
    propertyNamesAndValues.add(Integer.toString((concept.getConceptId())));

    if (preferredName != null && preferredName.getName() != null) {
      propertyNamesAndValues.add("conceptName");
      propertyNamesAndValues.add(preferredName.getName());
    } else if (preferredName == null && concept.getName() != null) {
      propertyNamesAndValues.add("conceptName");
      propertyNamesAndValues.add(concept.getName().getName());
    }
    DataObject dataObject = DataObject.create(propertyNamesAndValues);
    return dataObject;
  }
 public String getTRValueSetCode(Concept concept) {
   for (ConceptMap mapping : concept.getConceptMappings()) {
     if (mapping.getConceptMapType().getUuid().equals(ConceptMapType.SAME_AS_MAP_TYPE_UUID)) {
       return mapping.getConceptReferenceTerm().getCode();
     }
   }
   for (ConceptName conceptName : concept.getShortNames()) {
     return conceptName.getName();
   }
   return concept.getName().getName();
 }
 // private String usedInForms;
 // private static Log log = LogFactory.getLog(ConceptSearchResult.class);
 public ConceptSearchResult(
     int id,
     ConceptName name,
     ConceptDescription description,
     ConceptClass cclass,
     ConceptDatatype datatype) {
   this.conceptId = id;
   this.conceptName = name.getName();
   this.conceptDescription = description.getDescription();
   this.conceptClass = cclass.getName();
   this.conceptDatatype = datatype.getName();
 }
 public ConceptSearchResult(Concept con) {
   this.conceptId = con.getConceptId();
   if (con.getName() != null) {
     this.conceptName = con.getName().getName();
   }
   if (con.getDescription() != null) {
     this.conceptDescription = con.getDescription().getDescription();
   }
   if (con.getConceptClass() != null) {
     this.conceptClass = con.getConceptClass().getName();
   }
   if (con.getDatatype() != null) {
     this.conceptDatatype = con.getDatatype().getName();
   }
   this.otherNames = new Vector<String>();
   for (ConceptName cn : con.getNames()) {
     this.otherNames.add(cn.getName());
   }
 }