diff --git a/android/app/build.gradle b/android/app/build.gradle index 33a806f..da07256 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -44,7 +44,7 @@ android { applicationId = "com.ab.rkm.rkm" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdk = flutter.minSdkVersion + minSdk = 24 targetSdk = flutter.targetSdkVersion versionCode = flutterVersionCode.toInteger() versionName = flutterVersionName @@ -61,6 +61,16 @@ android { buildTypes { release { + minifyEnabled true + shrinkResources false + lintOptions { + disable 'InvalidPackage' + disable "Instantiatable" + checkReleaseBuilds false + abortOnError false + + } + signingConfig signingConfigs.debug signingConfig signingConfigs.release } } @@ -69,3 +79,6 @@ android { flutter { source = "../.." } +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index d2ffbff..f12d008 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,16 +1,41 @@ -allprojects { +buildscript { + ext.kotlin_version = '1.6.10' repositories { - google() + maven { + url 'https://maven.google.com/' + name 'Google' + } + maven { + url 'https://mvnrepository.com/artifact/com.android.tools.lint/lint-gradle-api' + } mavenCentral() } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } } -rootProject.buildDir = "../build" +allprojects { + repositories { + maven { + url 'https://maven.google.com/' + name 'Google' + } + jcenter() + maven { + url 'https://mvnrepository.com/artifact/com.android.tools.lint/lint-gradle-api' + } + } +} + +rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { - project.evaluationDependsOn(":app") + project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { diff --git a/android/gradle.properties b/android/gradle.properties index 3b5b324..4afbf39 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,4 @@ -org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError +#org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError +org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index e1ca574..cb24abd 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/lib/config/const_variable.dart b/lib/config/const_variable.dart index 847f69c..f59acd4 100644 --- a/lib/config/const_variable.dart +++ b/lib/config/const_variable.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:rkm/models/city_load_model.dart'; import 'package:rkm/models/drop_down_data_model.dart'; +import '../models/check_proced_sia_model.dart'; import '../models/pais_modelo.dart'; import 'color_palette.dart'; @@ -130,29 +131,52 @@ class ConstVariable{ 'USO DE TRAQUEOSTOMIA', ]; - List serviceHomeCheckProclist = [ - 'ACOMP.DE PACIENTE EM REABILITAÇÃO EM COMUNICAÇÃO ALTERNATIVA', - 'ENEMA', - 'ANTIBIOTICOTERAPIA PARENTERAL', - 'OXIGENOTERAPIA', - 'ATEND./ ACOMP. PACIENTE EM REABILITAÇÃO DO DESENVOLVIMENTO NEUROPSICOMOTOR', - 'RETIRADA DE PONTOS DE CIRURGIAS BÁSICAS', - 'ATEND. FISIOTERAPÊUTICO PACIENTE C/ TRANST. RESP S/ COMPLICAÇÕES SISTÊMICAS', - 'SONDAGEM GÁSTRICA', - 'ATEND. MÉDICO COM FINALIDADE DE ATESTAR ÓBITO', - 'TERAPIA DE REIDRATAÇÃO ORAL', - 'ATEND./ACOMP.EM REABILITAÇÃO NAS MÚLTIPLAS DEFICIÊNCIAS', - 'TERAPIA DE REIDRATAÇÃO PARENTERAL', - 'ADAPTAÇÃO AO USO DE ÓRTESE / PRÓTESE', - 'REABILITAÇÃO DOMICILIAR', - 'CATETERISMO VESICAL DE ALÍVIO', - 'TERAPIA FONOAUDIOLÓGICA INDIVIDUAL', - 'CATETERISMO VESICAL DE DEMORA', - 'TRATAMENTO DE TRAUMATISMOS DE LOCALIZAÇÃO ESPECIFICADA/NÃO ESPECIFICADA', - 'COLETA DE MATERIAL PARA EXAME LABORATORIAL', - 'TRATAMENTO EM REABILITAÇÃO', - 'CUIDADOS COM ESTOMAS', - 'CUIDADOS COM TRAQUEOSTOMIA' + // List serviceHomeCheckProclist = [ + // 'ACOMP.DE PACIENTE EM REABILITAÇÃO EM COMUNICAÇÃO ALTERNATIVA', + // 'ADAPTAÇÃO AO USO DE ÓRTESE / PRÓTESE', + // 'ANTIBIOTICOTERAPIA PARENTERAL', + // 'ATEND. FISIOTERAPÊUTICO PACIENTE C/ TRANST. RESP S/ COMPLICAÇÕES SISTÊMICAS', + // 'ATEND. MÉDICO COM FINALIDADE DE ATESTAR ÓBITO', + // 'ATEND./ ACOMP. PACIENTE EM REABILITAÇÃO DO DESENVOLVIMENTO NEUROPSICOMOTOR', + // 'ATEND./ACOMP.EM REABILITAÇÃO NAS MÚLTIPLAS DEFICIÊNCIAS', + // 'CATETERISMO VESICAL DE ALÍVIO', + // 'CATETERISMO VESICAL DE DEMORA', + // 'COLETA DE MATERIAL PARA EXAME LABORATORIAL', + // 'CUIDADOS COM ESTOMAS', + // 'CUIDADOS COM TRAQUEOSTOMIA', + // 'ENEMA', + // 'OXIGENOTERAPIA', + // 'REABILITAÇÃO DOMICILIAR', + // 'RETIRADA DE PONTOS DE CIRURGIAS BÁSICAS', + // 'SONDAGEM GÁSTRICA', + // 'TERAPIA DE REIDRATAÇÃO ORAL', + // 'TERAPIA DE REIDRATAÇÃO PARENTERAL', + // 'TERAPIA FONOAUDIOLÓGICA INDIVIDUAL', + // 'TRATAMENTO DE TRAUMATISMOS DE LOCALIZAÇÃO ESPECIFICADA/NÃO ESPECIFICADA', + // 'TRATAMENTO EM REABILITAÇÃO', + // ]; + + List serviceHomeCheckProclist = [ + CheckProcedSiaModel(COD_SIA: 1, DESCRICAO_PROCEDIMENTO:'ACOMP.DE PACIENTE EM REABILITAÇÃO EM COMUNICAÇÃO ALTERNATIVA'), + CheckProcedSiaModel(COD_SIA: 3, DESCRICAO_PROCEDIMENTO: 'ANTIBIOTICOTERAPIA PARENTERAL'), + CheckProcedSiaModel(COD_SIA: 7, DESCRICAO_PROCEDIMENTO:'ATEND. FISIOTERAPÊUTICO PACIENTE C/ TRANST. RESP S/ COMPLICAÇÕES SISTÊMICAS'), + CheckProcedSiaModel(COD_SIA: 9, DESCRICAO_PROCEDIMENTO:'ATEND. MÉDICO COM FINALIDADE DE ATESTAR ÓBITO'), + CheckProcedSiaModel(COD_SIA: 5, DESCRICAO_PROCEDIMENTO:'ATEND./ ACOMP. PACIENTE EM REABILITAÇÃO DO DESENVOLVIMENTO NEUROPSICOMOTOR'), + CheckProcedSiaModel(COD_SIA: 11, DESCRICAO_PROCEDIMENTO:'ATEND./ACOMP.EM REABILITAÇÃO NAS MÚLTIPLAS DEFICIÊNCIAS'), + CheckProcedSiaModel(COD_SIA: 13, DESCRICAO_PROCEDIMENTO:'CATETERISMO VESICAL DE ALÍVIO'), + CheckProcedSiaModel(COD_SIA: 15, DESCRICAO_PROCEDIMENTO:'CATETERISMO VESICAL DE DEMORA'), + CheckProcedSiaModel(COD_SIA: 17, DESCRICAO_PROCEDIMENTO:'COLETA DE MATERIAL PARA EXAME LABORATORIAL'), + CheckProcedSiaModel(COD_SIA: 19, DESCRICAO_PROCEDIMENTO:'CUIDADOS COM ESTOMAS'), + CheckProcedSiaModel(COD_SIA: 20, DESCRICAO_PROCEDIMENTO:'CUIDADOS COM TRAQUEOSTOMIA'), + CheckProcedSiaModel(COD_SIA: 2, DESCRICAO_PROCEDIMENTO: 'ENEMA'), + CheckProcedSiaModel(COD_SIA: 4, DESCRICAO_PROCEDIMENTO:'OXIGENOTERAPIA'), + CheckProcedSiaModel(COD_SIA: 6, DESCRICAO_PROCEDIMENTO:'RETIRADA DE PONTOS DE CIRURGIAS BÁSICAS'), + CheckProcedSiaModel(COD_SIA: 8, DESCRICAO_PROCEDIMENTO:'SONDAGEM GÁSTRICA'), + CheckProcedSiaModel(COD_SIA: 10, DESCRICAO_PROCEDIMENTO:'TERAPIA DE REIDRATAÇÃO ORAL'), + CheckProcedSiaModel(COD_SIA: 12, DESCRICAO_PROCEDIMENTO:'TERAPIA DE REIDRATAÇÃO PARENTERAL'), + CheckProcedSiaModel(COD_SIA: 14, DESCRICAO_PROCEDIMENTO:'TERAPIA FONOAUDIOLÓGICA INDIVIDUAL'), + CheckProcedSiaModel(COD_SIA: 16, DESCRICAO_PROCEDIMENTO:'TRATAMENTO DE TRAUMATISMOS DE LOCALIZAÇÃO ESPECIFICADA/NÃO ESPECIFICADA'), + CheckProcedSiaModel(COD_SIA: 18, DESCRICAO_PROCEDIMENTO:'TRATAMENTO EM REABILITAÇÃO'), ]; List listServicePlace = [ diff --git a/lib/models/check_proced_sia_model.dart b/lib/models/check_proced_sia_model.dart new file mode 100644 index 0000000..7eb81f5 --- /dev/null +++ b/lib/models/check_proced_sia_model.dart @@ -0,0 +1,11 @@ +class CheckProcedSiaModel{ + int COD_SIA; + String DESCRICAO_PROCEDIMENTO; + bool check; + + CheckProcedSiaModel({ + required this.COD_SIA, + required this.DESCRICAO_PROCEDIMENTO, + this.check = false, + }); +} \ No newline at end of file diff --git a/lib/screens/attendance_list_screen.dart b/lib/screens/attendance_list_screen.dart index 277e474..48679dd 100644 --- a/lib/screens/attendance_list_screen.dart +++ b/lib/screens/attendance_list_screen.dart @@ -23,10 +23,10 @@ class _AttendanceListScreenState extends State { getData()async{ Database db = await DbSqliteLoad().intialDB(); - visitHome = await db.query('VISITAS_DOMICILIARES_PROC'); + visitHome = await db.query('VISITAS_DOMICILIARES'); citizenUpdate = await db.query('CIDADAOS WHERE SINCRONIZADO = "N"'); - serviceHome =await db.query('ATENDS_DOM_PROC'); - print(await db.query('ATENDS_DOM_PROC')); + serviceHome =await db.query('ATENDIMENTOS_DOMICILIARES'); + print(await db.query('ATENDIMENTOS_DOMICILIARES')); // print(await db.query('VISITAS_DOMICILIARES_PROC')); // print(await db.query('CIDADAOS WHERE SINCRONIZADO = "N"')); print(citizenUpdate.length); diff --git a/lib/screens/configurations/sync_data_screen.dart b/lib/screens/configurations/sync_data_screen.dart index 3705402..3d1601a 100644 --- a/lib/screens/configurations/sync_data_screen.dart +++ b/lib/screens/configurations/sync_data_screen.dart @@ -65,14 +65,25 @@ class _SyncDataScreenState extends State { }); await DBQuerys().cadCidadaos().then((response)async{ tableCIDADAOS = response; + // print(list); + // tableCIDADAOS[0].forEach((key, value) { + // print('$key: $value'); + // }); await DBQuerys().cadDomiciliares().then((response)async{ tableCIDADAO_DOMICILIO = response; + // tableCIDADAO_DOMICILIO[0].forEach((key, value) { + // print('$key: $value'); + // }); + + // print('tableCIDADAO_DOMICILIO'); // print(tableCIDADAO_DOMICILIO); await DBQuerys().domCidadaos().then((response)async{ tableDOMICILIOS_CIDADAOS = response; + // print('tableDOMICILIOS_CIDADAOS'); // print(tableDOMICILIOS_CIDADAOS); await DBQuerys().logrDomicilios().then((response)async{ tableINNERJOINCIDADAO_DOMICILIO = response; + // print('tableINNERJOINCIDADAO_DOMICILIO'); // print(tableINNERJOINCIDADAO_DOMICILIO); await DBQuerys().cadIndividuais().then((response)async{ tableCADASTROS_INDIVIDUAIS = response; @@ -242,6 +253,9 @@ class _SyncDataScreenState extends State { // print(map['cad_individuais'][0]['ID_AREA_CIDADAO']); // print(map['cad_individuais'][0]['ID_MICROAREA_CIDADAO']); + print('tableATENDS_DOM_PROC'); + print(tableATENDS_DOM_PROC); + await ApiDataPost().sincronizacao(urlAPI, mode, nameCityApi,map).then((response)async{ if(response=='error'){ setState(() { diff --git a/lib/screens/registers_citizen/register_citizen_screen.dart b/lib/screens/registers_citizen/register_citizen_screen.dart index 223770e..a244ac3 100644 --- a/lib/screens/registers_citizen/register_citizen_screen.dart +++ b/lib/screens/registers_citizen/register_citizen_screen.dart @@ -424,7 +424,7 @@ class _RegisterCitizenScreenState extends State { 'NO_MUNICIPIO_NASC' : resultListNasc[0]['NO_MUNICIPIO'], 'ESTADO_UF_NASC' : resultListNasc[0]['UF_ESTADO'], 'ID_ETNIA' : selectBreedCod, - 'ID_ETNIA_INDIGENA' : selectEtniaIndigena!.cod.toString().trim(), + 'ID_ETNIA_INDIGENA' : selectEtniaIndigena==null?0:selectEtniaIndigena!.cod.toString().trim(), 'ID_ESCOLARIDADE' : selectScoolingCod, 'ID_DEFICIENCIA' : selectDeficiencyCod, 'NOME_MAE' : nameMotherController.text, diff --git a/lib/screens/registers_citizen/register_home_screen.dart b/lib/screens/registers_citizen/register_home_screen.dart index 522e22d..d5efb76 100644 --- a/lib/screens/registers_citizen/register_home_screen.dart +++ b/lib/screens/registers_citizen/register_home_screen.dart @@ -72,6 +72,7 @@ class _RegisterHomeScreenState extends State { List listSanitary = []; List listCBO = []; List listINEPROF = []; + List listaINE = []; int idUsuario = 0; String idUnidade = ''; @@ -228,10 +229,13 @@ class _RegisterHomeScreenState extends State { TIPO_IMOVEL = ConstVariable().listTypeHome[i].title; } } - List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); - ID_AREA_DOMICILIO = list[0]['AREA']; - ID_MICROAREA_DOMICILIO = list[0]['MICROAREA']; - INE_DB = list[0]['INE']; + listaINE = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); + print('lista'); + print(listaINE); + ID_AREA_DOMICILIO = listaINE[0]['AREA']; + ID_MICROAREA_DOMICILIO = listaINE[0]['MICROAREA']; + ID_EQUIPE = listaINE[0]['ID_EQUIPE']; + INE_DB = listaINE[0]['INE']; INE = 'INE: $INE_DB / Área: $ID_AREA_DOMICILIO - Microárea : $ID_MICROAREA_DOMICILIO'; listINE.add(INE!); FORA_AREA = dataHome.length==0?false:dataHome[0]['FORA_AREA']==1?true:false; @@ -378,6 +382,20 @@ class _RegisterHomeScreenState extends State { 'SINCRONIZADO' : 'N', }; + RegExp regex = RegExp(r'INE:\s*(\d+)'); + String? ineNumber = regex.firstMatch(INE!)?.group(1); + int ID_UNIDADE = 0; + for (int i = 0; listaINE.length > i; i++) { + if (listaINE[i]['INE'] == ineNumber) { + ID_EQUIPE = listaINE[i]['ID_EQUIPE']; + INE_DB = listaINE[i]['INE']; + ID_UNIDADE = listaINE[i]['ID_UNIDADE']; + print(listaINE[i]); + } + } + + var CNES_UNIDADE = await DBQuerys().cnesUnidade(ID_UNIDADE); + Map rowHome = { 'TIPO_IMOVEL' : TIPO_IMOVEL_COD, 'ID_AREA_DOMICILIO' : ID_AREA_DOMICILIO, @@ -387,7 +405,7 @@ class _RegisterHomeScreenState extends State { 'TIPO_LOCALIDADE' : TIPO_LOCALIDADE_COD, 'TIPO_DOMICILIO' : TIPO_DOMICILIO_COD, 'NUM_MORADORES' : int.parse(NUM_MORADORES.text), - 'NUM_COMODOS' : int.parse(NUM_COMODOS.text), + 'NUM_COMODOS' : NUM_COMODOS.text.isEmpty?0:int.parse(NUM_COMODOS.text), 'SITUACAO_RURAL' : SITUACAO_RURAL_COD, 'TIPO_ACESSO' : TIPO_ACESSO_COD, 'MAT_PREDOMINANTE' : MAT_PREDOMINANTE_COD, @@ -404,8 +422,8 @@ class _RegisterHomeScreenState extends State { 'QTDE_ANIMAIS' : QTDE_ANIMAIS.text.isEmpty?0:int.parse(QTDE_ANIMAIS.text), 'CBO_RESP_CADASTRO' : CBO_RESP_CADASTRO, 'ID_RESP_CADASTRO' : ID_RESP_CADASTRO, - 'CNES_RESP_CADASTRO' : CNES_RESP_CADASTRO.text, - 'INE_RESP_CADASTRO' : INE, + 'CNES_RESP_CADASTRO' : CNES_UNIDADE, + 'INE_RESP_CADASTRO' : INE_DB, 'DT_CADASTRO' : date_cad, 'ID_EQUIPE' : ID_EQUIPE, 'ORIGEM' : 'A', @@ -416,6 +434,7 @@ class _RegisterHomeScreenState extends State { 'CARGO_RESP_TECNICO_INST' : CARGO_RESP_TECNICO_INST, 'TEL_RESP_TECNICO_INST' : TEL_RESP_TECNICO_INST, }; + 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){ AlertDialogDefault().alert( @@ -548,7 +567,23 @@ class _RegisterHomeScreenState extends State { select: INE, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, - onChanged: !editing?null: (value)=>setState(()=>INE = value!), + onChanged: !editing?null: (value){ + + print(value); + setState(()=>INE = value!); + + RegExp regex = RegExp(r'INE:\s*(\d+)'); + String? ineNumber = regex.firstMatch(value)?.group(1); + for (int i = 0; listaINE.length > i; i++) { + if (listaINE[i]['INE'] == ineNumber) { + ID_EQUIPE = listaINE[i]['ID_EQUIPE']; + INE_DB = listaINE[i]['INE']; + // SITUACAO_MORADIA_COD = ConstVariable().listSituationHome[i].cod; + print('ID_EQUIPE $ID_EQUIPE'); + print('INE_DB $INE_DB'); + } + } + }, ), SwitchWithSubtitle( width: width*0.7, @@ -571,9 +606,12 @@ class _RegisterHomeScreenState extends State { widthContainerDropdown: width*0.6, onChanged:!editing?null: (value){ setState(()=>SITUACAO_MORADIA = value!); + print('modou para $SITUACAO_MORADIA_COD'); + print('modou para $SITUACAO_MORADIA'); for (int i = 0; ConstVariable().listSituationHome.length > i; i++) { - if (ConstVariable().listSituationHome[i].title == TIPO_IMOVEL) { + if (ConstVariable().listSituationHome[i].title == SITUACAO_MORADIA) { SITUACAO_MORADIA_COD = ConstVariable().listSituationHome[i].cod; + print('modou para dentro do for $SITUACAO_MORADIA_COD'); } } }, diff --git a/lib/screens/select_service/atendimento_domiciliar_tela.dart b/lib/screens/select_service/atendimento_domiciliar_tela.dart index acb205c..554bc3a 100644 --- a/lib/screens/select_service/atendimento_domiciliar_tela.dart +++ b/lib/screens/select_service/atendimento_domiciliar_tela.dart @@ -9,6 +9,7 @@ import 'package:rkm/widgets/alert_dialog_default.dart'; import 'package:rkm/widgets/appbar_default.dart'; import 'package:sqflite/sqflite.dart'; import '../../config/const_variable.dart'; +import '../../models/check_proced_sia_model.dart'; import '../../models/drop_down_data_string_model.dart'; import '../../service/api/api_data_import_sigtap.dart'; import '../../service/db/db_querys.dart'; @@ -63,6 +64,7 @@ class _AtendimentoDomiciliarTelaState extends State { String CID_COD=''; String? CBO_PROFISSIONAL; + String? CBO_PROFISSIONAL_DB; String? CIAP; String? CID; String? CBO_RESP_CADASTRO; @@ -74,7 +76,7 @@ class _AtendimentoDomiciliarTelaState extends State { String? CONDUTA; List serviceHomeModel = []; - List serviceProcModel = []; + List serviceProcModel = []; List listCBO = []; List listServicePlace = []; List typeService = []; @@ -87,6 +89,7 @@ class _AtendimentoDomiciliarTelaState extends State { List ATENDS_DOM_PROC = []; List listConduct = []; List listProc = []; + List CBOS_PROFISSIONAL=[]; bool CNS_VALIDO = false; bool mandatory = false; @@ -243,7 +246,7 @@ class _AtendimentoDomiciliarTelaState extends State { // adicionar depois e usar um usuário real // CBO_RESP_CADASTRO //ok - if(date.isEmpty || dateDB.isEmpty || LOCAL_ATENDIMENTO_COD==0 || TIPO_ATENDIMENTO_COD ==0 || MODALIDADE_COD == 0 || TURNO_COD == 0 || CBO_PROFISSIONAL == null + if(date.isEmpty || dateDB.isEmpty || LOCAL_ATENDIMENTO_COD==0 || TIPO_ATENDIMENTO_COD ==0 || MODALIDADE_COD == 0 || TURNO_COD == 0 || CBO_PROFISSIONAL == null || CONDUTA == null ){ print('erro'); setState(() { @@ -265,7 +268,7 @@ class _AtendimentoDomiciliarTelaState extends State { 'ID_CIDADAO' : ID_CIDADAO, 'CD_USUARIO_SUS' : CD_USUARIO_SUS, 'ID_PROFISSIONAL' : idUsuario, - 'CBO_PROFISSIONAL' : CBO_PROFISSIONAL, + 'CBO_PROFISSIONAL' : CBO_PROFISSIONAL_DB, 'INE_PROFISSIONAL' : INE_PROFISSIONAL, 'CNES_UNIDADE' : CNES_UNIDADE.text, 'ID_UNIDADE' : int.parse(idUnidade), @@ -288,7 +291,7 @@ class _AtendimentoDomiciliarTelaState extends State { } for(int i = 0;serviceProcModel.length>i;i++){ if(serviceProcModel[i].check){ - DbSqliteSync().insertProcedimentosDomiciliares(value,i+1); + DbSqliteSync().insertProcedimentosDomiciliares(value,serviceProcModel[i].COD_SIA); } } AlertDialogDefault().alert( @@ -375,7 +378,7 @@ class _AtendimentoDomiciliarTelaState extends State { onChanged: (v)=>setState((){}), ), DropdownWithSubtitle( - list: PROCEDIMENTOS_SIGTAP, + list: listCBO, widthSubtitle: width*0.7, subtitle: 'CBO', hintDropdown: 'CBO', @@ -385,6 +388,9 @@ class _AtendimentoDomiciliarTelaState extends State { onChanged: (value){ setState(() { CBO_PROFISSIONAL = value!; + List list = CBO_PROFISSIONAL.toString().split(' - '); + CBO_PROFISSIONAL_DB = list.last; + print(CBO_PROFISSIONAL_DB); }); }, colorBorder: ColorPalette.white, @@ -651,20 +657,25 @@ class _AtendimentoDomiciliarTelaState extends State { itemCount: ConstVariable().serviceHomeCheckProclist.length, itemBuilder: (context,index){ - List aux = ConstVariable().serviceHomeCheckProclist; - aux.sort(); - serviceProcModel.add( - CheckModel( - subtitle: aux[index], - check: false + CheckProcedSiaModel( + COD_SIA: ConstVariable().serviceHomeCheckProclist[index].COD_SIA, + DESCRICAO_PROCEDIMENTO: ConstVariable().serviceHomeCheckProclist[index].DESCRICAO_PROCEDIMENTO, ) ); + + // print(serviceProcModel[index].subtitle); + return CheckBoxSubtitle( - subtitle: serviceProcModel[index].subtitle, + subtitle: serviceProcModel[index].DESCRICAO_PROCEDIMENTO, checkbox:serviceProcModel[index].check, width: width*0.6, - onChanged: (value)=>setState(()=>serviceProcModel[index].check=value), + onChanged: (value)=>setState((){ + serviceProcModel[index].check=value; + print(serviceProcModel[index].COD_SIA); + print(serviceProcModel[index].DESCRICAO_PROCEDIMENTO); + print(serviceProcModel[index].check); + }), ); } ), @@ -699,7 +710,7 @@ class _AtendimentoDomiciliarTelaState extends State { IconButton( icon: Icon(Icons.add_circle,color: ColorPalette.blackButton), onPressed: (){ - AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',listCBO,listProc); + AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',PROCEDIMENTOS_SIGTAP,listProc); }, ) ], @@ -726,37 +737,42 @@ class _AtendimentoDomiciliarTelaState extends State { ), Padding( padding: const EdgeInsets.symmetric(horizontal: 5.0), - child: Container( - width: width*0.7, - child: Row( - children: [ - TextDefault(text: 'Conduta / Desfecho',fontSize: 15), - Spacer(), - DropdownWithSubtitle( - colorBorder: ColorPalette.white, - list: listConduct, - subtitle: 'SELECIONE', - select: CONDUTA, - widthDropdown: width*0.39, - widthContainerDropdown: width*0.3, - widthSubtitle: width*0.3, - hintDropdown: 'SELECIONE', - onChanged: (value){ - CONDUTA = value; - for(int i = 0;ConstVariable().listConduct.length >i;i++){ - if(ConstVariable().listConduct[i].title == CONDUTA){ - CONDUTA_COD = ConstVariable().listConduct[i].cod; - } - } - setState(() {}); - }, - ) - ], - ), + child: Column( + children: [ + Container( + width: width*0.7, + child: Row( + children: [ + TextDefault(text: 'Conduta / Desfecho',fontSize: 15), + Spacer(), + DropdownWithSubtitle( + colorBorder: ColorPalette.white, + list: listConduct, + subtitle: 'SELECIONE', + select: CONDUTA, + widthDropdown: width*0.39, + widthContainerDropdown: width*0.3, + widthSubtitle: width*0.3, + hintDropdown: 'SELECIONE', + onChanged: (value){ + CONDUTA = value; + for(int i = 0;ConstVariable().listConduct.length >i;i++){ + if(ConstVariable().listConduct[i].title == CONDUTA){ + CONDUTA_COD = ConstVariable().listConduct[i].cod; + } + } + setState(() {}); + }, + ) + ], + ), + ), + CONDUTA_COD ==0 && mandatory?ErrorDefault():Container(), + ], ) - ) + ), ] - ) + ), ] ) ), diff --git a/lib/screens/select_service/visita_domiciliar_tela.dart b/lib/screens/select_service/visita_domiciliar_tela.dart index 5448df9..48ac4b8 100644 --- a/lib/screens/select_service/visita_domiciliar_tela.dart +++ b/lib/screens/select_service/visita_domiciliar_tela.dart @@ -67,6 +67,7 @@ class _VisitaDomiciliarTelaState extends State { int ID_PROFISSIONAL=0; int ID_CIDADAO=0; int ID_EQUIPE=0; + String CBO_DB ='0'; String INE_PROFISSIONAL=''; String CD_USUARIO_SUS=''; @@ -84,6 +85,7 @@ class _VisitaDomiciliarTelaState extends State { List tipoAcompanhamentoModel = []; List outrosModel = []; List listProc = []; + List listProf = []; escolherprazoInicio(BuildContext context) async { var pickDate = await showDatePicker( @@ -187,7 +189,7 @@ class _VisitaDomiciliarTelaState extends State { // PROCEDIMENTOS_SIGTAP.add('${listSIGTAP[i]['COD_PROC_SIGTAP']} - ${listSIGTAP[i]['DESC_PROC_SIGTAP']}'); // } // } - List listProf = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); + listProf = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); INE_PROFISSIONAL = listProf[0]['INE']; ID_EQUIPE = listProf[0]['ID_EQUIPE']; setState(() {}); @@ -226,14 +228,6 @@ class _VisitaDomiciliarTelaState extends State { 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'); @@ -246,86 +240,25 @@ class _VisitaDomiciliarTelaState extends State { 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' - ); - } + print('save'); + saveHomeVisit(); }); } } saveHomeVisit()async{ + int ID_UNIDADE = 0; + for (int i = 0; listProf.length > i; i++) { + if (listProf[i]['INE'] == INE_PROFISSIONAL) { + ID_EQUIPE = listProf[i]['ID_EQUIPE']; + // INE_DB = listProf[i]['INE']; + ID_UNIDADE = listProf[i]['ID_UNIDADE']; + // print('lista'); + // print(listProf[i]); + } + } + + var CNES_UNIDADE = await DBQuerys().cnesUnidade(ID_UNIDADE); + Map row = { 'ID_CIDADAO' : ID_CIDADAO, 'CD_USUARIO_SUS' : CD_USUARIO_SUS, @@ -337,9 +270,9 @@ class _VisitaDomiciliarTelaState extends State { 'PESO' : PESO.text, 'ALTURA' : ALTURA.text, 'ID_PROFISSIONAL' : idUsuario, - 'CBO_PROFISSIONAL' : CBO_PROFISSIONAL, + 'CBO_PROFISSIONAL' : CBO_DB, 'INE_PROFISSIONAL' : INE_PROFISSIONAL, - 'CNES_UNIDADE' : CNES_UNIDADE.text, + 'CNES_UNIDADE' : CNES_UNIDADE, 'ID_UNIDADE' : int.parse(idUnidade), 'ID_EQUIPE' : ID_EQUIPE, 'COMPLEMENTO' : COMPLEMENTO.text, @@ -813,6 +746,8 @@ class _VisitaDomiciliarTelaState extends State { onChanged: (value){ setState(() { CBO_PROFISSIONAL = value!; + List list = CBO_PROFISSIONAL.toString().split(' - '); + CBO_DB = list[1]; }); }, colorBorder: ColorPalette.white, diff --git a/lib/service/api/api_data_post.dart b/lib/service/api/api_data_post.dart index b8e84fa..62f6425 100644 --- a/lib/service/api/api_data_post.dart +++ b/lib/service/api/api_data_post.dart @@ -14,9 +14,8 @@ class ApiDataPost{ Uri.parse(url), body: jsonEncode(map), ); - print(response.body); - print(response.statusCode); - if(response.statusCode == 200) { + + if(response.body == '{"status":1}') { await DBQuerys().updateCidadao(); await DBQuerys().updateCadastroIndividuais(); await DBQuerys().updateCadastroDomiciliar(); diff --git a/lib/service/db/db_querys.dart b/lib/service/db/db_querys.dart index 7a0962d..d8581b4 100644 --- a/lib/service/db/db_querys.dart +++ b/lib/service/db/db_querys.dart @@ -83,6 +83,19 @@ class DBQuerys{ return list[0]['CNES_UNIDADE']; } } + buscarCodProced(String PROCEDIMENTO)async{ + print('PROCEDIMENTO'); + print(PROCEDIMENTO); + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT * FROM PROCEDIMENTOS_SIGTAP WHERE DESC_PROC_SIGTAP = '$PROCEDIMENTO'"; + List list = await db.rawQuery(query); + // print(list); + if(list.isEmpty){ + return ''; + }else{ + return list[0]['COD_PROC_SIGTAP'].toString(); + } + } buscaBairro(nomeBairro)async{ Database db = await DbSqliteLoad().intialDB(); List list = await db.rawQuery("SELECT * FROM BAIRROS WHERE NO_BAIRRO = '$nomeBairro'"); diff --git a/lib/service/db/db_sqlite_sync.dart b/lib/service/db/db_sqlite_sync.dart index 577b140..c0704ec 100644 --- a/lib/service/db/db_sqlite_sync.dart +++ b/lib/service/db/db_sqlite_sync.dart @@ -1,3 +1,4 @@ +import 'package:rkm/service/db/db_querys.dart'; import 'package:rkm/service/db/db_sqlite_load.dart'; import 'package:sqflite/sqflite.dart'; @@ -541,15 +542,18 @@ class DbSqliteSync{ print(await db.query('VISITAS_DOMICILIARES_COMPL')); return db; } - Future insertProcedimentosDomiciliares(int ID_ATENDIMENTO_DOMICILIAR,int PROC_ATEND_DOM)async{ + Future insertProcedimentosDomiciliares(int ID_ATENDIMENTO_DOMICILIAR,int PROCEDIMENTO_SELECIONADO)async{ Database db = await DbSqliteLoad().intialDB(); + // ATENDS_DOM_COMPL (ID_ATENDIMENTO_DOMICILIAR INTEGER, COND_AVAL_ATEND_DOM INTEGER) + + // String procedimento = await DBQuerys().buscarCodProced(PROCEDIMENTO_SELECIONADO); Map row = { 'ID_ATENDIMENTO_DOMICILIAR' :ID_ATENDIMENTO_DOMICILIAR, - 'PROC_ATEND_DOM' :PROC_ATEND_DOM, + 'PROC_ATEND_DOM' :PROCEDIMENTO_SELECIONADO, }; int id = await db.insert('ATENDS_DOM_PROC', row); - print(await db.query('ATENDS_DOM_PROC')); + // print(await db.query('ATENDS_DOM_PROC')); return db; } Future insertVISITAS_DOMICILIARES_PROC(int ID_VISITA_DOMICILIAR,String COD_PROC_SIGTAP)async{ diff --git a/pubspec.lock b/pubspec.lock index ba8038c..5df2ba8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -409,10 +409,10 @@ packages: dependency: transitive description: name: pointer_interceptor_web - sha256: "9386e064097fd16419e935c23f08f35b58e6aaec155dd39bd6a003b88f9c14b4" + sha256: "7a7087782110f8c1827170660b09f8aa893e0e9a61431dbbe2ac3fc482e8c044" url: "https://pub.dev" source: hosted - version: "0.10.1+2" + version: "0.10.2+1" pointycastle: dependency: transitive description: @@ -587,13 +587,13 @@ packages: source: hosted version: "14.2.1" web: - dependency: transitive + dependency: "direct main" description: name: web - sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.5.1" win32: dependency: transitive description: @@ -612,4 +612,4 @@ packages: version: "1.0.0" sdks: dart: ">=3.3.0 <4.0.0" - flutter: ">=3.18.0-18.0.pre.54" + flutter: ">=3.19.0" diff --git a/pubspec.yaml b/pubspec.yaml index fd8a6b8..aa6bf84 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,9 +3,10 @@ description: RKM AB 2.0. #Cadastro e edição do Cadastro do Cidadão, Cadastro Individual, Cadastro Domiciliar e Visita Domiciliar #versão 1.0.6+5 finalizada dia 19/02/2024 #versão 1.0.6+5 finalizada dia 18/03/2024 +#versão 1.0.10+1 AJUSTES PARA A SINCRONIZAÇÃO DIA 22/08/2024 publish_to: 'none' -version: 1.0.9+8 +version: 1.0.10+1 environment: sdk: '>=3.2.3 <4.0.0' @@ -26,6 +27,7 @@ dependencies: brasil_fields: ^1.15.0 # lista com pesquisa flutter_typeahead: ^5.2.0 + web: ^0.5.1 flutter_localizations: sdk: flutter diff --git a/web/favicon.png b/web/favicon.png deleted file mode 100644 index 8aaa46a..0000000 Binary files a/web/favicon.png and /dev/null differ diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png deleted file mode 100644 index b749bfe..0000000 Binary files a/web/icons/Icon-192.png and /dev/null differ diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48..0000000 Binary files a/web/icons/Icon-512.png and /dev/null differ diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png deleted file mode 100644 index eb9b4d7..0000000 Binary files a/web/icons/Icon-maskable-192.png and /dev/null differ diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c566..0000000 Binary files a/web/icons/Icon-maskable-512.png and /dev/null differ diff --git a/web/index.html b/web/index.html deleted file mode 100644 index 0d16171..0000000 --- a/web/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - rkm - - - - - - - - - - diff --git a/web/manifest.json b/web/manifest.json deleted file mode 100644 index 06d130a..0000000 --- a/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "rkm", - "short_name": "rkm", - "start_url": ".", - "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "RKM AB 2.0.", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "icons/Icon-maskable-192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "icons/Icon-maskable-512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ] -}