From 74b5acdb45d70e5dc47d663cab44b1ee6a27ff6b Mon Sep 17 00:00:00 2001 From: Reginaldo Date: Fri, 30 Aug 2024 17:05:15 -0300 Subject: [PATCH] =?UTF-8?q?vers=C3=A3o=201.0.15+16=20AJUSTE=20DAS=20RESTRI?= =?UTF-8?q?=C3=87=C3=95ES=20DE=20VISITAS=20PERIODICAS,=20ENVIO=20DE=20PESO?= =?UTF-8?q?=20E=20ALTURA=20E=20DO=20LOADING.=2030/08/2024?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visita_domiciliar_tela.dart | 201 ++++++++++++++++-- pubspec.yaml | 3 +- 2 files changed, 183 insertions(+), 21 deletions(-) diff --git a/lib/screens/select_service/visita_domiciliar_tela.dart b/lib/screens/select_service/visita_domiciliar_tela.dart index 089dc24..7ba7ebd 100644 --- a/lib/screens/select_service/visita_domiciliar_tela.dart +++ b/lib/screens/select_service/visita_domiciliar_tela.dart @@ -55,6 +55,7 @@ class _VisitaDomiciliarTelaState extends State { bool ACAO_MECANICA = false; bool IMOVEL_FOCO = false; bool TRATAMENTO_FOCAL = false; + bool sexoCidadaoFeminino = false; bool carregando = true; @@ -115,6 +116,8 @@ class _VisitaDomiciliarTelaState extends State { getUsers()async{ await DBQuerys().buscaCidadao(widget.name).then((list){ + print(list[0]); + sexoCidadaoFeminino = list[0]['SEXO']=='M'?false:true; ID_CIDADAO = list[0]['ID_CIDADAO']; CD_USUARIO_SUS = list[0]['CD_USUARIO_SUS']; }); @@ -191,9 +194,7 @@ class _VisitaDomiciliarTelaState extends State { listProf = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); INE_PROFISSIONAL = listProf[0]['INE']; ID_EQUIPE = listProf[0]['ID_EQUIPE']; - if(widget.dados==null){ - carregando = false; - } + carregando = false; setState(() {}); if(widget.dados!=null){ @@ -234,7 +235,9 @@ class _VisitaDomiciliarTelaState extends State { ok*/ //salvar - if(date.isEmpty || dateDB.isEmpty || TIPO_IMOVEL_COD==0 || DESFECHO_COD ==0 || TURNO_COD == 0 || CBO_PROFISSIONAL == null + if(date.isEmpty || dateDB.isEmpty || TIPO_IMOVEL_COD==0 || DESFECHO_COD ==0 || TURNO_COD == 0 || CBO_PROFISSIONAL == null || + ( ALTURA.text.isEmpty?false:double.parse(ALTURA.text.replaceAll(',', '.'))<=0.2 && double.parse(ALTURA.text.replaceAll(',', '.')) >= 2.5 && ALTURA.text.isEmpty) || + ( PESO.text.isEmpty?false:double.parse(PESO.text.replaceAll(',', '.'))<=0.5 && double.parse(PESO.text.replaceAll(',', '.')) >= 500 && PESO.text.isEmpty) ){ print('erro principal'); setState(() { @@ -273,8 +276,8 @@ class _VisitaDomiciliarTelaState extends State { 'TIPO_IMOVEL' : TIPO_IMOVEL_COD, 'VISITA_ACOMPANHADA' : VISITA_ACOMPANHADA?1:2, 'DESFECHO' : DESFECHO_COD, - 'PESO' : PESO.text, - 'ALTURA' : ALTURA.text, + 'PESO' : PESO.text.toString().replaceAll(',', '.'), + 'ALTURA' : ALTURA.text.toString().replaceAll(',', '.'), 'ID_PROFISSIONAL' : idUsuario, 'CBO_PROFISSIONAL' : CBO_DB, 'INE_PROFISSIONAL' : INE_PROFISSIONAL, @@ -570,6 +573,79 @@ class _VisitaDomiciliarTelaState extends State { setState(() {}); } + alerta_cadastramento_atualizacao() { + + double width = MediaQuery.of(context).size.width; + + return showDialog( + context: context, + builder: (context){ + return AlertDialog( + title: TextDefault( + text: 'Aviso', + color: ColorPalette.black54, + textAlign: TextAlign.center, + fontWeigth: FontWeight.bold, + ), + content: TextDefault( + text: 'Quando o motivo da visita for uma das opções:\n' + '- Cadastramento/Atualização\n' + '- Busca Ativa\n' + '- Acompanhamento\n' + '- Egresso de Internação\n' + 'O motivo "Visita periódica" não pode ser selecionado.', + color: ColorPalette.black54, + maxLines: 7, + ), + actions: [ + ButtonDefault( + onPressed: ()=>Navigator.pop(context), + title: 'OK', + width: width*0.15, + textColor: ColorPalette.white, + borderColor: ColorPalette.appBar, + background: ColorPalette.appBar, + ) + ], + ); + } + ); + } + + alerta_visita_periodica() { + + double width = MediaQuery.of(context).size.width; + + return showDialog( + context: context, + builder: (context){ + return AlertDialog( + title: TextDefault( + text: 'Aviso', + color: ColorPalette.black54, + textAlign: TextAlign.center, + fontWeigth: FontWeight.bold, + ), + content: TextDefault( + text: 'O motivo da visita já foi selecionada como Visita periódica. Para selecionar um outro motivo, desmarque esta opção.', + color: ColorPalette.black54, + maxLines: 7, + ), + actions: [ + ButtonDefault( + onPressed: ()=>Navigator.pop(context), + title: 'OK', + width: width*0.15, + textColor: ColorPalette.white, + borderColor: ColorPalette.appBar, + background: ColorPalette.appBar, + ) + ], + ); + } + ); + } + @override void initState() { super.initState(); @@ -732,14 +808,34 @@ class _VisitaDomiciliarTelaState extends State { } return CheckBoxSubtitle( ontap:DESFECHO != 'VISITA REALIZADA'?null: (){ - setState((){ + if(tipoVisitaModel[0].check == true && tipoVisitaModel[1].check == false && index == 1){ + alerta_cadastramento_atualizacao(); + }else if(tipoVisitaModel[0].check == false && tipoVisitaModel[1].check == true && index == 0){ + alerta_visita_periodica(); + }else if(CONSULTA || EXAME || VACINA || CONDICIONALIDADES || + tipoAcompanhamentoModel.any((element) => element.check) ||outrosModel[0].check ){ + alerta_cadastramento_atualizacao(); + }else{ tipoVisitaModel[index].check?tipoVisitaModel[index].check=false:tipoVisitaModel[index].check=true; - }); + } + setState((){}); }, subtitle: tipoVisitaModel[index].subtitle, checkbox:tipoVisitaModel[index].check, width: width*0.6, - onChanged:DESFECHO != 'VISITA REALIZADA'?null: (value)=>setState(()=>tipoVisitaModel[index].check=value), + onChanged:DESFECHO != 'VISITA REALIZADA'?null: (value){ + if(tipoVisitaModel[0].check == true && tipoVisitaModel[1].check == false && index == 1){ + alerta_cadastramento_atualizacao(); + }else if(tipoVisitaModel[0].check == false && tipoVisitaModel[1].check == true && index == 0){ + alerta_visita_periodica(); + }else if(CONSULTA || EXAME || VACINA || CONDICIONALIDADES || + tipoAcompanhamentoModel.any((element) => element.check) || outrosModel[0].check){ + alerta_cadastramento_atualizacao(); + }else{ + tipoVisitaModel[index].check=value; + } + setState(() {}); + }, ); } ), @@ -751,10 +847,34 @@ class _VisitaDomiciliarTelaState extends State { checkbox2: VACINA, subtitle1: 'CONSULTA', subtitle2: 'VACINA', - onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>CONSULTA=value), - onChanged2: DESFECHO != 'VISITA REALIZADA'?null: (value)=>setState(()=>VACINA=value), - ontap1: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>CONSULTA?CONSULTA=false:CONSULTA=true), - ontap2: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>VACINA?VACINA=false:VACINA=true), + onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value){ + if(tipoVisitaModel[1].check == true){ + alerta_visita_periodica(); + }else{ + setState(()=>CONSULTA=value); + } + }, + onChanged2: DESFECHO != 'VISITA REALIZADA'?null: (value){ + if(tipoVisitaModel[1].check == true){ + alerta_visita_periodica(); + }else{ + setState(()=>VACINA=value); + } + }, + ontap1: DESFECHO != 'VISITA REALIZADA'?null: (){ + if(tipoVisitaModel[1].check == true){ + alerta_visita_periodica(); + }else{ + setState(()=>CONSULTA?CONSULTA=false:CONSULTA=true); + } + }, + ontap2: DESFECHO != 'VISITA REALIZADA'?null: (){ + if(tipoVisitaModel[1].check == true){ + alerta_visita_periodica(); + }else{ + setState(()=>VACINA?VACINA=false:VACINA=true); + } + }, ), CheckBoxTwoSubtitle( width: width*0.7, @@ -762,10 +882,34 @@ class _VisitaDomiciliarTelaState extends State { checkbox2: CONDICIONALIDADES, subtitle1: 'EXAME', subtitle2: 'CONDICIONALIDADES', - onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>EXAME=value), - onChanged2: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>CONDICIONALIDADES=value), - ontap1: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>EXAME?EXAME=false:EXAME=true), - ontap2: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>CONDICIONALIDADES?CONDICIONALIDADES=false:CONDICIONALIDADES=true), + onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value){ + if(tipoVisitaModel[1].check == true){ + alerta_visita_periodica(); + }else{ + setState(()=>EXAME=value); + } + }, + onChanged2: DESFECHO != 'VISITA REALIZADA'?null:(value){ + if(tipoVisitaModel[1].check == true){ + alerta_visita_periodica(); + }else{ + setState(()=>CONDICIONALIDADES=value); + } + }, + ontap1: DESFECHO != 'VISITA REALIZADA'?null: (){ + if(tipoVisitaModel[1].check == true){ + alerta_visita_periodica(); + }else{ + setState(()=>EXAME?EXAME=false:EXAME=true); + } + }, + ontap2: DESFECHO != 'VISITA REALIZADA'?null: (){ + if(tipoVisitaModel[1].check == true){ + alerta_visita_periodica(); + }else{ + setState(()=>CONDICIONALIDADES?CONDICIONALIDADES=false:CONDICIONALIDADES=true); + } + }, ), TitleContainers(title: 'Controle Ambiental',width: width*0.7,textAling: TextAlign.start,fontSize: 15), CheckBoxTwoSubtitle( @@ -810,7 +954,15 @@ class _VisitaDomiciliarTelaState extends State { subtitle: tipoAcompanhamentoModel[index].subtitle, checkbox:tipoAcompanhamentoModel[index].check, width: width*0.6, - onChanged:DESFECHO != 'VISITA REALIZADA'?null: (value)=>setState(()=>tipoAcompanhamentoModel[index].check=value), + onChanged:DESFECHO != 'VISITA REALIZADA' || ((tipoAcompanhamentoModel[index].subtitle=='GESTANTE' && !sexoCidadaoFeminino) + || (tipoAcompanhamentoModel[index].subtitle=='PUÉRPERA' && !sexoCidadaoFeminino)) ?null + : (value){ + if(tipoVisitaModel[1].check == true){ + alerta_visita_periodica(); + }else{ + setState(()=>tipoAcompanhamentoModel[index].check=value); + } + }, ); } ), @@ -835,7 +987,13 @@ class _VisitaDomiciliarTelaState extends State { subtitle: outrosModel[index].subtitle, checkbox:outrosModel[index].check, width: width*0.6, - onChanged: (value)=>setState(()=>outrosModel[index].check=value), + onChanged: (value){ + if(tipoVisitaModel[1].check == true && index==0){ + alerta_visita_periodica(); + }else{ + setState(()=>outrosModel[index].check=value); + } + }, ); } ), @@ -864,17 +1022,19 @@ class _VisitaDomiciliarTelaState extends State { InputWithSubtitle( controller: PESO, subtitle: 'Peso (em Kg - 000,000)', + // errorInput: PESO.text.isEmpty || PESO.text.length<2?'':double.parse(PESO.text.replaceAll(',', '.'))<0.5 && double.parse(PESO.text.replaceAll(',', '.'))>500?'O peso do paciente deve estar entre 0,5 e 500 kg':'', errorInput: '', labelInput: 'Peso (em Kg - 000,000)', widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', - mandatory: false, + mandatory: true, enabled: true, maxLength: 7, textInputType: TextInputType.number, onChanged: (v)=>setState((){}), ), + PESO.text.isEmpty || PESO.text.length<2?Container():double.parse(PESO.text.replaceAll(',', '.'))>=0.5 && double.parse(PESO.text.replaceAll(',', '.'))<=500?Container():ErrorDefault(error: 'O peso do paciente deve estar entre 0,5 e 500 kg',), InputWithSubtitle( controller: ALTURA, subtitle: 'Altura (em metros - 0,00)', @@ -889,6 +1049,7 @@ class _VisitaDomiciliarTelaState extends State { textInputType: TextInputType.number, onChanged: (v)=>setState((){}), ), + ALTURA.text.isEmpty || ALTURA.text.length<1?Container():double.parse(ALTURA.text.replaceAll(',', '.'))>=0.2 && double.parse(ALTURA.text.replaceAll(',', '.'))<=2.5?Container():ErrorDefault(error: 'A altura do paciente deve estar entre 0,20 e 2,5 metros.',), ], ) ], diff --git a/pubspec.yaml b/pubspec.yaml index c2265fe..cfb4329 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,9 +9,10 @@ description: RKM AB 2.0. #versão 1.0.13+14 SETSTATE SALVAR DADOS CIDADAO E EDITAR E EXCLUIR ATENDICMENTO E VISITA. 27/08/2024 #versão 1.0.13+14 EDITAR E EXCLUIR VISITA DOMICILIAR E ALTERADA PARA ZERO SEM FORA DE AREA E UM PARA FORA DE AREA. 28/08/2024 #versão 1.0.14+15 AJUSTADA A ALTURA DA LISTA DOS PROCEDIMENTOS E DO ACOMPANHAMENTO, E A MENSAGEM DE AVISO DE NÃO SALVAR QUANDO ESTIVER EM EDIÇÃO. 29/08/2024 +#versão 1.0.15+16 AJUSTE DAS RESTRIÇÕES DE VISITAS PERIODICAS, ENVIO DE PESO E ALTURA E DO LOADING. 30/08/2024 publish_to: 'none' -version: 1.0.14+15 +version: 1.0.15+16 environment: sdk: '>=3.2.3 <4.0.0'