Files
rkmmobile/lib/screens/select_service/visita_domiciliar_tela.dart

1014 lines
44 KiB
Dart

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<VisitaDomiciliarTela> createState() => _VisitaDomiciliarTelaState();
}
class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
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 <String> typeTurnService = [];
List <String> listTypeHome = [];
List <String> listDesfecho = [];
List <String>listCBO = [];
List <String>listINEPROF = [];
List<String> PROCEDIMENTOS_SIGTAP = [];
List<CheckModel> tipoVisitaModel = [];
List<CheckModel> tipoAcompanhamentoModel = [];
List<CheckModel> 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<String, dynamic> 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,
)
],
),
),
),
],
),
),
),
);
}
}