/// <summary> /// Lista de incidencias. /// </summary> private void ListarIncidencias() { var incidenciasRepositorio = new DoencaEmUnidadeSaudeRepositorio(); List <DoencaEmUnidadeSaude> listaDeIncidencias = incidenciasRepositorio.Listar(); var listaIncidencias = listaDeIncidencias.OrderBy(z => z.DescricaoDoenca).ToList(); this._listaDeIncidencias = listaDeIncidencias; this.lvIncidenciaDoenca.Items.Clear(); foreach (var incidencia in listaDeIncidencias) { ListViewItem lvItem = this.lvIncidenciaDoenca.Items.Add(incidencia.DescricaoDoenca.ToString()); lvItem.SubItems.Add(incidencia.NomeUnidadeSaude.ToString()); lvItem.SubItems.Add(incidencia.Incidencia.ToString()); } }
private void FrmBuscarDoenca_Load(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; try { var incidenciasRepositorio = new DoencaEmUnidadeSaudeRepositorio(); List <DoencaEmUnidadeSaude> _listaDeIncidencias = incidenciasRepositorio.Listar(); var _listaIncidencias = _listaDeIncidencias.OrderBy(z => z.DescricaoDoenca).ToList(); } catch (Exception ex) { this.MostrarErro(ex); } finally { this.Cursor = Cursors.Default; this.lvIncidenciaDoenca.Items.Clear(); } }
public void btnAlterarDoenca_Click(object sender, EventArgs e) { // valida os campos if (!this.ValidarCampos()) { return; } this.Cursor = Cursors.WaitCursor; //alterar incidencia de doenca try { var incidenciaDoencaEmUnidadeSaude = new DoencaEmUnidadeSaudeRepositorio(); if (txtNumeroCasos != null) { var incidenciaDoenca = new DoencaEmUnidadeSaude(); incidenciaDoenca.Incidencia = txtNumeroCasos.Text.ToInt32(); incidenciaDoenca.CodigoUnidadeSaude = (int)this.cmbUS.SelectedValue; incidenciaDoenca.CodigoDoenca = (int)this.cmbDoenca.SelectedValue; incidenciaDoenca.Incidencia = incidenciaDoencaEmUnidadeSaude.Alterar(incidenciaDoenca); } this.Cursor = Cursors.Default; MessageBox.Show("A incidência da doença [" + cmbDoenca.Text + "] na Unidade de Saúde [" + cmbUS.Text + "] foi alterada com sucesso!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } catch (Exception ex) { this.MostrarErro(ex); } finally { this.Cursor = Cursors.Default; this.LimparCampos(); } }
private void btnPesquisar_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; string filtro = this.txtIncidencia.Text.Trim(); try { if (filtro.IsNullEmptyOrWhiteSpace()) { this.ListarIncidencias(); } else { var incidenciasRepositorio = new DoencaEmUnidadeSaudeRepositorio(); List <DoencaEmUnidadeSaude> listaDeIncidencias = incidenciasRepositorio.Listar(); var listaIncidencias = listaDeIncidencias.Where(w => w.DescricaoDoenca.Contains(filtro)).OrderBy(z => z.DescricaoDoenca).ToList(); this._listaDeIncidencias = listaIncidencias; this.lvIncidenciaDoenca.Items.Clear(); foreach (var incidencia in _listaDeIncidencias) { ListViewItem lvItem = this.lvIncidenciaDoenca.Items.Add(incidencia.DescricaoDoenca.ToString()); lvItem.SubItems.Add(incidencia.NomeUnidadeSaude.ToString()); lvItem.SubItems.Add(incidencia.Incidencia.ToString()); } } } catch (Exception ex) { this.MostrarErro(ex); } finally { this.Cursor = Cursors.Default; } }
private void btnOK_Click(object sender, EventArgs e) { // valida os campos if (!this.ValidarCampos()) { return; } this.Cursor = Cursors.WaitCursor; //enviar os parametros pra function do banco try { var incidenciaDoencaEmUnidadeSaude = new DoencaEmUnidadeSaudeRepositorio(); //retorna uma lista de unidades de saude com incidencia da doença escolhida var listaIncidenciaDoencaEmDistritosSanitarios = incidenciaDoencaEmUnidadeSaude.GerarMapaTematicoEmDistritosSanitarios((int)this.cmbDoenca.SelectedValue, this.dateTPDe.Value.Year, this.dateTPAte.Value.Year); listaIncidenciaDoencaEmDistritosSanitarios.Count.ToString(); //criar a Feature Class IFeatureClass featureClass = CreateNewShapeFile(@"C:\Sistemas\GestaoSMS\Files\Mapas\MapaIncidencia" + cmbDoenca.Text + "EmDistritosSanitarios" + DateTime.Now.ToString("ddMMyyyyhhmmss") + ".shp"); //criar uma feature buffer IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer(); //campo nome int indexNome = featureClass.FindField("nome"); //campo incidências int indexIncidencia = featureClass.FindField("incidencia"); //criar um feature cursor com buffer ativado IFeatureCursor featureCursor = featureClass.Insert(true); foreach (MapaDoencaEmDistritoSanitario incidencia in listaIncidenciaDoencaEmDistritosSanitarios) { //passar de Wkb para IGeometry var geometry = WKBToGeometry(incidencia.DistritosSanitarios); //atribuir a geometria ao buffer featureBuffer.Shape = geometry; featureBuffer.set_Value(indexNome, incidencia.Nome); featureBuffer.set_Value(indexIncidencia, incidencia.TotalIncidencias); //inserir a feature na featureclass featureCursor.InsertFeature(featureBuffer); } featureCursor.Flush(); Marshal.FinalReleaseComObject(featureCursor); try { //cria featureLayer IFeatureLayer featureLayer = new FeatureLayerClass(); featureLayer.FeatureClass = featureClass; if (featureLayer != null) { //cria a geofeaturelayer IGeoFeatureLayer geoFeatureLayer = (IGeoFeatureLayer)featureLayer; //ativar os Labels //geoFeatureLayer.DisplayAnnotation = true; //tabela dos dados ITable table = (ITable)featureClass; //define o metodo de classificacao IClassifyGEN classifyGEN = new NaturalBreaks(); //objetos com array de frequencia de dados e valores dos dados object dataFrequency; object dataValues; //histograma ITableHistogram tableHistogram = new TableHistogramClass(); IHistogram histogram = (IHistogram)tableHistogram; tableHistogram.Field = "incidencia"; tableHistogram.Table = table; histogram.GetHistogram(out dataValues, out dataFrequency); double[] data = dataValues as double[]; int[] freq = dataFrequency as int[]; classifyGEN.Classify(data, freq, 5); //Renderer de simbolos proporcionais IClassBreaksRenderer render = new ClassBreaksRenderer(); double[] cb = (double[])classifyGEN.ClassBreaks; render.Field = "incidencia"; render.BreakCount = 5; //render.MinimumBreak = listaIncidenciaDoencaEmDistritosSanitarios.Min(p => p.TotalIncidencias); render.MinimumBreak = cb[0]; //define a escala de cores IRgbColor color1 = new RgbColor(); IRgbColor color2 = new RgbColor(); color1.Red = 255; color1.Green = 255; color1.Blue = 0; color2.Red = 140; color2.Green = 23; color2.Blue = 23; IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRamp(); colorRamp.FromColor = color1; colorRamp.ToColor = color2; colorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm; colorRamp.Size = 5; bool ok; colorRamp.CreateRamp(out ok); IEnumColors enumColors = colorRamp.Colors; enumColors.Reset(); IClassBreaksUIProperties uiProperties = (IClassBreaksUIProperties)render; uiProperties.ColorRamp = "Custom"; //loop para definir o estilo de cada geometria de distrito sanitario for (int i = 0; i < 5; i++) { if (i != 0) { render.Break[i] = cb[i + 1]; render.Label[i] = (cb[i] + 1).ToString("0") + " - " + cb[i + 1].ToString("0"); uiProperties.LowBreak[i] = cb[i] + 1; } else { render.Break[i] = cb[i + 1]; render.Label[i] = "0 - " + cb[i + 1].ToString("0"); uiProperties.LowBreak[i] = cb[i] + 1; } ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbol(); simpleFillSymbol.Color = enumColors.Next(); simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid; ISymbol symbolteste = simpleFillSymbol as ISymbol; render.Symbol[i] = (ISymbol)symbolteste; } //carregar o shape no mapa geoFeatureLayer.FeatureClass = featureClass; geoFeatureLayer.Name = featureClass.AliasName; geoFeatureLayer.Visible = true; geoFeatureLayer.Renderer = (IFeatureRenderer)render; ArcMap.Document.FocusMap.AddLayer(geoFeatureLayer); } MessageBox.Show("O mapa de incidência da doença [" + cmbDoenca.Text + "] nos Distritos Sanitários foi gerado com sucesso!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } catch (Exception ex) { MostrarErro(ex); MessageBox.Show("Escolha um período que contenha incidências da doença [" + cmbDoenca.Text + "].", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } catch (Exception ex) { this.MostrarErro(ex); } finally { this.Cursor = Cursors.Default; } }
private void btnOK_Click(object sender, EventArgs e) { // valida os campos if (!this.ValidarCampos()) { return; } this.Cursor = Cursors.WaitCursor; try { //repositório var incidenciaDoencaEmUnidadeSaude = new DoencaEmUnidadeSaudeRepositorio(); //recupera informações para o relatório var listaIncidenciaDoencasEmUnidadeSaude = incidenciaDoencaEmUnidadeSaude.ListarDoencasDeUmaUnidadeSaude((int)this.cmbUS.SelectedValue, this.dtDe.Value.Year, this.dtAte.Value.Year); //ordena a lista var listaDeIncidenciaDoencaEmUnidadeSaude = listaIncidenciaDoencasEmUnidadeSaude.OrderBy(y => y.DescricaoDoenca).ToList(); //define os datasources do relatório var localReport = new LocalReport(); localReport.ReportEmbeddedResource = "GestaoSMSAddin.DataAccess.Reports.UnidadeSaudeDoencasRpt.rdlc"; localReport.DataSources.Clear(); localReport.DataSources.Add(new ReportDataSource("DoencaEmUnidadeSaude", listaIncidenciaDoencasEmUnidadeSaude)); localReport.Refresh(); // parâmetros do relatório string descricaoUS = this.cmbUS.Text; string ano = DateTime.Now.Year.ToString(); string soma = listaIncidenciaDoencasEmUnidadeSaude.Sum(w => w.Incidencia).ToString(); var rptParameter1 = new ReportParameter("nomeUnidadeSaude", descricaoUS); var rptParameter2 = new ReportParameter("ano", ano); var rptParameter3 = new ReportParameter("somaIncidencia", soma); localReport.SetParameters( new ReportParameter[] { rptParameter1, rptParameter2, rptParameter3 }); if (this.dtDe.Value.Year == this.dtAte.Value.Year) { string anoIncidencia = this.dtAte.Value.Year.ToString(); var rptParameter4 = new ReportParameter("anoIncidencia", anoIncidencia); localReport.SetParameters( new ReportParameter[] { rptParameter4 }); } else { string anoIncidencia = this.dtDe.Value.Year.ToString() + " - " + this.dtAte.Value.Year.ToString(); var rptParameter4 = new ReportParameter("anoIncidencia", anoIncidencia); localReport.SetParameters( new ReportParameter[] { rptParameter4 }); } //nome do relatório string nomePdfRelatorio = System.IO.Path.Combine(System.IO.Path.GetTempPath(), Guid.NewGuid().ToString() + ".pdf"); //criação de arquivo do relatório byte[] pdfBytes = localReport.Render("PDF"); var binaryWriter = new BinaryWriter(new FileStream(nomePdfRelatorio, FileMode.CreateNew, FileAccess.Write)); binaryWriter.Write(pdfBytes, 0, pdfBytes.Length); binaryWriter.Close(); //mostra o arquivo de relatório ao usuário Process.Start(nomePdfRelatorio); } catch (Exception ex) { MostrarErro(ex); } finally { this.Cursor = Cursors.Default; } }
public void btnOk_Click(object sender, EventArgs e) { // valida os campos if (!this.ValidarCampos()) { return; } this.Cursor = Cursors.WaitCursor; //enviar os parametros pra function do banco try { var incidenciaDoencaEmUnidadeSaude = new DoencaEmUnidadeSaudeRepositorio(); if (cmbDoenca.SelectedItem != null && rbtnTodas.Checked == true) { //retorna uma lista de unidades de saude com incidencia da doença escolhida var listaIncidenciaDoencaEmUnidadeSaude = incidenciaDoencaEmUnidadeSaude.GerarMapaTematicoEmUnidadesDeSaude((int)this.cmbDoenca.SelectedValue, this.dtInicio.Value.Year, this.dtFinal.Value.Year); listaIncidenciaDoencaEmUnidadeSaude.Count.ToString(); //criar a Feature Class IFeatureClass featureClass = CreateNewShapeFile(@"C:\Sistemas\GestaoSMS\Files\Mapas\MapaIncidencia" + cmbDoenca.Text + "EmUnidadeDeSaude" + DateTime.Now.ToString("ddMMyyyyhhmmss") + ".shp"); //criar uma feature buffer IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer(); //campo nome int indexNome = featureClass.FindField("nome"); //campo incidências int indexIncidencia = featureClass.FindField("incidencia"); //criar um feature cursor com buffer ativado IFeatureCursor featureCursor = featureClass.Insert(true); foreach (MapaDoencaEmUnidadeSaude incidencia in listaIncidenciaDoencaEmUnidadeSaude) { //passar de Wkb para IGeometry var geometry = WKBToGeometry(incidencia.UnidadesSaude); //atribuir a geometria ao buffer featureBuffer.Shape = geometry; featureBuffer.set_Value(indexNome, incidencia.Nome); featureBuffer.set_Value(indexIncidencia, incidencia.TotalIncidencias); //inserir a feature na featureclass featureCursor.InsertFeature(featureBuffer); } Marshal.FinalReleaseComObject(featureCursor); try { //cria featureLayer IFeatureLayer featureLayer = new FeatureLayerClass(); featureLayer.FeatureClass = featureClass; if (featureLayer != null) { //cria a geofeaturelayer IGeoFeatureLayer geoFeatureLayer = (IGeoFeatureLayer)featureLayer; //ativar os Labels //geoFeatureLayer.DisplayAnnotation = true; //calculo do raio minimo das pontos var minimo = (double)listaIncidenciaDoencaEmUnidadeSaude.Min(p => p.TotalIncidencias); var maximo = (double)listaIncidenciaDoencaEmUnidadeSaude.Max(p => p.TotalIncidencias); var n = (double)listaIncidenciaDoencaEmUnidadeSaude.Max(p => p.TotalIncidencias) / (Math.PI * Math.Pow((double)listaIncidenciaDoencaEmUnidadeSaude.Max(p => p.UnidadesSaude.LongLength), 2.0)); var div = minimo / n; var pow = Math.Pow(div, 0.57); var tamanho = pow * 0.564; //cria o símbolo do marcador ISimpleMarkerSymbol symbol = new SimpleMarkerSymbolClass(); symbol.Style = esriSimpleMarkerStyle.esriSMSCircle; symbol.Size = tamanho; ISymbol symbolteste = symbol as ISymbol; //Renderer de simbolos proporcionais IProportionalSymbolRenderer teste = new ProportionalSymbolRendererClass(); teste.ValueUnit = ESRI.ArcGIS.esriSystem.esriUnits.esriUnknownUnits; teste.Field = "incidencia"; teste.MinDataValue = listaIncidenciaDoencaEmUnidadeSaude.Min(p => p.TotalIncidencias); teste.MaxDataValue = listaIncidenciaDoencaEmUnidadeSaude.Max(p => p.TotalIncidencias); teste.FlanneryCompensation = false; teste.LegendSymbolCount = 5; teste.MinSymbol = symbolteste; teste.CreateLegendSymbols(); geoFeatureLayer.Renderer = (IFeatureRenderer)teste; //carregar o shape no mapa geoFeatureLayer.FeatureClass = featureClass; geoFeatureLayer.Name = featureClass.AliasName; geoFeatureLayer.Visible = true; ArcMap.Document.FocusMap.AddLayer(geoFeatureLayer); MessageBox.Show("O mapa de incidência da doença [" + cmbDoenca.Text + "] em todas as Unidade de Saúde foi gerado com sucesso!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } catch (Exception ex) { MostrarErro(ex); MessageBox.Show("Escolha um período que contenha incidências da doença [" + cmbDoenca.Text + "].", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } else if (cmbDoenca.SelectedItem != null && rbtnDSEspecifico.Checked == true) { //retorna uma lista de unidades de saude com incidencia da doença escolhida var listaIncidenciaDoencaEmUnidadeSaude = incidenciaDoencaEmUnidadeSaude.GerarMapaTematicoEmUnidadesDeSaudeDeDistritoEspecifico( (int)cmbDoenca.SelectedValue, (int)cmbDSEspecifico.SelectedValue, this.dtInicio.Value.Year, this.dtFinal.Value.Year); listaIncidenciaDoencaEmUnidadeSaude.Count.ToString(); //criar a Feature Class IFeatureClass featureClass = CreateNewShapeFile(@"C:\Sistemas\GestaoSMS\Files\Mapas\MapaIncidencia" + cmbDoenca.Text + "EmUS" + cmbDSEspecifico.Text + DateTime.Now.ToString("ddMMyyyyhhmmss") + ".shp"); //criar uma feature buffer IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer(); //campo nome int indexNome = featureClass.FindField("nome"); //campo incidências int indexIncidencia = featureClass.FindField("incidencia"); //criar um feature cursor com buffer ativado IFeatureCursor featureCursor = featureClass.Insert(true); foreach (MapaDoencaEmUnidadeSaude incidencia in listaIncidenciaDoencaEmUnidadeSaude) { //passar de Wkb para IGeometry var geometry = WKBToGeometry(incidencia.UnidadesSaude); //atribuir a geometria ao buffer featureBuffer.Shape = geometry; featureBuffer.set_Value(indexNome, incidencia.Nome); featureBuffer.set_Value(indexIncidencia, incidencia.TotalIncidencias); //inserir a feature na featureclass featureCursor.InsertFeature(featureBuffer); } Marshal.FinalReleaseComObject(featureCursor); try { //cria featureLayer IFeatureLayer featureLayer = new FeatureLayerClass(); featureLayer.FeatureClass = featureClass; if (featureLayer != null) { //cria a geofeaturelayer IGeoFeatureLayer geoFeatureLayer = (IGeoFeatureLayer)featureLayer; //ativar os Labels //geoFeatureLayer.DisplayAnnotation = true; //calculo do raio minimo das pontos var minimo = (double)listaIncidenciaDoencaEmUnidadeSaude.Min(p => p.TotalIncidencias); var maximo = (double)listaIncidenciaDoencaEmUnidadeSaude.Max(p => p.TotalIncidencias); var n = (double)listaIncidenciaDoencaEmUnidadeSaude.Max(p => p.TotalIncidencias) / (Math.PI * Math.Pow((double)listaIncidenciaDoencaEmUnidadeSaude.Max(p => p.UnidadesSaude.LongLength), 2.0)); var div = minimo / n; var pow = Math.Pow(div, 0.57); var tamanho = pow * 0.564; //cria o símbolo do marcador ISimpleMarkerSymbol symbol = new SimpleMarkerSymbolClass(); symbol.Style = esriSimpleMarkerStyle.esriSMSCircle; symbol.Size = tamanho; ISymbol symbolteste = symbol as ISymbol; //Renderer de simbolos proporcionais IProportionalSymbolRenderer teste = new ProportionalSymbolRendererClass(); teste.ValueUnit = ESRI.ArcGIS.esriSystem.esriUnits.esriUnknownUnits; teste.Field = "incidencia"; teste.MinDataValue = listaIncidenciaDoencaEmUnidadeSaude.Min(p => p.TotalIncidencias); teste.MaxDataValue = listaIncidenciaDoencaEmUnidadeSaude.Max(p => p.TotalIncidencias); teste.FlanneryCompensation = false; teste.LegendSymbolCount = 5; teste.MinSymbol = symbolteste; teste.CreateLegendSymbols(); geoFeatureLayer.Renderer = (IFeatureRenderer)teste; //carregar o shape no mapa geoFeatureLayer.FeatureClass = featureClass; geoFeatureLayer.Name = featureClass.AliasName; geoFeatureLayer.Visible = true; ArcMap.Document.FocusMap.AddLayer(geoFeatureLayer); MessageBox.Show("O mapa de incidência da doença [" + cmbDoenca.Text + "] nas Unidades de Saúde da [" + cmbDSEspecifico.Text + "] foi gerado com sucesso!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } catch (Exception ex) { MostrarErro(ex); MessageBox.Show("Escolha um período que contenha incidências da doença [" + cmbDoenca.Text + "] na [" + cmbDSEspecifico.Text + "].", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } } catch (Exception ex) { this.MostrarErro(ex); } finally { this.Cursor = Cursors.Default; } }