public void atualizar_estrutura_hospitalar_departamentoExistentes() { var tiposConta = new TiposConta(); var tiposDeconta = new TiposConta(); var tipoContaOutras = tiposDeconta.Obter<TipoConta>(1); string _conectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;"; _conectionstring += String.Format("Data Source={0};", "D:\\CargaOrcamento2014\\DepartamentoCentroDeCustoContaHospitalarNew.xls"); _conectionstring += "Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'"; var cn = new OleDbConnection(_conectionstring); var cmd = new OleDbCommand("Select * from [c$]", cn); cn.Open(); var reader = cmd.ExecuteReader(); var documento = new List<RegistroExcel>(); var listaContas = new List<Conta>(); var listaCentrosDeCusto = new List<CentroDeCusto>(); var repositorioDeHospitais = new Hospitais(); var repositorioDeCusto = new CentrosDeCusto(); var repositorioContas = new Contas(); int i = 0; while (reader.Read()) { if (i == 0) { i++; continue; } if (reader[0] == null || reader[0] == DBNull.Value || string.IsNullOrEmpty(reader[0].ToString())) break; var registroExcel = new RegistroExcel() { NomeHospital = (string)reader[5], CodigoCentroDeCusto = Convert.ToString(reader[0]), DescricaoCentroDeCusto = (string)reader[1] }; if (reader[5] != DBNull.Value) { registroExcel.DescricaoConta = (string)reader[3]; registroExcel.CodigoConta = Convert.ToString(reader[2]); registroExcel.GrupoResumoNome = (string)reader[4]; } documento.Add(registroExcel); } cn.Close(); cn.Dispose(); cmd.Dispose(); var gruposDeConta = documento.Select(x => x.GrupoResumoNome).Distinct(); var codigosDeConta = documento.Select(x => x.CodigoConta).Distinct(); foreach (var codigoDeConta in codigosDeConta) { string descricaoDaConta = documento.Where(x => x.CodigoConta == codigoDeConta).Select(y => y.DescricaoConta).Distinct().First(); var conta = repositorioContas.ObterContaPor(codigoDeConta); if (listaContas.All(c => c.CodigoDaConta != codigoDeConta)) { if (conta == null) { throw new Exception(); conta = new Conta(descricaoDaConta, tipoContaOutras) { CodigoDaConta = codigoDeConta }; repositorioContas.Salvar(conta); } listaContas.Add(conta); } else conta = listaContas.FirstOrDefault(c => c.CodigoDaConta == codigoDeConta); } var grupos = new GruposDeConta(); var gruposDeContaLista = new List<GrupoDeConta>(); foreach (var grupo in gruposDeConta) { var grupoDeConta = grupos.ObterPor(grupo); if (grupoDeConta == null) throw new Exception(); var contasDoGrupo = documento.Where(x => x.GrupoResumoNome == grupo).Select(y => y.CodigoConta).Distinct(); foreach (var codigoConta in contasDoGrupo) { var conta = listaContas.FirstOrDefault(c => c.CodigoDaConta == codigoConta); if (grupoDeConta.Contas == null) grupoDeConta.Contas = new List<Conta>(); if (grupoDeConta.Contas.All(c => c.CodigoDaConta != codigoConta)) grupoDeConta.Adicionar(conta); } gruposDeContaLista.Add(grupoDeConta); grupos.Salvar(grupoDeConta); } var codigosDecentrosDeCusto = documento.Select(x => x.CodigoCentroDeCusto).Distinct(); foreach (var codigoDeCentro in codigosDecentrosDeCusto) { var descricaoDeCentroDeCusto = documento.Where(x => x.CodigoCentroDeCusto == codigoDeCentro).Select(y => y.DescricaoCentroDeCusto).Distinct().First(); var centroDeCusto = repositorioDeCusto.ObterPor(codigoDeCentro); if (centroDeCusto == null) { throw new Exception(); centroDeCusto = new CentroDeCusto(descricaoDeCentroDeCusto) { CodigoDoCentroDeCusto = codigoDeCentro }; } var contas = documento.Where(x => x.CodigoCentroDeCusto == codigoDeCentro).Select(y => y.CodigoConta).Distinct(); if (centroDeCusto.Contas == null) centroDeCusto.Contas = new List<Conta>(); foreach (var conta in contas) { if (centroDeCusto.Contas.All(c => c.CodigoDaConta != conta)) centroDeCusto.AdicionarConta(listaContas.SingleOrDefault(x => x.CodigoDaConta == conta)); } repositorioDeCusto.Salvar(centroDeCusto); listaCentrosDeCusto.Add(centroDeCusto); } var hospitais = documento.Select(x => x.NomeHospital).Distinct(); foreach (var nomeHospital in hospitais) { var hospital = repositorioDeHospitais.ObterPor(nomeHospital); if(hospital == null) throw new Exception(); var centrosDeCusto = documento.Where(x => x.NomeHospital == hospital.Nome).Select(y => y.CodigoCentroDeCusto).Distinct(); if (hospital.CentrosDeCusto == null) hospital.CentrosDeCusto = new List<CentroDeCusto>(); foreach (var codigoCentroCusto in centrosDeCusto) { if (hospital.CentrosDeCusto.All(c => c.CodigoDoCentroDeCusto != codigoCentroCusto)) hospital.AdicionarCentroDeCusto(listaCentrosDeCusto.SingleOrDefault(x => x.CodigoDoCentroDeCusto == codigoCentroCusto)); } repositorioDeHospitais.Salvar(hospital); } }
public void c_integrar_dados_do_excel_test() { var tiposConta = new TiposConta(); var tipoContaOutras = new TipoConta { Nome = "Outras" }; tiposConta.Adicionar(tipoContaOutras); string _conectionstring; _conectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;"; _conectionstring += String.Format("Data Source={0};", "D:\\Hospital2.xls"); _conectionstring += "Extended Properties='Excel 8.0;HDR=NO;'"; OleDbConnection cn = new OleDbConnection(_conectionstring); OleDbCommand cmd = new OleDbCommand("Select * from [HOSPITAL x CENTRO CUSTO MOD$]", cn); cn.Open(); OleDbDataReader reader = cmd.ExecuteReader(); List<RegistroExcel> documento = new List<RegistroExcel>(); List<Conta> listaContas = new List<Conta>(); List<CentroDeCusto> listaCentrosDeCusto = new List<CentroDeCusto>(); Hospitais repositorioDeHospitais = new Hospitais(); CentrosDeCusto repositorioDeCusto = new CentrosDeCusto(); Contas repositorioContas = new Contas(); int i = 0; while (reader.Read()) { if (i == 0) { i++; continue; } if (reader[0] == DBNull.Value) break; RegistroExcel registroExcel = new RegistroExcel() { NomeHospital = (string)reader[0], CodigoCentroDeCusto = (string)reader[1], DescricaoCentroDeCusto = (string)reader[2] }; if (reader[3] != DBNull.Value) { registroExcel.DescricaoConta = (string)reader[3]; registroExcel.CodigoConta = (string)reader[4]; registroExcel.GrupoResumoNome = (string)reader[5]; } documento.Add(registroExcel); } cn.Close(); cn.Dispose(); cmd.Dispose(); var gruposDeConta = documento.Select(x => x.GrupoResumoNome).Distinct(); var codigosDeConta = documento.Select(x => x.CodigoConta).Distinct(); foreach (var codigoDeConta in codigosDeConta) { string descricaoDaConta = documento.Where(x => x.CodigoConta == codigoDeConta).Select(y => y.DescricaoConta).Distinct().First(); Conta conta; if (!listaContas.Any(c => c.CodigoDaConta == codigoDeConta)) { conta = new Conta(descricaoDaConta, tipoContaOutras) { CodigoDaConta = codigoDeConta }; repositorioContas.Salvar(conta); listaContas.Add(conta); } else conta = listaContas.Where(c => c.CodigoDaConta == codigoDeConta).FirstOrDefault(); } GruposDeConta grupos = new GruposDeConta(); List<GrupoDeConta> gruposDeContaLista = new List<GrupoDeConta>(); foreach (var grupo in gruposDeConta) { GrupoDeConta grupoDeConta = new GrupoDeConta(grupo); var contasDoGrupo = documento.Where(x => x.GrupoResumoNome == grupo).Select(y => y.CodigoConta).Distinct(); foreach (var codigoConta in contasDoGrupo) { var conta = listaContas.Where(c => c.CodigoDaConta == codigoConta).FirstOrDefault(); grupoDeConta.Adicionar(conta); } gruposDeContaLista.Add(grupoDeConta); grupos.Salvar(grupoDeConta); } var codigosDecentrosDeCusto = documento.Select(x => x.CodigoCentroDeCusto).Distinct(); foreach (var codigoDeCentro in codigosDecentrosDeCusto) { var descricaoDeCentroDeCusto = documento.Where(x => x.CodigoCentroDeCusto == codigoDeCentro).Select(y => y.DescricaoCentroDeCusto).Distinct().First(); CentroDeCusto centroDeCusto = new CentroDeCusto(descricaoDeCentroDeCusto) { CodigoDoCentroDeCusto = codigoDeCentro }; var contas = documento.Where(x => x.CodigoCentroDeCusto == codigoDeCentro).Select(y => y.CodigoConta).Distinct(); foreach (var conta in contas) { centroDeCusto.AdicionarConta(listaContas.Where(x => x.CodigoDaConta == conta).SingleOrDefault()); } repositorioDeCusto.Salvar(centroDeCusto); listaCentrosDeCusto.Add(centroDeCusto); } var hospitais = documento.Select(x => x.NomeHospital).Distinct(); foreach (var nomeHospital in hospitais) { Hospital hospital = new Hospital(); hospital.Nome = nomeHospital; var centrosDeCusto = documento.Where(x => x.NomeHospital == hospital.Nome).Select(y => y.CodigoCentroDeCusto).Distinct(); foreach (var codigoCentroCusto in centrosDeCusto) { hospital.AdicionarCentroDeCusto(listaCentrosDeCusto.Where(x => x.CodigoDoCentroDeCusto == codigoCentroCusto).SingleOrDefault()); } repositorioDeHospitais.Salvar(hospital); } }
public void e_InserirHospitaisComSetoresESubSetores() { Orcamentos orcamentos = new Orcamentos(); Departamentos repositorioDepartamentos = new Departamentos(); var departamentos = repositorioDepartamentos.Todos<Departamento>(); //Cirurgia //Procedimento //Procedimento var setorHemodinamica = new SetorHospitalar("Hemodinâmica"); var subSetorHemodinamica = new SubSetorHospital("Hemodinâmica"); setorHemodinamica.AdicionarSetor(subSetorHemodinamica); var setorOncologia = new SetorHospitalar("Oncologia"); var subSetorOncologia = new SubSetorHospital("Oncologia"); setorOncologia.AdicionarSetor(subSetorOncologia); var procedimento = new ContaHospital("Procedimendo", TipoValorContaEnum.Quantidade); setorHemodinamica.AdicionarConta(procedimento); setorOncologia.AdicionarConta(procedimento); var centroCirurgico = new SetorHospitalar("Centro Cirúrgico"); var centroCirurgicoSubSetor = new SubSetorHospital("Centro Cirúrgico"); var centroCirurgicoObstetrico = new SubSetorHospital("Centro Obstétrico"); centroCirurgico.AdicionarSetor(centroCirurgicoSubSetor); centroCirurgico.AdicionarSetor(centroCirurgicoObstetrico); //Contas ta cirurgia var cirurgia = new ContaHospital("Cirurgias", TipoValorContaEnum.Quantidade); var salas = new ContaHospital("Salas", TipoValorContaEnum.Quantidade, false, true); var cirurgiaPorSala = new ContaHospital("Cirurgias por Sala", TipoValorContaEnum.Quantidade, true, false); centroCirurgico.AdicionarConta(cirurgia); centroCirurgico.AdicionarConta(salas); centroCirurgico.AdicionarConta(cirurgiaPorSala); cirurgiaPorSala.AnexarConta(cirurgia); cirurgiaPorSala.AnexarConta(salas); //UTI var uti = new SetorHospitalar("UTI"); var utiSemiMaternidade = new SubSetorHospital("UTI Semi Maternidade"); var utiAdulto = new SubSetorHospital("UTI Adulto"); var utiPediatrica = new SubSetorHospital("Uti Pediátrica"); var utiNeoNatal = new SubSetorHospital("Uti Neo-Natal"); var utiCoronariana = new SubSetorHospital("Uti Coronariana"); var semiIntensiva = new SubSetorHospital("Uti Semi-Intensiva"); //Contas da UTI var leito = new ContaHospital("Leito", TipoValorContaEnum.Quantidade); var ocupacao = new ContaHospital("Taxa de Ocupação", TipoValorContaEnum.Porcentagem); leito.MultiPlicaPorMes = true; uti.AdicionarConta(leito); uti.AdicionarConta(ocupacao); //SubSetores da UTI uti.AdicionarSetor(utiSemiMaternidade); uti.AdicionarSetor(utiAdulto); uti.AdicionarSetor(utiPediatrica); uti.AdicionarSetor(utiNeoNatal); uti.AdicionarSetor(utiCoronariana); uti.AdicionarSetor(semiIntensiva); //UNI var uni = new SetorHospitalar("UNI"); var uniAdulto = new SubSetorHospital("Uni Adulto"); var uniPediatrica = new SubSetorHospital("Uni Pediátrica"); var uniMaternidade = new SubSetorHospital("Maternidade"); uni.AdicionarSetor(uniAdulto); uni.AdicionarSetor(uniPediatrica); uni.AdicionarSetor(uniMaternidade); //Contas UNI uni.AdicionarConta(leito); uni.AdicionarConta(ocupacao); //Conta Atendimento var atendimento = new ContaHospital("Atendimento", TipoValorContaEnum.Quantidade); //Emergencia var emergencia = new SetorHospitalar("Emergência"); var subEmergenciaMaternidade = new SubSetorHospital("Emergência Maternidade"); var subEmergenciaAdulto = new SubSetorHospital("Emergência Adulto"); var subEmergenciaPediatrica = new SubSetorHospital("Emergência Pediátrica"); emergencia.AdicionarSetor(subEmergenciaMaternidade); emergencia.AdicionarSetor(subEmergenciaAdulto); emergencia.AdicionarSetor(subEmergenciaPediatrica); emergencia.AdicionarConta(atendimento); //Ambulatorio var ambulatorio = new SetorHospitalar("Ambulatório"); var subAmbulatorio = new SubSetorHospital("Ambulatório"); ambulatorio.AdicionarSetor(subAmbulatorio); ambulatorio.AdicionarConta(atendimento); //SADT var sadt = new SetorHospitalar("SADT"); var cardiologico = new SubSetorHospital("Cardiológico"); var resonanciaMagnetica = new SubSetorHospital("Resonância Mag"); var ultrassonografica = new SubSetorHospital("Ultrassonografia"); var tomografiaCompleta = new SubSetorHospital("Tomografia Comp"); var radiologia = new SubSetorHospital("Radiologia"); var patologiaClinica = new SubSetorHospital("Patologia Clínica"); var outros = new SubSetorHospital("Outros"); var exames = new ContaHospital("Exames", TipoValorContaEnum.Quantidade); sadt.AdicionarSetor(cardiologico); sadt.AdicionarSetor(resonanciaMagnetica); sadt.AdicionarSetor(ultrassonografica); sadt.AdicionarSetor(tomografiaCompleta); sadt.AdicionarSetor(radiologia); sadt.AdicionarSetor(patologiaClinica); sadt.AdicionarSetor(outros); sadt.AdicionarConta(exames); foreach (var departamento in departamentos) { if (departamento.GetType() == typeof(Setor)) continue; departamento.AdicionarSetor(sadt); departamento.AdicionarSetor(centroCirurgico); departamento.AdicionarSetor(uti); departamento.AdicionarSetor(uni); departamento.AdicionarSetor(emergencia); departamento.AdicionarSetor(ambulatorio); departamento.AdicionarSetor(setorHemodinamica); departamento.AdicionarSetor(setorOncologia); Hospitais repositorio = new Hospitais(); repositorio.Salvar(departamento); } }
public void s_inserir_novo_centro_de_custo_hospitalar() { var tiposConta = new TiposConta(); var tipoContaOutras = new TipoConta { Nome = "Outras" }; tiposConta.Adicionar(tipoContaOutras); string _conectionstring; _conectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;"; _conectionstring += String.Format("Data Source={0};", "D:\\CentroDeCustoHospitalarOutro.xls"); _conectionstring += "Extended Properties='Excel 8.0;HDR=NO;'"; OleDbConnection cn = new OleDbConnection(_conectionstring); OleDbCommand cmd = new OleDbCommand("Select * from [centro$]", cn); cn.Open(); OleDbDataReader reader = cmd.ExecuteReader(); List<RegistroExcel> documento = new List<RegistroExcel>(); List<Conta> listaContas = new List<Conta>(); List<CentroDeCusto> listaCentrosDeCusto = new List<CentroDeCusto>(); Hospitais repositorioDeHospitais = new Hospitais(); CentrosDeCusto repositorioDeCusto = new CentrosDeCusto(); Contas repositorioContas = new Contas(); int i = 0; while (reader.Read()) { if (i < 2) { i++; continue; } if (reader[0] == DBNull.Value) break; RegistroExcel registroExcel = new RegistroExcel() { NomeHospital = (string)reader[0], CodigoCentroDeCusto = (string)reader[1], DescricaoCentroDeCusto = (string)reader[2] }; if (reader[3] != DBNull.Value) { registroExcel.DescricaoConta = (string)reader[3]; registroExcel.CodigoConta = (string)reader[4]; registroExcel.GrupoResumoNome = (string)reader[5]; } documento.Add(registroExcel); } cn.Close(); cn.Dispose(); cmd.Dispose(); var gruposDeConta = documento.Select(x => x.GrupoResumoNome).Distinct(); var codigosDeConta = documento.Select(x => x.CodigoConta).Distinct(); foreach (var codigoDeConta in codigosDeConta) { string descricaoDaConta = documento.Where(x => x.CodigoConta == codigoDeConta).Select(y => y.DescricaoConta).Distinct().First(); var conta = repositorioContas.ObterContaPor(codigoDeConta); if (conta == null) Assert.Fail(); listaContas.Add(conta); } var codigosDecentrosDeCusto = documento.Select(x => x.CodigoCentroDeCusto).Distinct(); foreach (var codigoDeCentro in codigosDecentrosDeCusto) { var descricaoDeCentroDeCusto = documento.Where(x => x.CodigoCentroDeCusto == codigoDeCentro).Select(y => y.DescricaoCentroDeCusto).Distinct().First(); CentroDeCusto centroDeCusto = new CentroDeCusto(descricaoDeCentroDeCusto) { CodigoDoCentroDeCusto = codigoDeCentro }; var contas = documento.Where(x => x.CodigoCentroDeCusto == codigoDeCentro).Select(y => y.CodigoConta).Distinct(); foreach (var conta in contas) { centroDeCusto.AdicionarConta(listaContas.Where(x => x.CodigoDaConta == conta).SingleOrDefault()); } repositorioDeCusto.Salvar(centroDeCusto); listaCentrosDeCusto.Add(centroDeCusto); } var hospitais = documento.Select(x => x.NomeHospital).Distinct(); foreach (var nomeHospital in hospitais) { Hospital hospital = repositorioDeHospitais.ObterPor(nomeHospital); if (hospital == null) Assert.Fail(); var centrosDeCusto = documento.Where(x => x.NomeHospital == hospital.Nome).Select(y => y.CodigoCentroDeCusto).Distinct(); foreach (var codigoCentroCusto in centrosDeCusto) { hospital.AdicionarCentroDeCusto(listaCentrosDeCusto.Where(x => x.CodigoDoCentroDeCusto == codigoCentroCusto).SingleOrDefault()); } repositorioDeHospitais.Salvar(hospital); } }