diff --git a/assets/images/load_image.png b/assets/images/load_image.png new file mode 100644 index 0000000..79e69b6 Binary files /dev/null and b/assets/images/load_image.png differ diff --git a/lib/models/args_load_init_model.dart b/lib/models/args_load_init_model.dart new file mode 100644 index 0000000..be7dfa1 --- /dev/null +++ b/lib/models/args_load_init_model.dart @@ -0,0 +1,15 @@ +class ArgsLoadInitModel{ + String mode; + String city; + String user; + String password; + String urlAPI; + + ArgsLoadInitModel({ + required this.mode, + required this.city, + required this.user, + required this.password, + required this.urlAPI, + }); +} \ No newline at end of file diff --git a/lib/screens/load_init_screen.dart b/lib/screens/load_init_screen.dart new file mode 100644 index 0000000..e2ea361 --- /dev/null +++ b/lib/screens/load_init_screen.dart @@ -0,0 +1,178 @@ +import 'package:flutter/material.dart'; +import 'package:rkm/utils/color_palette.dart'; +import 'package:rkm/widgets/alert_dialog_default.dart'; +import 'package:rkm/widgets/text_default.dart'; +import '../models/args_load_init_model.dart'; +import '../service/api/api_data.dart'; +import '../service/db/db_sqlite.dart'; + +class LoadInitScreen extends StatefulWidget { + ArgsLoadInitModel args; + + LoadInitScreen({ + required this.args, +}); + + @override + State createState() => _LoadInitScreenState(); +} + +class _LoadInitScreenState extends State { + + String messageSteps = 'Aguarde ...'; + + @override + void initState() { + super.initState(); + initLoading(); + } + + initLoading()async{ + await DbSqlite().deleteDB().then((_)async{ + await ApiData().loadPerm(widget.args).then((response)async{ + if(response['status'] == 0){ + AlertDialogDefault().alert(context, 'Error', 'Permissão negada', 'Voltar'); + } else if(response['status'] == 1 && response['load_perm'] == "S") { + await ApiData().loadUnidades(widget.args).then((value)async{ + if(value.length !=0){ + setState(() { + messageSteps = "Etapa 1 de 7 - Gravando as Unidades no Aplicativo"; + }); + await DbSqlite().saveUnidadesDB(value).then((value)async{ + await ApiData().loadProcedimentos(widget.args).then((value)async{ + setState(() { + messageSteps = "Etapa 2 de 7 - Gravando os Procedimentos no Aplicativo"; + }); + await DbSqlite().saveProceduresDB(value).then((value)async{ + print('finalizou save Procedures'); + await ApiData().loadProcedimentosRegistros(widget.args).then((value)async{ + await DbSqlite().saveProceduresRegisterDB(value).then((value)async{ + print('finalizou saveProceduresRegisterDB'); + await ApiData().loadCID(widget.args).then((value)async{ + print('loadCID'); + setState(() { + messageSteps = "Etapa 3 de 7 - Gravando os CIDs no Aplicativo"; + }); + await DbSqlite().saveCID(value).then((value)async{ + print('finalizou saveCID'); + await ApiData().loadProcedimentosCID(widget.args).then((value)async{ + print('loadProcedimentosCID'); + await DbSqlite().saveProceduresCID(value).then((value)async{ + print('finalizou saveProceduresCID'); + await ApiData().loadCBO(widget.args).then((value)async{ + print('loadCBO'); + setState(() { + messageSteps = "Etapa 4 de 7 - Gravando os CBOs no Aplicativo"; + }); + await DbSqlite().saveCBO(value).then((value)async{ + print('finalizou saveCBO'); + await ApiData().loadProcedimentosCBO(widget.args).then((value)async{ + print('loadProcedimentosCBO'); + await DbSqlite().saveProceduresCBO(value).then((value)async{ + print('finalizou saveProceduresCBO'); + await ApiData().loadCIAP(widget.args).then((value)async{ + print('loadCIAP'); + setState(() { + messageSteps = "Etapa 5 de 7 - Gravando os CIAPs no Aplicativo"; + }); + await DbSqlite().saveCIAP(value).then((value)async{ + print('finalizou saveCIAP'); + await ApiData().loadMunicipios(widget.args).then((value)async{ + print('loadMunicipios'); + setState(() { + messageSteps = "Etapa 6 de 7 - Gravando os Municípios no Aplicativo"; + }); + await DbSqlite().saveCity(value).then((value)async{ + print('finalizou saveCity'); + await ApiData().loadEquipes(widget.args).then((value)async{ + print('loadEquipes'); + setState(() { + messageSteps = "Etapa 7 de 7 - Gravando as Equipes no Aplicativo"; + }); + await DbSqlite().saveTeam(value).then((value)async{ + print('finalizou saveTeam'); + Navigator.pushReplacementNamed(context, '/home'); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }else{ + AlertDialogDefault().alert(context, 'Error', 'Unidades não carregada, tente novamente!', 'Voltar'); + } + }); + } + }); + }); + } + + @override + Widget build(BuildContext context) { + + double width = MediaQuery.of(context).size.width; + double height = MediaQuery.of(context).size.height; + + return Scaffold( + bottomSheet: Container( + width: width, + height: height*0.05, + color: ColorPalette.appBar, + padding: EdgeInsets.all(10), + child: TextDefault( + text: messageSteps, + color: ColorPalette.white, + maxLines: 2, + ), + ), + body: Container( + padding: EdgeInsets.all(50), + width: width, + height: height, + decoration: BoxDecoration( + color: ColorPalette.grayBackground, + image: DecorationImage( + fit: BoxFit.fitHeight, + image: AssetImage('assets/images/load_image.png' + ), + ) + ), + child: ListView( + children: [ + Image.asset('assets/images/logo.PNG',width: width*0.2,height: height*0.1,), + SizedBox(height: height*0.1), + Image.asset('assets/images/loading.gif',width: width*0.2,height: height*0.1,), + SizedBox(height: height*0.1), + TextDefault( + text: 'Aguarde enquanto a Carga Inicial é realizada.\n', + textAlign: TextAlign.center, + maxLines: 2, + color: Colors.black, + fontWeigth: FontWeight.bold, + ), + TextDefault( + text: 'Esse processo pode levar vários minutos dependendo da sua conexão!', + color: Colors.black, + fontWeigth: FontWeight.bold, + textAlign: TextAlign.center, + maxLines: 3, + ) + ], + ), + ), + ); + } +} diff --git a/lib/screens/login_screen.dart b/lib/screens/login_screen.dart index 12e1239..e27cf8f 100644 --- a/lib/screens/login_screen.dart +++ b/lib/screens/login_screen.dart @@ -1,16 +1,17 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; -import 'package:rkm/service/url_api_const.dart'; +import 'package:rkm/models/args_load_init_model.dart'; +import 'package:rkm/service/api/url_api_const.dart'; import 'package:rkm/utils/color_palette.dart'; import 'package:rkm/utils/const_variable.dart'; import 'package:rkm/widgets/button_default.dart'; import 'package:rkm/widgets/dropdown_button_city.dart'; import 'package:rkm/widgets/input_text.dart'; import 'package:rkm/widgets/text_default.dart'; - -import '../service/api_get_pass.dart'; -import '../service/encrypt_password.dart'; +import '../service/api/api_data.dart'; +import '../service/api/encrypt_password.dart'; +import 'load_init_screen.dart'; class LoginScreen extends StatefulWidget { const LoginScreen({Key? key}) : super(key: key); @@ -27,19 +28,25 @@ class _LoginScreenState extends State { String? selectCity; bool validatorDropDown= false; int contLogo = 0; - String mode = 'online'; - String url = UrlApiConst.ApiUrlOnline; + String mode = 'desenvolvimento'; + String urlAPI = UrlApiConst.ApiUrlDesenvolvimento; + bool loading = false; checkLogin()async{ if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){ if(selectCity!=null){ setState(() { error = ''; + loading = true; }); - await ApiGetPass().apiConect(selectCity,mode,inputUser.text,url).then((response){ - print(response); - print(inputUser.text); - print(inputPassword.text); + ArgsLoadInitModel args = ArgsLoadInitModel( + mode: mode, + city: selectCity!, + user: inputUser.text, + password: inputPassword.text, + urlAPI: urlAPI + ); + await ApiData().apiConect(args).then((response) async { if(inputUser.text == inputPassword.text || response['bloqueio']==1){ setState(() { error = 'Usuário bloqueado/senha incorreta'; @@ -51,8 +58,18 @@ class _LoginScreenState extends State { }else if(response['status']==1) { setState((){ error = ''; - print(EncryptPassword().encrypt(inputPassword.text,response['userPass'])); }); + //verificar se a criptografia identificou se a senha está correta + if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){ + print(EncryptPassword().encrypt(inputPassword.text,response['userPass'])); + setState(() { + loading = false; + }); + Navigator.push( + context, + MaterialPageRoute(builder: (context) => LoadInitScreen(args: args)), + ); + } } }); }else{ @@ -106,19 +123,19 @@ class _LoginScreenState extends State { mainAxisAlignment: MainAxisAlignment.start, children: [ GestureDetector( - onTap: ()=>setState((){ + onTap: loading?null:()=>setState((){ contLogo++; if(contLogo>=5 && contLogo<=10){ - mode = 'homologacao'; - url = UrlApiConst.ApiUrlHomologacao; + mode = UrlApiConst.ModeHomologacao; + urlAPI = UrlApiConst.ApiUrlHomologacao; } if(contLogo>10){ - mode = 'desenvolvimento'; - url = UrlApiConst.ApiUrlDesenvolvimento; + mode = UrlApiConst.ModeDesenvolvimento; + urlAPI = UrlApiConst.ApiUrlDesenvolvimento; if(contLogo==15){ contLogo=0; - mode = 'online'; - url = UrlApiConst.ApiUrlOnline; + mode = UrlApiConst.ModeOnline; + urlAPI = UrlApiConst.ApiUrlOnline; } } }), @@ -127,7 +144,15 @@ class _LoginScreenState extends State { mode == 'homologacao'?Image.asset('assets/images/homologacao.png',width: width*0.4):Container(), mode == 'desenvolvimento'?Image.asset('assets/images/desenvolvimento.png',width: width*0.4):Container(), SizedBox(height: 10), - Form( + loading?Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + CircularProgressIndicator(), + TextDefault(text: 'Carregando dados...',color: ColorPalette.black54,) + ], + ), + ):Form( autovalidateMode: AutovalidateMode.onUserInteraction, child: Container( width: width*0.6, @@ -168,7 +193,7 @@ class _LoginScreenState extends State { ), ), ), - ButtonDefault( + loading?Container():ButtonDefault( onPressed: ()=>checkLogin(), title: 'Carga Inicial', width: width*0.6, diff --git a/lib/screens/splash_screen.dart b/lib/screens/splash_screen.dart index c7c79ea..3df8d9a 100644 --- a/lib/screens/splash_screen.dart +++ b/lib/screens/splash_screen.dart @@ -1,6 +1,9 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:rkm/utils/const_variable.dart'; +import '../service/db/db_sqlite.dart'; + class SplashScreen extends StatefulWidget { const SplashScreen({Key? key}) : super(key: key); @@ -13,6 +16,7 @@ class _SplashScreenState extends State { @override void initState() { super.initState(); + DbSqlite().intialDB(); timer(); } diff --git a/lib/service/api/api_data.dart b/lib/service/api/api_data.dart new file mode 100644 index 0000000..8464c7f --- /dev/null +++ b/lib/service/api/api_data.dart @@ -0,0 +1,114 @@ +import 'dart:convert'; +import 'package:http/http.dart' as http; +import 'package:rkm/utils/const_variable.dart'; +import '../../models/args_load_init_model.dart'; + +class ApiData{ + Future apiConect(ArgsLoadInitModel args)async{ + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/pass/${args.user}'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + return map; + } + Future loadPerm(ArgsLoadInitModel args)async{ + //http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/load/perm/${args.user}'; + // final url = 'http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + // print(map); + return map; + } + Future loadUnidades(ArgsLoadInitModel args)async{ + // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/unidades + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/unidades'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + // print(map); + return map; + } + Future loadProcedimentos(ArgsLoadInitModel args)async{ + // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentos + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentos'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + // print(map); + return map; + } + Future loadProcedimentosRegistros(ArgsLoadInitModel args)async{ + // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosRegistros + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentosRegistros'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + // print(map); + return map; + } + Future loadCID(ArgsLoadInitModel args)async{ + // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/cid + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/cid'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + // print(map); + return map; + } + Future loadProcedimentosCID(ArgsLoadInitModel args)async{ + // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosCID + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentosCID'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + // print(map); + return map; + } + Future loadCBO(ArgsLoadInitModel args)async{ + // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/cbo + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/cbo'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + // print(map); + return map; + } + Future loadProcedimentosCBO(ArgsLoadInitModel args)async{ + // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosCBO + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentosCBO'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + // print(map); + return map; + } + Future loadCIAP(ArgsLoadInitModel args)async{ + // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/ciap + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/ciap'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + print(map); + return map; + } + Future loadMunicipios(ArgsLoadInitModel args)async{ + // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/municipios + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/municipios'; + final response = await http.get(Uri.parse(url)); + final map = json.decode(response.body); + print(map); + return map; + } + Future loadEquipes(ArgsLoadInitModel args)async{ + // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/equipes + String cityReplace = ConstVariable().replaceText(args.city); + final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/equipes'; + 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/encrypt_password.dart b/lib/service/api/encrypt_password.dart similarity index 52% rename from lib/service/encrypt_password.dart rename to lib/service/api/encrypt_password.dart index f3c918d..e80131b 100644 --- a/lib/service/encrypt_password.dart +++ b/lib/service/api/encrypt_password.dart @@ -9,34 +9,33 @@ class EncryptPassword{ // Retira o tipo (1, 2 ou 3) da senha do Usuário int tipo = int.parse(senhaUsuario.substring(0, 1)); // Define a possição inicial da quebra da senha - int posI = 0; - int posF = 0; - int posMax = 0; + int posicaoInicialMin = 0; + int posicaoInicialMax= 0; + int posicaoFinalMin = 0; + int posicaoFinalMax = 0; // Pra cada tipo (1, 2 ou 3) define a posição inicial da quebra da senha if(tipo == 1){ - posI = 0; - posF = 16; - posMax = 16; + posicaoInicialMin = 0; + posicaoInicialMax = 16; + posicaoFinalMin = 16; + posicaoFinalMax = 32; } else if(tipo == 2){ - posI = 16; - posF = 0; - posMax = 16; + posicaoInicialMin = 16; + posicaoInicialMax = 32; + posicaoFinalMin = 0; + posicaoFinalMax = 16; } else if(tipo == 3){ - posI = 0; - posF = 31; - posMax = 1; + posicaoInicialMin = 0; + posicaoInicialMax = 1; + posicaoFinalMin = 31; + posicaoFinalMax = 32; } - print('posI $posI posF $posF PosMax $posMax'); - print('inicio ${senhaMD5.substring(0, 16)}'); - print('meio ${senhaMD5.substring(16, 32)}'); - print('fim ${senhaMD5.substring(posF, posMax)}'); - print('senha: ${senhaMD5.substring(posI, posMax) + senha + senhaMD5.substring(posF, posMax)}'); - print('${grHashString(GRCryptoType.sha1, senhaMD5.substring(posI, posMax) + senha + senhaMD5.substring(posF, posMax))}'); - + String inicio = senhaMD5.substring(posicaoInicialMin, posicaoInicialMax); + String fim = senhaMD5.substring(posicaoFinalMin, posicaoFinalMax); // Faz a criptografia e concatena ela com sha1 e md5 - String senhaCriptogradafa = tipo.toString() + '\$'+ grHashString(GRCryptoType.sha1, senhaMD5.substring(posI, posMax) + senha + senhaMD5.substring(posF, posMax)); + String senhaCriptogradafa = tipo.toString() + '\$'+ grHashString(GRCryptoType.sha1, inicio + senha + fim); // Retorna a senha criptografada return senhaCriptogradafa; } diff --git a/lib/service/url_api_const.dart b/lib/service/api/url_api_const.dart similarity index 62% rename from lib/service/url_api_const.dart rename to lib/service/api/url_api_const.dart index 9f6a69e..b386365 100644 --- a/lib/service/url_api_const.dart +++ b/lib/service/api/url_api_const.dart @@ -2,4 +2,7 @@ class UrlApiConst{ static const String ApiUrlOnline = 'https://saude.rkmsistemas.com.br/api/atb/'; static const String ApiUrlHomologacao = 'https://app0.rkmsistemas.com.br/api/atb/'; static const String ApiUrlDesenvolvimento = 'http://192.168.0.42:8010/api/atb/'; + static const String ModeDesenvolvimento = 'desenvolvimento'; + static const String ModeHomologacao = 'homologacao'; + static const String ModeOnline = 'online'; } \ No newline at end of file diff --git a/lib/service/api_get_pass.dart b/lib/service/api_get_pass.dart deleted file mode 100644 index 2af0cce..0000000 --- a/lib/service/api_get_pass.dart +++ /dev/null @@ -1,20 +0,0 @@ -import 'dart:convert'; -import 'package:http/http.dart' as http; - -class ApiGetPass{ - Future apiConect(String? selectCity,String mode,String inputUser,String urlApi)async{ - String city = ''; - city = selectCity!.toLowerCase() - .replaceAll('ú', 'u') - .replaceAll('ç', 'c') - .replaceAll('ó', 'o') - .replaceAll('ô', 'o') - .replaceAll('í', 'i') - .replaceAll('ã','a'); - - final url = '$urlApi$mode/$city/pass/$inputUser'; - final response = await http.get(Uri.parse(url)); - final map = json.decode(response.body); - return map; - } -} \ No newline at end of file diff --git a/lib/service/db/db_sqlite.dart b/lib/service/db/db_sqlite.dart new file mode 100644 index 0000000..cead325 --- /dev/null +++ b/lib/service/db/db_sqlite.dart @@ -0,0 +1,278 @@ +import 'package:sqflite/sqflite.dart'; +import 'package:path/path.dart'; + +class DbSqlite{ + + intialDB()async{ + final path = await getDatabasesPath(); + final local = join(path,'rkmab.db'); + + var db = await openDatabase( + local, + version: 1, + onCreate: (db,newVersion){ + db.execute('CREATE TABLE IF NOT EXISTS ATENDIMENTOS_DOMICILIARES (ID_ATENDIMENTO_DOMICILIAR INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, DATA TEXT, LOCAL_ATENDIMENTO INTEGER, TIPO_ATENDIMENTO INTEGER, MODALIDADE INTEGER, TURNO INTEGER, CIAP INTEGER, CID TEXT, CONDUTA INTEGER, SINCRONIZADO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_DOM_COMPL (ID_ATENDIMENTO_DOMICILIAR INTEGER, COND_AVAL_ATEND_DOM INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_DOM_PROC (ID_ATENDIMENTO_DOMICILIAR INTEGER, PROC_ATEND_DOM INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_DOM_SIGTAP (ID_ATENDIMENTO_DOMICILIAR INTEGER, COD_PROC_SIGTAP TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_INDIV_COMPL (ID_ATEND_INDIVIDUAL INTEGER, ID_ATEND_INDIV_TIPO INTEGER, ID_ATEND_COMPLEMENTO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_INDIV_EXAMES (ID_ATEND_INDIVIDUAL INTEGER, COD_PROC_SIGTAP TEXT, AVALIADO INTEGER, SOLICITADO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_INDIV_PROC (ID_ATEND_INDIVIDUAL INTEGER, COD_PROC_SIGTAP TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_INDIV_PROF (ID_ATEND_INDIVIDUAL INTEGER, ID_PROFISSIONAL INTEGER, CODIGO_CBO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_INDIVIDUAIS (ID_ATEND_INDIVIDUAL INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, DT_ATENDIMENTO TEXT, TURNO INTEGER, LOCAL_ATENDIMENTO INTEGER, TIPO_ATENDIMENTO INTEGER, PESO TEXT, ALTURA TEXT, PERIM_CEFALICO TEXT, VACINA_DIA INTEGER, ALEITAMENTO_MATERNO INTEGER, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, DUM TEXT, GRAVIDEZ_PLANEJADA INTEGER, IDADE_GESTACIONAL INTEGER, GESTAS_PREVIAS INTEGER, PARTOS INTEGER, MODALIDADE INTEGER, CIAP2_1 INTEGER, CIAP2_2 INTEGER, CID10_1 TEXT, CID10_2 TEXT, RACIONALIDADE_SAUDE INTEGER, FICOU_OBSERVACAO INTEGER, ESCUTA_INICICIAL INTEGER, COMPLEMENTO TEXT, SINCRONIZADO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_ODONTOLOGICOS (ID_ATENDIMENTO_ODONTOLOGICO INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, DATA TEXT, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, TURNO INTEGER, NECESSIDADES_ESPECIAIS INTEGER, GESTANTE INTEGER, LOCAL_ATENDIMENTO INTEGER, TIPO_ATENDIMENTO INTEGER, TIPO_CONSULTA INTEGER, SINCRONIZADO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_ODONTO_PROF (ID_ATENDIMENTO_ODONTOLOGICO INTEGER, ID_PROFISSIONAL INTEGER, CODIGO_CBO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_ODONTO_PROC (ID_ATENDIMENTO_ODONTOLOGICO INTEGER, COD_PROC_SIGTAP TEXT, QTDE INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_ODONTO_SIGTAP (ID_ATENDIMENTO_ODONTOLOGICO INTEGER, COD_PROC_SIGTAP TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS ATENDS_ODONTO_COMPL (ID_ATENDIMENTO_ODONTOLOGICO INTEGER, ID_ATEND_ODONTO_TIPO INTEGER, ID_ATEND_COMPLEMENTO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS AVALIACOES_ELEGIBILIDADE (ID_AVALIACAO_ELEGIBILIDADE INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, DATA_ATENDIMENTO TEXT, TURNO INTEGER, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, PROCEDENCIA INTEGER, CID_PRINCIPAL TEXT, CID_SECUNDARIO TEXT, CID_TERCIARIO TEXT, CONCLUSAO INTEGER, CONC_ELEGIVEL INTEGER, CUIDADOR INTEGER, CNS_CUIDADOR TEXT, SINCRONIZADO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS AVAL_ELEG_CONCL_INE (ID_AVALIACAO_ELEGIBILIDADE INTEGER, AVALIACAO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS AVAL_ELEG_COND_AVAL (ID_AVALIACAO_ELEGIBILIDADE INTEGER, AVALIACAO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS BAIRROS (ID_BAIRRO INTEGER PRIMARY KEY AUTOINCREMENT, NO_BAIRRO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS CADASTROS_INDIVIDUAIS (ID_CAD_INDIVIDUAL INTEGER PRIMARY KEY AUTOINCREMENT, STATUS_CADASTRO INTEGER, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, ID_AREA_CIDADAO INTEGER, ID_MICROAREA_CIDADAO INTEGER, FORA_AREA INTEGER, RESPONSAVEL_FAMILIAR INTEGER, ID_RESPONSAVEL_FAMILIAR TEXT, NOME_RESPONSAVEL_FAMILIAR TEXT, PARENTESCO INTEGER, ESCOLARIDADE INTEGER, FREQ_ESCOLA_CRECHE INTEGER, SITUACAO_MERCADO INTEGER, CUIDADOR_TRADICIONAL INTEGER, GRUPO_COMUNITARIO INTEGER, PLANO_PRIVADO INTEGER, COMUNIDADE_TRADICIONAL INTEGER, COM_TRADI_QUAL TEXT, ORIENT_SEXUAL INTEGER, TEM_DEFICIENCIA INTEGER, DEF_AUDITIVA INTEGER, DEF_INTELECTUAL INTEGER, DEF_VISUAL INTEGER, DEF_FISICA INTEGER, DEF_OUTRAS INTEGER, SAIDA_CADASTRO INTEGER, DATA_SAIDA_CADASTRO TEXT, CADASTRO_RECUSADO INTEGER, GESTANTE INTEGER, MATERNIDADE_REFERENCIA TEXT, PESO TEXT, FUMANTE INTEGER, USA_ALCOOL INTEGER, USA_DROGAS INTEGER, HIPERTENSAO INTEGER, DIABETES INTEGER, AVC_DERRAME INTEGER, INFARTO INTEGER, HANSENIASE INTEGER, TUBERCULOSE INTEGER, CANCER INTEGER, INTERNACAO INTEGER, MOTIVO TEXT, DOENCA_CARDIACA INTEGER, PROBLEMA_RINS INTEGER, DOENCA_PULMAO INTEGER, SAUDE_MENTAL INTEGER, ACAMADO INTEGER, DOMICILIADO INTEGER, PLANTAS_MED INTEGER, PLANTAS_MED_QUAIS TEXT, PIC INTEGER, OUTRAS_CONDICOES TEXT, TEMPO_SITUACAO_RUA INTEGER, ACOMP_INTITUICAO INTEGER, ACOMP_INTITUICAO_QUAL TEXT, BENEFICIO INTEGER, REF_FAMILIAR INTEGER, VISITA_FAMILIAR INTEGER, PARENTESCO_VISITA TEXT, ALIMENTACAO_DIARIA INTEGER, REST_POPULAR INTEGER, DOACAO_REST INTEGER, DOACAO_RELIGIOSO INTEGER, DOACAO_POPULAR INTEGER, OUTROS_ALIM INTEGER, ACESSO_HIGIENE INTEGER, BANHO INTEGER, SANITARIO INTEGER, HIGIENE_BUCAL INTEGER, OUTROS_HIGIENE INTEGER, FICHA_ALTERACAO INTEGER, ID_RESP_CADASTRO INTEGER, CNES_RESP_CADASTRO TEXT, CBO_RESP_CADASTRO TEXT, INE_RESP_CADASTRO TEXT, DT_CADASTRO TEXT, ID_EQUIPE INTEGER, ORIGEM TEXT, SINCRONIZADO TEXT, DT_ENTRADA_BRASIL TEXT, DT_NATURALIZACAO TEXT, PORTARIA_NATURALIZACAO TEXT, CRIANCAS_ADULTO INTEGER, CRIANCAS_OUTRAS_CRIANCAS INTEGER, CRIANCAS_ADOLESCENTE INTEGER, CRIANCAS_SOZINHA INTEGER, CRIANCAS_CRECHE INTEGER, CRIANCAS_OUTRO INTEGER, IDENTIDADE_GENERO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS CBOS (CODIGO_CBO TEXT, DESCRICAO_CBO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS CIAPS (CODIGO_CIAP TEXT, DESC_CIAP TEXT, TIPO_CIAP TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS CIDADAOS (ID_CIDADAO INTEGER PRIMARY KEY AUTOINCREMENT, CD_USUARIO_SUS TEXT, NOME_CIDADAO TEXT, NOME_SOCIAL TEXT, SEXO TEXT, DT_NASCIMENTO TEXT, ID_ESTADO_CIVIL INTEGER, NOME_CONJUGE TEXT, NACIONALIDADE INTEGER, ID_MUNICIPIO_NASC INTEGER, NO_MUNICIPIO_NASC TEXT, ESTADO_UF_NASC TEXT, ID_ETNIA INTEGER, ID_ESCOLARIDADE INTEGER, ID_DEFICIENCIA INTEGER, NOME_MAE TEXT, DESCONHECE_MAE INTEGER, NOME_PAI TEXT, DESCONHECE_PAI INTEGER, ID_UNIDADE INTEGER, NUM_PRONTUARIO TEXT, NUM_PRONTUARIO_PROV TEXT, CLASSIFICACAO INTEGER, CLASSIFICACAO_SUB INTEGER, NUM_FAMILIA INTEGER, ID_PAIS_RESID INTEGER, ID_MUNICIPIO_RESID INTEGER, NO_MUNICIPIO_RESID TEXT, ESTADO_UF_RESID TEXT, CODIGO_IBGE_RESID INTEGER, NO_BAIRRO_LOGR TEXT, ID_LOGR_TIPO INTEGER, NOME_LOGR TEXT, CEP_LOGR INTEGER, NUMERO_LOGR INTEGER, LOTEAMENTO_LOGR INTEGER, COMPL_LOGR TEXT, PONTO_REFERENCIA TEXT, ZONA_LOGR INTEGER, DDD_TELEFONE INTEGER, NUM_TELEFONE INTEGER, DDD_CELULAR INTEGER, NUM_CELULAR INTEGER, DDD_RECADO INTEGER, NUM_RECADO INTEGER, EMAIL TEXT, OBSERVACOES TEXT, CPF INTEGER, CNS TEXT, TITULO_ELEITOR INTEGER, RG_NUMERO INTEGER, RG_COMPLEMENTO TEXT, RG_UF TEXT, RG_ORGAO TEXT, RG_DATA_EMISSAO TEXT, TIPO_CERTIDAO INTEGER, NUM_CERTIDAO TEXT, CARTORIO_CERTIDAO TEXT, LIVRO_CERTIDAO TEXT, FOLHA_CERTIDAO TEXT, TERMO_CERTIDAO TEXT, DT_EMISSAO_CERTIDAO TEXT, NUM_CTPS TEXT, NUM_SERIE_CTPS TEXT, ESTADO_UF_CTPS TEXT, NUM_PIS_PASEP TEXT, FL_RETIROU_CARTAO INTEGER, NUM_NIS TEXT, NUM_PROT_CROSS TEXT, RENDA_MENSAL REAL, PROFISSAO TEXT, DT_OBITO TEXT, DECLARACAO_OBITO TEXT, BLOQUEIO INTEGER, ORIGEM INTEGER, DT_HORA_CADASTRO TEXT, ID_USUARIO_CADASTRO INTEGER, ID_DOMICILIO INTEGER, ATENDIMENTOS INTEGER, SINCRONIZADO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS CIDADAO_DOMICILIO (ID_DOMICILIO INTEGER PRIMARY KEY AUTOINCREMENT, TIPO_IMOVEL INTEGER, ID_AREA_DOMICILIO INTEGER, ID_MICROAREA_DOMICILIO INTEGER, FORA_AREA INTEGER, SITUACAO_MORADIA INTEGER, TIPO_LOCALIDADE INTEGER, TIPO_DOMICILIO INTEGER, NUM_MORADORES INTEGER, NUM_COMODOS INTEGER, SITUACAO_RURAL INTEGER, TIPO_ACESSO INTEGER, MAT_PREDOMINANTE INTEGER, DISPONIBILIDADE_ENERGIA INTEGER, TIPO_ABASTECIMENTO INTEGER, TRATAMENTO_AGUA INTEGER, DESTINO_LIXO INTEGER, ESCOAMENTO INTEGER, FL_ANIMAIS INTEGER, ANIMAIS_GATO INTEGER, ANIMAIS_CACHORRO INTEGER, ANIMAIS_PASSARO INTEGER, ANIMAIS_OUTROS INTEGER, QTDE_ANIMAIS INTEGER, CBO_RESP_CADASTRO TEXT, ID_RESP_CADASTRO INTEGER, CNES_RESP_CADASTRO TEXT, INE_RESP_CADASTRO TEXT, DT_CADASTRO TEXT, ID_EQUIPE INTEGER, ORIGEM TEXT, SINCRONIZADO TEXT, NOME_INSTITUICAO_PERMANENCIA TEXT, PROFISSIONAIS_VINCULADOS_INST INTEGER, RESPONSAVEL_TECNICO_INST TEXT, CNS_RESP_TECNICO_INST TEXT, CARGO_RESP_TECNICO_INST TEXT, TEL_RESP_TECNICO_INST TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS CIDS (CODIGO_CID TEXT, DESCRICAO_CID TEXT, RESTRICAO_SEXO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS CONTROLE_INTERNO (CARGA_INICIAL INTEGER, SYNC_UNIDADE INTEGER, CIDADE_LOAD TEXT, NOME_CIDADE TEXT, ID_MUNICIPIO INTEGER, UF_ESTADO TEXT, UNIDADE_SYNC TEXT, CODIGO_IBGE INTEGER, NOME_UNIDADE TEXT, AMBIENTE TEXT, ULTIMA_SINCRONIZACAO TEXT, COMPETENCIA TEXT, ID_AREA INTEGER, AREA INTEGER, ID_MICROAREA INTEGER, MICROAREA INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS DOMICILIOS_CIDADAOS (ID_DOMICILIO INTEGER, CD_USUARIO_SUS TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS EQUIPES (ID_EQUIPE INTEGER PRIMARY KEY AUTOINCREMENT, ID_UNIDADE INTEGER, INE TEXT, ID_ATB_AREA INTEGER, AREA INTEGER, ID_ATB_MICROAREA INTEGER, MICROAREA INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS FICHAS_COMPLEMENTARES (ID_FICHA_COMPLEMENTAR INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, DATA_ATENDIMENTO TEXT, TURNO INTEGER, DATA_OLHINHO TEXT, RESULTADO_OLHINHO INTEGER, DATA_FUNDO_OLHO TEXT, RESULTADO_FUNDO_OLHO INTEGER, DATA_ORELHINHA TEXT, RESULTADO_ORELHINHA INTEGER, DATA_TRANSFONTANELA TEXT, RESULTADO_TRANSFONTANELA INTEGER, DATA_TOMOGRAFIA TEXT, RESULTADO_TOMOGRAFIA INTEGER, DATA_RESSONANCIA TEXT, RESULTADO_RESSONANCIA INTEGER, SINCRONIZADO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS LOGRADOUROS_ENDERECOS (ID_LOGR_ENDERECO INTEGER, ID_LOGR_TIPO INTEGER, DESC_LOGR_ENDERECO TEXT, ID_BAIRRO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS LOGRADOUROS_LOTEAMENTOS (ID_LOGR_LOTEAMENTO INTEGER PRIMARY KEY AUTOINCREMENT, DESC_LOGR_LOTEAMENTO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS LOGRADOUROS_TIPOS (ID_LOGR_TIPO INTEGER PRIMARY KEY AUTOINCREMENT, NO_LOGR_TIPO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS MARCADORES_CONSUMO (ID_MARCADOR_CONSUMO INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, DATA_ATENDIMENTO TEXT, LOCAL_ATENDIMENTO INTEGER, GRUPO_PERGUNTAS INTEGER, SINCRONIZADO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS MARCADORES_CON_QUEST (ID_MARCADOR_CONSUMO INTEGER, PERGUNTA INTEGER, RESPOSTA INTEGER, GRUPO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS MUNICIPIOS (ID_MUNICIPIO INTEGER PRIMARY KEY AUTOINCREMENT, NO_MUNICIPIO TEXT, CODIGO_IBGE TEXT, UF_ESTADO TEXT, ID_PAIS INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_FICHAS (ID_PROCEDIMENTOS_FICHA INTEGER PRIMARY KEY AUTOINCREMENT, AFERICAO_PA INTEGER, CURATIVO_SIMPLES INTEGER, GLICEMIA_CAPILAR INTEGER, MEDICAO_PESO INTEGER, COLETA_EXAME INTEGER, AFERICAO_TEMPERATURA INTEGER, MEDICAO_ALTURA INTEGER, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, DATA TEXT, SINCRONIZADO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_INDIV (ID_PROCEDIMENTOS_INDIV INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, DATA_ATENDIMENTO TEXT, TURNO INTEGER, LOCAL_ATENDIMENTO INTEGER, ESCUTA_INICIAL INTEGER, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, SINCRONIZADO TEXT, MEDICAO_PESO FLOAT, MEDICAO_ALTURA FLOAT, AFERICAO_PA INTEGER, GLICEMIA_CAPILAR INTEGER, AFERICAO_TEMPERATURA FLOAT,COLETA_EXAME CHAR);'); + db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_INDIV_FICHA (ID_PROCEDIMENTOS_INDIV_FICHA INTEGER PRIMARY KEY AUTOINCREMENT, ID_PROCEDIMENTOS_INDIV INTEGER, COD_PROCEDIMENTO_FICHA TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_INDIV_SIGTAP (ID_PROCEDIMENTOS_INDIV INTEGER, COD_PROC_SIGTAP TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_INICIAIS (ATENDIMENTO INTEGER, COD_PROC_SIGTAP TEXT, CODIGO_CBO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_SIGTAP (COD_PROC_SIGTAP TEXT, DESC_PROC_SIGTAP TEXT, GRUPO_PROC_SIGTAP TEXT, QTDE_MAXIMA INTEGER, IDADE_MIN INTEGER, IDADE_MAX INTEGER, SEXO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_SIGTAP_CBO (COD_PROC_SIGTAP TEXT, CODIGO_CBO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_SIGTAP_CID (COD_PROC_SIGTAP TEXT, CODIGO_CID TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_SIGTAP_REGISTRO (COD_PROC_SIGTAP TEXT, CODIGO_REGISTRO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS PROFISSIONAIS (ID_PROFISSIONAL INTEGER PRIMARY KEY AUTOINCREMENT, NOME_PROFISSIONAL TEXT, CNS_PROFISSIONAL TEXT, USERNAME TEXT, SENHA TEXT, BLOQUEIO_ACESSO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS PROFISSIONAIS_CBOS (ID_PROFISSIONAL INTEGER, CODIGO_CBO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS PROFISSIONAIS_EQUIPE (ID_EQUIPE INTEGER, ID_PROFISSIONAL INTEGER, ATIVO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS UNIDADES (ID_UNIDADE INTEGER PRIMARY KEY AUTOINCREMENT, NOME_UNIDADE TEXT, CNES_UNIDADE TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS VISITAS_DOMICILIARES (ID_VISITA_DOMICILIAR INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, DT_ATENDIMENTO TEXT, TURNO INTEGER, TIPO_IMOVEL INTEGER, VISITA_ACOMPANHADA INTEGER, DESFECHO INTEGER, PESO TEXT, ALTURA TEXT, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, COMPLEMENTO TEXT, SINCRONIZADO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS VISITAS_DOMICILIARES_COMPL (ID_VISITA_DOMICILIAR INTEGER, ID_VISITA_DOM_TIPO INTEGER, ID_VISITA_COMPLEMENTO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS VISITAS_DOMICILIARES_PROC (ID_VISITA_DOMICILIAR INTEGER, COD_PROC_SIGTAP TEXT);'); + } + ); + return db; + } + Future deleteDB()async{ + var querys = [ + 'UPDATE CONTROLE_INTERNO SET SYNC_UNIDADE = NULL, UNIDADE_SYNC = NULL, NOME_UNIDADE = NULL WHERE rowid = 1;', + 'DELETE FROM ATENDS_DOM_COMPL', + 'DELETE FROM ATENDS_DOM_PROC', + 'DELETE FROM ATENDS_DOM_SIGTAP', + 'DELETE FROM ATENDIMENTOS_DOMICILIARES', + 'DELETE FROM ATENDS_INDIV_PROC', + 'DELETE FROM ATENDS_INDIV_PROF', + 'DELETE FROM ATENDS_INDIVIDUAIS', + 'DELETE FROM BAIRROS', + 'DELETE FROM CADASTROS_INDIVIDUAIS', + 'DELETE FROM CBOS', + 'DELETE FROM CIAPS', + 'DELETE FROM CIDADAOS', + 'DELETE FROM CIDADAO_DOMICILIO', + 'DELETE FROM CIDS', + 'DELETE FROM CONTROLE_INTERNO', + 'DELETE FROM DOMICILIOS_CIDADAOS', + 'DELETE FROM EQUIPES', + 'DELETE FROM FICHAS_COMPLEMENTARES', + 'DELETE FROM LOGRADOUROS_ENDERECOS', + 'DELETE FROM LOGRADOUROS_LOTEAMENTOS', + 'DELETE FROM LOGRADOUROS_TIPOS', + 'DELETE FROM MUNICIPIOS', + 'DELETE FROM PROCEDIMENTOS_FICHAS', + 'DELETE FROM PROCEDIMENTOS_INDIV', + 'DELETE FROM PROCEDIMENTOS_INDIV_FICHA', + 'DELETE FROM PROCEDIMENTOS_INDIV_SIGTAP', + 'DELETE FROM PROCEDIMENTOS_SIGTAP', + 'DELETE FROM PROCEDIMENTOS_SIGTAP_CBO', + 'DELETE FROM PROCEDIMENTOS_SIGTAP_CID', + 'DELETE FROM PROCEDIMENTOS_SIGTAP_REGISTRO', + 'DELETE FROM PROFISSIONAIS', + 'DELETE FROM PROFISSIONAIS_CBOS', + 'DELETE FROM PROFISSIONAIS_EQUIPE', + 'DELETE FROM UNIDADES', + 'DELETE FROM VISITAS_DOMICILIARES', + 'DELETE FROM VISITAS_DOMICILIARES_COMPL', + 'DELETE FROM VISITAS_DOMICILIARES_PROC', + ]; + Database db = await intialDB(); + for(int i=0;querys.length>i;i++){ + db.execute(querys[i]); + } + } + Future saveUnidadesDB(var value)async{ + Database db = await intialDB(); + for(int i=0;value.length > i;i++){ + Map row = { + 'NOME_UNIDADE' : value[i]['nomeFantasia'], + 'CNES_UNIDADE' : value[i]['nrCNES'] + }; + int id = await db.insert('UNIDADES', row); + // print('id increment $id'); + // print(await db.query('UNIDADES')); + } + return db; + } + Future saveProceduresDB(var value)async{ + Database db = await intialDB(); + + // var query = "INSERT OR REPLACE INTO PROCEDIMENTOS_SIGTAP (COD_PROC_SIGTAP, DESC_PROC_SIGTAP, GRUPO_PROC_SIGTAP, QTDE_MAXIMA, IDADE_MIN, IDADE_MAX, SEXO) VALUES (?,?,?,?,?,?,?)"; + // {"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 saveProceduresRegisterDB(var value)async{ + Database db = await intialDB(); + // "INSERT OR REPLACE INTO PROCEDIMENTOS_SIGTAP_REGISTRO (COD_PROC_SIGTAP, CODIGO_REGISTRO) VALUES (?,?)"; + // {"codProcedimento":"0101010010","codRegistro":"01"} + 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 PROCEDIMENTOS_SIGTAP_REGISTRO'); + // print(await db.query('PROCEDIMENTOS_SIGTAP_REGISTRO')); + } + return db; + } + Future saveCID(var value)async{ + Database db = await 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 PROCEDIMENTOS_SIGTAP_REGISTRO'); + } + // print(await db.query('CIDS')); + return db; + } + Future saveProceduresCID(var value)async{ + Database db = await 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_REGISTRO'); + } + // print(await db.query('PROCEDIMENTOS_SIGTAP_CID')); + return db; + } + Future saveCBO(var value)async{ + Database db = await 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 PROCEDIMENTOS_SIGTAP_REGISTRO'); + } + // print(await db.query('CBOS')); + return db; + } + Future saveProceduresCBO(var value)async{ + Database db = await 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_REGISTRO'); + } + // print(await db.query('PROCEDIMENTOS_SIGTAP_CBO')); + return db; + } + Future saveCIAP(var value)async{ + Database db = await intialDB(); + // "INSERT OR REPLACE INTO CIAPS (CODIGO_CIAP, DESC_CIAP, TIPO_CIAP) VALUES (?,?,?)"; + // "codCIAP":"30","descCIAP":"EXAME M\u00c9DICO\/AVALIA\u00c7\u00c3ODE SA\u00daDE - COMPLETO","tipoCIAP":"PROC" + for(int i=0;value.length > i;i++){ + Map row = { + 'CODIGO_CIAP' : value[i]['codCIAP'], + 'DESC_CIAP' : value[i]['descCIAP'], + 'TIPO_CIAP' : value[i]['tipoCIAP'], + }; + int id = await db.insert('CIAPS', row); + // print('id increment $id CIAPS'); + } + print(await db.query('CIAPS')); + return db; + } + Future saveCity(var value)async{ + Database db = await intialDB(); + // "INSERT OR REPLACE INTO MUNICIPIOS (ID_MUNICIPIO, CODIGO_IBGE, NO_MUNICIPIO, UF_ESTADO, ID_PAIS) VALUES (?,?,?,?,?)" + // "idMunicipio":1,"codIBGE":"000000","nomeMunicipio":"MUNICIPIO IGNORADO","UF":"--","idPais":33 + for(int i=0;value.length > i;i++){ + Map row = { + 'ID_MUNICIPIO' : value[i]['idMunicipio'], + 'CODIGO_IBGE' : value[i]['codIBGE'], + 'NO_MUNICIPIO' : value[i]['nomeMunicipio'], + 'UF_ESTADO' : value[i]['UF'], + 'ID_PAIS' : value[i]['idPais'], + }; + int id = await db.insert('MUNICIPIOS', row); + // print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO'); + } + print(await db.query('MUNICIPIOS')); + return db; + } + Future saveTeam(var value)async{ + Database db = await intialDB(); + // INSERT OR REPLACE INTO EQUIPES (ID_EQUIPE, ID_UNIDADE, INE, ID_ATB_AREA, AREA, ID_ATB_MICROAREA, MICROAREA) VALUES (?,?,?,?,?,?,?)"; + // {"idEquipe":1,"idUnidade":3,"INE":"0001485628","idAtbArea":1,"area":1,"idAtbMicroarea":null,"microarea":null} + for(int i=0;value.length > i;i++){ + Map row = { + 'ID_EQUIPE' : value[i]['idEquipe'], + 'ID_UNIDADE' : value[i]['idUnidade'], + 'INE' : value[i]['INE'], + 'ID_ATB_AREA' : value[i]['idAtbArea'], + 'AREA' : value[i]['area'], + 'ID_ATB_MICROAREA': value[i]['idAtbMicroarea'], + 'MICROAREA' : value[i]['microarea'], + }; + int id = await db.insert('EQUIPES', row); + // print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO'); + } + print(await db.query('EQUIPES')); + return db; + } +} \ No newline at end of file diff --git a/lib/utils/color_palette.dart b/lib/utils/color_palette.dart index f3c1143..5fd2bfe 100644 --- a/lib/utils/color_palette.dart +++ b/lib/utils/color_palette.dart @@ -7,7 +7,8 @@ class ColorPalette{ static const Color secundary = Color(0xffcff1fc); static const Color border = Color(0xff78baf8); static const Color gray = Color(0xffababab); - static const Color titleContainer = Color(0xffd6d6d6); + static const Color grayBackground = Color(0xffd1d1e3); + static const Color titleContainer = Color(0xffdedede); static const Color buttonDisable = Color(0xfffafcbfb); static const Color black54 = Colors.black54; static const Color blackButton = Color(0xff434343); diff --git a/lib/utils/const_variable.dart b/lib/utils/const_variable.dart index 6c9b08d..ac289a7 100644 --- a/lib/utils/const_variable.dart +++ b/lib/utils/const_variable.dart @@ -261,4 +261,15 @@ class ConstVariable{ ], ) ); + + replaceText(String text){ + String replace= text.toLowerCase() + .replaceAll('ú', 'u') + .replaceAll('ç', 'c') + .replaceAll('ó', 'o') + .replaceAll('ô', 'o') + .replaceAll('í', 'i') + .replaceAll('ã','a'); + return replace; + } } \ No newline at end of file diff --git a/lib/utils/routes.dart b/lib/utils/routes.dart index f01465c..51a6a95 100644 --- a/lib/utils/routes.dart +++ b/lib/utils/routes.dart @@ -1,6 +1,7 @@ import 'package:rkm/screens/about_screen.dart'; import 'package:rkm/screens/attendance_list_screen.dart'; import 'package:rkm/screens/home_screen.dart'; +import 'package:rkm/screens/load_init_screen.dart'; import 'package:rkm/screens/login_screen.dart'; import 'package:rkm/screens/select_service/eligibility_assessment_screen.dart'; import 'package:rkm/screens/splash_screen.dart'; diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index b20afdb..c6f4066 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,7 +6,9 @@ import FlutterMacOS import Foundation import package_info_plus +import sqflite func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin")) + SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) } diff --git a/pubspec.lock b/pubspec.lock index dc7bf3a..1a833c8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -231,6 +231,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.9.0" + sqflite: + dependency: "direct main" + description: + name: sqflite + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.6" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.3" stack_trace: dependency: transitive description: @@ -252,6 +266,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.1" + synchronized: + dependency: transitive + description: + name: synchronized + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" term_glyph: dependency: transitive description: @@ -289,4 +310,4 @@ packages: version: "4.1.1" sdks: dart: ">=2.18.6 <3.0.0" - flutter: ">=2.11.0" + flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index f5c75d3..036a5d3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,6 +17,7 @@ dependencies: line_icons: ^2.0.1 http: gainer_crypto: ^0.0.6 + sqflite: ^2.0.0+3 dev_dependencies: flutter_test: