Program: 112340
Project: 112340
Buggy source:
@Test public void testPersistSearchParams(){
  Patient patient=new Patient();
  patient.addIdentifier("String_Node_Str","String_Node_Str");
  patient.getGender().setValueAsEnum(AdministrativeGenderCodesEnum.M);
  patient.addName().addFamily("String_Node_Str").addGiven("String_Node_Str");
  MethodOutcome outcome=ourPatientDao.create(patient);
  assertNotNull(outcome.getId());
  assertFalse(outcome.getId().isEmpty());
  long id=outcome.getId().asLong();
  IdentifierDt value=new IdentifierDt("String_Node_Str","String_Node_Str");
  List<Patient> found=ourPatientDao.search(Patient.SP_IDENTIFIER,value);
  assertEquals(1,found.size());
  assertEquals(id,found.get(0).getId().asLong().longValue());
  SearchParameterMap map=new SearchParameterMap();
  map.put(Patient.SP_IDENTIFIER,new ArrayList<List<IQueryParameterType>>());
  map.get(Patient.SP_IDENTIFIER).add(new ArrayList<IQueryParameterType>());
  map.get(Patient.SP_IDENTIFIER).get(0).add(new IdentifierDt("String_Node_Str","String_Node_Str"));
  map.put(Patient.SP_GENDER,new ArrayList<List<IQueryParameterType>>());
  map.get(Patient.SP_GENDER).add(new ArrayList<IQueryParameterType>());
  map.get(Patient.SP_GENDER).get(0).add(new IdentifierDt(null,"String_Node_Str"));
  found=ourPatientDao.search(map);
  assertEquals(1,found.size());
  assertEquals(id,found.get(0).getId().asLong().longValue());
  map=new SearchParameterMap();
  map.put(Patient.SP_IDENTIFIER,new ArrayList<List<IQueryParameterType>>());
  map.get(Patient.SP_IDENTIFIER).add(new ArrayList<IQueryParameterType>());
  map.get(Patient.SP_IDENTIFIER).get(0).add(new IdentifierDt("String_Node_Str","String_Node_Str"));
  map.put(Patient.SP_GENDER,new ArrayList<List<IQueryParameterType>>());
  map.get(Patient.SP_GENDER).add(new ArrayList<IQueryParameterType>());
  map.get(Patient.SP_GENDER).get(0).add(new IdentifierDt(null,"String_Node_Str"));
  found=ourPatientDao.search(map);
  assertEquals(0,found.size());
}

Fixed version (ground truth):
@Test public void testPersistSearchParams(){
  Patient patient=new Patient();
  patient.addIdentifier("String_Node_Str","String_Node_Str");
  patient.getGender().setValueAsEnum(AdministrativeGenderCodesEnum.M);
  patient.addName().addFamily("String_Node_Str").addGiven("String_Node_Str");
  MethodOutcome outcome=ourPatientDao.create(patient);
  assertNotNull(outcome.getId());
  assertFalse(outcome.getId().isEmpty());
  long id=outcome.getId().asLong();
  IdentifierDt value=new IdentifierDt("String_Node_Str","String_Node_Str");
  List<Patient> found=ourPatientDao.search(Patient.SP_IDENTIFIER,value);
  assertEquals(1,found.size());
  assertEquals(id,found.get(0).getId().asLong().longValue());
  SearchParameterMap map=new SearchParameterMap();
  map.put(Patient.SP_IDENTIFIER,new ArrayList<List<IQueryParameterType>>());
  map.get(Patient.SP_IDENTIFIER).add(new ArrayList<IQueryParameterType>());
  map.get(Patient.SP_IDENTIFIER).get(0).add(new IdentifierDt("String_Node_Str","String_Node_Str"));
  map.put(Patient.SP_GENDER,new ArrayList<List<IQueryParameterType>>());
  map.get(Patient.SP_GENDER).add(new ArrayList<IQueryParameterType>());
  map.get(Patient.SP_GENDER).get(0).add(new IdentifierDt(AdministrativeGenderCodesEnum.M.getSystem(),"String_Node_Str"));
  found=ourPatientDao.search(map);
  assertEquals(1,found.size());
  assertEquals(id,found.get(0).getId().asLong().longValue());
  map=new SearchParameterMap();
  map.put(Patient.SP_IDENTIFIER,new ArrayList<List<IQueryParameterType>>());
  map.get(Patient.SP_IDENTIFIER).add(new ArrayList<IQueryParameterType>());
  map.get(Patient.SP_IDENTIFIER).get(0).add(new IdentifierDt("String_Node_Str","String_Node_Str"));
  map.put(Patient.SP_GENDER,new ArrayList<List<IQueryParameterType>>());
  map.get(Patient.SP_GENDER).add(new ArrayList<IQueryParameterType>());
  map.get(Patient.SP_GENDER).get(0).add(new IdentifierDt(AdministrativeGenderCodesEnum.M.getSystem(),"String_Node_Str"));
  found=ourPatientDao.search(map);
  assertEquals(0,found.size());
}