Duvida (AJAX dependente + JSP + Servlet)

Boa tarde a todos. Estou com o seguinte problema no desenvolvimento de uma aplicação hospitalar

No cadastro de internação tenho uma lista de pacientes, quando carrego o paciente ele me informa os convenios que ele pode usar atraves de uma função AJAX. A partir desse combo de convenios a hora que ele seleciona 1 eu preciso carregar os tipos de quarto que ele pode usar, mais ele não tá fazendo isso.

Vou colocar o código aqui. Alguém sabe o pq???

Meu Servlet

[code]package sinthos.ctr;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sinthos.bean.Cid;
import sinthos.bean.ConvenioPaciente;
import sinthos.bean.ConvenioPacienteTipoQuarto;
import sinthos.bean.Funcionario;
import sinthos.bean.Internacao;
import sinthos.bean.Medico;
import sinthos.bean.Procedencia;
import sinthos.bean.TipoAlta;
import sinthos.bean.TipoInternacao;
import sinthos.dao.CidDAO;
import sinthos.dao.ConvenioPacienteDAO;
import sinthos.dao.ConvenioPacienteTipoQuartoDAO;
import sinthos.dao.FuncionarioDAO;
import sinthos.dao.InternacaoDAO;
import sinthos.dao.MedicoDAO;
import sinthos.dao.ProcedenciaDAO;
import sinthos.dao.TipoAltaDAO;
import sinthos.dao.TipoInternacaoDAO;

public class InternacaoCTR extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;

public InternacaoCTR() {
	super();
}   	

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//Define o tipo de resposta
	response.setContentType("text/html; charset=iso-8859-1");
	Internacao internacao = new Internacao();
	InternacaoDAO daoInternacao = new InternacaoDAO();
	//Cria a lista de funcionários
	FuncionarioDAO daoFuncionario = new FuncionarioDAO();
	List<Funcionario> listaFuncionario = daoFuncionario.getTodosFuncionarios();
	request.setAttribute("listaFuncionario", listaFuncionario);
	//Cria a lista de médicos
	MedicoDAO daoMedico = new MedicoDAO();
	List<Medico> listaMedico = daoMedico.getTodosMedicos();
	request.setAttribute("listaMedico", listaMedico);
	//Cria a lista de Pacientes que tem convenio
	ConvenioPacienteDAO daoConvenioPaciente = new ConvenioPacienteDAO();
	List<ConvenioPaciente> listaPacienteComConvenio = daoConvenioPaciente.getPacienteComConvenio();
	request.setAttribute("listaPacienteComConvenio", listaPacienteComConvenio);
	//Cria a Lista de Tipos de Alta
	TipoAltaDAO daoTipoAlta = new TipoAltaDAO();
	List<TipoAlta> listaTipoAlta = daoTipoAlta.getTodosTipoAlta();
	request.setAttribute("listaTipoAlta", listaTipoAlta);
	//Cria a lista de procedencias
	ProcedenciaDAO daoProcedencia = new ProcedenciaDAO();
	List<Procedencia> listaProcedencia = daoProcedencia.getTodasProcedencia();
	request.setAttribute("listaProcedencia", listaProcedencia);
	//Cria a lista de Tipos de internação
	TipoInternacaoDAO daoTipoInternacao = new TipoInternacaoDAO();
	List<TipoInternacao> listaTipoInternacao = daoTipoInternacao.getTodosTipoInternacao();
	request.setAttribute("listaTipoInternacao", listaTipoInternacao);
	//Cria a lista de CIDs
	CidDAO daoCid = new CidDAO();
	List<Cid> listaCid = daoCid.getTodosCid();
	request.setAttribute("listaCid", listaCid);
	//Manda o proximo código para tela
	internacao.setCodigoInternacao(daoInternacao.getInternacaoMaxCodigo());
	request.setAttribute("internacao", internacao);
	//Redireciona para tela
	request.getRequestDispatcher("internacao.jsp").forward(request, response);
}  	

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//Define o tipo de resposta
	response.setContentType("text/xml; charset=iso-8859-1");
	//Cria os objetos e variaveis
	Internacao internacao = new Internacao();
	InternacaoDAO daoInternacao = new InternacaoDAO();
	String acao = request.getParameter("acao");
	//Cria a lista de funcionários
	FuncionarioDAO daoFuncionario = new FuncionarioDAO();
	List<Funcionario> listaFuncionario = daoFuncionario.getTodosFuncionarios();
	request.setAttribute("listaFuncionario", listaFuncionario);
	//Cria a lista de médicos
	MedicoDAO daoMedico = new MedicoDAO();
	List<Medico> listaMedico = daoMedico.getTodosMedicos();
	request.setAttribute("listaMedico", listaMedico);
	//Cria a lista de Pacientes que tem convenio
	ConvenioPacienteDAO daoConvenioPaciente = new ConvenioPacienteDAO();
	List<ConvenioPaciente> listaPacienteComConvenio = daoConvenioPaciente.getPacienteComConvenio();
	request.setAttribute("listaPacienteComConvenio", listaPacienteComConvenio);
	//Cria a lista de convenios por paciente
	String paciente = request.getParameter("paciente");
	PrintWriter selecao = response.getWriter();
	List<ConvenioPaciente> listaConvenioPorPaciente = daoConvenioPaciente.getConvenioPorPaciente(paciente);
	selecao.println("<convenios>");
	for(ConvenioPaciente convenioPaciente : listaConvenioPorPaciente){
		selecao.println("<convenio>");
		selecao.println("<codigoConvenio>"+convenioPaciente.getCodigoConvenio()+"</codigoConvenio>");
		selecao.println("<nome>"+convenioPaciente.getConvenio().getNome()+"</nome>");
		selecao.println("</convenio>");
	}
	selecao.println("</convenios>");
	selecao.close();
	//Carrega a lista de tipos de quarto por convenio
	ConvenioPacienteTipoQuartoDAO daoConvenioPacienteTipoQuarto = new ConvenioPacienteTipoQuartoDAO();
	int convenio = Integer.parseInt(request.getParameter("listaConvenio"));
	List<ConvenioPacienteTipoQuarto> listaTipoQuartoPorConvenio = daoConvenioPacienteTipoQuarto.getTipoQuartoPorConvenioPaciente(convenio);
	selecao.println("<tiposQuarto>");
	for(ConvenioPacienteTipoQuarto convenioPacienteTipoQuarto : listaTipoQuartoPorConvenio){
		selecao.println("<tipoQuarto>");
		selecao.println("<codigoTipoQuarto>"+convenioPacienteTipoQuarto.getCodigoTipoQuarto()+"</codigoTipoQuarto>");
		selecao.println("<descricao>"+convenioPacienteTipoQuarto.getTipoQuarto().getDescricao()+"</descricao>");
		selecao.println("</tipoQuarto>");
	}
	selecao.println("</tiposQuarto>");
	selecao.close();
	//Cria a Lista de Tipos de Alta
	TipoAltaDAO daoTipoAlta = new TipoAltaDAO();
	List<TipoAlta> listaTipoAlta = daoTipoAlta.getTodosTipoAlta();
	request.setAttribute("listaTipoAlta", listaTipoAlta);
	//Cria a lista de procedencias
	ProcedenciaDAO daoProcedencia = new ProcedenciaDAO();
	List<Procedencia> listaProcedencia = daoProcedencia.getTodasProcedencia();
	request.setAttribute("listaProcedencia", listaProcedencia);
	//Cria a lista de Tipos de internação
	TipoInternacaoDAO daoTipoInternacao = new TipoInternacaoDAO();
	List<TipoInternacao> listaTipoInternacao = daoTipoInternacao.getTodosTipoInternacao();
	request.setAttribute("listaTipoInternacao", listaTipoInternacao);
	//Cria a lista de CIDs
	CidDAO daoCid = new CidDAO();
	List<Cid> listaCid = daoCid.getTodosCid();
	request.setAttribute("listaCid", listaCid);
	//Recupera da tela 
	internacao.setCodigoInternacao(Integer.parseInt(request.getParameter("codigo")));
	internacao.setDataEntrada(request.getParameter("dataEntrada"));
	internacao.setDataSaida(request.getParameter("dataSaida"));
	internacao.setHoraEntrada(request.getParameter("horaEntrada"));
	internacao.setHoraSaida(request.getParameter("horaSaida"));
	internacao.setDataSolicitacao(request.getParameter("dataSolicitacao"));
	internacao.setHoraSolicitacao(request.getParameter("horaSolicitacao"));
	internacao.setResponsavel(request.getParameter("responsavel"));
	internacao.setNumeroGuia(Integer.parseInt(request.getParameter("numeroGuia")));
	internacao.setDiagnostico(request.getParameter("diagnostico"));
	internacao.setDataAutorizacao(request.getParameter("dataAutorizacao"));
	internacao.setDiaria(request.getParameter("diaria"));
	internacao.setStatus(request.getParameter("status"));
	internacao.setCpfFuncionario(request.getParameter("funcionario"));
	internacao.setCpfMedico(request.getParameter("medico"));
	internacao.setCpfPaciente(request.getParameter("paciente"));
	internacao.setCodigoLeito(Integer.parseInt(request.getParameter("leito")));
	internacao.setCodigoTipoAlta(Integer.parseInt(request.getParameter("tipoAlta")));
	internacao.setCodigoProcedencia(Integer.parseInt(request.getParameter("procedencia")));
	internacao.setCodigoTipoInternacao(Integer.parseInt(request.getParameter("tipoInternacao")));
	internacao.setCodigoCid(request.getParameter("cid"));
	//Ação dos botões da tela
	if(acao.equals("Salvar")){
		internacao = daoInternacao.salvarInternacao(internacao);
		request.getRequestDispatcher("mensagemOk.jsp").forward(request, response);
	}else if(acao.equals("Excluir")){
		daoInternacao.excluirInternacao(internacao.getCodigoInternacao());
		request.getRequestDispatcher("mensagemOk.jsp").forward(request, response);
	}else if(acao.equals("Pesquisar")){
		internacao = daoInternacao.getInternacaoPorCodigo(internacao.getCodigoInternacao());
		request.setAttribute("internacao", internacao);
		request.getRequestDispatcher("internacao.jsp").forward(request, response);
	}else{
		request.getRequestDispatcher("internacao.jsp").forward(request, response);
	}
}   	  	    

}[/code]

Minha JSP

[code]<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"pageEncoding=“ISO-8859-1”%>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>

SINTHOS - Sistema de Internações Hospitalares

* Código: * Data Entrada: * Hora Entrada: * Data Solicitação:
* Status: ATIVO INATIVO ATIVO INATIVO SELECIONE ATIVO INATIVO Data Saída: Hora Saída: * Hora Solicitação:
* Tipo de Internação: <option value="${tipoInternacao.codigoTipoInternacao }" selected> ${tipoInternacao.descricao } - Cadastro de Pacientes
* Paciente:
SELECIONE ${pacienteComConvenio.paciente.nome }
Responsável: * Médico: ${medico.nome }
* Convênios:
Diária: * Funcionário: ${funcionario.nome }
* Tipos de Quarto:
Diagnóstico: * Procedência: <option value="${procedencia.codigoProcedencia }" selected> ${procedencia.descricao }
* Quarto: ${convenioPacienteTipoQuarto.TipoQuarto.descricao } * Número Guia: Tipo de Alta:
<option value="${tipoAlta.codigoTipoAlta }" selected> ${tipoAlta.descricao }
* Leito:
* Data da Autorização: Cid: <option value="${cid.codigoCid }" selected> ${cid.descricao }
* Campos Obrigatórios.
					</table>
				
			</center>
		</div>
		<br/><br/>
		<a href="cadastros.jsp"><img src="imagens/botaoVoltar.png" border="0"/></a> <img align="right" src="imagens/internacao.png"/> 
		<div class="rodape">Todos os Direitos Reservados - SINTHOS</div>
	</div>
</body>
[/code]

Meu arquivo ajax
[/code]function ajaxInit(){
var xmlHttp;
try { // Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
} catch (e) { // Internet Explorer
try {
xmlHttp=new ActiveXObject(‘Msxml2.XMLHTTP’);
} catch(e){
try {
xmlHttp=new ActiveXObject(‘Microsoft.XMLHTTP’);
} catch(e){
alert(‘Seu navegador não suporta o uso de AJAX!’);
return false;
}
}
}
return xmlHttp;
}
//---------------------------CARREGA OS CONVENIOS PARA O PACIENTE SELECIONADO--------------------------
function carregaConvenios(paciente) {
objAjax=ajaxInit()
if (objAjax){
url=“paciente=”+paciente;
url=url+"&sid="+Math.random();
objAjax.open(“POST”,“internacao.do”,true);
objAjax.setRequestHeader(“Content-Type”,“application/x-www-form-urlencoded”)
objAjax.onreadystatechange=mudaPaciente;
objAjax.send(url);
}
}
function mudaPaciente() {
if (objAjax.readyState==4){
var xml = objAjax.responseXML;
var elementos = xml.getElementsByTagName(“convenio”);
var listaConvenio = document.getElementById(“listaConvenio”);
for (i=0; i<=listaConvenio.getElementsByTagName(“option”).length; i++){
if (listaConvenio.hasChildNodes()){
listaConvenio.removeChild(listaCidade.lastChild)
}
}
if (listaConvenio.hasChildNodes()){
listaConvenio.removeChild(listaConvenio.lastChild)
}
for (i=0; i<elementos.length; i++){
codigoConvenio=elementos[i].getElementsByTagName(“codigoConvenio”)[0].firstChild.nodeValue;
nome=elementos[i].getElementsByTagName(“nome”)[0].firstChild.nodeValue;
// cria a tag
var opcao = document.createElement(“option”);
//define o atributo value
opcao.value= codigoConvenio;
//cria um elemento tipo texto
var texto = document.createTextNode(nome);
// acrescenta o texto ao option texto
opcao.appendChild(texto);
document.getElementById(“listaConvenio”).appendChild(opcao);
//cria o evento onchange
}
}
}
//------------------------------------------------------------------------------------------------------
//------------------------CARREGA OS TIPO DE QUARTO DO CONVENIO SELECIONADO-----------------------------
function carregaTiposQuarto(convenio) {
objAjax=ajaxInit()
if (objAjax){
url=“convenio=”+convenio;
url=url+"&sid="+Math.random();
objAjax.open(“POST”,“internacao.do”,true);
objAjax.setRequestHeader(“Content-Type”,“application/x-www-form-urlencoded”)
objAjax.onreadystatechange=mudaConvenio;
objAjax.send(url);
}
}
function mudaConvenio() {
if (objAjax.readyState==4){
var xml = objAjax.responseXML;
var elementos = xml.getElementsByTagName(“tipoQuarto”);
var listaTipoQuarto = document.getElementById(“listaTipoQuarto”);
for (i=0; i<=listaTipoQuarto.getElementsByTagName(“option”).length; i++){
if (listaTipoQuarto.hasChildNodes()){
listaTipoQuarto.removeChild(listaTipoQuarto.lastChild)
}
}
if (listaTipoQuarto.hasChildNodes()){
listaTipoQuarto.removeChild(listaTipoQuarto.lastChild)
}
for (i=0; i<elementos.length; i++){
codigoTipoQuarto=elementos[i].getElementsByTagName(“codigoTipoQuarto”)[0].firstChild.nodeValue;
descricao=elementos[i].getElementsByTagName(“descricao”)[0].firstChild.nodeValue;
// cria a tag
var opcao = document.createElement(“option”);
//define o atributo value
opcao.value= codigoTipoQuarto;
//cria um elemento tipo texto
var texto = document.createTextNode(descricao);
// acrescenta o texto ao option texto
opcao.appendChild(texto);
document.getElementById(“listaTipoQuarto”).appendChild(opcao);
}
}
}
//------------------------------------------------------------------------------------------------------

[code]

Ele da o seguinte ERRO:

xml is null
var elementos = document.getElementsByTagName(“tipoQuarto”);

Alguém ???