class ItemContaHospitalarON extends AbstractFatDebugLogEnableRN {

	public void fatCompletaPhi(final FatItemContaHospitalar fatItemContHosp, RapServidores servidorLogado) throws BaseException {
		final String phis[] = this.buscarVlrArrayAghParametro(AghuParametrosEnum.P_COMPLETA_PHIS);
		final Date dataFimVinculoServidor = new Date();
		
		Date vDthrAlta = null;
		Date vDthrInt = null;
		FatContasHospitalares contaHospitalar = fatItemContHosp.getContaHospitalar();
		if (contaHospitalar != null) {
			try {
				contaHospitalar.getDataInternacaoAdministrativa();
			} catch (final LazyInitializationException lie) {
				contaHospitalar = getFatContasHospitalaresDAO().obterFatContaHospitalar(contaHospitalar.getSeq());
			}
			vDthrInt = contaHospitalar.getDataInternacaoAdministrativa();
			vDthrAlta = contaHospitalar.getDtAltaAdministrativa();
		}
		if (vDthrAlta == null) {
			vDthrAlta = new Date();
		}
		final Integer vPhiSeq = fatItemContHosp.getProcedimentoHospitalarInterno().getSeq();
		Date vDthrRealizado = fatItemContHosp.getDthrRealizado();
		final Short vQtdInicial = fatItemContHosp.getQuantidadeRealizada();

		boolean igual = false;
		for (int x = 0; x < phis.length; x++) {
			if (vPhiSeq.equals(Integer.valueOf(phis[x]))) {
				igual = true;
			}
		}

		if (igual) {
			Integer vCompletos = 1;

			while (vCompletos < vQtdInicial) {
				final FatItemContaHospitalar newRecord = new FatItemContaHospitalar();
				final FatItemContaHospitalarId id = new FatItemContaHospitalarId(fatItemContHosp.getId().getCthSeq(), null);
				newRecord.setId(id);
				newRecord.setContaHospitalar(contaHospitalar);
				newRecord.setProcedimentoHospitalarInterno(fatItemContHosp.getProcedimentoHospitalarInterno());
				newRecord.setCriadoEm(new Date());
				newRecord.setCriadoPor(servidorLogado.getUsuario());
				newRecord.setIndSituacao(fatItemContHosp.getIndSituacao());
				newRecord.setIndOrigem(fatItemContHosp.getIndOrigem());
				newRecord.setLocalCobranca(fatItemContHosp.getLocalCobranca());

				vDthrRealizado = DateUtil.adicionaDias(vDthrRealizado, 1);

				if (DateUtil.truncaData(vDthrRealizado).equals(DateUtil.truncaData(vDthrAlta))) {
					vDthrRealizado = vDthrAlta;
				}
				fatItemContHosp.setQuantidadeRealizada((short) 1);
				// newRecord.setQuantidadeRealizada((short) 1);

				if ((vDthrRealizado.before(vDthrAlta) || vDthrRealizado.equals(vDthrAlta))
						&& (vDthrRealizado.after(vDthrInt))
						&& (fatItemContHosp.getProcedimentoHospitalarInterno() != null && fatItemContHosp.getProcedimentoHospitalarInterno().getSeq() != null)) {

					newRecord.setIchType(fatItemContHosp.getIchType());
					// FatProcedHospInternos procHospInt = new
					// FatProcedHospInternos();
					// newRecord.setProcedimentoHospitalarInterno(procHospInt);

					newRecord.getProcedimentoHospitalarInterno().setSeq(vPhiSeq);
					newRecord.setDthrRealizado(vDthrRealizado);
					newRecord.setQuantidadeRealizada((short) 1);

					inserirItemContaHospitalarSemValidacoesForms(newRecord, true, servidorLogado, dataFimVinculoServidor, null);
					// persiste a nova entidade
					// itemContaHospitalarDAO.inserir(newRecord);
				}

				vCompletos++;
			}
		}
	}

}