import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:intl/intl.dart'; import 'package:line_icons/line_icons.dart'; import 'package:rkm/screens/home_screen.dart'; import 'package:sqflite/sqflite.dart'; import '../../config/color_palette.dart'; import '../../config/const_variable.dart'; import '../../models/check_model.dart'; import '../../service/db/db_querys.dart'; import '../../service/db/db_sqlite_load.dart'; import '../../service/db/db_sqlite_sync.dart'; import '../../service/shared_preferences/shared_preferences_service.dart'; import '../../widgets/alert_dialog_default.dart'; import '../../widgets/appbar_default.dart'; import '../../widgets/button_default.dart'; import '../../widgets/check_box_subtitle.dart'; import '../../widgets/check_box_two_subtitle.dart'; import '../../widgets/dropdown_with_subtitle.dart'; import '../../widgets/error_default.dart'; import '../../widgets/input_with_subtitle.dart'; import '../../widgets/onbackbutton.dart'; import '../../widgets/switch_with_subtitle.dart'; import '../../widgets/text_default.dart'; import '../../widgets/title_containers.dart'; class VisitaDomiciliarTela extends StatefulWidget { String name; String username; VisitaDomiciliarTela({required this.name, required this.username}); @override State createState() => _VisitaDomiciliarTelaState(); } class _VisitaDomiciliarTelaState extends State { var PESO = TextEditingController(); var ALTURA = TextEditingController(); var NOME_PROFISSIONAL = TextEditingController(); var CNES_UNIDADE = TextEditingController(); var COMPLEMENTO = TextEditingController(); bool CNS_VALIDO = false; bool showCheckError = false; bool mandatory = false; bool VISITA_ACOMPANHADA = false; bool CONSULTA = false; bool VACINA = false; bool EXAME = false; bool CONDICIONALIDADES = false; bool ACAO_EDUCATIVA = false; bool ACAO_MECANICA = false; bool IMOVEL_FOCO = false; bool TRATAMENTO_FOCAL = false; String? TURNO; String? TIPO_IMOVEL; String? DESFECHO; String? CBO_PROFISSIONAL; String? INE_RESP_CADASTRO; int TURNO_COD = 0; int TIPO_IMOVEL_COD = 0; int DESFECHO_COD = 0; int ID_PROFISSIONAL=0; int ID_CIDADAO=0; int ID_EQUIPE=0; String INE_PROFISSIONAL=''; String CD_USUARIO_SUS=''; String idUnidade = ''; int idUsuario = 0; String date = ''; String dateDB = ''; List typeTurnService = []; List listTypeHome = []; List listDesfecho = []; List listCBO = []; List listINEPROF = []; List PROCEDIMENTOS_SIGTAP = []; List tipoVisitaModel = []; List tipoAcompanhamentoModel = []; List outrosModel = []; List listProc = []; escolherprazoInicio(BuildContext context) async { var pickDate = await showDatePicker( context: context, locale: Locale('pt','BR'), initialDate: DateTime.now(), firstDate: DateTime(2022), lastDate: DateTime.now() ); if (pickDate != null) { setState(() { dateDB = '${pickDate.year}-${pickDate.month<10?'0':''}${pickDate.month}-${pickDate.day<10?'0':''}${pickDate.day}'; date = formatData(year: pickDate.year, month: pickDate.month, day: pickDate.day); }); } } String formatData({int? year, int? month, int? day}) { DateTime data = DateTime(year!, month!, day!); String formattedDate = DateFormat('dd/MM/yyyy').format(data); return formattedDate; } getUsers()async{ await DBQuerys().buscaCidadao(widget.name).then((list){ ID_CIDADAO = list[0]['ID_CIDADAO']; CD_USUARIO_SUS = list[0]['CD_USUARIO_SUS']; }); final PrefService _prefService = PrefService(); _prefService.readCacheIDUser().then((value){ if(value != null){ idUsuario = int.parse(value); loadData(); } }); _prefService.readCacheUnidade().then((value){ if(value!=null){ idUnidade = value[0]; CNES_UNIDADE.text = value[1]; } }); Database dbcbo = await DbSqliteLoad().intialDB(); var querycbo = 'SELECT * FROM PROFISSIONAIS_CBOS WHERE ID_PROFISSIONAL = $idUsuario'; List listcbo = await dbcbo.rawQuery(querycbo); List todosSigtap = []; // print('listcbo'); // print(listcbo.length); // print(listcbo); for(int i = 0; listcbo.length > i ; i++){ var querySigtap = 'SELECT * FROM PROCEDIMENTOS_SIGTAP_CBO WHERE CODIGO_CBO = ${listcbo[i]['CODIGO_CBO']}'; List listSigtap = await dbcbo.rawQuery(querySigtap); todosSigtap.addAll(listSigtap); // print('listSigtap'); // print(listSigtap.length); // print('todosSigtap'); // print(todosSigtap.length); } List aux = todosSigtap.toSet().toList(); todosSigtap = aux; for(int i = 0; todosSigtap.length > i ; i++){ var querySigtapDesc = 'SELECT * FROM PROCEDIMENTOS_SIGTAP WHERE COD_PROC_SIGTAP = \'${todosSigtap[i]['COD_PROC_SIGTAP']}\''; List listSigtapDesc = await dbcbo.rawQuery(querySigtapDesc); if(listSigtapDesc.isNotEmpty){ PROCEDIMENTOS_SIGTAP.add('${listSigtapDesc[0]['COD_PROC_SIGTAP']} - ${listSigtapDesc[0]['DESC_PROC_SIGTAP']}'); } } print('PROCEDIMENTOS_SIGTAP'); print(PROCEDIMENTOS_SIGTAP.length); print(PROCEDIMENTOS_SIGTAP[0]); if(listcbo.length!=0){ for(int i = 0; listcbo.length>i;i++){ await DBQuerys().buscaCBOSProfissional(listcbo[i]['CODIGO_CBO']).then((cbo)async{ if(cbo.length!=0){ listCBO.add(cbo[0]['DESCRICAO_CBO']+' - '+listcbo[i]['CODIGO_CBO'].toString()); } }); } } /*var querycbo = 'SELECT * FROM CBOS WHERE CODIGO_CBO = 223208'; var query = 'SELECT * FROM PROFISSIONAIS_CBOS'; List listcbocompleta = await dbcbo.rawQuery(querycbo); print(listcbocompleta);*/ List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); for(int i=0; list.length > i;i++){ INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}'; listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}'); } // var db = await DbSqliteLoad().intialDB(); // List listSIGTAP = await db.query('PROCEDIMENTOS_SIGTAP'); // for(int i = 0; listSIGTAP.length>i;i++){ // if(listSIGTAP[i]['COD_PROC_SIGTAP']!=null && listSIGTAP[i]['DESC_PROC_SIGTAP']!=null){ // PROCEDIMENTOS_SIGTAP.add('${listSIGTAP[i]['COD_PROC_SIGTAP']} - ${listSIGTAP[i]['DESC_PROC_SIGTAP']}'); // } // } List listProf = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); INE_PROFISSIONAL = listProf[0]['INE']; ID_EQUIPE = listProf[0]['ID_EQUIPE']; setState(() {}); } loadLists()async { for (int i = 0; ConstVariable().typeTurnService.length > i; i++) { typeTurnService.add(ConstVariable().typeTurnService[i].title); } for (int i = 0; ConstVariable().listTypeHome.length > i; i++) { listTypeHome.add(ConstVariable().listTypeHome[i].title); } for (int i = 0; ConstVariable().listDesfecho.length > i; i++) { listDesfecho.add(ConstVariable().listDesfecho[i].title); } getUsers(); } loadData()async{ // print('idUsuario'); // print(idUsuario); await DBQuerys().buscaProfissionalCadInd(idUsuario).then((list){ ID_PROFISSIONAL = list['ID_PROFISSIONAL']; NOME_PROFISSIONAL.text = list['NOME_PROFISSIONAL']; String CNS_PROFISSIONAL = list['CNS_PROFISSIONAL']; if(CNS_PROFISSIONAL == 999999999999999 || CNS_PROFISSIONAL == '999999999999999'){ CNS_VALIDO = true; } setState(() {}); }); } checkSave()async{ /* adicionar depois e usar um usuário real CBO_RESP_CADASTRO ok*/ //salvar print('date $date'); print('dateDB $dateDB'); print('TIPO_IMOVEL_COD $TIPO_IMOVEL_COD'); print('DESFECHO_COD $DESFECHO_COD'); print('TURNO_COD $TURNO_COD'); print('CBO_PROFISSIONAL $CBO_PROFISSIONAL'); print('listProc $listProc'); if(date.isEmpty || dateDB.isEmpty || TIPO_IMOVEL_COD==0 || DESFECHO_COD ==0 || TURNO_COD == 0 || CBO_PROFISSIONAL == null ){ print('erro principal'); setState(() { showCheckError = true; mandatory = true; }); }else{ setState(() { mandatory = false; showCheckError = false; /*TIPO VISITA*/ if(tipoVisitaModel[0].check || tipoVisitaModel[1].check){ /*BUSCA ATIVA*/ print('tipoVisitaModel[1].check'); print(tipoVisitaModel[1].check); if(CONSULTA || VACINA || EXAME || CONDICIONALIDADES || tipoVisitaModel[1].check){ /*CONTROLE AMBIENTAL*/ if(ACAO_EDUCATIVA || ACAO_MECANICA || IMOVEL_FOCO || TRATAMENTO_FOCAL || tipoVisitaModel[1].check){ bool check1 = false; bool check2 = false; if(!tipoVisitaModel[1].check){ for(int i=0; tipoAcompanhamentoModel.length>i;i++){ if(tipoAcompanhamentoModel[i].check){ print('pegou a $i'); check1 = true; break; } } }else{ check1 = true; } if(!tipoVisitaModel[1].check){ for(int i=0; outrosModel.length>i;i++){ if(outrosModel[i].check){ print('outros $i'); check2 = true; break; } } }else{ check2 = true; } if(!check1 || !check2){ print('erro 1'); AlertDialogDefault().alert( context, 'Aviso', 'É obrigatória a seleção de pelo menos uma opção dentre os campos Tipo da Visita, Busca ativa, Controle Ambiental, Acompanhamento e Outros.', 'OK' ); } if(check1 && check2){ print('save'); saveHomeVisit(); } }else{ print('AQUI'); print('erro 2'); AlertDialogDefault().alert( context, 'Aviso', 'É obrigatória a seleção de pelo menos uma opção dentre os campos Tipo da Visita, Busca ativa, Controle Ambiental, Acompanhamento e Outros.', 'OK' ); } }else{ print('nesse'); print('erro 3'); AlertDialogDefault().alert( context, 'Aviso', 'É obrigatória a seleção de pelo menos uma opção dentre os campos Tipo da Visita, Busca ativa, Controle Ambiental, Acompanhamento e Outros.', 'OK' ); } }else{ AlertDialogDefault().alert( context, 'Aviso', 'É obrigatória a seleção de pelo menos uma opção dentre os campos Tipo da Visita, Busca ativa, Controle Ambiental, Acompanhamento e Outros.', 'OK' ); } }); } } saveHomeVisit()async{ Map row = { 'ID_CIDADAO' : ID_CIDADAO, 'CD_USUARIO_SUS' : CD_USUARIO_SUS, 'DT_ATENDIMENTO' : dateDB, 'TURNO' : TURNO_COD, 'TIPO_IMOVEL' : TIPO_IMOVEL_COD, 'VISITA_ACOMPANHADA' : VISITA_ACOMPANHADA?1:2, 'DESFECHO' : DESFECHO_COD, 'PESO' : PESO.text, 'ALTURA' : ALTURA.text, 'ID_PROFISSIONAL' : idUsuario, 'CBO_PROFISSIONAL' : CBO_PROFISSIONAL, 'INE_PROFISSIONAL' : INE_PROFISSIONAL, 'CNES_UNIDADE' : CNES_UNIDADE.text, 'ID_UNIDADE' : int.parse(idUnidade), 'ID_EQUIPE' : ID_EQUIPE, 'COMPLEMENTO' : COMPLEMENTO.text, 'SINCRONIZADO' : 'N', }; await DbSqliteSync().insertVisitaDomiciliar(row).then((value)async{ // print('value'); // print(value); /*tipo visita == 1*/ for(int i = 0;tipoVisitaModel.length>i;i++){ if(tipoVisitaModel[i].check){ /*cadastramento = 1*/ if(i==0){ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,1,1); }else if(i == 1){ /*periodica = 29*/ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,1,29); } } } /*busca ativa == 2 CONSULTA 2*/ if(CONSULTA){ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,2,2); } /*busca ativa == 2 EXAME 3*/ if(EXAME){ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,2,3); } /*busca ativa == 2 VACINA 8*/ if(VACINA){ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,2,8); } /*busca ativa == 2 CONDICIONALIDADES 30*/ if(CONDICIONALIDADES){ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,2,30); } /*controle ambiental == 5 ACAO_EDUCATIVA == 34*/ if(ACAO_EDUCATIVA){ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,5,34); } /*controle ambiental == 5 IMOVEL_FOCO == 35*/ if(IMOVEL_FOCO){ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,5,35); } /*controle ambiental == 5 ACAO_MECANICA == 36*/ if(ACAO_MECANICA){ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,5,36); } /*controle ambiental == 5 TRATAMENTO_FOCAL == 37*/ if(TRATAMENTO_FOCAL){ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,5,37); } /*ACOMPANHAMENTO == 3*/ for(int i=0; tipoAcompanhamentoModel.length>i;i++){ if(tipoAcompanhamentoModel[i].check){ print('pegou a $i'); print(tipoAcompanhamentoModel[i].subtitle); if(i<=13){ print('CODIGO ${i+5}'); await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,3,i+5); }else if(i==14){ /*respiratorios == 32*/ print('CODIGO ${i}'); await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,3,32); }else if(i==15){ print('CODIGO ${i}'); /*tabagista == 33*/ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,3,33); }else if(i>=16){ print('CODIGO ${i+3}'); await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,3,i+3); } } } /*outros == 4*/ for(int i=0; outrosModel.length>i;i++){ if(outrosModel[i].check){ print('outros a $i'); print(outrosModel[i].subtitle); /*orientacao prevencao == 31*/ if(i==3){ await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,4,31); }else if(i==4){ print('CODIGO outros ${i+24}'); await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,4,i+24); }else{ print('CODIGO outros ${i+25}'); await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,4,i+25); } } } for(int i=0;listProc.length>i;i++){ List splitted = listProc[i].toString().split(' '); await DbSqliteSync().insertVISITAS_DOMICILIARES_PROC(value,splitted[0]); } AlertDialogDefault().sucess( context, 'Aviso', 'Visita Domiciliar realizada com sucesso!', 'OK', (){ Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: widget.username)), (route) => false); } ); // Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: widget.username)), (route) => false); }); } @override void initState() { super.initState(); loadLists(); } @override Widget build(BuildContext context) { double heigth = MediaQuery.of(context).size.height; double width = MediaQuery.of(context).size.width; return WillPopScope( onWillPop: ()async=> await OnBackButton().onBackButton(context, widget.username), child: Scaffold( appBar: AppBarDefault().appbar(context, 'RKM AB - Visita Domiciliar',widget.username), body: Container( height: double.infinity, width: double.infinity, decoration: ConstVariable().backgroundGradient, child: ListView( children: [ Card( margin: EdgeInsets.all(10), child: Column( children: [ TitleContainers(title: 'Atendimento'), Row( children: [ Container( height: heigth*0.5, width: width*0.2, child: Icon(LineIcons.edit,size: 80,), ), Column( children: [ Container( width: width*0.7, child: TextDefault( textAlign: TextAlign.start, text: 'Data Atendimento', color: ColorPalette.black54, fontSize: 12, ), ), GestureDetector( onTap: ()=>escolherprazoInicio(context), child: Container( height: 50, margin: EdgeInsets.symmetric(horizontal: 0), padding: EdgeInsets.symmetric(horizontal: 8,vertical: 10), decoration: BoxDecoration( color: date.isEmpty?ColorPalette.disable:ColorPalette.white, border: Border.all(color: ColorPalette.white), borderRadius: BorderRadius.all(Radius.circular(5.0)), ), width: width*0.7, child: TextDefault( text: date, color: Colors.black, fontSize: 15, ), ), ), date.isEmpty&& mandatory?ErrorDefault():Container(), DropdownWithSubtitle( list: typeTurnService, widthSubtitle: width*0.2, subtitle: 'Turno', hintDropdown: 'Turno', select: TURNO, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged: (value){ TURNO = value; for(int i = 0;ConstVariable().typeTurnService.length >i;i++){ if(ConstVariable().typeTurnService[i].title == TURNO){ TURNO_COD = ConstVariable().typeTurnService[i].cod; } } setState(() {}); }, colorBorder: ColorPalette.white, ), TURNO_COD ==0 && mandatory?ErrorDefault():Container(), DropdownWithSubtitle( list: listTypeHome, widthSubtitle: width*0.2, subtitle: 'Tipo de Imóvel', hintDropdown: 'Tipo de Imovél', select: TIPO_IMOVEL, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged: (value){ TIPO_IMOVEL = value; for(int i = 0;ConstVariable().listTypeHome.length >i;i++){ if(ConstVariable().listTypeHome[i].title == TIPO_IMOVEL){ TIPO_IMOVEL_COD = ConstVariable().listTypeHome[i].cod; } } setState(() {}); }, colorBorder: ColorPalette.white, ), TIPO_IMOVEL_COD ==0 && mandatory?ErrorDefault():Container(), SwitchWithSubtitle( width: width*0.7, title: 'Visita Acompanhada', value: VISITA_ACOMPANHADA, onChanged:(value){ VISITA_ACOMPANHADA = value; setState(() {}); }, ), DropdownWithSubtitle( list: listDesfecho, widthSubtitle: width*0.2, subtitle: 'Desfecho', hintDropdown: 'Desfecho', select: DESFECHO, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged: (value){ DESFECHO = value; for(int i = 0;ConstVariable().listDesfecho.length >i;i++){ if(ConstVariable().listDesfecho[i].title == DESFECHO){ DESFECHO_COD = ConstVariable().listDesfecho[i].cod; } } setState(() {}); }, colorBorder: ColorPalette.white, ), DESFECHO_COD ==0 && mandatory?ErrorDefault():Container(), TitleContainers(title: 'Tipo da Visita',width: width*0.7,textAling: TextAlign.start,fontSize: 15), Container( width: width*0.7, height: heigth*0.1, child: ListView.builder( physics: const NeverScrollableScrollPhysics(), itemCount: ConstVariable().tipoVisitaModel.length, itemBuilder: (context,index){ tipoVisitaModel.add( CheckModel( subtitle: ConstVariable().tipoVisitaModel[index], check: false ) ); return CheckBoxSubtitle( ontap:DESFECHO != 'VISITA REALIZADA'?null: (){ setState((){ tipoVisitaModel[index].check?tipoVisitaModel[index].check=false:tipoVisitaModel[index].check=true; }); }, subtitle: tipoVisitaModel[index].subtitle, checkbox:tipoVisitaModel[index].check, width: width*0.6, onChanged:DESFECHO != 'VISITA REALIZADA'?null: (value)=>setState(()=>tipoVisitaModel[index].check=value), ); } ), ), TitleContainers(title: 'Busca Ativa',width: width*0.7,textAling: TextAlign.start,fontSize: 15), CheckBoxTwoSubtitle( width: width*0.7, checkbox1: CONSULTA, 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), ), CheckBoxTwoSubtitle( width: width*0.7, checkbox1: EXAME, 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), ), TitleContainers(title: 'Controle Ambiental',width: width*0.7,textAling: TextAlign.start,fontSize: 15), CheckBoxTwoSubtitle( width: width*0.7, checkbox1: ACAO_EDUCATIVA, checkbox2: ACAO_MECANICA, subtitle1: 'AÇÃO EDUCATIVA', subtitle2: 'AÇÃO MECÂNICA', onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>ACAO_EDUCATIVA=value), onChanged2: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>ACAO_MECANICA=value), ontap1: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>ACAO_EDUCATIVA?ACAO_EDUCATIVA=false:ACAO_EDUCATIVA=true), ontap2: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>ACAO_MECANICA?ACAO_MECANICA=false:ACAO_MECANICA=true), ), CheckBoxTwoSubtitle( width: width*0.7, checkbox1: IMOVEL_FOCO, checkbox2: TRATAMENTO_FOCAL, subtitle1: 'IMÓVEL COM FOCO', subtitle2: 'TRATAMENTO FOCAL', onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>IMOVEL_FOCO=value), onChanged2: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>TRATAMENTO_FOCAL=value), ontap1: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>IMOVEL_FOCO?IMOVEL_FOCO=false:IMOVEL_FOCO=true), ontap2: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>TRATAMENTO_FOCAL?TRATAMENTO_FOCAL=false:TRATAMENTO_FOCAL=true), ), TitleContainers(title: 'Acompanhamento',width: width*0.7,textAling: TextAlign.start,fontSize: 15), Container( width: width*0.7, height: heigth*0.9, child: ListView.builder( physics: const NeverScrollableScrollPhysics(), itemCount: ConstVariable().tipoAcompanhamentoModel.length, itemBuilder: (context,index){ tipoAcompanhamentoModel.add( CheckModel( subtitle: ConstVariable().tipoAcompanhamentoModel[index], check: false ) ); return CheckBoxSubtitle( subtitle: tipoAcompanhamentoModel[index].subtitle, checkbox:tipoAcompanhamentoModel[index].check, width: width*0.6, onChanged:DESFECHO != 'VISITA REALIZADA'?null: (value)=>setState(()=>tipoAcompanhamentoModel[index].check=value), ); } ), ), TitleContainers(title: 'Outros',width: width*0.7,textAling: TextAlign.start,fontSize: 15), Container( width: width*0.7, height: heigth*0.22, child: ListView.builder( physics: const NeverScrollableScrollPhysics(), itemCount: ConstVariable().outrosModel.length, itemBuilder: (context,index){ outrosModel.add( CheckModel( subtitle: ConstVariable().outrosModel[index], check: false ) ); return CheckBoxSubtitle( subtitle: outrosModel[index].subtitle, checkbox:outrosModel[index].check, width: width*0.6, onChanged: (value)=>setState(()=>outrosModel[index].check=value), ); } ), ), ], ), ], ) ], ), ), Card( margin: EdgeInsets.all(10), child: Column( children: [ TitleContainers(title: 'Antropometria'), Row( children: [ Container( height: heigth*0.2, width: width*0.2, child: Icon(LineIcons.alternateArrows,size: 80,), ), Column( children: [ InputWithSubtitle( controller: PESO, subtitle: 'Peso (em Kg - 000,000)', errorInput: '', labelInput: 'Peso (em Kg - 000,000)', widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', mandatory: false, enabled: true, maxLength: 7, textInputType: TextInputType.number, onChanged: (v)=>setState((){}), ), InputWithSubtitle( controller: ALTURA, subtitle: 'Altura (em metros - 0,00)', errorInput: '', labelInput: 'Altura (em metros - 0,00)', widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', mandatory: false, enabled: true, maxLength: 4, textInputType: TextInputType.number, onChanged: (v)=>setState((){}), ), ], ) ], ) ], ), ), Card( margin: EdgeInsets.all(10), child: Column( children: [ TitleContainers(title: 'Profissional'), Row( children: [ Container( height: heigth*0.3, width: width*0.2, child: Icon(Icons.business_center,size: 80,), ), Column( children: [ InputWithSubtitle( controller: NOME_PROFISSIONAL, subtitle: 'Profissional', errorInput: 'Campo Obrigatório', labelInput: 'Profissional', widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', enabled: false, onChanged: (v)=>setState((){}), ), InputWithSubtitle( controller: CNES_UNIDADE, subtitle: 'Unidade', errorInput: 'Campo Obrigatório', labelInput: 'Unidade', widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', enabled: false, onChanged: (v)=>setState((){}), ), DropdownWithSubtitle( list: listCBO, widthSubtitle: width*0.7, subtitle: 'CBO', hintDropdown: 'CBO', select: CBO_PROFISSIONAL, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged: (value){ setState(() { CBO_PROFISSIONAL = value!; }); }, colorBorder: ColorPalette.white, ), CBO_PROFISSIONAL == null && mandatory?ErrorDefault():Container(), DropdownWithSubtitle( list: listINEPROF, widthSubtitle: width*0.3, subtitle: 'Código da Equipe', hintDropdown: 'Selecione', select: INE_RESP_CADASTRO, widthDropdown: width*0.7, widthContainerDropdown: width*0.5, onChanged: (value){ setState(() { INE_RESP_CADASTRO = value!; }); }, colorBorder: ColorPalette.white, ), ], ), ], ), ], ), ), Card( margin: EdgeInsets.all(10), child: Column( children: [ TitleContainers(title: 'Complemento'), Row( children: [ Container( height: heigth*0.2, width: width*0.2, child: Icon(Icons.attach_file,size: 80,), ), Column( children: [ InputWithSubtitle( controller: COMPLEMENTO, subtitle: 'COMPLEMENTO', errorInput: '', labelInput: 'COMPLEMENTO', widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', mandatory: false, enabled: true, maxLines: 5, onChanged: (v)=>setState((){}), ), ], ) ], ) ], ), ), Card( margin: EdgeInsets.all(10), child: Column( children: [ TitleContainers(title: 'Procedimentos'), Row( children: [ Container( height: heigth*0.2, width: width*0.2, child: Icon(Icons.info_outlined,size: 80,), ), Column( children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ GestureDetector( onTap: ()=>setState(() { AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',PROCEDIMENTOS_SIGTAP,listProc); }), child: Container( padding: const EdgeInsets.symmetric(horizontal: 10.0), child: Container( height: 200, width: width*0.7, child: Column( mainAxisAlignment:MainAxisAlignment.center , children: [ Row( children: [ TextDefault(text: 'Procedimento',color: Colors.black,), Spacer(), IconButton( icon: Icon(Icons.add_circle,color: ColorPalette.blackButton), onPressed: ()=>setState(() { AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',PROCEDIMENTOS_SIGTAP,listProc); }), ) ], ), GestureDetector( onTap: ()=>setState(() { AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',PROCEDIMENTOS_SIGTAP,listProc); }), child: Container( height: listProc.isEmpty?0:150, child: ListView.builder( itemCount: listProc.length, itemBuilder: (context,i){ return Text(listProc[i]); }, ), ), ) ], ), ) ), ) ] ) ], ) ], ) ], ), ), CNS_VALIDO?Card( margin: EdgeInsets.all(10), child: Container( padding: const EdgeInsets.all(8.0), width: width, height: heigth*0.1, child: Row( children: [ Icon(Icons.warning,color: ColorPalette.red,), Container( width: width*0.9, child: TextDefault( text: 'CNS do Profissional inválido. Este cadastro não será exportado para o e-SUS.', fontSize: 15, maxLines: 2, color: ColorPalette.red, ), ), ], ), ), ):Container(), showCheckError?Card( margin: EdgeInsets.all(10), child: Container( padding: EdgeInsets.all(10), child: Row( children: [ Icon(Icons.warning,color: Colors.red,), TextDefault(text: 'Existem campos obrigatórios não preenchidos.',color: ColorPalette.red,fontSize: 15,) ], ), ), color: ColorPalette.white, ):Container(), Card( margin: EdgeInsets.all(10), child: Padding( padding: const EdgeInsets.all(8.0), child: Column( children: [ ButtonDefault( onPressed: ()=>checkSave(), title: 'Salvar', borderColor: ColorPalette.appBar, background: ColorPalette.appBar, textColor: ColorPalette.white, width: double.infinity, ), ButtonDefault( onPressed: ()=>Navigator.pop(context), title: 'Cancelar', borderColor: ColorPalette.blackButton, background: ColorPalette.blackButton, textColor: ColorPalette.white, width: double.infinity, ) ], ), ), ), ], ), ), ), ); } }