versão 1.0.13+14 edicao da visita_domiciliar_tela.dart

This commit is contained in:
Reginaldo
2024-08-28 11:57:49 -03:00
parent ce2a1cf4d1
commit 22e8ae8fd3
4 changed files with 369 additions and 46 deletions

View File

@@ -3,11 +3,13 @@ import 'package:rkm/config/color_palette.dart';
import 'package:rkm/config/const_variable.dart';
import 'package:rkm/screens/registers_citizen/register_citizen_screen.dart';
import 'package:rkm/screens/select_service/atendimento_domiciliar_tela.dart';
import 'package:rkm/screens/select_service/visita_domiciliar_tela.dart';
import 'package:rkm/widgets/text_default.dart';
import 'package:sqflite/sqflite.dart';
import '../service/db/db_querys.dart';
import '../service/db/db_sqlite_load.dart';
import '../widgets/appbar_default.dart';
import '../widgets/button_default.dart';
class AttendanceListScreen extends StatefulWidget {
String username;
@@ -126,7 +128,52 @@ class _AttendanceListScreenState extends State<AttendanceListScreen> {
),
child: Icon(Icons.delete, color: Colors.white, size: 40,),
),
onPressed: (){},
onPressed: ()async{
await showDialog(
context: context,
builder: (context){
return AlertDialog(
title: TextDefault(text: 'Aviso',color: ColorPalette.black54,textAlign: TextAlign.center,),
content: TextDefault(text: 'Deseja apagar esse "Atendimento Domiciliar" ?',color: ColorPalette.black54,),
actions: [
ButtonDefault(
onPressed: ()async{
Database db = await DbSqliteLoad().intialDB();
await db.delete(
'ATENDS_DOM_COMPL',
where: 'ID_ATENDIMENTO_DOMICILIAR = ?',
whereArgs: [atendimentoDomiciliarLista[i]['ID_ATENDIMENTO_DOMICILIAR']],
);
await db.delete(
'ATENDS_DOM_PROC',
where: 'ID_ATENDIMENTO_DOMICILIAR = ?',
whereArgs: [atendimentoDomiciliarLista[i]['ID_ATENDIMENTO_DOMICILIAR']],
);
await db.delete(
'ATENDIMENTOS_DOMICILIARES',
where: 'ID_ATENDIMENTO_DOMICILIAR = ?',
whereArgs: [atendimentoDomiciliarLista[i]['ID_ATENDIMENTO_DOMICILIAR']],
);
Navigator.of(context).pop();
getData();
},
title: 'Sim',
background: ColorPalette.appBar,
borderColor: ColorPalette.appBar,
textColor: ColorPalette.white,
),
ButtonDefault(
onPressed: ()=>Navigator.of(context).pop(false),
title: 'Não',
background: ColorPalette.white,
borderColor: ColorPalette.white,
textColor: ColorPalette.black54,
),
],
);
}
);
},
):Container(),
atendimentoDomiciliarLista[i]['SINCRONIZADO']!='S'?IconButton(
icon: Container(
@@ -188,7 +235,7 @@ class _AttendanceListScreenState extends State<AttendanceListScreen> {
],
),
Spacer(),
visitaDomiciliarLista[i]['SINCRONIZADO']=='N'?IconButton(
visitaDomiciliarLista[i]['SINCRONIZADO']!='S'?IconButton(
icon: Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
@@ -197,9 +244,49 @@ class _AttendanceListScreenState extends State<AttendanceListScreen> {
),
child: Icon(Icons.delete, color: Colors.white, size: 40,),
),
onPressed: (){},
onPressed: ()async{
await showDialog(
context: context,
builder: (context){
return AlertDialog(
title: TextDefault(text: 'Aviso',color: ColorPalette.black54,textAlign: TextAlign.center,),
content: TextDefault(text: 'Deseja apagar essa "Visita Domiciliar" ?',color: ColorPalette.black54,),
actions: [
ButtonDefault(
onPressed: ()async{
Database db = await DbSqliteLoad().intialDB();
await db.delete(
'VISITAS_DOMICILIARES_COMPL',
where: 'ID_VISITA_DOMICILIAR = ?',
whereArgs: [visitaDomiciliarLista[i]['ID_VISITA_DOMICILIAR']],
);
await db.delete(
'VISITAS_DOMICILIARES',
where: 'ID_VISITA_DOMICILIAR = ?',
whereArgs: [visitaDomiciliarLista[i]['ID_VISITA_DOMICILIAR']],
);
Navigator.of(context).pop();
getData();
},
title: 'Sim',
background: ColorPalette.appBar,
borderColor: ColorPalette.appBar,
textColor: ColorPalette.white,
),
ButtonDefault(
onPressed: ()=>Navigator.of(context).pop(false),
title: 'Não',
background: ColorPalette.white,
borderColor: ColorPalette.white,
textColor: ColorPalette.black54,
),
],
);
}
);
},
):Container(),
visitaDomiciliarLista[i]['SINCRONIZADO']=='N'?IconButton(
visitaDomiciliarLista[i]['SINCRONIZADO']!='S'?IconButton(
icon: Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
@@ -209,10 +296,10 @@ class _AttendanceListScreenState extends State<AttendanceListScreen> {
child: Icon(Icons.edit, color: Colors.white, size: 40,),
),
onPressed: (){
// Navigator.push(
// context,
// MaterialPageRoute(builder:(context) => AtendimentoDomiciliarTela(name: visitHome[i]['NOME_CIDADAO'],username: widget.username,dados: visitHome[i],)),
// );
Navigator.push(
context,
MaterialPageRoute(builder:(context) => VisitaDomiciliarTela(name: visitaDomiciliarLista[i]['NOME_CIDADAO'],username: widget.username,dados: visitaDomiciliarLista[i],)),
);
},
):Container(),
],
@@ -269,10 +356,45 @@ class _AttendanceListScreenState extends State<AttendanceListScreen> {
),
child: Icon(Icons.delete, color: Colors.white, size: 40,),
),
onPressed: (){},
onPressed: ()async{
await showDialog(
context: context,
builder: (context){
return AlertDialog(
title: TextDefault(text: 'Aviso',color: ColorPalette.black54,textAlign: TextAlign.center,),
content: TextDefault(text: 'Deseja apagar esse cidadão?',color: ColorPalette.black54,),
actions: [
ButtonDefault(
onPressed: ()async{
Database db = await DbSqliteLoad().intialDB();
await db.delete(
'CIDADAOS', // Substitua pelo nome da sua tabela
where: 'ID_CIDADAO = ?',
whereArgs: [cadastroCidadaoLista[i]['ID_CIDADAO']],
);
Navigator.of(context).pop();
getData();
},
title: 'Sim',
background: ColorPalette.appBar,
borderColor: ColorPalette.appBar,
textColor: ColorPalette.white,
),
ButtonDefault(
onPressed: ()=>Navigator.of(context).pop(false),
title: 'Não',
background: ColorPalette.white,
borderColor: ColorPalette.white,
textColor: ColorPalette.black54,
),
],
);
}
);
},
)
:Container(),
cadastroCidadaoLista[i]['SINCRONIZADO']=='N'?IconButton(
cadastroCidadaoLista[i]['SINCRONIZADO']=='N'?IconButton(
icon: Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(

View File

@@ -27,7 +27,8 @@ import '../../widgets/title_containers.dart';
class VisitaDomiciliarTela extends StatefulWidget {
String name;
String username;
VisitaDomiciliarTela({required this.name, required this.username});
var dados;
VisitaDomiciliarTela({required this.name, required this.username, required this.dados});
@override
State<VisitaDomiciliarTela> createState() => _VisitaDomiciliarTelaState();
@@ -55,6 +56,8 @@ class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
bool IMOVEL_FOCO = false;
bool TRATAMENTO_FOCAL = false;
bool carregando = true;
String? TURNO;
String? TIPO_IMOVEL;
String? DESFECHO;
@@ -67,6 +70,7 @@ class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
int ID_PROFISSIONAL=0;
int ID_CIDADAO=0;
int ID_EQUIPE=0;
int ID_VISITA_DOMICILIAR=0;
String CBO_DB ='0';
String INE_PROFISSIONAL='';
@@ -157,11 +161,6 @@ class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
}
}
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{
@@ -192,7 +191,14 @@ class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
listProf = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
INE_PROFISSIONAL = listProf[0]['INE'];
ID_EQUIPE = listProf[0]['ID_EQUIPE'];
if(widget.dados==null){
carregando = false;
}
setState(() {});
if(widget.dados!=null){
editarVisita();
}
}
loadLists()async {
@@ -278,10 +284,16 @@ class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
'COMPLEMENTO' : COMPLEMENTO.text,
'SINCRONIZADO' : 'N',
};
await DbSqliteSync().insertVisitaDomiciliar(row).then((value)async{
await DbSqliteSync().insertVisitaDomiciliar(row,ID_VISITA_DOMICILIAR, widget.dados==null).then((value)async{
// print('value');
// print(value);
/*tipo visita == 1*/
Database db = await DbSqliteLoad().intialDB();
await db.delete(
'VISITAS_DOMICILIARES_COMPL', // Substitua pelo nome da sua tabela
where: 'ID_VISITA_DOMICILIAR = ?',
whereArgs: [ID_VISITA_DOMICILIAR],
);
for(int i = 0;tipoVisitaModel.length>i;i++){
if(tipoVisitaModel[i].check){
/*cadastramento = 1*/
@@ -386,10 +398,178 @@ class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: widget.username)), (route) => false);
}
);
// Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: widget.username)), (route) => false);
});
}
editarVisita()async{
Map map = widget.dados;
map.forEach((chave, valor){
print('$chave : $valor');
});
ID_VISITA_DOMICILIAR = map['ID_VISITA_DOMICILIAR'];
dateDB = map['DT_ATENDIMENTO'];
List splited = dateDB.split('-');
date = '${splited[2]}/${splited[1]}/${splited[0]}';
TURNO_COD = map['TURNO'];
for(int i = 0;ConstVariable().typeTurnService.length >i;i++){
if(ConstVariable().typeTurnService[i].cod == TURNO_COD){
TURNO = ConstVariable().typeTurnService[i].title;
}
}
TIPO_IMOVEL_COD = map['TIPO_IMOVEL'];
for(int i = 0;ConstVariable().listTypeHome.length >i;i++){
if(ConstVariable().listTypeHome[i].cod == TIPO_IMOVEL_COD){
TIPO_IMOVEL = ConstVariable().listTypeHome[i].title;
}
}
VISITA_ACOMPANHADA = map['VISITA_ACOMPANHADA']==1?true:false;
DESFECHO_COD = map['DESFECHO'];
for(int i = 0;ConstVariable().listDesfecho.length >i;i++){
if(ConstVariable().listDesfecho[i].cod == DESFECHO_COD){
DESFECHO = ConstVariable().listDesfecho[i].title;
}
}
Database db = await DbSqliteLoad().intialDB();
List listaVisita = await db.query('VISITAS_DOMICILIARES_COMPL WHERE ID_VISITA_DOMICILIAR = $ID_VISITA_DOMICILIAR');
for (int index = 0; index < ConstVariable().tipoVisitaModel.length; index++) {
bool tipoVisitaCadastramento = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 1 && cond['ID_VISITA_COMPLEMENTO'] == 1);
bool tipoVisitaPediodica = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 1 && cond['ID_VISITA_COMPLEMENTO'] == 29);
//TIPO DE VISITA CADASTRAMENTO/ATUALIZAÇÃO
if(index == 0){
tipoVisitaModel.add(
CheckModel(
subtitle: ConstVariable().tipoVisitaModel[index],
check: tipoVisitaCadastramento
)
);
}
//TIPO DE VISITA PERIÓDICA
if(index == 1){
tipoVisitaModel.add(
CheckModel(
subtitle: ConstVariable().tipoVisitaModel[index],
check: tipoVisitaPediodica
)
);
}
//BUSCA ATIVA CONSULTA
CONSULTA = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 2 && cond['ID_VISITA_COMPLEMENTO'] == 2);
//BUSCA ATIVA EXAME
EXAME = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 2 && cond['ID_VISITA_COMPLEMENTO'] == 3);
//BUSCA ATIVA VACINA
VACINA = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 2 && cond['ID_VISITA_COMPLEMENTO'] == 8);
//BUSCA ATIVA CONDICIONALIDADES
CONDICIONALIDADES = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 2 && cond['ID_VISITA_COMPLEMENTO'] == 30);
//BUSCA ATIVA ACAO_EDUCATIVA
ACAO_EDUCATIVA = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 5 && cond['ID_VISITA_COMPLEMENTO'] == 34);
//BUSCA ATIVA IMOVEL_FOCO
IMOVEL_FOCO = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 5 && cond['ID_VISITA_COMPLEMENTO'] == 35);
//BUSCA ATIVA ACAO_MECANICA
ACAO_MECANICA = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 5 && cond['ID_VISITA_COMPLEMENTO'] == 36);
//BUSCA ATIVA TRATAMENTO_FOCAL
TRATAMENTO_FOCAL = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 5 && cond['ID_VISITA_COMPLEMENTO'] == 37);
}
for (int i = 0; i < ConstVariable().tipoAcompanhamentoModel.length; i++) {
if(i<=13){
tipoAcompanhamentoModel.add(
CheckModel(
subtitle: ConstVariable().tipoAcompanhamentoModel[i],
check: listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 3 && cond['ID_VISITA_COMPLEMENTO'] == i+5)
)
);
// await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,3,i+5);
}else if(i==14){
/*respiratorios == 32*/
tipoAcompanhamentoModel.add(
CheckModel(
subtitle: ConstVariable().tipoAcompanhamentoModel[i],
check: listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 3 && cond['ID_VISITA_COMPLEMENTO'] == 32)
)
);
}else if(i==15){
/*tabagista == 33*/
tipoAcompanhamentoModel.add(
CheckModel(
subtitle: ConstVariable().tipoAcompanhamentoModel[i],
check: listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 3 && cond['ID_VISITA_COMPLEMENTO'] == 33)
)
);
}else if(i>=16){
tipoAcompanhamentoModel.add(
CheckModel(
subtitle: ConstVariable().tipoAcompanhamentoModel[i],
check: listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 3 && cond['ID_VISITA_COMPLEMENTO'] == i+3)
)
);
}
}
for(int i=0; ConstVariable().outrosModel.length>i;i++){
/*orientacao prevencao == 31*/
if(i==3){
// await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,4,31);
outrosModel.add(
CheckModel(
subtitle: ConstVariable().outrosModel[i],
check: listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 4 && cond['ID_VISITA_COMPLEMENTO'] == 31)
)
);
}else if(i==4){
// await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,4,i+24);
outrosModel.add(
CheckModel(
subtitle: ConstVariable().outrosModel[i],
check: listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 4 && cond['ID_VISITA_COMPLEMENTO'] == i+24)
)
);
}else{
// await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,4,i+25);
outrosModel.add(
CheckModel(
subtitle: ConstVariable().outrosModel[i],
check: listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 4 && cond['ID_VISITA_COMPLEMENTO'] == i+25)
)
);
}
}
PESO.text = map['PESO'];
ALTURA.text = map['ALTURA'];
CBO_DB = map['CBO_PROFISSIONAL'];
for(int i = 0;listCBO.length > i; i++){
String splited = listCBO[i].split(' - ').last;
if(splited == CBO_DB){
CBO_PROFISSIONAL = listCBO[i];
}
}
List listINE = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
int AREA_DESCRICAO = 0;
int MICROAREA_DESCRICAO = 0;
for(int i = 0;listINE.length >i;i++){
if(listINE[i]['ID_EQUIPE']==ID_EQUIPE){
INE_PROFISSIONAL = listINE[i]['INE']??'';
AREA_DESCRICAO = listINE[i]['AREA'];
MICROAREA_DESCRICAO = listINE[i]['MICROAREA'];
}
}
for(int i = 0;listINEPROF.length >i;i++){
RegExp ineRegExp = RegExp(r"INE:\s(\d+)");
RegExp areaRegExp = RegExp(r"Área:\s(\d+)");
RegExp microareaRegExp = RegExp(r"Microárea\s:\s(\d+)");
String ine = ineRegExp.firstMatch(listINEPROF[i])?.group(1) ?? '';
String area = areaRegExp.firstMatch(listINEPROF[i])?.group(1) ?? '';
String microarea = microareaRegExp.firstMatch(listINEPROF[i])?.group(1) ?? '';
if(INE_PROFISSIONAL==ine && AREA_DESCRICAO.toString() == area && MICROAREA_DESCRICAO.toString() == microarea){
INE_RESP_CADASTRO = listINEPROF[i];
}
}
COMPLEMENTO.text = map['COMPLEMENTO'];
carregando = false;
setState(() {});
}
@override
void initState() {
super.initState();
@@ -409,7 +589,18 @@ class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
height: double.infinity,
width: double.infinity,
decoration: ConstVariable().backgroundGradient,
child: ListView(
child: carregando?Center(child: Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
CircularProgressIndicator(),
TextDefault(text: 'Carregando dados ...',color: ColorPalette.black54,)
],
),
)
)):ListView(
children: [
Card(
margin: EdgeInsets.all(10),
@@ -527,16 +718,18 @@ class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
Container(
width: width*0.7,
height: heigth*0.1,
child: ListView.builder(
child: tipoVisitaModel.isEmpty && widget.dados!=null?Container():ListView.builder(
physics: const NeverScrollableScrollPhysics(),
itemCount: ConstVariable().tipoVisitaModel.length,
itemBuilder: (context,index){
tipoVisitaModel.add(
CheckModel(
subtitle: ConstVariable().tipoVisitaModel[index],
check: false
)
);
if(widget.dados==null){
tipoVisitaModel.add(
CheckModel(
subtitle: ConstVariable().tipoVisitaModel[index],
check: false
)
);
}
return CheckBoxSubtitle(
ontap:DESFECHO != 'VISITA REALIZADA'?null: (){
setState((){
@@ -601,16 +794,18 @@ class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
Container(
width: width*0.7,
height: heigth*0.9,
child: ListView.builder(
child: widget.dados!=null && tipoAcompanhamentoModel.isEmpty?Container():ListView.builder(
physics: const NeverScrollableScrollPhysics(),
itemCount: ConstVariable().tipoAcompanhamentoModel.length,
itemBuilder: (context,index){
tipoAcompanhamentoModel.add(
CheckModel(
subtitle: ConstVariable().tipoAcompanhamentoModel[index],
check: false
)
);
if(widget.dados == null){
tipoAcompanhamentoModel.add(
CheckModel(
subtitle: ConstVariable().tipoAcompanhamentoModel[index],
check: false
)
);
}
return CheckBoxSubtitle(
subtitle: tipoAcompanhamentoModel[index].subtitle,
checkbox:tipoAcompanhamentoModel[index].check,
@@ -624,16 +819,18 @@ class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
Container(
width: width*0.7,
height: heigth*0.22,
child: ListView.builder(
child: outrosModel.isEmpty && widget.dados!=null?Container():ListView.builder(
physics: const NeverScrollableScrollPhysics(),
itemCount: ConstVariable().outrosModel.length,
itemBuilder: (context,index){
outrosModel.add(
CheckModel(
subtitle: ConstVariable().outrosModel[index],
check: false
)
);
if(widget.dados==null){
outrosModel.add(
CheckModel(
subtitle: ConstVariable().outrosModel[index],
check: false
)
);
}
return CheckBoxSubtitle(
subtitle: outrosModel[index].subtitle,
checkbox:outrosModel[index].check,

View File

@@ -532,11 +532,15 @@ class DbSqliteSync{
// print(await db.query('ATENDS_DOM_COMPL'));
return db;
}
Future insertVisitaDomiciliar(var value)async{
Future insertVisitaDomiciliar(var value, int ID_VISITA_DOMICILIAR, bool novo)async{
Database db = await DbSqliteLoad().intialDB();
int id = await db.insert('VISITAS_DOMICILIARES', value);
print(await db.query('VISITAS_DOMICILIARES'));
return id;
if(novo){
int id = await db.insert('VISITAS_DOMICILIARES', value);
return id;
}else{
await db.update('VISITAS_DOMICILIARES', value ,where: "ID_VISITA_DOMICILIAR = $ID_VISITA_DOMICILIAR");
return ID_VISITA_DOMICILIAR;
}
}
Future insertVisitaDomiciliarCOMPL(int ID_VISITA_DOMICILIAR,int ID_VISITA_DOM_TIPO, int ID_VISITA_COMPLEMENTO)async{
Database db = await DbSqliteLoad().intialDB();

View File

@@ -166,7 +166,7 @@ class AlertDialogDefault {
}else if(index == 1){
Navigator.push(
context,
MaterialPageRoute(builder:(context) => VisitaDomiciliarTela(name: name,username: username,)),
MaterialPageRoute(builder:(context) => VisitaDomiciliarTela(name: name,username: username,dados: null,)),
);
// Navigator.push(
// context,
@@ -200,7 +200,7 @@ class AlertDialogDefault {
}else if (index==7){
Navigator.push(
context,
MaterialPageRoute(builder:(context) => VisitaDomiciliarTela(name: name,username: username,)),
MaterialPageRoute(builder:(context) => VisitaDomiciliarTela(name: name,username: username,dados: null,)),
);
}
},