diff --git a/assets/images/sigtap-done.png b/assets/images/sigtap-done.png new file mode 100644 index 0000000..98032ce Binary files /dev/null and b/assets/images/sigtap-done.png differ diff --git a/lib/screens/configurations/import_sigtap_screen.dart b/lib/screens/configurations/import_sigtap_screen.dart index 6151d05..b207e24 100644 --- a/lib/screens/configurations/import_sigtap_screen.dart +++ b/lib/screens/configurations/import_sigtap_screen.dart @@ -1,7 +1,10 @@ import 'package:flutter/material.dart'; +import 'package:rkm/screens/home_screen.dart'; +import 'package:rkm/service/db/db_sqlite_Sigtap.dart'; import '../../config/color_palette.dart'; -import '../../config/const_variable.dart'; -import '../../service/shared_preferences/shared_preferences_service.dart'; +import '../../service/api/api_data_import_sigtap.dart'; +import '../../service/db/db_sqlite_load.dart'; +import '../../widgets/button_default.dart'; import '../../widgets/text_default.dart'; class ImportSigtapScreen extends StatefulWidget { @@ -14,18 +17,62 @@ class ImportSigtapScreen extends StatefulWidget { class _ImportSigtapScreenState extends State { String mode =''; + String urlAPI =''; + String nameCityApi =''; + String stage = 'Conectando ...'; + bool finish = false; @override void initState() { super.initState(); - dataSQLite(); + recupDB(); } - dataSQLite()async{ - final PrefService _preferences = PrefService(); - _preferences.readCacheModel('user', 'password', 'city', 'mode').then((list){ + recupDB()async{ + await DbSqliteLoad().intialDB().then((db)async{ + List list = await db.query('ARGS'); + urlAPI = list[0]['URLAPI']; + mode = list[0]['MODE']; + nameCityApi = list[0]['NAME_CITY_API']; + }).then((value){ + setState(() {}); + importSigtap(); + }); + } + + importSigtap()async{ + await DbSqliteSigtap().deleteSigtap().then((value)async{ setState(() { - mode = list[3]; + stage = "Etapa 1 de 4 - Importando informações do CONECTASUS"; + }); + await ApiDataImportSigtap().loadSIGTAP(urlAPI, mode, nameCityApi).then((valueAPI)async{ + setState(() { + stage = "Etapa 2 de 4 - Gravando os Procedimentos no Aplicativo"; + }); + // print(value['procedimentos']); + await DbSqliteSigtap().saveProceduresSigtapDB(valueAPI['procedimentos']).then((value)async{ + await DbSqliteSigtap().saveProceduresRegisterSigtapDB(valueAPI['procedimentosRegistros']).then((value)async{ + setState(() { + stage = "Etapa 3 de 4 - Gravando os CIDs no Aplicativo"; + }); + await DbSqliteSigtap().saveSigtapCID(valueAPI['CID']).then((value)async{ + await DbSqliteSigtap().saveProceduresSigtapCID(valueAPI['procedimentosCID']).then((value)async{ + setState(() { + stage = "Etapa 4 de 4 - Gravando os CIDs no Aplicativo"; + }); + await DbSqliteSigtap().saveCBOSigtap(valueAPI['CBO']).then((value)async{ + await DbSqliteSigtap().saveProceduresCBOSigtap(valueAPI['procedimentosCBO']).then((value)async{ + await DbSqliteSigtap().saveSyncSigtap(valueAPI['competencia']).then((value)async{ + setState(() { + finish = true; + }); + }); + }); + }); + }); + }); + }); + }); }); }); } @@ -40,10 +87,29 @@ class _ImportSigtapScreenState extends State { color: ColorPalette.appBar, width: double.infinity, padding: EdgeInsets.all(15), - child: TextDefault( - text: 'Etapa 1 de 4 - Teste', + child: finish + ?Row( + children: [ + Spacer(), + ButtonDefault( + onPressed: (){ + Navigator.pushReplacement( + context, + MaterialPageRoute(builder: (context) => HomeScreen()), + ); + }, + title: 'Continuar', + width: width*0.3, + height: height*0.05, + textColor: ColorPalette.white, + background: ColorPalette.appBar, + borderColor: ColorPalette.appBar, + ), + ], + ):TextDefault( + text: stage, color: ColorPalette.white, - fontSize: 20, + fontSize: 15, fontWeigth: FontWeight.bold, ), ), @@ -58,7 +124,12 @@ class _ImportSigtapScreenState extends State { ), width: double.infinity, height: double.infinity, - child: Column( + child: finish?ListView( + children: [ + Image.asset('assets/images/logo.PNG',width: width*0.25,height: height*0.1,), + Image.asset('assets/images/sigtap-done.png',width: width*0.9,height: height*0.2,), + ], + ):Column( children: [ Image.asset('assets/images/logo.PNG',width: width*0.5,), mode == 'homologacao'?Image.asset('assets/images/homologacao.png',width: width*0.4):Container(), diff --git a/lib/screens/configurations/sigtap_json b/lib/screens/configurations/sigtap_json new file mode 100644 index 0000000..d7e0fb8 --- /dev/null +++ b/lib/screens/configurations/sigtap_json @@ -0,0 +1,45 @@ +{ + "competencia":"202303", + "procedimentos":[ + { + "codProcedimento":"0101010010", + "nome":"ATIVIDADE EDUCATIVA \/ ORIENTA\u00c7\u00c3O EM GRUPO NA ATEN\u00c7\u00c3O PRIM\u00c1RIA", + "codGrupo":"01", + "qtdeMax":9999, + "idadeMin":833, + "idadeMax":833, + "sexo":"N" + } + ], + "procedimentosRegistros":[ + { + "codProcedimento":"0101010010", + "codRegistro":"01" + } + ], + "CID":[ + { + "codCID":"A000", + "descCID":"A00.0 Colera dev Vibrio cholerae 01 biot cholerae", + "restSexo":"5" + } + ], + "procedimentosCID":[ + { + "codProcedimento":"0201010046", + "codCID":"C211" + } + ], + "CBO":[ + { + "codCBO":"223208", + "descCBO":"Cirurgi\u00e3o dentista - cl\u00ednico geral" + } + ], + "procedimentosCBO":[ + { + "codProcedimento":"0101010010", + "codCBO":"223208" + } + ] +} \ No newline at end of file diff --git a/lib/screens/load_init_screen.dart b/lib/screens/load_init_screen.dart index eee880d..362407e 100644 --- a/lib/screens/load_init_screen.dart +++ b/lib/screens/load_init_screen.dart @@ -181,6 +181,7 @@ class _LoadInitScreenState extends State { :Padding( padding: const EdgeInsets.all(10.0), child: TextDefault( + fontSize: 15, text: messageSteps, color: ColorPalette.white, maxLines: 2, diff --git a/lib/screens/login/login_load_screen.dart b/lib/screens/login/login_load_screen.dart index d3025cd..98f677a 100644 --- a/lib/screens/login/login_load_screen.dart +++ b/lib/screens/login/login_load_screen.dart @@ -27,8 +27,8 @@ class _LoginLoadScreenState extends State { String? selectCity; bool validatorDropDown= false; int contLogo = 0; - String mode = 'homologacao'; - String urlAPI = UrlApiConst.ApiUrlHomologacao; + String mode = 'desenvolvimento'; + String urlAPI = UrlApiConst.ApiUrlDesenvolvimento; bool loading = false; String nameCityApi = ''; String nameCityFront = ''; diff --git a/lib/screens/sync_init_screen.dart b/lib/screens/sync_init_screen.dart index cd15613..e443885 100644 --- a/lib/screens/sync_init_screen.dart +++ b/lib/screens/sync_init_screen.dart @@ -202,6 +202,7 @@ class _SyncInitScreenState extends State { :Padding( padding: const EdgeInsets.all(10.0), child: TextDefault( + fontSize: 15, text: messageSteps, color: ColorPalette.white, maxLines: 2, diff --git a/lib/service/api/api_data_import_sigtap.dart b/lib/service/api/api_data_import_sigtap.dart new file mode 100644 index 0000000..2daa1f5 --- /dev/null +++ b/lib/service/api/api_data_import_sigtap.dart @@ -0,0 +1,13 @@ +import 'dart:convert'; +import 'package:http/http.dart' as http; + +class ApiDataImportSigtap{ + Future loadSIGTAP(urlAPI,mode,nameCityApi)async{ + //http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/ADMIN/sigtap + final url = '${urlAPI}${mode}/${nameCityApi}/ADMIN/sigtap'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + // print(map); + return map; + } +} \ No newline at end of file diff --git a/lib/service/db/db_sqlite_Sigtap.dart b/lib/service/db/db_sqlite_Sigtap.dart new file mode 100644 index 0000000..fa830f7 --- /dev/null +++ b/lib/service/db/db_sqlite_Sigtap.dart @@ -0,0 +1,129 @@ +import 'package:rkm/service/db/db_sqlite_load.dart'; +import 'package:sqflite/sqflite.dart'; + +class DbSqliteSigtap{ + Future deleteSigtap()async{ + var querys = [ + "DELETE FROM PROCEDIMENTOS_SIGTAP;", + "DELETE FROM PROCEDIMENTOS_SIGTAP_REGISTRO;", + "DELETE FROM CIDS;", + "DELETE FROM PROCEDIMENTOS_SIGTAP_CID;", + "DELETE FROM CBOS;", + "DELETE FROM PROCEDIMENTOS_SIGTAP_CBO;" + ]; + Database db = await DbSqliteLoad().intialDB(); + for(int i=0;querys.length>i;i++){ + db.execute(querys[i]); + } + } + Future saveProceduresSigtapDB(var value)async{ + Database db = await DbSqliteLoad().intialDB(); + + // {"codProcedimento":"0701020580","nome":"MANUTEN\u00c7\u00c3O DE OPM ORTOP\u00c9DICA","codGrupo":"07","qtdeMax":2,"idadeMin":833,"idadeMax":833,"sexo":"N"} + for(int i=0;value.length > i;i++){ + Map row = { + 'COD_PROC_SIGTAP' : value[i]['codProcedimento'], + 'DESC_PROC_SIGTAP' : value[i]['nome'], + 'GRUPO_PROC_SIGTAP' : value[i]['codGrupo'], + 'QTDE_MAXIMA' : value[i]['qtdeMax'], + 'IDADE_MIN' : value[i]['idadeMin'], + 'IDADE_MAX' : value[i]['idadeMax'], + 'SEXO' : value[i]['sexo'], + }; + int id = await db.insert('PROCEDIMENTOS_SIGTAP', row); + } + // print('id increment $id'); + // print(await db.query('PROCEDIMENTOS_SIGTAP')); + return db; + } + Future saveProceduresRegisterSigtapDB(var value)async{ + Database db = await DbSqliteLoad().intialDB(); + + // {"codProcedimento":"0701020580","nome":"MANUTEN\u00c7\u00c3O DE OPM ORTOP\u00c9DICA","codGrupo":"07","qtdeMax":2,"idadeMin":833,"idadeMax":833,"sexo":"N"} + for(int i=0;value.length > i;i++){ + Map row = { + 'COD_PROC_SIGTAP' : value[i]['codProcedimento'], + 'CODIGO_REGISTRO' : value[i]['codRegistro'], + }; + int id = await db.insert('PROCEDIMENTOS_SIGTAP_REGISTRO', row); + // print('id increment $id'); + } + + // print(await db.query('PROCEDIMENTOS_SIGTAP_REGISTRO')); + return db; + } + Future saveSigtapCID(var value)async{ + Database db = await DbSqliteLoad().intialDB(); + // "INSERT OR REPLACE INTO CIDS (CODIGO_CID, DESCRICAO_CID, RESTRICAO_SEXO) VALUES (?,?,?)" + // {"codCID":"A000","descCID":"A00.0 Colera dev Vibrio cholerae 01 biot cholerae","restSexo":"5"}, + for(int i=0;value.length > i;i++){ + Map row = { + 'CODIGO_CID' : value[i]['codCID'], + 'DESCRICAO_CID' : value[i]['descCID'], + 'RESTRICAO_SEXO' : value[i]['restSexo'], + }; + int id = await db.insert('CIDS', row); + // print('id increment $id CIDS'); + } + // print(await db.query('CIDS')); + return db; + } + Future saveProceduresSigtapCID(var value)async{ + Database db = await DbSqliteLoad().intialDB(); + // "INSERT OR REPLACE INTO PROCEDIMENTOS_SIGTAP_CID (COD_PROC_SIGTAP, CODIGO_CID) VALUES (?,?)" + // {"codProcedimento":"0201010046","codCID":"C211"} + for(int i=0;value.length > i;i++){ + Map row = { + 'COD_PROC_SIGTAP' : value[i]['codProcedimento'], + 'CODIGO_CID' : value[i]['codCID'], + }; + int id = await db.insert('PROCEDIMENTOS_SIGTAP_CID', row); + // print('id increment $id PROCEDIMENTOS_SIGTAP_CID'); + } + // print(await db.query('PROCEDIMENTOS_SIGTAP_CID')); + return db; + } + Future saveCBOSigtap(var value)async{ + Database db = await DbSqliteLoad().intialDB(); + // "INSERT OR REPLACE INTO CBOS (CODIGO_CBO, DESCRICAO_CBO) VALUES (?,?)" + // "codCBO":"223208","descCBO":"Cirurgi\u00e3o dentista - cl\u00ednico geral" + for(int i=0;value.length > i;i++){ + Map row = { + 'CODIGO_CBO' : value[i]['codCBO'], + 'DESCRICAO_CBO' : value[i]['descCBO'], + }; + int id = await db.insert('CBOS', row); + // print('id increment $id CBOS'); + } + // print(await db.query('CBOS')); + return db; + } + Future saveProceduresCBOSigtap(var value)async{ + Database db = await DbSqliteLoad().intialDB(); + // "INSERT OR REPLACE INTO PROCEDIMENTOS_SIGTAP_CBO (COD_PROC_SIGTAP, CODIGO_CBO) VALUES (?,?)"; + // "codProcedimento":"0101010010","codCBO":"223208" + for(int i=0;value.length > i;i++){ + Map row = { + 'COD_PROC_SIGTAP' : value[i]['codProcedimento'], + 'CODIGO_CBO' : value[i]['codCBO'], + }; + int id = await db.insert('PROCEDIMENTOS_SIGTAP_CBO', row); + // print('id increment $id PROCEDIMENTOS_SIGTAP_CBO'); + } + // print(await db.query('PROCEDIMENTOS_SIGTAP_CBO')); + return db; + } + Future saveSyncSigtap(competencia)async{ + Database db = await DbSqliteLoad().intialDB(); + //refatorar cidade_load e nome_cidade + // 'parameters = [{"carga_inicial": 1, "cidade_load": cidade, "nome_cidade": vm.nomeCidade[cidade], "cidade_id": cidadeID, "estado": estado, "ibge": ibge, "ambiente": ambiente, "competencia": competencia.replace(/\D/g, '')}]'; + // "INSERT OR REPLACE INTO CONTROLE_INTERNO (rowid, CARGA_INICIAL, CIDADE_LOAD, NOME_CIDADE, ID_MUNICIPIO, UF_ESTADO, CODIGO_IBGE, AMBIENTE, COMPETENCIA) VALUES (1,?,?,?,?,?,?,?,?)"; + + Map row = { + 'COMPETENCIA' : competencia, + }; + await db.update('CONTROLE_INTERNO', row,where: "CARGA_INICIAL = 1"); + print(await db.query('CONTROLE_INTERNO')); + return db; + } +} \ No newline at end of file