From ce2a1cf4d167f48cba2463af576ea2f325477f3e Mon Sep 17 00:00:00 2001 From: Reginaldo Date: Tue, 27 Aug 2024 21:36:28 -0300 Subject: [PATCH] =?UTF-8?q?vers=C3=A3o=201.0.13+14=20state=20do=20salvar?= =?UTF-8?q?=20altera=C3=A7=C3=B5es=20de=20cadastro=20do=20cidadaos,=20e=20?= =?UTF-8?q?edicao=20do=20atendimento=5Fdomiciliar=5Ftela.dart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/screens/attendance_list_screen.dart | 275 +++++++++++++++--- lib/screens/home_screen.dart | 2 + .../register_citizen_screen.dart | 20 +- .../register_home_screen.dart | 6 +- .../register_individual_screen.dart | 3 +- .../atendimento_domiciliar_tela.dart | 163 +++++++++-- lib/service/db/db_sqlite_sync.dart | 12 +- lib/widgets/alert_dialog_default.dart | 2 +- pubspec.yaml | 3 +- 9 files changed, 411 insertions(+), 75 deletions(-) diff --git a/lib/screens/attendance_list_screen.dart b/lib/screens/attendance_list_screen.dart index 373e626..a0f4ebd 100644 --- a/lib/screens/attendance_list_screen.dart +++ b/lib/screens/attendance_list_screen.dart @@ -1,8 +1,11 @@ import 'package:flutter/material.dart'; 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/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'; @@ -17,23 +20,26 @@ class AttendanceListScreen extends StatefulWidget { class _AttendanceListScreenState extends State { - List visitHome = []; - List citizenUpdate = []; - List serviceHome = []; + List atendimentoDomiciliarLista = []; + List visitaDomiciliarLista = []; + List cadastroCidadaoLista = []; List cadastrosIndividuais = []; getData()async{ Database db = await DbSqliteLoad().intialDB(); - visitHome = await db.query('VISITAS_DOMICILIARES'); - citizenUpdate = await db.query('CIDADAOS WHERE SINCRONIZADO = "N"'); + // visitHome = await db.query('VISITAS_DOMICILIARES'); + visitaDomiciliarLista =await db.rawQuery(''' + SELECT VD.*, C.* + FROM VISITAS_DOMICILIARES VD + INNER JOIN CIDADAOS C ON VD.ID_CIDADAO = C.ID_CIDADAO +'''); + cadastroCidadaoLista = await db.query('CIDADAOS WHERE SINCRONIZADO = "N"'); cadastrosIndividuais = await db.query('CADASTROS_INDIVIDUAIS WHERE SINCRONIZADO = "N"'); - serviceHome =await db.query('ATENDIMENTOS_DOMICILIARES'); - // print(await db.query('ATENDIMENTOS_DOMICILIARES')); - // print(await db.query('CADASTROS_INDIVIDUAIS WHERE SINCRONIZADO = "N"')); - // print(await db.query('VISITAS_DOMICILIARES_PROC')); - // print(await db.query('CIDADAOS WHERE SINCRONIZADO = "N"')); - // print(citizenUpdate.length); - // List list = await db.rawQuery('SELECT * FROM CIDADAOS WHERE CNS = $CNS'); + atendimentoDomiciliarLista =await db.rawQuery(''' + SELECT AD.*, C.* + FROM ATENDIMENTOS_DOMICILIARES AD + INNER JOIN CIDADAOS C ON AD.ID_CIDADAO = C.ID_CIDADAO +'''); setState(() {}); } @@ -59,44 +65,237 @@ class _AttendanceListScreenState extends State { child: Column( children: [ TextDefault( - text: 'Atendimentos Domiciliares: ${serviceHome.length} | Visitas Domiciliares: ${visitHome.length}', + text: 'Atendimentos Domiciliares: ${atendimentoDomiciliarLista.length} | Visitas Domiciliares: ${visitaDomiciliarLista.length}', fontWeigth: FontWeight.bold, color: ColorPalette.black54, fontSize: 18, ), - // TextDefault( - // text: 'Atendimentos Odontológicos: 0 | Avaliação Elegibilidade: 0', - // fontWeigth: FontWeight.bold, - // color: ColorPalette.black54, - // fontSize: 18, - // ), TextDefault( - text: 'Cadastros Cidadãos Realizados / Atualizados : ${citizenUpdate.length + cadastrosIndividuais.length}', + text: 'Cadastros Cidadãos Realizados / Atualizados : ${cadastroCidadaoLista.length + cadastrosIndividuais.length}', fontWeigth: FontWeight.bold, color: ColorPalette.black54, fontSize: 18, ), - // TextDefault( - // text: 'Fichas Complementares: 0 | Marcadores de Consumo : 0', - // fontWeigth: FontWeight.bold, - // color: ColorPalette.black54, - // fontSize: 18, - // ), - // TextDefault( - // text: 'Procedimentos Consolidados: 0 | Procedimentos Individuais : 0', - // fontWeigth: FontWeight.bold, - // color: ColorPalette.black54, - // fontSize: 18, - // ), - // TextDefault( - // text: 'Visitas Domiciliares: ${visitHome.length}', - // fontWeigth: FontWeight.bold, - // color: ColorPalette.black54, - // fontSize: 18, - // ), ], ) ), + Container( + height: atendimentoDomiciliarLista.length*80, + child: ListView.builder( + itemCount: atendimentoDomiciliarLista.length, + itemBuilder: (context,i){ + + List dataList = atendimentoDomiciliarLista[i]['DATA'].toString().split('-'); + String data = '${dataList[2]}/${dataList[1]}/${dataList[0]}'; + + return Card( + color: Colors.white, + child: Row( + children: [ + Container( + height: 70, + width: 50, + decoration: BoxDecoration( + color: Color(0XFF666666), + borderRadius: BorderRadius.only(bottomLeft: Radius.circular(10),topLeft: Radius.circular(10)) + ), + alignment: Alignment.center, + child: TextDefault(text: 'A.D.',color: Colors.white,fontSize: 22,fontWeigth: FontWeight.bold,), + ), + SizedBox(width: 10,), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextDefault(text:atendimentoDomiciliarLista[i]['NOME_CIDADAO'].toString(),color: ColorPalette.black54,fontWeigth: FontWeight.w700,), + Row( + children: [ + TextDefault(text:'DATA ATENDIMENTO: $data',color: ColorPalette.black54,fontWeigth: FontWeight.w700,), + SizedBox(width: 20,), + TextDefault(text:'SINCRONIZADO : ${atendimentoDomiciliarLista[i]['SINCRONIZADO']}',color: ColorPalette.black54,fontWeigth: FontWeight.w700,), + ], + ), + ], + ), + Spacer(), + atendimentoDomiciliarLista[i]['SINCRONIZADO']!='S'?IconButton( + icon: Container( + padding: EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: Color(0XFF990000), + borderRadius: BorderRadius.circular(50), + ), + child: Icon(Icons.delete, color: Colors.white, size: 40,), + ), + onPressed: (){}, + ):Container(), + atendimentoDomiciliarLista[i]['SINCRONIZADO']!='S'?IconButton( + icon: Container( + padding: EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: Colors.orangeAccent, + borderRadius: BorderRadius.circular(50), + ), + child: Icon(Icons.edit, color: Colors.white, size: 40,), + ), + onPressed: (){ + Navigator.push( + context, + MaterialPageRoute(builder:(context) => AtendimentoDomiciliarTela(name: atendimentoDomiciliarLista[i]['NOME_CIDADAO'],username: widget.username,dados: atendimentoDomiciliarLista[i],)), + ); + }, + ):Container(), + ], + )); + }, + ), + ), + Container( + height: visitaDomiciliarLista.length*80, + child: ListView.builder( + itemCount: visitaDomiciliarLista.length, + itemBuilder: (context,i){ + + //print(visitHome[i]); + List dataList = visitaDomiciliarLista[i]['DT_ATENDIMENTO'].toString().split('-'); + String data = '${dataList[2]}/${dataList[1]}/${dataList[0]}'; + + return Card( + color: Colors.white, + child: Row( + children: [ + Container( + height: 70, + width: 50, + decoration: BoxDecoration( + color: Color(0XFF006633), + borderRadius: BorderRadius.only(bottomLeft: Radius.circular(10),topLeft: Radius.circular(10)) + ), + alignment: Alignment.center, + child: TextDefault(text: 'V.D.',color: Colors.white,fontSize: 22,fontWeigth: FontWeight.bold,), + ), + SizedBox(width: 10,), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextDefault(text:visitaDomiciliarLista[i]['NOME_CIDADAO'].toString(),color: ColorPalette.black54,fontWeigth: FontWeight.w700,), + Row( + children: [ + TextDefault(text:'DATA ATENDIMENTO: $data',color: ColorPalette.black54,fontWeigth: FontWeight.w700,), + SizedBox(width: 20,), + TextDefault(text:'SINCRONIZADO : ${visitaDomiciliarLista[i]['SINCRONIZADO']}',color: ColorPalette.black54,fontWeigth: FontWeight.w700,), + ], + ), + ], + ), + Spacer(), + visitaDomiciliarLista[i]['SINCRONIZADO']=='N'?IconButton( + icon: Container( + padding: EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: Color(0XFF990000), + borderRadius: BorderRadius.circular(50), + ), + child: Icon(Icons.delete, color: Colors.white, size: 40,), + ), + onPressed: (){}, + ):Container(), + visitaDomiciliarLista[i]['SINCRONIZADO']=='N'?IconButton( + icon: Container( + padding: EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: Colors.orangeAccent, + borderRadius: BorderRadius.circular(50), + ), + 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],)), + // ); + }, + ):Container(), + ], + )); + }, + ), + ), + Container( + height: cadastroCidadaoLista.length*80, + child: ListView.builder( + itemCount: cadastroCidadaoLista.length, + itemBuilder: (context,i){ + + List dataList1 = cadastroCidadaoLista[i]['DT_HORA_CADASTRO'].toString().split(' '); + List dataList2 = dataList1[0].split('-'); + String data = '${dataList2[2]}/${dataList2[1]}/${dataList2[0]}'; + + return Card( + color: Colors.white, + child: Row( + children: [ + Container( + height: 70, + width: 50, + decoration: BoxDecoration( + color: Color(0XFF990000), + borderRadius: BorderRadius.only(bottomLeft: Radius.circular(10),topLeft: Radius.circular(10)) + ), + alignment: Alignment.center, + child: TextDefault(text: 'C',color: Colors.white,fontSize: 22,fontWeigth: FontWeight.bold,), + ), + SizedBox(width: 10,), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextDefault(text:cadastroCidadaoLista[i]['NOME_CIDADAO'].toString(),color: ColorPalette.black54,fontWeigth: FontWeight.w700,), + Row( + children: [ + TextDefault(text:'DATA CADASTRO : $data',color: ColorPalette.black54,fontWeigth: FontWeight.w700,), + SizedBox(width: 20,), + TextDefault(text:'SINCRONIZADO : ${cadastroCidadaoLista[i]['SINCRONIZADO']}',color: ColorPalette.black54,fontWeigth: FontWeight.w700,), + ], + ), + ], + ), + Spacer(), + cadastroCidadaoLista[i]['ORIGEM']=='C' && cadastroCidadaoLista[i]['SINCRONIZADO']=='N' + ?IconButton( + icon: Container( + padding: EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: Color(0XFF990000), + borderRadius: BorderRadius.circular(50), + ), + child: Icon(Icons.delete, color: Colors.white, size: 40,), + ), + onPressed: (){}, + ) + :Container(), + cadastroCidadaoLista[i]['SINCRONIZADO']=='N'?IconButton( + icon: Container( + padding: EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: Colors.orangeAccent, + borderRadius: BorderRadius.circular(50), + ), + child: Icon(Icons.edit, color: Colors.white, size: 40,), + ), + onPressed: ()async { + await DBQuerys().buscaCidadao(cadastroCidadaoLista[i]['NOME_CIDADAO']).then((list){ + // print(showResults[index]['CD_USUARIO_SUS']); + Navigator.push( + context, + MaterialPageRoute(builder:(context) => RegisterCitizenScreen(listData: list,username: widget.username,)), + ); + }); + }, + ):Container(), + ], + )); + }, + ), + ), ], ), ), diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index 71d727a..1ab51e9 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -58,6 +58,7 @@ class _HomeScreenState extends State { ){ if(showResults.length<10){ showResults.add(dataCitizen[i]); + // print(dataCitizen[i]['ORIGEM']); } } } @@ -68,6 +69,7 @@ class _HomeScreenState extends State { if(dataCitizen.isNotEmpty){ for(int i = 0;i<10;i++){ showResults.add(dataCitizen[i]); + // print(dataCitizen[i]['ORIGEM']); } } }); diff --git a/lib/screens/registers_citizen/register_citizen_screen.dart b/lib/screens/registers_citizen/register_citizen_screen.dart index f83d1cb..4660b17 100644 --- a/lib/screens/registers_citizen/register_citizen_screen.dart +++ b/lib/screens/registers_citizen/register_citizen_screen.dart @@ -359,14 +359,20 @@ class _RegisterCitizenScreenState extends State { checkCNS = 'ok'; } if((selectClassification!='OUTRO MUNICIPIO' && selectCountry == 'BRASIL' && selectStreet == null) || - (selectStreet!=null && (cepController.text.isEmpty || cepController.text.length!=10)) || - (selectStreet!=null && numberController.text.isEmpty) || + (selectClassification!='OUTRO MUNICIPIO' && selectStreet!=null && (cepController.text.isEmpty || cepController.text.length!=10)) || + (selectClassification!='OUTRO MUNICIPIO' && selectStreet!=null && numberController.text.isEmpty) || (selectTypeStreet == null && selectClassification!='OUTRO MUNICIPIO') || (selectVillage == null && (selectCountry == 'BRASIL' && selectClassification!='OUTRO MUNICIPIO')) || (cityController.text.isEmpty && selectCountry!='OUTRO') || selectCountry == null ){ checkClassification = true; + print('selectClassification: $selectClassification'); + print('selectCountry: $selectCountry'); + print('selectStreet: $selectStreet'); + print('cepController: ${cepController.text}'); + print('selectVillage: $selectVillage'); + print('cityController: ${cityController.text}'); print('erro no end'); } @@ -380,7 +386,6 @@ class _RegisterCitizenScreenState extends State { selectClassification==null || selectCountry==null || date == 'Data de Nascimento'|| - date == 'Data de Nascimento'|| cityBirthController.text.isEmpty || mobileDDDController.text.isEmpty || mobileController.text.isEmpty || @@ -487,7 +492,7 @@ class _RegisterCitizenScreenState extends State { 'DT_OBITO' : dateDeathDB, 'DECLARACAO_OBITO' : '', 'BLOQUEIO' : enableBlocked?1:0, - 'ORIGEM' : 'A', + 'ORIGEM' : editing?'A':'C', 'DT_HORA_CADASTRO' : DateTime.now().toString(), 'SINCRONIZADO' : 'N', }; @@ -516,6 +521,7 @@ class _RegisterCitizenScreenState extends State { 'OK' ); setState(() { + edit = true; showTab = true; }); // print(value); @@ -814,7 +820,7 @@ class _RegisterCitizenScreenState extends State { margin: EdgeInsets.all(10), child: Column( children: [ - TitleContainers(title: 'Indentificação'), + TitleContainers(title: 'Identificação'), Row( children: [ Container( @@ -1400,7 +1406,7 @@ class _RegisterCitizenScreenState extends State { 'OUTRO', ] ), - selectCountry==null&& mandatory?ErrorDefault():Container(), + selectPaisResidencia==null&& mandatory?ErrorDefault():Container(), GestureDetector( onTap: selectClassification!='OUTRO MUNICIPIO'|| cityController.text == 'MUNICIPIO IGNORADO'?null: (){ searchCityController.text = ''; @@ -1537,7 +1543,7 @@ class _RegisterCitizenScreenState extends State { }, list: typeStreetDB ), - selectTypeStreet!='OUTRO MUNICIPIO' && selectTypeStreet == null && selectCountry == null&& mandatory?ErrorDefault():Container(), + selectClassification!='OUTRO MUNICIPIO' && selectTypeStreet == null && selectCountry == null && mandatory?ErrorDefault():Container(), DropdownWithSubtitle( subtitle: 'Nome do Logradouro', select: selectStreet, diff --git a/lib/screens/registers_citizen/register_home_screen.dart b/lib/screens/registers_citizen/register_home_screen.dart index 6c39435..902d6f0 100644 --- a/lib/screens/registers_citizen/register_home_screen.dart +++ b/lib/screens/registers_citizen/register_home_screen.dart @@ -378,7 +378,7 @@ class _RegisterHomeScreenState extends State { 'POSSUI_FINANCIAMENTO' : POSSUI_FINANCIAMENTO?'S':'N', 'POSSUI_EMPRESTIMO' : POSSUI_EMPRESTIMO?'S':'N', 'DT_HORA_CADASTRO' : '${f.format(DateTime.now())}', - 'ORIGEM' : 'A', + 'ORIGEM' : TIPO_SALVAR!='new'?'A':'C', 'SINCRONIZADO' : 'N', }; @@ -426,7 +426,7 @@ class _RegisterHomeScreenState extends State { 'INE_RESP_CADASTRO' : INE_DB, 'DT_CADASTRO' : date_cad, 'ID_EQUIPE' : ID_EQUIPE, - 'ORIGEM' : 'A', + 'ORIGEM' : TIPO_SALVAR!='new'?'A':'C', 'SINCRONIZADO' : 'N', 'NOME_INSTITUICAO_PERMANENCIA': NOME_INSTITUICAO_PERMANENCIA, 'PROFISSIONAIS_VINCULADOS_INST': PROFISSIONAIS_VINCULADOS_INST, @@ -437,6 +437,8 @@ class _RegisterHomeScreenState extends State { await DbSqliteSync().insertCadastrosDomiciliares(rowHome,TIPO_SALVAR,ID_DOMICILIO,ID_CIDADAO,CD_USUARIO_SUS).then((value)async{ await DbSqliteSync().insertCidadaos(rowCitizen,editing?'update':'new',widget.listData[0]['CD_USUARIO_SUS']).then((value){ + edit = false; + setState(() {}); AlertDialogDefault().alert( context, 'Aviso', diff --git a/lib/screens/registers_citizen/register_individual_screen.dart b/lib/screens/registers_citizen/register_individual_screen.dart index 09c104f..7a940e5 100644 --- a/lib/screens/registers_citizen/register_individual_screen.dart +++ b/lib/screens/registers_citizen/register_individual_screen.dart @@ -582,7 +582,7 @@ class _RegisterIndividualScreenState extends State { 'INE_RESP_CADASTRO' : INE_DB, 'DT_CADASTRO' : date_cad, 'ID_EQUIPE' : ID_EQUIPE, - 'ORIGEM' : 'A', + 'ORIGEM' : TIPO_SALVAR!='new'?'A':'C', 'SINCRONIZADO' : 'N', 'DT_ENTRADA_BRASIL' : DT_ENTRADA_BRASIL.text, 'DT_NATURALIZACAO' : DT_NATURALIZACAO.text, @@ -605,6 +605,7 @@ class _RegisterIndividualScreenState extends State { 'OK' ); setState(() { + edit = false; showTab = true; }); // print(value); diff --git a/lib/screens/select_service/atendimento_domiciliar_tela.dart b/lib/screens/select_service/atendimento_domiciliar_tela.dart index 07921e5..8e51bfd 100644 --- a/lib/screens/select_service/atendimento_domiciliar_tela.dart +++ b/lib/screens/select_service/atendimento_domiciliar_tela.dart @@ -29,7 +29,8 @@ import '../home_screen.dart'; class AtendimentoDomiciliarTela extends StatefulWidget { String name; String username; - AtendimentoDomiciliarTela({required this.name,required this.username}); + var dados; + AtendimentoDomiciliarTela({required this.name,required this.username, required this.dados}); @override State createState() => _AtendimentoDomiciliarTelaState(); @@ -52,6 +53,7 @@ class _AtendimentoDomiciliarTelaState extends State { String CD_USUARIO_SUS = ''; String INE_PROFISSIONAL = ''; + int ID_ATENDIMENTO_DOMICILIAR = 0; int ID_CIDADAO=0; int ID_PROFISSIONAL=0; int LOCAL_ATENDIMENTO_COD=0; @@ -90,6 +92,8 @@ class _AtendimentoDomiciliarTelaState extends State { List listConduct = []; List listProc = []; List CBOS_PROFISSIONAL=[]; + List condicoes = []; + List procedimentos = []; bool CNS_VALIDO = false; bool mandatory = false; @@ -203,6 +207,9 @@ class _AtendimentoDomiciliarTelaState extends State { } }); } + if(widget.dados!=null){ + editarAtendimento(); + } } } @@ -263,6 +270,106 @@ class _AtendimentoDomiciliarTelaState extends State { } } + editarAtendimento()async{ + + Map map = widget.dados; + + map.forEach((chave,valor){ + print('$chave: $valor' ); + }); + + ID_ATENDIMENTO_DOMICILIAR = map['ID_ATENDIMENTO_DOMICILIAR']; + dateDB = map['DATA']; + List splited = dateDB.split('-'); + date = '${splited[2]}/${splited[1]}/${splited[0]}'; + LOCAL_ATENDIMENTO_COD = map['LOCAL_ATENDIMENTO']; + for(int i = 0;ConstVariable().listServicePlace.length >i;i++){ + if(ConstVariable().listServicePlace[i].cod == LOCAL_ATENDIMENTO_COD){ + LOCAL_ATENDIMENTO = ConstVariable().listServicePlace[i].title; + } + } + TIPO_ATENDIMENTO_COD = map['TIPO_ATENDIMENTO']; + for(int i = 0;ConstVariable().typeService.length >i;i++){ + if(ConstVariable().typeService[i].cod == TIPO_ATENDIMENTO_COD){ + TIPO_ATENDIMENTO = ConstVariable().typeService[i].title; + } + } + CBO_PROFISSIONAL_DB = map['CBO_PROFISSIONAL']; + for(int i = 0;listCBO.length > i; i++){ + String splited = listCBO[i].split(' - ').last; + if(splited == CBO_PROFISSIONAL_DB){ + CBO_PROFISSIONAL = listCBO[i]; + } + } + ID_EQUIPE = map['ID_EQUIPE']; + 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]; + } + } + MODALIDADE_COD = map['MODALIDADE']; + for(int i = 0;ConstVariable().typeModelService.length >i;i++){ + if(ConstVariable().typeModelService[i].cod == MODALIDADE_COD){ + MODALIDADE = ConstVariable().typeModelService[i].title; + } + } + 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; + } + } + Database db = await DbSqliteLoad().intialDB(); + condicoes = await db.query('ATENDS_DOM_COMPL WHERE ID_ATENDIMENTO_DOMICILIAR = $ID_ATENDIMENTO_DOMICILIAR'); + procedimentos = await db.query('ATENDS_DOM_PROC WHERE ID_ATENDIMENTO_DOMICILIAR = $ID_ATENDIMENTO_DOMICILIAR'); + // print(condicoes); + print(procedimentos); + for (int index = 0; index < ConstVariable().serviceHomeCheckConditionlist.length; index++) { + bool checkValue = condicoes.any((cond) =>cond['COND_AVAL_ATEND_DOM'] == index + 1); + serviceHomeModel.add( + CheckModel( + subtitle: ConstVariable().serviceHomeCheckConditionlist[index], + check: checkValue, + ), + ); + } + for (int index = 0; index < ConstVariable().serviceHomeCheckProclist.length; index++) { + bool checkValue = procedimentos.any((cond) =>cond['PROC_ATEND_DOM'] == ConstVariable().serviceHomeCheckProclist[index].COD_SIA); + serviceProcModel.add( + CheckProcedSiaModel( + COD_SIA: ConstVariable().serviceHomeCheckProclist[index].COD_SIA, + DESCRICAO_PROCEDIMENTO: ConstVariable().serviceHomeCheckProclist[index].DESCRICAO_PROCEDIMENTO, + check: checkValue + ) + ); + } + CONDUTA_COD = map['CONDUTA']; + for(int i = 0;ConstVariable().listConduct.length >i;i++){ + if(ConstVariable().listConduct[i].cod == CONDUTA_COD){ + CONDUTA = ConstVariable().listConduct[i].title; + } + } + setState(() {}); + } + saveServiceHome()async{ Map row = { 'ID_CIDADAO' : ID_CIDADAO, @@ -283,12 +390,23 @@ class _AtendimentoDomiciliarTelaState extends State { 'CONDUTA' : CONDUTA_COD, 'SINCRONIZADO' : 'N', }; - await DbSqliteSync().insertAtendimentoDomiciliar(row).then((value){ + await DbSqliteSync().insertAtendimentoDomiciliar(row,widget.dados==null,ID_ATENDIMENTO_DOMICILIAR).then((value)async{ + Database db = await DbSqliteLoad().intialDB(); + await db.delete( + 'ATENDS_DOM_COMPL', // Substitua pelo nome da sua tabela + where: 'ID_ATENDIMENTO_DOMICILIAR = ?', + whereArgs: [ID_ATENDIMENTO_DOMICILIAR], + ); for(int i = 0;serviceHomeModel.length>i;i++){ if(serviceHomeModel[i].check){ DbSqliteSync().insertCondicoesAvaliadas(value,i+1); } } + await db.delete( + 'ATENDS_DOM_PROC', // Substitua pelo nome da sua tabela + where: 'ID_ATENDIMENTO_DOMICILIAR = ?', + whereArgs: [ID_ATENDIMENTO_DOMICILIAR], + ); for(int i = 0;serviceProcModel.length>i;i++){ if(serviceProcModel[i].check){ DbSqliteSync().insertProcedimentosDomiciliares(value,serviceProcModel[i].COD_SIA); @@ -309,10 +427,11 @@ class _AtendimentoDomiciliarTelaState extends State { ID_CIDADAO = list[0]['ID_CIDADAO']; CD_USUARIO_SUS = list[0]['CD_USUARIO_SUS']; }); - List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); - - INE_PROFISSIONAL = list[0]['INE']??''; - ID_EQUIPE = list[0]['ID_EQUIPE']??0; + if(widget.dados==null){ + List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); + INE_PROFISSIONAL = list[0]['INE']??''; + ID_EQUIPE = list[0]['ID_EQUIPE']??0; + } } @override @@ -547,19 +666,21 @@ class _AtendimentoDomiciliarTelaState extends State { children: [ SizedBox(height: 10,), TitleContainers(title: 'Condição Avaliada',width: width * 0.73), - Container( + widget.dados!=null && serviceHomeModel.length !=ConstVariable().serviceHomeCheckConditionlist.length?Container():Container( width: width*0.7, height: heigth*0.95, child: ListView.builder( physics: const NeverScrollableScrollPhysics(), itemCount: ConstVariable().serviceHomeCheckConditionlist.length, itemBuilder: (context,index){ - serviceHomeModel.add( - CheckModel( - subtitle: ConstVariable().serviceHomeCheckConditionlist[index], - check: false - ) - ); + if(widget.dados==null){ + serviceHomeModel.add( + CheckModel( + subtitle: ConstVariable().serviceHomeCheckConditionlist[index], + check: false + ) + ); + } return CheckBoxSubtitle( subtitle: serviceHomeModel[index].subtitle, checkbox:serviceHomeModel[index].check, @@ -657,14 +778,14 @@ class _AtendimentoDomiciliarTelaState extends State { itemCount: ConstVariable().serviceHomeCheckProclist.length, itemBuilder: (context,index){ - serviceProcModel.add( - CheckProcedSiaModel( - COD_SIA: ConstVariable().serviceHomeCheckProclist[index].COD_SIA, - DESCRICAO_PROCEDIMENTO: ConstVariable().serviceHomeCheckProclist[index].DESCRICAO_PROCEDIMENTO, - ) - ); - - // print(serviceProcModel[index].subtitle); + if(widget.dados==null){ + serviceProcModel.add( + CheckProcedSiaModel( + COD_SIA: ConstVariable().serviceHomeCheckProclist[index].COD_SIA, + DESCRICAO_PROCEDIMENTO: ConstVariable().serviceHomeCheckProclist[index].DESCRICAO_PROCEDIMENTO, + ) + ); + } return CheckBoxSubtitle( subtitle: serviceProcModel[index].DESCRICAO_PROCEDIMENTO, diff --git a/lib/service/db/db_sqlite_sync.dart b/lib/service/db/db_sqlite_sync.dart index d8807cf..52fe195 100644 --- a/lib/service/db/db_sqlite_sync.dart +++ b/lib/service/db/db_sqlite_sync.dart @@ -511,11 +511,15 @@ class DbSqliteSync{ } return db; } - Future insertAtendimentoDomiciliar(var value)async{ + Future insertAtendimentoDomiciliar(var value, bool novo, int ID_ATENDIMENTO_DOMICILIAR)async{ Database db = await DbSqliteLoad().intialDB(); - int id = await db.insert('ATENDIMENTOS_DOMICILIARES', value); - // print(await db.query('ATENDIMENTOS_DOMICILIARES')); - return id; + if(novo){ + int id = await db.insert('ATENDIMENTOS_DOMICILIARES', value); + return id; + }else{ + await db.update('ATENDIMENTOS_DOMICILIARES', value ,where: "ID_ATENDIMENTO_DOMICILIAR = $ID_ATENDIMENTO_DOMICILIAR"); + return ID_ATENDIMENTO_DOMICILIAR; + } } Future insertCondicoesAvaliadas(int ID_ATENDIMENTO_DOMICILIAR,int COND_AVAL_ATEND_DOM)async{ Database db = await DbSqliteLoad().intialDB(); diff --git a/lib/widgets/alert_dialog_default.dart b/lib/widgets/alert_dialog_default.dart index f77853b..3d7c177 100644 --- a/lib/widgets/alert_dialog_default.dart +++ b/lib/widgets/alert_dialog_default.dart @@ -161,7 +161,7 @@ class AlertDialogDefault { if(index==0){ Navigator.push( context, - MaterialPageRoute(builder:(context) => AtendimentoDomiciliarTela(name: name,username: username,)), + MaterialPageRoute(builder:(context) => AtendimentoDomiciliarTela(name: name,username: username,dados: null,)), ); }else if(index == 1){ Navigator.push( diff --git a/pubspec.yaml b/pubspec.yaml index 4918f75..caa1962 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,9 +6,10 @@ description: RKM AB 2.0. #versão 1.0.10+11 AJUSTES PARA A SINCRONIZAÇÃO DIA 22/08/2024 #versão 1.0.11+12 AJUSTES PARA NÃO EXIBIR MICROAREA NULL, E AJUSTE DADOS FORA DE AREA DIA 23/08/2024 #versão 1.0.12+13 AJUSTE DE ID E DESCRIÇÃO DE AREA E MICROAREA, AJUSTE DA MENSAGEM DADOS SALVOS DA EDIÇÃO DO PACIENTE. 26/08/2024 +#versão 1.0.13+14 SETSTATE SALVAR DADOS CIDADAO E EDITAR E EXCLUIR ATENDICMENTO E VISITA. 27/08/2024 publish_to: 'none' -version: 1.0.11+12 +version: 1.0.13+14 environment: sdk: '>=3.2.3 <4.0.0'