public void updateRelationshipPaciente(Paciente paciente) throws Exception {
   Long pacienteId = paciente.getCodigo();
   List<QuestionarioAnamnese> questionarios =
       new ArrayList<QuestionarioAnamnese>(paciente.getAnamneses().values());
   if (questionarios != null) {
     DaoPacienteQuestionarioAnamnese daoPQA = new DaoPacienteQuestionarioAnamnese();
     List<PacienteQuestionarioAnamnese> pqas = daoPQA.getPQARelationshipPaciente(pacienteId);
     for (PacienteQuestionarioAnamnese pqa : pqas) {
       if (!containsPQARelationship(questionarios, pqa)) {
         daoPQA.remover(pqa);
       }
     }
     Iterator<Entry<PacienteQuestionarioAnamnese, QuestionarioAnamnese>> iterator =
         paciente.getAnamneses().entrySet().iterator();
     while (iterator.hasNext()) {
       Entry<PacienteQuestionarioAnamnese, QuestionarioAnamnese> entry = iterator.next();
       PacienteQuestionarioAnamnese pqa = entry.getKey();
       QuestionarioAnamnese questionario = entry.getValue();
       if (!containsQARelationship(pqas, questionario)) {
         pqa.setPacienteId(pacienteId);
         pqa.setQuestionarioAnamneseId(questionario.getCodigo());
         daoPQA.inserir(pqa);
       } else {
         daoPQA.alterar(pqa);
       }
     }
   }
 }
 @Override
 protected void afterLoad(QuestionarioAnamnese o) throws Exception {
   DaoQuestaoQuestionarioAnamnese daoQQA = new DaoQuestaoQuestionarioAnamnese();
   List<QuestaoQuestionarioAnamnese> questoes = daoQQA.getQQARelationshipQA(o.getCodigo());
   Map<QuestaoQuestionarioAnamnese, QuestaoAnamnese> questoesMap =
       new TreeMap<QuestaoQuestionarioAnamnese, QuestaoAnamnese>();
   DaoQuestaoAnamnese daoQA = new DaoQuestaoAnamnese();
   for (QuestaoQuestionarioAnamnese qqa : questoes) {
     questoesMap.put(qqa, daoQA.findByKey(qqa.getQuestaoAnamneseId()));
   }
   o.setQuestoes(questoesMap);
 }
 @Override
 protected boolean beforeRemove(QuestionarioAnamnese o, Map<String, Object> params)
     throws Exception {
   EntityManager<QuestaoQuestionarioAnamnese> daoQQA = new DaoQuestaoQuestionarioAnamnese();
   for (QuestaoQuestionarioAnamnese qqa : o.getQuestoes().keySet()) {
     daoQQA.remover(qqa);
   }
   return true;
 }
 private boolean containsQARelationship(
     List<PacienteQuestionarioAnamnese> pqas, QuestionarioAnamnese questionario) {
   for (Iterator<PacienteQuestionarioAnamnese> iterator = pqas.iterator(); iterator.hasNext(); ) {
     if (iterator.next().getQuestionarioAnamneseId().equals(questionario.getCodigo())) {
       return true;
     }
   }
   return false;
 }