//public static List<Exame> getExames(string strExame, string strCaminhoXEXAS, string strCaminhoTEXAS) public static SortedDictionary <string, Exame> getExames(string strExame, string strCaminhoXEXAS, string strCaminhoTEXAS, string strCaminhoTEXAB) { FileStream fsArquivoInciceExame = File.OpenRead(strCaminhoXEXAS); FileStream fsArquivoExame = File.OpenRead(strCaminhoTEXAS); //List<Exame> lCampos = new List<Exame>(); SortedDictionary <string, Exame> lCampos = new SortedDictionary <string, Exame>(); Dictionary <string, string> dCamposAdicionados = new Dictionary <string, string>(); string strCodExame; string strKeyExame; int intPosicaoBloco = 512; string strPos1 = null; string strPos2 = null; string strInicioBloco = null; long lPosCampo = 0; int i = 0; int iContadorValoresNormais; Exame exAtual; ValorNormal vnAtual; string strTemp; string strTemp2; fsArquivoInciceExame.Position = 512; while (fsArquivoExame.CanRead && fsArquivoExame.Position < fsArquivoExame.Length) { strCodExame = Util.getTexto(ref fsArquivoExame, 6); // strCodExame1 = Util.getTexto(ref fsArquivoExame, 6); if (!strCodExame.Equals(strExame)) { fsArquivoExame.Position = fsArquivoExame.Position + 141; continue; } exAtual = new Exame(); exAtual.strCodExame = strCodExame; exAtual.strCodCampo = Util.getTexto(ref fsArquivoExame, 3); exAtual.chave = exAtual.strCodCampo; exAtual.strDescricao = Util.getTexto(ref fsArquivoExame, 30).Trim(); exAtual.strMaterial = Util.getTexto(ref fsArquivoExame, 2); exAtual.strOpcoes = Util.getTexto(ref fsArquivoExame, 29); exAtual.strTipoCampo = Util.getTexto(ref fsArquivoExame, 2); exAtual.iTipoCampo = int.Parse(exAtual.strTipoCampo); exAtual.strGrupo = Util.getTexto(ref fsArquivoExame, 2); exAtual.strUnidade = Util.getTexto(ref fsArquivoExame, 2); exAtual.strOpcoes1 = Util.getTexto(ref fsArquivoExame, 15); //20); exAtual.strCasasDecimais = Util.getTexto(ref fsArquivoExame, 1); vnAtual = new ValorNormal(); vnAtual.strLimInferior = Util.getTexto(ref fsArquivoExame, 9); vnAtual.strLimSuperior = Util.getTexto(ref fsArquivoExame, 9); vnAtual.strIdadeTipo = Util.getTexto(ref fsArquivoExame, 1); vnAtual.iIdadeInferior = int.Parse(Util.getTexto(ref fsArquivoExame, 2)); vnAtual.iIdadeSuperior = int.Parse(Util.getTexto(ref fsArquivoExame, 2)); vnAtual.strSexo = Util.getTexto(ref fsArquivoExame, 1); exAtual.iPulo = int.Parse(Util.getTexto(ref fsArquivoExame, 1)); vnAtual.strLimDigitacaoInferior = Util.getTexto(ref fsArquivoExame, 9); vnAtual.strLimDigitacaoSuperior = Util.getTexto(ref fsArquivoExame, 9); exAtual.strOpcoes3 = Util.getTexto(ref fsArquivoExame, 1); exAtual.strLetra = Util.getTexto(ref fsArquivoExame, 1); exAtual.strOpcoes4 = Util.getTexto(ref fsArquivoExame, 10); strKeyExame = exAtual.strDescricao + exAtual.strTipoCampo; if (exAtual.iTipoCampo == 11) { exAtual.strDescricao = Exames.getComplementoTEXAB(strCaminhoTEXAB, exAtual.strCodExame + exAtual.strCodCampo); //strKeyExame = exAtual.chave + strKeyExame; exAtual.posicao = i++; //dCamposAdicionados.Add(strKeyExame, exAtual.chave); lCampos.Add(exAtual.chave, exAtual); lCampos[exAtual.chave].dValoresNormais = new List <ValorNormal>();// new Dictionary<string, List<ValorNormal>>(); lCampos[exAtual.chave].dValoresNormais.Add(vnAtual); } else { if (exAtual.strDescricao.Trim().Length == 0) { strKeyExame += i; exAtual.posicao = i++; lCampos.Add(exAtual.chave, exAtual); } else { if (dCamposAdicionados.ContainsKey(strKeyExame)) { exAtual.chave = dCamposAdicionados[strKeyExame]; } else { exAtual.posicao = i++; dCamposAdicionados.Add(strKeyExame, exAtual.chave); lCampos.Add(exAtual.chave, exAtual); lCampos[exAtual.chave].dValoresNormais = new List <ValorNormal>();// new Dictionary<string, List<ValorNormal>>(); } if (exAtual.iTipoCampo == 1) { vnAtual.dLimInferior = double.Parse(vnAtual.strLimInferior) / 100; vnAtual.dLimSuperior = double.Parse(vnAtual.strLimSuperior) / 100; if (exAtual.strCasasDecimais == "1") { vnAtual.strLimInferior = String.Format("{0:#,##0.0}", vnAtual.dLimInferior); vnAtual.strLimSuperior = String.Format("{0:#,##0.0}", vnAtual.dLimSuperior); } else { if (exAtual.strCasasDecimais == "0") { vnAtual.strLimInferior = String.Format("{0:#,##0}", vnAtual.dLimInferior); vnAtual.strLimSuperior = String.Format("{0:#,##0}", vnAtual.dLimSuperior); } else { vnAtual.strLimInferior = String.Format("{0:#,##0.00}", vnAtual.dLimInferior); vnAtual.strLimSuperior = String.Format("{0:#,##0.00}", vnAtual.dLimSuperior); } } //vnAtual.strLimInferior = vnAtual.dLimInferior.ToString(); //vnAtual.strLimSuperior = vnAtual.dLimSuperior.ToString(); } else { if (exAtual.iTipoCampo == 9) { vnAtual.dLimInferior = (int)(int.Parse(vnAtual.strLimInferior) / 100); vnAtual.dLimSuperior = (int)(int.Parse(vnAtual.strLimSuperior) / 100); vnAtual.strLimInferior = String.Format("{0:#,##0}", vnAtual.dLimInferior); vnAtual.strLimSuperior = String.Format("{0:#,##0}", vnAtual.dLimSuperior); } } lCampos[exAtual.chave].dValoresNormais.Add(vnAtual); } } } return(lCampos); }
// public static ValorNormal getValNormal(Cliente.Cliente cCliente, List <ValorNormal> dValoresNormais) { if (dValoresNormais == null) { return(new ValorNormal()); } TimeSpan tsIdade = cCliente.tsIdade; ValorNormal vnSelecionadoG = null; ValorNormal vnSelecionadoMF = null; // Procura Dias for (int i = 0; i < dValoresNormais.Count; i++) { if (dValoresNormais[i].strIdadeTipo == "D") { if (dValoresNormais[i].iIdadeInferior <= tsIdade.Days && tsIdade.Days <= dValoresNormais[i].iIdadeSuperior) { if (dValoresNormais[i].strSexo == cCliente.strSexo) { return(dValoresNormais[i]); } else { if (dValoresNormais[i].strSexo == "G") { vnSelecionadoG = dValoresNormais[i]; } } } } } if (vnSelecionadoG != null) { return(vnSelecionadoG); } // Procura Meses int iMeses = tsIdade.Days / 30; for (int i = 0; i < dValoresNormais.Count; i++) { if (dValoresNormais[i].strIdadeTipo == "M") { if (dValoresNormais[i].iIdadeInferior <= iMeses && iMeses <= dValoresNormais[i].iIdadeSuperior) { if (dValoresNormais[i].strSexo == cCliente.strSexo) { return(dValoresNormais[i]); } else { if (dValoresNormais[i].strSexo == "G") { vnSelecionadoG = dValoresNormais[i]; } } } } } if (vnSelecionadoG != null) { return(vnSelecionadoG); } // Procura Anos DateTime age = DateTime.MinValue + tsIdade; int ageInYears = age.Year - 1; for (int i = 0; i < dValoresNormais.Count; i++) { if (dValoresNormais[i].strIdadeTipo == "A") { if (dValoresNormais[i].iIdadeInferior <= ageInYears && ageInYears <= dValoresNormais[i].iIdadeSuperior) { if (dValoresNormais[i].strSexo == cCliente.strSexo) { return(dValoresNormais[i]); } else { if (dValoresNormais[i].strSexo == "G") { vnSelecionadoG = dValoresNormais[i]; } } } } } if (vnSelecionadoG != null) { return(vnSelecionadoG); } // Procura Geral //DateTime age = DateTime.MinValue + tsIdade; //int ageInYears = age.Year - 1; for (int i = 0; i < dValoresNormais.Count; i++) { if (dValoresNormais[i].strIdadeTipo == "G") { if (dValoresNormais[i].iIdadeInferior <= ageInYears && ageInYears <= dValoresNormais[i].iIdadeSuperior) { if (dValoresNormais[i].strSexo == cCliente.strSexo) { return(dValoresNormais[i]); } else { if (dValoresNormais[i].strSexo == "G") { vnSelecionadoG = dValoresNormais[i]; } } } } } if (vnSelecionadoG != null) { return(vnSelecionadoG); } return(null); }