Compare commits

..

16 Commits

Author SHA1 Message Date
Reginaldo
4d60d86743 versão 1.0.17+18 AJUSTE PARA NÃO DEIXAR ESPAÇO DIGITAÇÃO DO LOGIN E CORREÇÃO DO SCROOL DA LISTA DE ATENDIMENTOS. 19/09/2024 2024-09-19 12:02:07 -03:00
Reginaldo
1d3d3941b3 versão 1.0.16+17 AJUSTE DA COMPETENCIA. 10/09/2024 2024-09-10 08:14:38 -03:00
Reginaldo
7dca9d9b4e versão 1.0.15+16 AJUSTE DAS RESTRIÇÕES DE VISITAS PERIODICAS, ENVIO DE PESO E ALTURA E DO LOADING. 30/08/2024 2024-09-02 14:09:13 -03:00
Reginaldo
74b5acdb45 versão 1.0.15+16 AJUSTE DAS RESTRIÇÕES DE VISITAS PERIODICAS, ENVIO DE PESO E ALTURA E DO LOADING. 30/08/2024 2024-08-30 17:05:15 -03:00
Reginaldo
763d101162 versão 1.0.14+15 AJUSTADA A ALTURA DA LISTA DOS PROCEDIMENTOS E DO ACOMPANHAMENTO, E A MENSAGEM DE AVISO DE NÃO SALVAR QUANDO ESTIVER EM EDIÇÃO. 29/08/2024 2024-08-29 09:11:31 -03:00
Reginaldo
9e63828175 versão 1.0.13+14 ajustar para fora de area 1, dentro da area 0 2024-08-28 12:20:24 -03:00
Reginaldo
0ef16f6119 versão 1.0.13+14 edicao da visita_domiciliar_tela.dart 2024-08-28 11:58:08 -03:00
Reginaldo
22e8ae8fd3 versão 1.0.13+14 edicao da visita_domiciliar_tela.dart 2024-08-28 11:57:49 -03:00
Reginaldo
ce2a1cf4d1 versão 1.0.13+14 state do salvar alterações de cadastro do cidadaos, e edicao do atendimento_domiciliar_tela.dart 2024-08-27 21:36:28 -03:00
Reginaldo
48a5a779bf versão 1.0.12+13 AJUSTE DE ID E DESCRIÇÃO DE AREA E MICROAREA, AJUSTE DA MENSAGEM DADOS SALVOS DA EDIÇÃO DO PACIENTE. 2024-08-26 16:37:01 -03:00
Reginaldo
612eb9da02 AJUSTES DA VERSÃO 2024-08-23 15:51:57 -03:00
Reginaldo
9bdc574b55 ajustes cidadao fora de area, e ajustes para não exibir microarea null 2024-08-23 15:42:11 -03:00
Reginaldo
5b2919d292 ajustes do post e campos para o envio para a api 2024-08-22 16:13:00 -03:00
Reginaldo
da45452c89 na tela visita_domiciliar_tela.dart não é mais obrigatório o campo procedimento. 2024-08-15 16:12:57 -03:00
Reginaldo
6c770ef81c ajuste android para subir nova versão 1.0.7 2024-08-12 19:40:22 -03:00
Reginaldo
58fcb66022 correção visita_domiciliar_tela.dart, register_citizen_screen.dart e register_individual_screen.dart 2024-03-18 22:16:02 -03:00
58 changed files with 2598 additions and 1180 deletions

View File

@@ -1,11 +1,11 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.
# This file should be version controlled and should not be manually edited.
version:
revision: 135454af32477f815a7525073027a3ff9eff1bfd
channel: stable
revision: "761747bfc538b5af34aa0d3fac380f1bc331ec49"
channel: "stable"
project_type: app
@@ -13,26 +13,26 @@ project_type: app
migration:
platforms:
- platform: root
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: android
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: ios
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: linux
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: macos
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: web
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: windows
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
# User provided section

View File

@@ -1,29 +1,9 @@
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
plugins {
id "com.android.application"
id "kotlin-android"
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id "dev.flutter.flutter-gradle-plugin"
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
@@ -31,45 +11,54 @@ if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file("local.properties")
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader("UTF-8") { reader ->
localProperties.load(reader)
}
}
def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
if (flutterVersionCode == null) {
flutterVersionCode = "1"
}
def flutterVersionName = localProperties.getProperty("flutter.versionName")
if (flutterVersionName == null) {
flutterVersionName = "1.0"
}
android {
compileSdkVersion 33
ndkVersion flutter.ndkVersion
namespace = "com.ab.rkm.rkm"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
defaultConfig {
applicationId "com.ab.rkm.rkm"
minSdkVersion 19
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
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 = 17
targetSdk = flutter.targetSdkVersion
versionCode = flutterVersionCode.toInteger()
versionName = flutterVersionName
}
signingConfigs {
debug {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
minifyEnabled true
@@ -88,9 +77,8 @@ android {
}
flutter {
source '../..'
source = "../.."
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

View File

@@ -1,5 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ab.rkm.rkm">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#E3E6E8</color>
</resources>

View File

@@ -1,17 +1,15 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ab.rkm.rkm">
package="com.ab.rkm.rkmmobile">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:usesCleartextTraffic="true"
android:label="RKMAB 2.0 ConectaSUS"
android:label="RKMAB 2.0"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:enableOnBackInvokedCallback="true"
>
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
@@ -35,4 +33,15 @@
android:name="flutterEmbedding"
android:value="2" />
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
</queries>
</manifest>

View File

@@ -0,0 +1,5 @@
package com.ab.rkm.rkmmobile
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity()

View File

@@ -2,5 +2,4 @@ package com.ab.rkm.rkm
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
}
class MainActivity: FlutterActivity()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1,5 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ab.rkm.rkm">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.

View File

@@ -1,20 +1,32 @@
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.3'
classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
maven {
url 'https://maven.google.com/'
name 'Google'
}
jcenter()
maven {
url 'https://mvnrepository.com/artifact/com.android.tools.lint/lint-gradle-api'
}
}
}

View File

@@ -1,4 +1,4 @@
#org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
android.suppressUnsupportedCompileSdk=33

View File

@@ -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.2-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip

View File

@@ -1,11 +1,25 @@
include ':app'
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
return flutterSdkPath
}()
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.3.0" apply false
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
}
include ":app"

View File

@@ -0,0 +1,12 @@
import Flutter
import UIKit
import XCTest
class RunnerTests: XCTestCase {
func testExample() {
// If you add code to the Runner application, consider adding tests here.
// See https://developer.apple.com/documentation/xctest for more information about using XCTest.
}
}

View File

@@ -1,6 +1,8 @@
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_model.dart';
import '../models/check_proced_sia_model.dart';
import '../models/pais_modelo.dart';
import 'color_palette.dart';
@@ -11,7 +13,7 @@ class ConstVariable{
IconThemeData iconThemeDataDefault = IconThemeData(color: Colors.white);
double fontSizeInput = 15;
double fontSizeTitleAppBar = 20;
List<String> RGUF = ['AC','AL','AP','AM','BA','CE','DF','ES','GO','MA','MT','MS','MG','PA','PB','PR','PE','PI','RJ','RN','RS','RO','RR','SC','SP','SE','TO',];
List<String> RGUF = ['AC','AL','AP','AM','BA','CE','DF','ES','GO','MA','MT','MS','MG','PA','PB','PR','PE','PI','RJ','RN','RS','RO','RR','SC','SP','SE','TO','--'];
List<String> itensProceduresStart = [
'ATEND. INDIVIDUAL',
'VISTA DOMICILIAR'
@@ -71,35 +73,36 @@ class ConstVariable{
'VISITA PERIÓDICA'
];
List outrosModel = [
'EGRESSO DE INTERNAÇÃO',
'CONVITE ATIVIDADES COLETIVAS/CAMPANHAS DE SAÚDE',
'ORIENTAÇÃO/PREVENÇÃO',
'OUTROS',
List<CheckModel> outrosModel = [
CheckModel(cod: 25, subtitle: 'EGRESSO DE INTERNAÇÃO'),
CheckModel(cod: 27, subtitle: 'CONVITE ATIVIDADES COLETIVAS/CAMPANHAS DE SAÚDE'),
CheckModel(cod: 31, subtitle: 'ORIENTAÇÃO/PREVENÇÃO'),
CheckModel(cod: 28, subtitle: 'OUTROS'),
];
List tipoAcompanhamentoModel = [
'GESTANTE',
'PUÉRPERA',
'RECÉM-NASCIDO',
'CRIANÇA',
'PESSOA COM DESNUTRIÇÃO',
'PESSOA EM REABILITAÇÃO OU COM DEFICIÊNCIA',
'PESSOA COM HIPERTENSÃO',
'PESSOA COM ASMA',
'PESSOA COM DPOC/ENFISEMA',
'PESSOA COM CÂNCER',
'PESSOA COM OUTRAS DOENÇAS CRÔNICAS',
'PESSOA COM HANSENÍASE',
'PESSOA COM TUBERCULOSE',
'SINTOMÁTICOS RESPIRATÓRIOS',
'TABAGISTA',
'DOMICILIADOS/ACAMADOS',
'CONDIÇÕES DE VULNERABILIDADE SOCIAL',
'CONDIÇÃO DO BOLSA FAMÍLIA',
'SAÚDE MENTAL',
'USUÁRIO DE ÁLCOOL',
'USUÁRIO DE OUTRAS DROGAS',
List <CheckModel>tipoAcompanhamentoModel = [
CheckModel(cod: 5, subtitle: 'GESTANTE'),
CheckModel(cod: 6, subtitle: 'PUÉRPERA'),
CheckModel(cod: 7, subtitle: 'RECÉM-NASCIDO'),
CheckModel(cod: 8, subtitle: 'CRIANÇA'),
CheckModel(cod: 9, subtitle: 'PESSOA COM DESNUTRIÇÃO'),
CheckModel(cod: 10, subtitle: 'PESSOA EM REABILITAÇÃO OU COM DEFICIÊNCIA'),
CheckModel(cod: 11, subtitle: 'PESSOA COM HIPERTENSÃO'),
CheckModel(cod: 12, subtitle: 'PESSOA COM DIABETES'),
CheckModel(cod: 13, subtitle: 'PESSOA COM ASMA'),
CheckModel(cod: 14, subtitle: 'PESSOA COM DPOC/ENFISEMA'),
CheckModel(cod: 15, subtitle: 'PESSOA COM CÂNCER'),
CheckModel(cod: 16, subtitle: 'PESSOA COM OUTRAS DOENÇAS CRÔNICAS'),
CheckModel(cod: 17, subtitle: 'PESSOA COM HANSENÍASE'),
CheckModel(cod: 18, subtitle: 'PESSOA COM TUBERCULOSE'),
CheckModel(cod: 32, subtitle: 'SINTOMÁTICOS RESPIRATÓRIOS'),
CheckModel(cod: 33, subtitle: 'TABAGISTA'),
CheckModel(cod: 19, subtitle: 'DOMICILIADOS/ACAMADOS'),
CheckModel(cod: 20, subtitle: 'CONDIÇÕES DE VULNERABILIDADE SOCIAL'),
CheckModel(cod: 21, subtitle: 'CONDIÇÃO DO BOLSA FAMÍLIA'),
CheckModel(cod: 22, subtitle: 'SAÚDE MENTAL'),
CheckModel(cod: 23, subtitle: 'USUÁRIO DE ÁLCOOL'),
CheckModel(cod: 24, subtitle: 'USUÁRIO DE OUTRAS DROGAS'),
];
List serviceHomeCheckConditionlist = [
@@ -124,34 +127,57 @@ class ConstVariable{
'USO DE COLOSTOMIA',
'USO DE GASTROSTOMIA',
'USO DE SONDA NASOENTERAL - SNE',
'USO DE SONDA NASOGRÁSTRICA - SNG',
'USO DE SONDA NASOGÁSTRICA - SNG',
'USO DE SONDA VESICAL DE DEMORA - SVD',
'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<CheckProcedSiaModel> 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<DropDownDataModel> listServicePlace = [
@@ -260,17 +286,17 @@ class ConstVariable{
List<DropDownDataModel> listTypeHome = [
DropDownDataModel(cod: 1,title: 'DOMICÍLIO'),
DropDownDataModel(cod: 2,title: 'COMÉRCIO'),
DropDownDataModel(cod: 3,title: 'TERRENO BALDIO'),
DropDownDataModel(cod: 4,title: 'PONTO ESTRATÉGICO'),
DropDownDataModel(cod: 5,title: 'ESCOLA'),
DropDownDataModel(cod: 6,title: 'CRECHE'),
// DropDownDataModel(cod: 2,title: 'COMÉRCIO'),
// DropDownDataModel(cod: 3,title: 'TERRENO BALDIO'),
// DropDownDataModel(cod: 4,title: 'PONTO ESTRATÉGICO'),
// DropDownDataModel(cod: 5,title: 'ESCOLA'),
// DropDownDataModel(cod: 6,title: 'CRECHE'),
DropDownDataModel(cod: 7,title: 'ABRIGO'),
DropDownDataModel(cod: 8,title: 'INSTITUIÇÃO DE LONGA PERMANÊNCIA PARA IDOSOS'),
DropDownDataModel(cod: 9,title: 'UNIDADE PRISIONAL'),
DropDownDataModel(cod: 10,title: 'UNIDADE DE MEDIDA SOCIOEDUCATIVA'),
DropDownDataModel(cod: 11,title: 'DELEGACIA'),
DropDownDataModel(cod: 12,title: 'ESTABELECIMENTO RELIGIOSO'),
// DropDownDataModel(cod: 12,title: 'ESTABELECIMENTO RELIGIOSO'),
DropDownDataModel(cod: 99,title: 'OUTROS'),
];
@@ -497,6 +523,7 @@ class ConstVariable{
CityLoadModel(codCity: 3473, nameCityApi: 'francodarocha', nameCityFront: 'Franco da Rocha', codState: 'SP', codCityIbge: 351640),
CityLoadModel(codCity: 3514, nameCityApi: 'igaracudotiete', nameCityFront: 'Igaraçu do Tietê', codState: 'SP', codCityIbge: 352000),
CityLoadModel(codCity: 3531, nameCityApi: 'iracemapolis', nameCityFront: 'Iracemápolis', codState: 'SP', codCityIbge: 352140),
CityLoadModel(codCity: 3542, nameCityApi: 'itapeva', nameCityFront: 'Itapeva', codState: 'SP', codCityIbge: 352240),
CityLoadModel(codCity: 3546, nameCityApi: 'itapolis', nameCityFront: 'Itápolis', codState: 'SP', codCityIbge: 352270),
CityLoadModel(codCity: 3555, nameCityApi: 'itirapina', nameCityFront: 'Itirapina', codState: 'SP', codCityIbge: 352360),
CityLoadModel(codCity: 3560, nameCityApi: 'ituverava', nameCityFront: 'Ituverava', codState: 'SP', codCityIbge: 352410),

View File

@@ -2,8 +2,7 @@ import 'package:flutter/services.dart';
class FormatText extends TextInputFormatter{
@override
TextEditingValue formatEditUpdate(
TextEditingValue txtOdl,TextEditingValue txtNew){
TextEditingValue formatEditUpdate(TextEditingValue txtOdl,TextEditingValue txtNew){
return txtNew.copyWith(text: txtNew.text.toUpperCase());
}
}

View File

@@ -9,8 +9,12 @@ class MainControllers{
var senha = senhaDigitada.toUpperCase();
// Faz a criptografia da senha inserida
String senhaMD5 = grHashString(GRCryptoType.md5, senha);
print('senhaMD5');
print(senhaMD5);
// Retira o tipo (1, 2 ou 3) da senha do Usuário
int tipo = int.parse(senhaUsuario.substring(0, 1));
print('tipo $tipo');
// Define a possição inicial da quebra da senha
int posicaoInicialMin = 0;
int posicaoInicialMax= 0;
@@ -35,10 +39,17 @@ class MainControllers{
}
String inicio = senhaMD5.substring(posicaoInicialMin, posicaoInicialMax);
print('inicio');
print(inicio);
String fim = senhaMD5.substring(posicaoFinalMin, posicaoFinalMax);
print('fim');
print(fim);
// Faz a criptografia e concatena ela com sha1 e md5
String senhaCriptogradafa = tipo.toString() + '\$'+ grHashString(GRCryptoType.sha1, inicio + senha + fim);
print('senhaCriptogradafa');
print(senhaCriptogradafa);
// Retorna a senha criptografada
return senhaCriptogradafa;
}

View File

@@ -1,9 +1,13 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:rkm/config/color_palette.dart';
import 'package:rkm/config/routes.dart';
//Cadastro e edição do Cadastro do Cidadão, Cadastro Individual, Cadastro Domiciliar e Visita Domiciliar
class PostHttpOverrides extends HttpOverrides{
@override
HttpClient createHttpClient( context){
@@ -13,10 +17,11 @@ class PostHttpOverrides extends HttpOverrides{
}
void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
HttpOverrides.global = new PostHttpOverrides();
runApp(const MyApp());
}
//Cadastro e edição do Cadastro do Cidadão, Cadastro Individual, Cadastro Domiciliar e Visita Domiciliar
class MyApp extends StatelessWidget {
const MyApp({super.key});
@@ -31,7 +36,7 @@ class MyApp extends StatelessWidget {
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('pt', 'BR'), // Adicione os locales que você precisa
const Locale('pt', 'BR'),
],
theme: ThemeData(
primaryColor: ColorPalette.primary,

View File

@@ -1,10 +1,12 @@
class CheckModel{
int cod;
String subtitle;
bool check;
CheckModel({
required this.cod,
required this.subtitle,
required this.check
this.check = false
});
}

View File

@@ -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,
});
}

View File

@@ -6,5 +6,17 @@ class DropDownDataStringModel{
required this.cod,
required this.title
});
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is DropDownDataStringModel &&
runtimeType == other.runtimeType &&
cod == other.cod &&
title == other.title;
@override
int get hashCode => cod.hashCode ^ title.hashCode;
}

View File

@@ -1,10 +1,15 @@
import 'package:flutter/material.dart';
import 'package:rkm/config/color_palette.dart';
import 'package:rkm/config/const_variable.dart';
import 'package:rkm/screens/registers_citizen/register_citizen_screen.dart';
import 'package:rkm/screens/select_service/atendimento_domiciliar_tela.dart';
import 'package:rkm/screens/select_service/visita_domiciliar_tela.dart';
import 'package:rkm/widgets/text_default.dart';
import 'package:sqflite/sqflite.dart';
import '../service/db/db_querys.dart';
import '../service/db/db_sqlite_load.dart';
import '../widgets/appbar_default.dart';
import '../widgets/button_default.dart';
class AttendanceListScreen extends StatefulWidget {
String username;
@@ -17,20 +22,27 @@ class AttendanceListScreen extends StatefulWidget {
class _AttendanceListScreenState extends State<AttendanceListScreen> {
List visitHome = [];
List citizenUpdate = [];
List serviceHome = [];
List atendimentoDomiciliarLista = [];
List visitaDomiciliarLista = [];
List cadastroCidadaoLista = [];
List cadastrosIndividuais = [];
getData()async{
Database db = await DbSqliteLoad().intialDB();
visitHome = await db.query('VISITAS_DOMICILIARES_PROC');
citizenUpdate = await db.query('CIDADAOS WHERE SINCRONIZADO = "N"');
serviceHome =await db.query('ATENDS_DOM_PROC');
print(await db.query('ATENDS_DOM_PROC'));
// print(await db.query('VISITAS_DOMICILIARES_PROC'));
// print(await db.query('CIDADAOS WHERE SINCRONIZADO = "N"'));
print(citizenUpdate.length);
// List list = await db.rawQuery('SELECT * FROM CIDADAOS WHERE CNS = $CNS');
// visitHome = await db.query('VISITAS_DOMICILIARES');
visitaDomiciliarLista =await db.rawQuery('''
SELECT VD.*, C.*, VD.SINCRONIZADO
FROM VISITAS_DOMICILIARES VD
INNER JOIN CIDADAOS C ON VD.ID_CIDADAO = C.ID_CIDADAO
WHERE VD.SINCRONIZADO = "N"
''');
cadastroCidadaoLista = await db.query('CIDADAOS WHERE SINCRONIZADO = "N"');
cadastrosIndividuais = await db.query('CADASTROS_INDIVIDUAIS WHERE SINCRONIZADO = "N"');
atendimentoDomiciliarLista =await db.rawQuery('''
SELECT AD.*, C.*, AD.SINCRONIZADO
FROM ATENDIMENTOS_DOMICILIARES AD
INNER JOIN CIDADAOS C ON AD.ID_CIDADAO = C.ID_CIDADAO
''');
setState(() {});
}
@@ -42,58 +54,385 @@ class _AttendanceListScreenState extends State<AttendanceListScreen> {
@override
Widget build(BuildContext context) {
double altura = MediaQuery.of(context).size.height;
return Scaffold(
appBar: AppBarDefault().appbar(context, 'RKM AB - Lista Atendimentos',widget.username),
body: Container(
decoration: ConstVariable().backgroundGradient,
width: double.infinity,
height: double.infinity,
child: ListView(
height: altura,
child: Column(
children: [
Container(
width: double.infinity,
padding: ConstVariable().marginHightInput,
color: ColorPalette.white,
child: Column(
children: [
TextDefault(
text: 'Atendimentos Domiciliares: ${serviceHome.length} | Visitas Domiciliares: ${visitHome.length}',
text: 'Atendimentos Domiciliares: ${atendimentoDomiciliarLista.length} | Visitas Domiciliares: ${visitaDomiciliarLista.length}',
fontWeigth: FontWeight.bold,
color: ColorPalette.black54,
fontSize: 18,
),
// TextDefault(
// text: 'Atendimentos Odontológicos: 0 | Avaliação Elegibilidade: 0',
// fontWeigth: FontWeight.bold,
// color: ColorPalette.black54,
// fontSize: 18,
// ),
TextDefault(
text: 'Cadastros Cidadãos Realizados / Atualizados : ${citizenUpdate.length}',
text: 'Cadastros Cidadãos Realizados / Atualizados : ${cadastroCidadaoLista.length + cadastrosIndividuais.length}',
fontWeigth: FontWeight.bold,
color: ColorPalette.black54,
fontSize: 18,
),
// TextDefault(
// text: 'Fichas Complementares: 0 | Marcadores de Consumo : 0',
// fontWeigth: FontWeight.bold,
// color: ColorPalette.black54,
// fontSize: 18,
// ),
// TextDefault(
// text: 'Procedimentos Consolidados: 0 | Procedimentos Individuais : 0',
// fontWeigth: FontWeight.bold,
// color: ColorPalette.black54,
// fontSize: 18,
// ),
// TextDefault(
// text: 'Visitas Domiciliares: ${visitHome.length}',
// fontWeigth: FontWeight.bold,
// color: ColorPalette.black54,
// fontSize: 18,
// ),
],
)
),
Container(
height: altura*0.88,
child: ListView(
children: [
atendimentoDomiciliarLista.isEmpty?Container():Container(
height: atendimentoDomiciliarLista.length*80,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
itemCount: atendimentoDomiciliarLista.length,
itemBuilder: (context,i_ad){
List dataList = atendimentoDomiciliarLista[i_ad]['DATA'].toString().split('-');
String data = '${dataList[2]}/${dataList[1]}/${dataList[0]}';
return Card(
color: Colors.white,
child: Row(
children: [
Container(
height: 70,
width: 50,
decoration: BoxDecoration(
color: Color(0XFF666666),
borderRadius: BorderRadius.only(bottomLeft: Radius.circular(10),topLeft: Radius.circular(10))
),
alignment: Alignment.center,
child: TextDefault(text: 'A.D.',color: Colors.white,fontSize: 22,fontWeigth: FontWeight.bold,),
),
SizedBox(width: 10,),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextDefault(text:atendimentoDomiciliarLista[i_ad]['NOME_CIDADAO'].toString(),color: ColorPalette.black54,fontWeigth: FontWeight.w700,),
Row(
children: [
TextDefault(text:'DATA ATENDIMENTO: $data',color: ColorPalette.black54,fontWeigth: FontWeight.w700,),
SizedBox(width: 20,),
TextDefault(text:'SINCRONIZADO : ${atendimentoDomiciliarLista[i_ad]['SINCRONIZADO']}',color: ColorPalette.black54,fontWeigth: FontWeight.w700,),
],
),
],
),
Spacer(),
atendimentoDomiciliarLista[i_ad]['SINCRONIZADO']!='S'?IconButton(
icon: Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Color(0XFF990000),
borderRadius: BorderRadius.circular(50),
),
child: Icon(Icons.delete, color: Colors.white, size: 40,),
),
onPressed: ()async{
await showDialog(
context: context,
builder: (context){
return AlertDialog(
title: TextDefault(text: 'Aviso',color: ColorPalette.black54,textAlign: TextAlign.center,),
content: TextDefault(text: 'Deseja apagar esse "Atendimento Domiciliar" ?',color: ColorPalette.black54,),
actions: [
ButtonDefault(
onPressed: ()async{
Database db = await DbSqliteLoad().intialDB();
await db.delete(
'ATENDS_DOM_COMPL',
where: 'ID_ATENDIMENTO_DOMICILIAR = ?',
whereArgs: [atendimentoDomiciliarLista[i_ad]['ID_ATENDIMENTO_DOMICILIAR']],
);
await db.delete(
'ATENDS_DOM_PROC',
where: 'ID_ATENDIMENTO_DOMICILIAR = ?',
whereArgs: [atendimentoDomiciliarLista[i_ad]['ID_ATENDIMENTO_DOMICILIAR']],
);
await db.delete(
'ATENDIMENTOS_DOMICILIARES',
where: 'ID_ATENDIMENTO_DOMICILIAR = ?',
whereArgs: [atendimentoDomiciliarLista[i_ad]['ID_ATENDIMENTO_DOMICILIAR']],
);
Navigator.of(context).pop();
getData();
},
title: 'Sim',
background: ColorPalette.appBar,
borderColor: ColorPalette.appBar,
textColor: ColorPalette.white,
),
ButtonDefault(
onPressed: ()=>Navigator.of(context).pop(false),
title: 'Não',
background: ColorPalette.white,
borderColor: ColorPalette.white,
textColor: ColorPalette.black54,
),
],
);
}
);
},
):Container(),
atendimentoDomiciliarLista[i_ad]['SINCRONIZADO']!='S'?IconButton(
icon: Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.orangeAccent,
borderRadius: BorderRadius.circular(50),
),
child: Icon(Icons.edit, color: Colors.white, size: 40,),
),
onPressed: (){
Navigator.push(
context,
MaterialPageRoute(builder:(context) => AtendimentoDomiciliarTela(name: atendimentoDomiciliarLista[i_ad]['NOME_CIDADAO'],username: widget.username,dados: atendimentoDomiciliarLista[i_ad],)),
);
},
):Container(),
],
));
},
),
),
visitaDomiciliarLista.isEmpty?Container():Container(
height: visitaDomiciliarLista.length*80,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
itemCount: visitaDomiciliarLista.length,
itemBuilder: (context,i_vd){
//print(visitHome[i]);
List dataList = visitaDomiciliarLista[i_vd]['DT_ATENDIMENTO'].toString().split('-');
String data = '${dataList[2]}/${dataList[1]}/${dataList[0]}';
return Card(
color: Colors.white,
child: Row(
children: [
Container(
height: 70,
width: 50,
decoration: BoxDecoration(
color: Color(0XFF006633),
borderRadius: BorderRadius.only(bottomLeft: Radius.circular(10),topLeft: Radius.circular(10))
),
alignment: Alignment.center,
child: TextDefault(text: 'V.D.',color: Colors.white,fontSize: 22,fontWeigth: FontWeight.bold,),
),
SizedBox(width: 10,),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextDefault(text:visitaDomiciliarLista[i_vd]['NOME_CIDADAO'].toString(),color: ColorPalette.black54,fontWeigth: FontWeight.w700,),
Row(
children: [
TextDefault(text:'DATA ATENDIMENTO: $data',color: ColorPalette.black54,fontWeigth: FontWeight.w700,),
SizedBox(width: 20,),
TextDefault(text:'SINCRONIZADO : ${visitaDomiciliarLista[i_vd]['SINCRONIZADO']}',color: ColorPalette.black54,fontWeigth: FontWeight.w700,),
],
),
],
),
Spacer(),
visitaDomiciliarLista[i_vd]['SINCRONIZADO']!='S'?IconButton(
icon: Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Color(0XFF990000),
borderRadius: BorderRadius.circular(50),
),
child: Icon(Icons.delete, color: Colors.white, size: 40,),
),
onPressed: ()async{
await showDialog(
context: context,
builder: (context){
return AlertDialog(
title: TextDefault(text: 'Aviso',color: ColorPalette.black54,textAlign: TextAlign.center,),
content: TextDefault(text: 'Deseja apagar essa "Visita Domiciliar" ?',color: ColorPalette.black54,),
actions: [
ButtonDefault(
onPressed: ()async{
Database db = await DbSqliteLoad().intialDB();
await db.delete(
'VISITAS_DOMICILIARES_COMPL',
where: 'ID_VISITA_DOMICILIAR = ?',
whereArgs: [visitaDomiciliarLista[i_vd]['ID_VISITA_DOMICILIAR']],
);
await db.delete(
'VISITAS_DOMICILIARES',
where: 'ID_VISITA_DOMICILIAR = ?',
whereArgs: [visitaDomiciliarLista[i_vd]['ID_VISITA_DOMICILIAR']],
);
Navigator.of(context).pop();
getData();
},
title: 'Sim',
background: ColorPalette.appBar,
borderColor: ColorPalette.appBar,
textColor: ColorPalette.white,
),
ButtonDefault(
onPressed: ()=>Navigator.of(context).pop(false),
title: 'Não',
background: ColorPalette.white,
borderColor: ColorPalette.white,
textColor: ColorPalette.black54,
),
],
);
}
);
},
):Container(),
visitaDomiciliarLista[i_vd]['SINCRONIZADO']!='S'?IconButton(
icon: Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.orangeAccent,
borderRadius: BorderRadius.circular(50),
),
child: Icon(Icons.edit, color: Colors.white, size: 40,),
),
onPressed: (){
Navigator.push(
context,
MaterialPageRoute(builder:(context) => VisitaDomiciliarTela(name: visitaDomiciliarLista[i_vd]['NOME_CIDADAO'],username: widget.username,dados: visitaDomiciliarLista[i_vd],)),
);
},
):Container(),
],
));
},
),
),
cadastroCidadaoLista.isEmpty?Container():Container(
height: cadastroCidadaoLista.length*80,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
itemCount: cadastroCidadaoLista.length,
itemBuilder: (context,i_c){
List dataList1 = cadastroCidadaoLista[i_c]['DT_HORA_CADASTRO'].toString().split(' ');
List dataList2 = dataList1[0].split('-');
String data = '${dataList2[2]}/${dataList2[1]}/${dataList2[0]}';
return Card(
color: Colors.white,
child: Row(
children: [
Container(
height: 70,
width: 50,
decoration: BoxDecoration(
color: Color(0XFF990000),
borderRadius: BorderRadius.only(bottomLeft: Radius.circular(10),topLeft: Radius.circular(10))
),
alignment: Alignment.center,
child: TextDefault(text: 'C',color: Colors.white,fontSize: 22,fontWeigth: FontWeight.bold,),
),
SizedBox(width: 10,),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextDefault(text:cadastroCidadaoLista[i_c]['NOME_CIDADAO'].toString(),color: ColorPalette.black54,fontWeigth: FontWeight.w700,),
Row(
children: [
TextDefault(text:'DATA CADASTRO : $data',color: ColorPalette.black54,fontWeigth: FontWeight.w700,),
SizedBox(width: 20,),
TextDefault(text:'SINCRONIZADO : ${cadastroCidadaoLista[i_c]['SINCRONIZADO']}',color: ColorPalette.black54,fontWeigth: FontWeight.w700,),
],
),
],
),
Spacer(),
cadastroCidadaoLista[i_c]['ORIGEM']=='C' && cadastroCidadaoLista[i_c]['SINCRONIZADO']=='N'
?IconButton(
icon: Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Color(0XFF990000),
borderRadius: BorderRadius.circular(50),
),
child: Icon(Icons.delete, color: Colors.white, size: 40,),
),
onPressed: ()async{
await showDialog(
context: context,
builder: (context){
return AlertDialog(
title: TextDefault(text: 'Aviso',color: ColorPalette.black54,textAlign: TextAlign.center,),
content: TextDefault(text: 'Deseja apagar esse cidadão?',color: ColorPalette.black54,),
actions: [
ButtonDefault(
onPressed: ()async{
Database db = await DbSqliteLoad().intialDB();
await db.delete(
'CIDADAOS', // Substitua pelo nome da sua tabela
where: 'ID_CIDADAO = ?',
whereArgs: [cadastroCidadaoLista[i_c]['ID_CIDADAO']],
);
Navigator.of(context).pop();
getData();
},
title: 'Sim',
background: ColorPalette.appBar,
borderColor: ColorPalette.appBar,
textColor: ColorPalette.white,
),
ButtonDefault(
onPressed: ()=>Navigator.of(context).pop(false),
title: 'Não',
background: ColorPalette.white,
borderColor: ColorPalette.white,
textColor: ColorPalette.black54,
),
],
);
}
);
},
)
:Container(),
cadastroCidadaoLista[i_c]['SINCRONIZADO']=='N'?IconButton(
icon: Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.orangeAccent,
borderRadius: BorderRadius.circular(50),
),
child: Icon(Icons.edit, color: Colors.white, size: 40,),
),
onPressed: ()async {
await DBQuerys().buscaCidadao(cadastroCidadaoLista[i_c]['NOME_CIDADAO']).then((list){
// print(showResults[index]['CD_USUARIO_SUS']);
Navigator.push(
context,
MaterialPageRoute(builder:(context) => RegisterCitizenScreen(listData: list,username: widget.username,)),
);
});
},
):Container(),
],
));
},
),
),
],
),
),
],
),
),

View File

@@ -65,14 +65,25 @@ class _SyncDataScreenState extends State<SyncDataScreen> {
});
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<SyncDataScreen> {
// 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(() {

View File

@@ -2,13 +2,15 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:rkm/config/const_variable.dart';
import 'package:rkm/widgets/appbar_default.dart';
import 'package:rkm/widgets/input_text.dart';
import 'package:rkm/widgets/onbackbutton.dart';
import 'package:rkm/widgets/text_default.dart';
import 'package:sqflite/sqflite.dart';
import '../config/color_palette.dart';
import '../service/db/db_querys.dart';
import '../service/db/db_sqlite_load.dart';
import '../service/shared_preferences/shared_preferences_service.dart';
import '../widgets/button_default.dart';
import '../widgets/dropdown_button_default.dart';
import '../widgets/subtitle_containers.dart';
import '../widgets/title_containers.dart';
class EditProceduresScreen extends StatefulWidget {
@@ -24,9 +26,15 @@ class _EditProceduresScreenState extends State<EditProceduresScreen> {
var controllerProfessional = TextEditingController();
var controllerUnit = TextEditingController();
var NOME_PROFISSIONAL = TextEditingController();
var NOME_UNIDADE = TextEditingController();
List listCBO = [];
List listINEPROF = [];
String? selectCBO;
String? selectTeam;
String? INE_RESP_CADASTRO;
String? date;
int idUsuario = 0;
String idUnidade = '';
escolherprazoInicio(BuildContext context) async {
var pickDate = await showDatePicker(
@@ -48,6 +56,65 @@ class _EditProceduresScreenState extends State<EditProceduresScreen> {
return formattedDate;
}
getUser()async{
final PrefService _prefService = PrefService();
_prefService.readCacheIDUser().then((value){
if(value != null){
idUsuario = int.parse(value);
}
}).then((value)async{
await DBQuerys().buscaProfissionalCadInd(idUsuario).then((list){
// ID_PROFISSIONAL = list['ID_PROFISSIONAL'];
NOME_PROFISSIONAL.text = list['NOME_PROFISSIONAL'];
// String CNS_PROFISSIONAL = list['CNS_PROFISSIONAL'];
// if(CNS_PROFISSIONAL == 999999999999999 || CNS_PROFISSIONAL == '999999999999999'){
// CNS_VALIDO = true;
// }
loadCBO();
});
});
_prefService.readCacheUnidade().then((value){
if(value!=null){
idUnidade = value[0];
NOME_UNIDADE.text = value[1];
}
});
}
loadCBO()async{
Database dbcbo = await DbSqliteLoad().intialDB();
var query = 'SELECT * FROM PROFISSIONAIS_CBOS WHERE ID_PROFISSIONAL = $idUsuario';
List listcbo = await dbcbo.rawQuery(query);
if(listcbo.length!=0){
for(int i = 0; listcbo.length>i;i++){
await DBQuerys().buscaCBOSProfissional(listcbo[i]['CODIGO_CBO']).then((cbo)async{
if(cbo.length!=0){
listCBO.add(cbo[0]['DESCRICAO_CBO']+' - '+listcbo[i]['CODIGO_CBO'].toString());
}
});
}
}
loadEquipe();
}
loadEquipe()async{
List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
for(int i=0; list.length > i;i++){
INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}';
listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}');
}
setState(() {});
}
@override
void initState() {
super.initState();
getUser();
}
@override
Widget build(BuildContext context) {
@@ -137,7 +204,7 @@ class _EditProceduresScreenState extends State<EditProceduresScreen> {
padding: EdgeInsets.all(5),
width: width*0.5,
color: ColorPalette.titleContainer,
child: TextDefault(text: 'ADMINISTRADOR',color: ColorPalette.black54,fontSize: 15,),
child: TextDefault(text: NOME_PROFISSIONAL.text,color: ColorPalette.black54,fontSize: 15,),
)
],
),
@@ -159,7 +226,7 @@ class _EditProceduresScreenState extends State<EditProceduresScreen> {
width: width*0.5,
color: ColorPalette.titleContainer,
child: TextDefault(
text: 'USF PINHAL - EMILIA STEPHANI SIMIONATO',
text: NOME_UNIDADE.text,
color: ColorPalette.black54,
fontSize: 15,
),
@@ -188,7 +255,7 @@ class _EditProceduresScreenState extends State<EditProceduresScreen> {
width: width*0.4,
widthContainer: width*0.3,
select: selectCBO,
list: ConstVariable().itensCBO,
list: listCBO,
onChanged: (value){
setState(() {
selectCBO = value!;
@@ -218,11 +285,11 @@ class _EditProceduresScreenState extends State<EditProceduresScreen> {
fontSize: 15,
width: width*0.5,
widthContainer: width*0.4,
select: selectTeam,
list: [],
select: INE_RESP_CADASTRO,
list: listINEPROF,
onChanged: (value){
setState(() {
selectTeam = value!;
INE_RESP_CADASTRO = value!;
});
},
),

View File

@@ -30,7 +30,7 @@ class _HomeScreenState extends State<HomeScreen> {
loadCitizen()async{
await DbSqliteLoad().intialDB().then((db)async {
dataCitizen = await db.query('CIDADAOS ORDER BY NOME_CIDADAO');
print(dataCitizen.length);
// print(dataCitizen.length);
// print(await db.rawQuery("SELECT * FROM CIDADAOS"));
});
searchCitizen();
@@ -38,6 +38,7 @@ class _HomeScreenState extends State<HomeScreen> {
}
searchCitizen()async{
if(inputSearch.text.isNotEmpty){
showResults =[];
for (int i =0;dataCitizen.length>i;i++) {
@@ -57,6 +58,7 @@ class _HomeScreenState extends State<HomeScreen> {
){
if(showResults.length<10){
showResults.add(dataCitizen[i]);
// print(dataCitizen[i]['ORIGEM']);
}
}
}
@@ -64,8 +66,11 @@ class _HomeScreenState extends State<HomeScreen> {
});
}else{
setState(() {
if(dataCitizen.isNotEmpty){
for(int i = 0;i<10;i++){
showResults.add(dataCitizen[i]);
// print(dataCitizen[i]['ORIGEM']);
}
}
});
}
@@ -150,7 +155,7 @@ class _HomeScreenState extends State<HomeScreen> {
numberMedicalRecord: '${showResults[index]['NUM_PRONTUARIO']}'==''?'-----':'${showResults[index]['NUM_PRONTUARIO']}',
onTap: ()async {
await DBQuerys().buscaCidadao(showResults[index]['NOME_CIDADAO']).then((list){
print(showResults[index]['CD_USUARIO_SUS']);
// print(showResults[index]['CD_USUARIO_SUS']);
Navigator.push(
context,
MaterialPageRoute(builder:(context) => RegisterCitizenScreen(listData: list,username: widget.username,)),

View File

@@ -50,16 +50,30 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
initLoading()async{
await ApiDataLoad().loadPerm(urlAPI,mode,nameCityApi,username).then((response)async{
print(response);
if(response['status'] == 0){
AlertDialogDefault().alert(context, 'Erro', 'Permissão negada', 'Voltar');
} else if(response['status'] == 1 && response['load_perm'] == "S") {
await ApiDataLoad().loadEtniasIndigenas(urlAPI, mode, nameCityApi, username).then((value)async{
List list = value;
List<Map<String, dynamic>> rows = [];
if(list.length !=0) {
setState(() {
messageSteps = "Etapa 1 de 12 - Gravando as Etnias Indigenas no Aplicativo";
});
for (int i = 0; i < list.length; i++) {
Map<String, dynamic> row = {
'ID_ETNIA_INDIGENA': list[i]['idEtniaIndigena'].toString().trim(),
'DESC_ETNIA_INDIGENA': list[i]['descEtniaIndigena'].toString().trim(),
};
rows.add(row);
countProg = 0.05;
setState(() {});
}
}
await DbSqliteLoad().saveEtniasIndigenasDB(rows).then((value)async{
await ApiDataLoad().loadUnidades(urlAPI,mode,nameCityApi,username).then((value)async{
List list = value;
List<Map<String, dynamic>> rows = [];
if(list.length !=0){
setState(() {
messageSteps = "Etapa 1 de 11 - Gravando as Unidades no Aplicativo";
messageSteps = "Etapa 2 de 12 - Gravando as Unidades no Aplicativo";
});
for (int i = 0; i < list.length; i++) {
Map<String, dynamic> row = {
@@ -68,8 +82,8 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
'CNES_UNIDADE': list[i]['nrCNES']
};
rows.add(row);
countProg = 0.1;
setState(() {});
// countProg = 0.1;
// setState(() {});
}
await DbSqliteLoad().saveUnidadesDB(rows).then((value)async{
await ApiDataLoad().loadProcedimentos(urlAPI,mode,nameCityApi,username).then((value)async{
@@ -77,7 +91,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
List<Map<String, dynamic>> rows = [];
if(list.length !=0){
setState(() {
messageSteps = "Etapa 2 de 11 - Gravando os Procedimentos no Aplicativo";
messageSteps = "Etapa 3 de 12 - Gravando os Procedimentos no Aplicativo";
});
for (int i = 0; i < list.length; i++) {
Map<String, dynamic> row = {
@@ -100,7 +114,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
List<Map<String, dynamic>> rows = [];
if(list.length !=0){
setState(() {
messageSteps = "Etapa 3 de 11 - Gravando os Procedimentos Registros no Aplicativo";
messageSteps = "Etapa 4 de 12 - Gravando os Procedimentos Registros no Aplicativo";
});
print('finalizou saveProceduresRegisterDB');
for (int i = 0; i < list.length; i++) {
@@ -119,7 +133,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
List<Map<String, dynamic>> rows = [];
if(list.length !=0){
setState(() {
messageSteps = "Etapa 4 de 11 - Gravando os CIDs no Aplicativo";
messageSteps = "Etapa 5 de 12 - Gravando os CIDs no Aplicativo";
});
for (int i = 0; i < list.length; i++) {
Map<String, dynamic> row = {
@@ -139,7 +153,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
List<Map<String, dynamic>> rows = [];
if(list.length !=0){
setState(() {
messageSteps = "Etapa 5 de 11 - Gravando os Procedimentos CIDs no Aplicativo";
messageSteps = "Etapa 6 de 12 - Gravando os Procedimentos CIDs no Aplicativo";
});
for (int i = 0; i < list.length; i++) {
Map<String, dynamic> row = {
@@ -158,7 +172,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
List<Map<String, dynamic>> rows = [];
if(list.length !=0){
setState(() {
messageSteps = "Etapa 6 de 11 - Gravando os CBOs no Aplicativo";
messageSteps = "Etapa 8 de 12 - Gravando os CBOs no Aplicativo";
});
for (int i = 0; i < list.length; i++) {
Map<String, dynamic> row = {
@@ -177,7 +191,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
List<Map<String, dynamic>> rows = [];
if(list.length !=0){
setState(() {
messageSteps = "Etapa 7 de 11 - Gravando os Procedimentos CBO no Aplicativo";
messageSteps = "Etapa 8 de 12 - Gravando os Procedimentos CBO no Aplicativo";
});
for (int i = 0; i < list.length; i++) {
Map<String, dynamic> row = {
@@ -196,7 +210,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
List<Map<String, dynamic>> rows = [];
if(list.length != 0){
setState(() {
messageSteps = "Etapa 8 de 11 - Gravando os CIAPs no Aplicativo";
messageSteps = "Etapa 9 de 12 - Gravando os CIAPs no Aplicativo";
});
for(int i=0;list.length > i;i++){
Map<String, dynamic> row = {
@@ -216,7 +230,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
List<Map<String, dynamic>> rows = [];
if(list.length!=0){
setState(() {
messageSteps = "Etapa 9 de 11 - Gravando os Municípios no Aplicativo";
messageSteps = "Etapa 10 de 12 - Gravando os Municípios no Aplicativo";
});
for(int i=0;list.length > i;i++){
Map<String, dynamic> row = {
@@ -237,7 +251,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
List<Map<String, dynamic>> rows = [];
if(list.length!=0){
setState(() {
messageSteps = "Etapa 10 de 11 - Gravando as Equipes no Aplicativo";
messageSteps = "Etapa 11 de 12 - Gravando as Equipes no Aplicativo";
});
for(int i=0;list.length > i;i++){
Map<String, dynamic> row = {
@@ -263,7 +277,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
List<Map<String, dynamic>> rows = [];
if(list.length!=0) {
setState(() {
messageSteps ="Etapa 11 de 11 - Gravando os Profissionais das Equipes no Aplicativo";
messageSteps ="Etapa 12 de 12 - Gravando os Profissionais das Equipes no Aplicativo";
});
for(int i=0;list.length > i;i++){
Map<String, dynamic> row = {
@@ -336,7 +350,8 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
AlertDialogDefault().alert(context, 'Error', 'Unidades não carregadas, tente novamente!', 'Voltar');
}
});
}
});
});
});
}

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:rkm/controllers/main_controllers.dart';
import 'package:rkm/screens/home_screen.dart';
import 'package:rkm/service/api/url_api_const.dart';
@@ -42,6 +43,7 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
final PrefService _prefService = PrefService();
checkLogin()async{
if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){
if(selectCity!=null){
_prefService.createCacheModel(inputUser.text,inputPassword.text,selectCity!,mode);
@@ -61,7 +63,8 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
urlAPI = 'http://${inputIP.text}:${inputPort.text}/api/atb/';
}
await ApiDataLoad().apiConect(urlAPI,mode,nameCityApi,inputUser.text).then((response) async {
// print("erre : "+response.toString());
print('response');
print(response);
if(response == 'Erro' || response.toString() == 'Error: -902 - I/O error during "open" operation for file "/bases/conectasus/extrema/SISTEMA.FDB" Error while trying to open file No such file or directory'){
setState(() {
loading = false;
@@ -70,7 +73,11 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
}else if(inputUser.text == inputPassword.text || response['bloqueio']==1){
setState(() {
loading = false;
if( response['bloqueio']==1){
error = 'Usuário bloqueado/usuário e/ou senha incorreta';
}else if(inputUser.text == inputPassword.text){
error = 'Usuário e senha não podem ser idênticas';
}
});
}else if(response['status']==0) {
setState(() {
@@ -78,14 +85,14 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
error = 'Usuário não encontrado';
});
}else if(response['status']==1) {
// print('aqui 1');
// print(response);
print('aqui 1');
print(response);
setState((){
error = '';
});
//verificar se a criptografia identificou se a senha está correta
print('chegou');
if(MainControllers().encrypt(inputPassword.text,response['userPass']) == response['userPass']){
// 'print'(EncryptPassword().encrypt(inputPassword.text,response['userPass']));
setState(() {
loading = false;
});
@@ -199,6 +206,9 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
width: width*0.6,
colorBorder: Colors.white,
onChanged: (v)=>setState((){}),
inputFormatters: [
FilteringTextInputFormatter.deny(RegExp(r'\s')),
],
),
TitleInput(title:'Senha'),
InputText(

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:intl/intl.dart';
import 'package:rkm/screens/home_screen.dart';
import 'package:rkm/screens/login/sync_login_screen.dart';
@@ -39,6 +40,7 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
String codState = '';
String passwordDB = '';
String userDB = '';
String competencia = '';
recupDB()async{
await DbSqliteLoad().intialDB().then((db)async{
@@ -53,6 +55,11 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
codState = list[0]['COD_STATE'];
codCityIbge = list[0]['COD_IBGE'];
});
if(widget.listControl.isNotEmpty){
String ano = widget.listControl[0]['COMPETENCIA'].toString().substring(0, 4);
String mes = widget.listControl[0]['COMPETENCIA'].toString().substring(4, 6);
competencia = '$mes/$ano';
}
setState(() {});
}
@@ -135,6 +142,9 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
width: width*0.6,
colorBorder: Colors.white,
onChanged: (v)=>setState((){}),
inputFormatters: [
FilteringTextInputFormatter.deny(RegExp(r'\s')),
],
),
TitleInput(title:'Senha'),
InputText(
@@ -181,7 +191,7 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
padding: EdgeInsets.symmetric(vertical: 5),
width: width*0.6,
child: TextDefault(
text: 'Competência: '+widget.listControl[0]['COMPETENCIA'].toString(),
text: 'Competência: $competencia',
fontWeigth: FontWeight.bold,
color: Colors.black,
textAlign: TextAlign.center,
@@ -192,7 +202,7 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
padding: EdgeInsets.symmetric(vertical: 5),
width: width*0.6,
child: TextDefault(
text: 'Área: '+widget.listControl[0]['AREA'].toString()+' - Microárea: '+widget.listControl[0]['MICROAREA'].toString(),
text: 'Área: '+widget.listControl[0]['AREA_DESCRICAO'].toString()+' - Microárea: '+widget.listControl[0]['MICROAREA_DESCRICAO'].toString(),
fontWeigth: FontWeight.bold,
color: Colors.black,
textAlign: TextAlign.center,

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:rkm/screens/sync_init_screen.dart';
import 'package:rkm/config/color_palette.dart';
import 'package:rkm/config/const_variable.dart';
@@ -68,18 +69,6 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
});
await ApiDataLoad().apiConect(urlAPI,mode,nameCityApi,inputUser.text).then((response) async {
if(inputUser.text == inputPassword.text || response['bloqueio']==1){
setState(() {
error = 'Usuário bloqueado/senha incorreta';
});
}else if(response['status']==0) {
setState(() {
error = 'Usuário não encontrado';
});
}else if(response['status']==1) {
setState((){
error = '';
});
if(MainControllers().encrypt(inputPassword.text,response['userPass']) == response['userPass']){
setState(() {
loading = false;
@@ -93,7 +82,6 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
});
});
}
}
});
}else{
setState(() {
@@ -151,7 +139,11 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
for(int i=0; listUnit.length > i;i++){
if(listUnit[i] == selectUnit){
idUnidade = searchUnitCodList[i].toString();
_prefService.createCacheUnidade(idUnidade,selectUnit!);
print('idUnidade: $idUnidade / select $selectUnit');
_prefService.createCacheUnidade(idUnidade,selectUnit!).then((onValue){
print('onValeu ${onValue.toString()}');
});
break;
}
}
if(idUnidade!=''){
@@ -244,6 +236,9 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
width: width*0.6,
colorBorder: Colors.white,
onChanged: (v)=>setState((){}),
inputFormatters: [
FilteringTextInputFormatter.deny(RegExp(r'\s')),
],
),
TitleInput(title:'Senha'),
InputText(
@@ -266,7 +261,10 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
validatorDropDown = true;
selectTeam = null;
});
_prefService.removeUnidade().then((onValue){
print('remove unidade');
getTeam();
});
},
),
TitleInput(title:'Equipe'),
@@ -278,7 +276,18 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
onChanged: (value){
setState(() {
selectTeam = value!;
print('ID_ATB_AREA');
print(selectTeam!.ID_ATB_AREA.toString());
print('AREA');
print(selectTeam!.AREA.toString());
print('ID_ATB_MICROAREA');
print(selectTeam!.ID_ATB_MICROAREA.toString());
print('MICROAREA');
print(selectTeam!.MICROAREA.toString());
print('UNIDADE');
print(selectTeam!.ID_UNIDADE.toString());
print('EQUIPE');
print(selectTeam!.ID_EQUIPE.toString());
});
},
),

View File

@@ -2,8 +2,10 @@ import 'package:brasil_fields/brasil_fields.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:intl/intl.dart';
import 'package:mask_text_input_formatter/mask_text_input_formatter.dart';
import 'package:rkm/config/color_palette.dart';
import 'package:rkm/config/const_variable.dart';
import 'package:rkm/models/drop_down_data_string_model.dart';
import 'package:rkm/models/pais_modelo.dart';
import 'package:rkm/widgets/alert_dialog_default.dart';
import 'package:rkm/widgets/button_default.dart';
@@ -16,6 +18,7 @@ import '../../service/db/db_sqlite_load.dart';
import '../../service/db/db_sqlite_sync.dart';
import '../../service/shared_preferences/shared_preferences_service.dart';
import '../../widgets/appbar_default.dart';
import '../../widgets/dropdown_etnia_indigena.dart';
import '../../widgets/dropdown_with_subtitle.dart';
import '../../widgets/error_default.dart';
import '../../widgets/input_search_text.dart';
@@ -108,6 +111,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
String? selectMaritalStatus;
int? selectMaritalStatusCod;
String? selectBreed;
DropDownDataStringModel? selectEtniaIndigena;
int? selectBreedCod;
String? selectScooling;
int? selectScoolingCod;
@@ -146,6 +150,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
List<String> listScooling = [];
List<String> listBreed = [];
List<String> listMaritalStatus = [];
List<DropDownDataStringModel> listEtniasIndigenas = [];
String idUnidade = '';
String codSus = '';
bool edit = false;
@@ -190,13 +195,35 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
return formattedDate;
}
getEtniasIndigenas()async{
Database db = await DbSqliteLoad().intialDB();
var query = "SELECT * FROM ETNIAS_INDIGENAS";
List list = await db.rawQuery(query);
for(int i = 0; list.length > i ; i++ ){
listEtniasIndigenas.add(DropDownDataStringModel(cod: list[i]['ID_ETNIA_INDIGENA'], title: list[i]['DESC_ETNIA_INDIGENA']));
}
print('antes');
print(listEtniasIndigenas.length);
List<DropDownDataStringModel> listaSemDuplicatas = listEtniasIndigenas.toSet().toList();
listEtniasIndigenas = listaSemDuplicatas;
print('depois');
print(listEtniasIndigenas.length);
if(widget.listData.length!=0){
getData();
edit = true;
showTab = true;
}
}
getUnit()async{
Database db = await DbSqliteLoad().intialDB();
var queryControl = "SELECT * FROM CONTROLE_INTERNO";
List listControl = await db.rawQuery(queryControl);
final PrefService _prefService = PrefService();
_prefService.readCacheUnidade().then((listUnidade)async{
idUnidade =listUnidade[0];
idUnidade =listUnidade[0].toString();
});
setState(() {
unitController.text = listControl[0]['NOME_UNIDADE'];
@@ -207,13 +234,11 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
Database db = await DbSqliteLoad().intialDB();
var queryCity = "SELECT * FROM ARGS";
List listCity = await db.rawQuery(queryCity);
// print(listCity);
setState(() {
cityController.text = '${listCity[0]['NAME_CITY_FRONT']} - ${listCity[0]['COD_STATE']}'.toUpperCase();
codIBGEController.text = listCity[0]['COD_IBGE'].toString();
});
String city = MainControllers().replaceDefaul(listCity[0]['NAME_CITY_FRONT']);
// print(city);
resultListResid = await DBQuerys().buscaMunicipioporNome(city);
}
@@ -229,7 +254,6 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
villageDB.add(widget.listData[0]['NO_BAIRRO_LOGR']);
}
}
// print(villageDB);
setState(() {});
}
@@ -240,16 +264,12 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
for(int i=0; list.length > i;i++){
typeStreetDB.add('${list[i]['NO_LOGR_TIPO']}');
}
// print('oque');
// print(typeStreetDB);
setState(() {});
}
loadStreetDB()async{
streetDB=[];
Database db = await DbSqliteLoad().intialDB();
// var query = "SELECT * FROM EQUIPES JOIN PROFISSIONAIS_EQUIPE ON PROFISSIONAIS_EQUIPE.ID_EQUIPE = EQUIPES.ID_EQUIPE WHERE ID_UNIDADE = $idUnidade AND ID_PROFISSIONAL = $idUsuario";
// {ID_LOGR_ENDERECO: 14, ID_LOGR_TIPO: 27, DESC_LOGR_ENDERECO: NICOLAU MAROTTI, ID_BAIRRO: 135},
var query = "SELECT * FROM LOGRADOUROS_ENDERECOS WHERE ID_BAIRRO = $idBairro AND ID_LOGR_TIPO = $idTipo ORDER BY DESC_LOGR_ENDERECO";
List list = await db.rawQuery(query);
@@ -339,14 +359,20 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
checkCNS = 'ok';
}
if((selectClassification!='OUTRO MUNICIPIO' && selectCountry == 'BRASIL' && selectStreet == null) ||
(selectStreet!=null && (cepController.text.isEmpty || cepController.text.length!=8)) ||
(selectStreet!=null && numberController.text.isEmpty) ||
(selectClassification!='OUTRO MUNICIPIO' && selectStreet!=null && (cepController.text.isEmpty || cepController.text.length!=10)) ||
(selectClassification!='OUTRO MUNICIPIO' && selectStreet!=null && numberController.text.isEmpty) ||
(selectTypeStreet == null && selectClassification!='OUTRO MUNICIPIO') ||
(selectVillage == null && (selectCountry == 'BRASIL' && selectClassification!='OUTRO MUNICIPIO')) ||
(cityController.text.isEmpty && selectCountry!='OUTRO') ||
selectCountry == null
){
checkClassification = true;
print('selectClassification: $selectClassification');
print('selectCountry: $selectCountry');
print('selectStreet: $selectStreet');
print('cepController: ${cepController.text}');
print('selectVillage: $selectVillage');
print('cityController: ${cityController.text}');
print('erro no end');
}
@@ -390,8 +416,6 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
}
//sdsafdsf
saveCitizen()async{
print('NISController.text');
print(NISController.text);
Map<String, dynamic> row = {
'ID_CIDADAO' : idCidadao,
'CD_USUARIO_SUS' : codSus,
@@ -406,6 +430,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
'NO_MUNICIPIO_NASC' : resultListNasc[0]['NO_MUNICIPIO'],
'ESTADO_UF_NASC' : resultListNasc[0]['UF_ESTADO'],
'ID_ETNIA' : selectBreedCod,
'ID_ETNIA_INDIGENA' : selectEtniaIndigena==null?0:selectEtniaIndigena!.cod.toString().trim(),
'ID_ESCOLARIDADE' : selectScoolingCod,
'ID_DEFICIENCIA' : selectDeficiencyCod,
'NOME_MAE' : nameMotherController.text,
@@ -426,7 +451,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
'NO_BAIRRO_LOGR' : selectVillage,
'ID_LOGR_TIPO' : idTipo,
'NOME_LOGR' : selectStreet,
'CEP_LOGR' : cepController.text.isNotEmpty?int.parse(cepController.text):0,
'CEP_LOGR' : cepController.text.isNotEmpty?int.parse(cepController.text.replaceAll('-', '').replaceAll('.', '')):0,
'NUMERO_LOGR' : numberController.text.isNotEmpty && numberController.text!='S/N'?int.parse(numberController.text):0,
'LOTEAMENTO_LOGR' : selectSubdivision,
'COMPL_LOGR' : complementController.text,
@@ -440,10 +465,10 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
'NUM_RECADO' : messageController.text.isNotEmpty?int.parse(messageController.text):0,
'EMAIL' : emailController.text,
'OBSERVACOES' : observationController.text,
'CPF' : CPFController.text.isNotEmpty?int.parse(CPFController.text):0,
'CPF' : CPFController.text.isNotEmpty?int.parse(CPFController.text.replaceAll('.', '').replaceAll('-', '')):0,
'CNS' : checkCNS == 'ok'&& CNSController.text.isNotEmpty?int.parse(CNSController.text):999999999999999,
'TITULO_ELEITOR' : voterController.text,
'RG_NUMERO' : RGController.text.isNotEmpty?int.parse(RGController.text):0,
'RG_NUMERO' : RGController.text.isNotEmpty && RGController.text!='null'?int.parse(RGController.text):0,
'RG_COMPLEMENTO' : RGComplementController.text,
'RG_UF' : selectRGUF,
'RG_ORGAO' : RGOrganController.text,
@@ -467,7 +492,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
'DT_OBITO' : dateDeathDB,
'DECLARACAO_OBITO' : '',
'BLOQUEIO' : enableBlocked?1:0,
'ORIGEM' : 'A',
'ORIGEM' : editing?'A':'C',
'DT_HORA_CADASTRO' : DateTime.now().toString(),
'SINCRONIZADO' : 'N',
};
@@ -496,6 +521,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
'OK'
);
setState(() {
edit = true;
showTab = true;
});
// print(value);
@@ -521,8 +547,6 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
}
getData()async{
// print('passou');
// print(widget.listData[0]['ID_USUARIO_CADASTRO']);
idCidadao = widget.listData[0]['ID_CIDADAO'];
codSus = widget.listData[0]['CD_USUARIO_SUS'];
nameController.text = widget.listData[0]['NOME_CIDADAO'];
@@ -538,6 +562,9 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
}
}
spouseController.text = widget.listData[0]['NOME_CONJUGE'];
if(spouseController.text.isNotEmpty){
enableSpouse = true;
}
selectNaturalityCod = widget.listData[0]['NACIONALIDADE'];
if(selectNaturalityCod==1){
selectNaturality = 'BRASILEIRO';
@@ -558,6 +585,18 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
selectBreed = ConstVariable().listBreed[i].title;
}
}
if(widget.listData[0]['ID_ETNIA_INDIGENA']!=null &&widget.listData[0]['ID_ETNIA_INDIGENA']!=''){
print('${widget.listData[0]['ID_ETNIA_INDIGENA']}');
for(int i = 0; listEtniasIndigenas.length >i;i++){
if(listEtniasIndigenas[i].cod == widget.listData[0]['ID_ETNIA_INDIGENA'].toString().trim()){
selectEtniaIndigena = DropDownDataStringModel(cod: listEtniasIndigenas[i].cod.toString().trim(), title: listEtniasIndigenas[i].title.toString().trim());
print('load');
print(selectEtniaIndigena!.cod);
print(selectEtniaIndigena!.title);
}
}
}
for(int i = 0;ConstVariable().listScooling.length >i;i++){
if(ConstVariable().listScooling[i].cod == widget.listData[0]['ID_ESCOLARIDADE']){
selectScoolingCod = ConstVariable().listScooling[i].cod;
@@ -595,12 +634,16 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
selectSubdivisionCOD = widget.listData[0]['CLASSIFICACAO_SUB']=='null'?0:widget.listData[0]['CLASSIFICACAO_SUB'];
}
numberFamilyController.text = widget.listData[0]['NUM_FAMILIA'].toString();
if(widget.listData[0]['ID_PAIS_RESID']!=0 && widget.listData[0]['ID_PAIS_RESID']!=null){
for(int i = 0; ConstVariable().paises.length > i;i++){
if(ConstVariable().paises[i].ID_PAIS_RESID == widget.listData[0]['ID_PAIS_RESID']){
print('ID_PAIS_RESID');
print(widget.listData[0]['ID_PAIS_RESID']);
selectPaisResidencia = ConstVariable().paises[i].PAIS;
selectCountry = ConstVariable().paises[i];
print(selectCountry!.ID_PAIS_RESID);
print(selectCountry!.PAIS);
// print(selectCountry!.ID_PAIS_RESID);
// print(selectCountry!.PAIS);
}
}
}
@@ -617,7 +660,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
}
List listTypeStreet = await DBQuerys().buscaTipoLogradouroPorId(idTipo);
selectTypeStreet = listTypeStreet[0]['NO_LOGR_TIPO'];
cepController.text = widget.listData[0]['CEP_LOGR'].toString()=='null'?'': widget.listData[0]['CEP_LOGR'].toString();
cepController.text = widget.listData[0]['CEP_LOGR'].toString()=='null'?'': cepfMaskFormatter.maskText(widget.listData[0]['CEP_LOGR'].toString());
numberController.text = widget.listData[0]['NUMERO_LOGR'].toString()??'';
// print('numberController');
// print(numberController.text);
@@ -642,15 +685,16 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
messageController.text = widget.listData[0]['NUM_RECADO'].toString()=='null'?'':widget.listData[0]['NUM_RECADO'].toString();
emailController.text = widget.listData[0]['EMAIL'];
observationController.text = widget.listData[0]['OBSERVACOES'];
CPFController.text = widget.listData[0]['CPF'].toString();
CPFController.text = cpfMaskFormatter.maskText(widget.listData[0]['CPF'].toString());
CNSController.text = widget.listData[0]['CNS'];
voterController.text = widget.listData[0]['TITULO_ELEITOR']==null?'':widget.listData[0]['TITULO_ELEITOR'].toString()??'';
RGController.text = widget.listData[0]['RG_NUMERO'].toString()=='null'?'':widget.listData[0]['RG_NUMERO'].toString();
RGComplementController.text = widget.listData[0]['RG_COMPLEMENTO'].toString();
selectRGUF = widget.listData[0]['RG_UF']??'';
RGController.text = widget.listData[0]['RG_NUMERO'].toString()==null?'':widget.listData[0]['RG_NUMERO'].toString();
RGComplementController.text = widget.listData[0]['RG_COMPLEMENTO'].toString()==null?'':widget.listData[0]['RG_COMPLEMENTO'].toString();
selectRGUF = widget.listData[0]['RG_UF']??'--';
RGOrganController.text = widget.listData[0]['RG_ORGAO']==null?'':widget.listData[0]['RG_ORGAO'];
RGDateController.text = widget.listData[0]['RG_DATA_EMISSAO']==null?'':widget.listData[0]['RG_DATA_EMISSAO'];
RGDateDB = RGDateController.text;
if(widget.listData[0]['TIPO_CERTIDAO'] is int){
selectTypeCertificateCod = widget.listData[0]['TIPO_CERTIDAO'];
}else{
@@ -660,9 +704,10 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
for(int i = 0;ConstVariable().itensCertificate.length >i;i++){
if(ConstVariable().itensCertificate[i].cod == selectTypeCertificateCod){
selectTypeCertificate = ConstVariable().itensCertificate[i].title;
}
break;
}
}
numberCertificateController.text = widget.listData[0]['NUM_CERTIDAO']??'';
nameCertificateController.text = widget.listData[0]['CARTORIO_CERTIDAO']??'';
bookCertificateController.text = widget.listData[0]['LIVRO_CERTIDAO']??'';
@@ -684,22 +729,27 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
setState(() {});
}
var cpfMaskFormatter = MaskTextInputFormatter(
mask: '###.###.###-##',
filter: { "#": RegExp(r'[0-9]') },
);
var cepfMaskFormatter = MaskTextInputFormatter(
mask: '##.###-###',
filter: { "#": RegExp(r'[0-9]') },
);
@override
void initState() {
super.initState();
searchCityBirthController.addListener(_searchCityBirth);
searchCityController.addListener(_searchCity);
getEtniasIndigenas();
getCity();
getUnit();
loadVillgeDB();
loadTypeStreetDB();
loadSubdivisionsDB();
loadLists();
if(widget.listData.length!=0){
getData();
edit = true;
showTab = true;
}
}
@override
@@ -709,7 +759,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
double width = MediaQuery.of(context).size.width;
return WillPopScope(
onWillPop: () async => await OnBackButton().onBackButton(context, widget.username),
onWillPop:edit?null: () async => await OnBackButton().onBackButton(context, widget.username),
child: Scaffold(
appBar: AppBarDefault().appbar(context, 'RKM AB - Cadastro Cidadão',widget.username),
body: Container(
@@ -774,7 +824,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
margin: EdgeInsets.all(10),
child: Column(
children: [
TitleContainers(title: 'Indentificação'),
TitleContainers(title: 'Identificação'),
Row(
children: [
Container(
@@ -882,6 +932,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
});
},
),
InputWithSubtitle(
controller: spouseController,
subtitle: 'Cônjuge',
@@ -1067,6 +1118,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
for(int i = 0;ConstVariable().listBreed.length >i;i++){
if(ConstVariable().listBreed[i].title == selectBreed){
selectBreedCod = ConstVariable().listBreed[i].cod;
selectEtniaIndigena = null;
print(selectBreedCod);
}
}
@@ -1074,6 +1126,20 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
},
),
selectBreed==null&& mandatory?ErrorDefault():Container(),
DropDownEtniaIndigena(
title: 'Etnia Indígena',
width: width*0.69,
list: listEtniasIndigenas,
select: selectEtniaIndigena,
onChanged:!edit&&selectBreedCod!=5?null: (value){
setState(() {
selectEtniaIndigena = value!;
print(selectEtniaIndigena!.cod);
print(selectEtniaIndigena!.title);
});
},
),
selectBreedCod==5 &&selectEtniaIndigena==null && mandatory?ErrorDefault():Container(),
DropdownWithSubtitle(
list: listScooling,
subtitle: 'Escolaridade',
@@ -1127,7 +1193,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
enabled: !enableMother && !edit,
onChanged: (v)=>setState((){}),
),
!enableMother&& mandatory?ErrorDefault():Container(),
!enableMother && nameMotherController.text.isEmpty && mandatory?ErrorDefault():Container(),
SwitchWithSubtitle(
width: width*0.65,
title: 'Desconhece Mãe',
@@ -1153,7 +1219,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
enabled: !enableFather && !edit,
onChanged: (v)=>setState((){}),
),
!enableFather&& mandatory?ErrorDefault():Container(),
!enableFather&& nameFatherController.text.isEmpty && mandatory?ErrorDefault():Container(),
SwitchWithSubtitle(
width: width*0.65,
title: 'Desconhece Pai',
@@ -1306,12 +1372,12 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
mainAxisSize: MainAxisSize.min,
children: [
DropdownWithSubtitle(
subtitle: 'Pais de Residência',
subtitle: 'País de Residência',
select: selectPaisResidencia,
widthSubtitle: width*0.6,
widthDropdown: width*0.69,
widthContainerDropdown: width*0.6,
hintDropdown: 'Pais de Residência',
hintDropdown: 'País de Residência',
onChanged:selectClassification!='OUTRO MUNICIPIO'?null:(value){
setState(() {
selectPaisResidencia = value;
@@ -1344,7 +1410,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
'OUTRO',
]
),
selectCountry==null&& mandatory?ErrorDefault():Container(),
selectPaisResidencia==null&& mandatory?ErrorDefault():Container(),
GestureDetector(
onTap: selectClassification!='OUTRO MUNICIPIO'|| cityController.text == 'MUNICIPIO IGNORADO'?null: (){
searchCityController.text = '';
@@ -1481,7 +1547,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
},
list: typeStreetDB
),
selectTypeStreet!='OUTRO MUNICIPIO' && selectTypeStreet == null && selectCountry == null&& mandatory?ErrorDefault():Container(),
selectClassification!='OUTRO MUNICIPIO' && selectTypeStreet == null && selectCountry == null && mandatory?ErrorDefault():Container(),
DropdownWithSubtitle(
subtitle: 'Nome do Logradouro',
select: selectStreet,
@@ -1500,7 +1566,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
typeInput: 'cep',
controller: cepController,
subtitle: 'CEP(só números)',
errorInput: selectClassification!='OUTRO MUNICIPIO'&& cepController.text.isEmpty?'Campo Obrigatório':cepController.text.length!=8?'CEP incorreto':'',
errorInput: selectClassification!='OUTRO MUNICIPIO'&& cepController.text.isEmpty?'Campo Obrigatório':cepController.text.length!=10?'CEP incorreto':'',
labelInput: 'CEP(só números)',
widthInput: width*0.7,
widthSubtitle: width*0.2,
@@ -1894,7 +1960,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
subtitle: 'RG',
errorInput: 'Campo Obrigatório',
labelInput: 'RG',
maxLength: 8,
maxLength: 9,
widthInput: width*0.7,
widthSubtitle: width*0.7,
hintInput: 'Escreva aqui',

View File

@@ -72,6 +72,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
List<String> listSanitary = [];
List<String> listCBO = [];
List<String> listINEPROF = [];
List listaINE = [];
int idUsuario = 0;
String idUnidade = '';
@@ -149,7 +150,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
});
_prefService.readCacheUnidade().then((value){
if(value!=null){
idUnidade = value[0];
idUnidade = value[0].toString();
nomeUnidade = value[1];
}
loadLists();
@@ -228,10 +229,13 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
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;
@@ -334,8 +338,8 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
});
List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
for(int i=0; list.length > i;i++){
INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}';
listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}');
INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}';
listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}');
}
setState(() {});
}
@@ -374,10 +378,24 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
'POSSUI_FINANCIAMENTO' : POSSUI_FINANCIAMENTO?'S':'N',
'POSSUI_EMPRESTIMO' : POSSUI_EMPRESTIMO?'S':'N',
'DT_HORA_CADASTRO' : '${f.format(DateTime.now())}',
'ORIGEM' : 'A',
'ORIGEM' : TIPO_SALVAR!='new'?'A':'C',
'SINCRONIZADO' : 'N',
};
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<String, dynamic> rowHome = {
'TIPO_IMOVEL' : TIPO_IMOVEL_COD,
'ID_AREA_DOMICILIO' : ID_AREA_DOMICILIO,
@@ -387,7 +405,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
'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,11 +422,11 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
'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',
'ORIGEM' : TIPO_SALVAR!='new'?'A':'C',
'SINCRONIZADO' : 'N',
'NOME_INSTITUICAO_PERMANENCIA': NOME_INSTITUICAO_PERMANENCIA,
'PROFISSIONAIS_VINCULADOS_INST': PROFISSIONAIS_VINCULADOS_INST,
@@ -416,8 +434,11 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
'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){
edit = false;
setState(() {});
AlertDialogDefault().alert(
context,
'Aviso',
@@ -426,6 +447,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
'Cadastro Domiciliar realizado com sucesso!',
'OK'
);
Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: widget.username)), (route) => false);
// print(value);
});
@@ -445,7 +467,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
double width = MediaQuery.of(context).size.width;
return WillPopScope(
onWillPop: ()async => await OnBackButton().onBackButton(context, widget.username),
onWillPop: !edit?null:()async => await OnBackButton().onBackButton(context, widget.username),
child: Scaffold(
appBar: AppBarDefault().appbar(context, 'RKM AB - Cadastro Domiciliar',widget.username),
body: Container(
@@ -548,7 +570,23 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
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 +609,12 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
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');
}
}
},

View File

@@ -177,7 +177,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
});
_prefService.readCacheUnidade().then((value){
if(value!=null){
idUnidade = value[0];
idUnidade = value[0].toString();
nomeUnidade = value[1];
}
loadLists();
@@ -226,11 +226,13 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
loadCadIndividual()async{
ID_CIDADAO = widget.listData[0]['ID_CIDADAO'];
print(widget.listData[0]['ID_CAD_INDIVIDUAL']);
// print(widget.listData[0]['ID_CAD_INDIVIDUAL']);
print('ID_CIDADAO');
print(ID_CIDADAO);
await DBQuerys().buscaCadInvidual(ID_CIDADAO).then((dataCitizen)async{
if(dataCitizen.length != 0) {
if(dataCitizen.isNotEmpty) {
ID_PROFISSIONAL = dataCitizen[0]['ID_RESP_CADASTRO'];
TIPO_SALVAR = 'update';
showTab = true;
@@ -243,8 +245,8 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
if(dataCitizen[0]['INE']!=null){
print('co');
String ine = 'INE: ${dataCitizen[0]['INE']} / Área : ${dataCitizen[0]['AREA']} - Microárea : ${dataCitizen[0]['MICROAREA']}';
INE_RESP_CADASTRO = 'INE: ${dataCitizen[0]['INE']} / Área: ${dataCitizen[0]['AREA']} - Microárea : ${dataCitizen[0]['MICROAREA']}';
String ine = 'INE: ${dataCitizen[0]['INE']} / Área : ${dataCitizen[0]['AREA']} ${dataCitizen[0]['MICROAREA']==null?'':'- Microárea : ${dataCitizen[0]['MICROAREA']}'}';
INE_RESP_CADASTRO = 'INE: ${dataCitizen[0]['INE']} / Área: ${dataCitizen[0]['AREA']} ${dataCitizen[0]['MICROAREA']==null?'':'- Microárea : ${dataCitizen[0]['MICROAREA']}'}';
INE = EquipeCidadao(
DESCRICAO: ine!,
ID_MICROAREA_CIDADAO: dataCitizen[0]['ID_MICROAREA_CIDADAO'],
@@ -254,8 +256,8 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
}else{
List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
for(int i=0; list.length > i;i++){
String ine = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}';
INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}';
String ine = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}';
INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}';
listINE.add(
EquipeCidadao(
DESCRICAO: ine!,
@@ -422,20 +424,21 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
OUTROS_HIGIENE = dataCitizen[0]['OUTROS_HIGIENE'] == 1 ? true : false;
CBO_RESP_CADASTRO = dataCitizen[0]['CBO_RESP_CADASTRO'].toString();
date_cad = dataCitizen[0]['DT_CADASTRO']??'';
// print('data $date_cad');
List splitted = date_cad.toString().split('-');
DT_CADASTRO.text = splitted.length<2?'':'${splitted[2]}/${splitted[1]}/${splitted[0]}';
CNES_RESP_CADASTRO.text = dataCitizen[0]['CNES_RESP_CADASTRO']??'';
setState(() {});
}else{
showTab = true;
}
CNES_RESP_CADASTRO.text = dataCitizen[0]['CNES_RESP_CADASTRO']=='null'?'':dataCitizen[0]['CNES_RESP_CADASTRO'];
if(listINE.length == 0){
List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
for(int i=0; list.length > i;i++){
ID_AREA_CIDADAO = list[i]['ID_ATB_AREA'];
ID_MICROAREA_CIDADAO = list[i]['ID_ATB_MICROAREA'];
ID_MICROAREA_CIDADAO = list[i]['ID_ATB_MICROAREA']==null?0:list[i]['ID_ATB_MICROAREA'];
INE_DB = list[i]['INE'];
String ine = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}';
INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}';
String ine = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}';
INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}';
listINE.add(
EquipeCidadao(
DESCRICAO: ine!,
@@ -443,7 +446,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
ID_AREA_CIDADAO: list[i]['ID_ATB_AREA']
)
);
listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}');
listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}');
}
}
await DBQuerys().buscaProfissionalCadInd(idUsuario).then((list){
@@ -579,7 +582,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
'INE_RESP_CADASTRO' : INE_DB,
'DT_CADASTRO' : date_cad,
'ID_EQUIPE' : ID_EQUIPE,
'ORIGEM' : 'A',
'ORIGEM' : TIPO_SALVAR!='new'?'A':'C',
'SINCRONIZADO' : 'N',
'DT_ENTRADA_BRASIL' : DT_ENTRADA_BRASIL.text,
'DT_NATURALIZACAO' : DT_NATURALIZACAO.text,
@@ -602,6 +605,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
'OK'
);
setState(() {
edit = false;
showTab = true;
});
// print(value);
@@ -650,7 +654,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
double width = MediaQuery.of(context).size.width;
return WillPopScope(
onWillPop: ()async=> await OnBackButton().onBackButton(context, widget.username),
onWillPop: !edit?null:()async=> await OnBackButton().onBackButton(context, widget.username),
child: Scaffold(
appBar: AppBarDefault().appbar(context, 'RKM AB - Cadastro Individual',widget.username),
body: Container(

View File

@@ -7,7 +7,9 @@ import 'package:rkm/models/drop_down_data_model.dart';
import 'package:rkm/service/db/db_sqlite_Sigtap.dart';
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';
@@ -24,16 +26,17 @@ import '../../widgets/text_default.dart';
import '../../widgets/title_containers.dart';
import '../home_screen.dart';
class ServiceHomeScreen extends StatefulWidget {
class AtendimentoDomiciliarTela extends StatefulWidget {
String name;
String username;
ServiceHomeScreen({required this.name,required this.username});
var dados;
AtendimentoDomiciliarTela({required this.name,required this.username, required this.dados});
@override
State<ServiceHomeScreen> createState() => _ServiceHomeScreenState();
State<AtendimentoDomiciliarTela> createState() => _AtendimentoDomiciliarTelaState();
}
class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
class _AtendimentoDomiciliarTelaState extends State<AtendimentoDomiciliarTela> {
var NOME_PROFISSIONAL = TextEditingController();
var CNES_UNIDADE = TextEditingController();
@@ -50,18 +53,20 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
String CD_USUARIO_SUS = '';
String INE_PROFISSIONAL = '';
int ID_ATENDIMENTO_DOMICILIAR = 0;
int ID_CIDADAO=0;
int ID_PROFISSIONAL=0;
int LOCAL_ATENDIMENTO_COD=0;
int TIPO_ATENDIMENTO_COD=0;
int MODALIDADE_COD=0;
int TURNO_COD=0;
int CIAP_COD=0;
String CIAP_COD='';
int CONDUTA_COD=0;
int ID_EQUIPE=0;
String CID_COD='';
String? CBO_PROFISSIONAL;
String? CBO_PROFISSIONAL_DB;
String? CIAP;
String? CID;
String? CBO_RESP_CADASTRO;
@@ -73,19 +78,22 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
String? CONDUTA;
List<CheckModel> serviceHomeModel = [];
List<CheckModel> serviceProcModel = [];
List<CheckProcedSiaModel> serviceProcModel = [];
List <String>listCBO = [];
List <String>listServicePlace = [];
List <String>typeService = [];
List <String>typeModelService = [];
List <String>typeTurnService = [];
List <String>listINEPROF = [];
List<DropDownDataModel> listCIAP = [];
List<DropDownDataStringModel> listCIAP = [];
List<DropDownDataStringModel> listCID = [];
List<String> PROCEDIMENTOS_SIGTAP = [];
List<String> ATENDS_DOM_PROC = [];
List<String> listConduct = [];
List listProc = [];
List CBOS_PROFISSIONAL=[];
List condicoes = [];
List procedimentos = [];
bool CNS_VALIDO = false;
bool mandatory = false;
@@ -137,25 +145,39 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
// print('idUsuario get');
// print(idUsuario);
loadData();
getPro();
// getProcedimentos();
}
});
_prefService.readCacheUnidade().then((value){
if(value!=null){
idUnidade = value[0];
idUnidade = value[0].toString();
CNES_UNIDADE.text = value[1];
}
});
await DBQuerys().buscaCIAP().then((list){
listCIAP.add(DropDownDataModel(cod: int.parse(list['CODIGO_CIAP']), title: list['DESC_CIAP']));
for(int i = 0 ; list.length > i ; i++){
listCIAP.add(DropDownDataStringModel(cod: list[i]['CODIGO_CIAP'], title: list[i]['DESC_CIAP']));
}
});
await DBQuerys().buscaCID().then((list){
listCID.add(DropDownDataStringModel(cod: list['CODIGO_CID'], title: list['DESCRICAO_CID']));
for(int i = 0 ; list.length > i ; i++){
listCID.add(DropDownDataStringModel(cod: list[i]['CODIGO_CID'], title: list[i]['DESCRICAO_CID']));
}
});
}
loadData()async{
// print('idUsuario');
// print(idUsuario);
await DBQuerys().buscaAtendDomProc().then((value){
for(int i = 0 ; value.length > i ; i++){
PROCEDIMENTOS_SIGTAP.add('${value[i]['COD_PROC_SIGTAP']} - ${value[i]['DESC_PROC_SIGTAP']}');
}
});
await DBQuerys().buscaProfissionalCadInd(idUsuario).then((list){
ID_PROFISSIONAL = list['ID_PROFISSIONAL'];
NOME_PROFISSIONAL.text = list['NOME_PROFISSIONAL'];
@@ -163,77 +185,75 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
if(CNS_PROFISSIONAL == 999999999999999 || CNS_PROFISSIONAL == '999999999999999'){
CNS_VALIDO = true;
}
setState(() {});
});
await DBQuerys().buscaCBOProfissional(idUsuario).then((list)async{
if(list.length!=0){
for(int i = 0; list.length>i;i++){
listCBO.add(list[i]['CODIGO_CBO'].toString());
}
}
if(listCBO.isNotEmpty){
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)async{
//sigtap
for(int i = 0; listCBO.length>i;i++){
print(listCBO[i]);
await DBQuerys().buscaCBOSProfissional(listCBO[i]).then((sigtap)async{
print('indice $i');
print(sigtap);
if(listCBO[i]==sigtap[0]['CODIGO_CBO']){
PROCEDIMENTOS_SIGTAP.add(sigtap[0]['CODIGO_CBO']+' - ' + sigtap[0]['DESCRICAO_CBO']);
List<String> aux = PROCEDIMENTOS_SIGTAP.toSet().toList();
PROCEDIMENTOS_SIGTAP = aux;
}
});
}
print(PROCEDIMENTOS_SIGTAP);
setState(() {});
// await ApiDataImportSigtap().loadSIGTAP(urlAPI, mode, nameCityApi).then((value)async{
// List<dynamic> procedimentos = value['procedimentos'];
// print(procedimentos.length);
// print(procedimentos);
// if(procedimentos.isNotEmpty){
// await DbSqliteSigtap().saveProceduresSigtapDB(procedimentos).then((db)async{
// List list = await db.query('PROCEDIMENTOS_SIGTAP');
// for(int i = 0; list.length>i;i++){
// if(list[i]['COD_PROC_SIGTAP']!=null && list[i]['DESC_PROC_SIGTAP']!=null){
// PROCEDIMENTOS_SIGTAP.add(list[i]['COD_PROC_SIGTAP']+' - ' + list[i]['DESC_PROC_SIGTAP']);
// List<String> aux = PROCEDIMENTOS_SIGTAP.toSet().toList();
// PROCEDIMENTOS_SIGTAP = aux;
// }
// }
// setState(() {
// loadSIGTAP = false;
// });
// });
// }
// });
});
}
CBO_RESP_CADASTRO = list.length == 0?null:list[0]['CODIGO_CBO'].toString();
setState(() {});
});
// print('IdUsuario: ${idUsuario}');
// print('IdUnidade: '+idUnidade);
List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
for(int i=0; list.length > i;i++){
INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}';
listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}');
INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}';
listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}');
}
setState(() {});
}
getPro()async{
Database dbcbo = await DbSqliteLoad().intialDB();
var query = 'SELECT * FROM PROFISSIONAIS_CBOS WHERE ID_PROFISSIONAL = $idUsuario';
List listcbo = await dbcbo.rawQuery(query);
if(listcbo.length!=0){
for(int i = 0; listcbo.length>i;i++){
await DBQuerys().buscaCBOSProfissional(listcbo[i]['CODIGO_CBO']).then((cbo)async{
if(cbo.length!=0){
listCBO.add(cbo[0]['DESCRICAO_CBO']+' - '+listcbo[i]['CODIGO_CBO'].toString());
}
});
}
if(widget.dados!=null){
editarAtendimento();
}
}
}
getProcedimentos()async{
List CBOS = [];
await DBQuerys().buscaCBOProfissional(idUsuario).then((cbosProfissional){
if(cbosProfissional.length!=0){
for(int i = 0; cbosProfissional.length>i;i++){
CBOS.add(cbosProfissional[i]['CODIGO_CBO'].toString());
}
}
CBO_RESP_CADASTRO = cbosProfissional.length == 0?null:cbosProfissional[0]['CODIGO_CBO'].toString();
}).then((value)async{
print('CBOS.length');
print(CBOS.length);
print(CBOS);
for(int i = 0; CBOS.length>i;i++){
await DBQuerys().buscaPROCEDIMENTOS_SIGTAP_CBO(CBOS[i]).then((dadosCBOS)async{
print('dadosCBOS.length');
print(dadosCBOS.length);
print(dadosCBOS[0]);
for(int i = 0; dadosCBOS.length>i;i++){
await DBQuerys().buscaPROCEDIMENTOS_SIGTAP(dadosCBOS[i]['COD_PROC_SIGTAP']).then((dadosSIGTAP){
PROCEDIMENTOS_SIGTAP.add('${dadosSIGTAP[i]['COD_PROC_SIGTAP']} - ${dadosSIGTAP[i]['DESC_PROC_SIGTAP']}');
// print('dadosSIGTAP');
// print(dadosSIGTAP[0]);
});
}
});
}
print('PROCEDIMENTOS_SIGTAP');
print(PROCEDIMENTOS_SIGTAP.length);
print(PROCEDIMENTOS_SIGTAP);
});
}
checkSave()async{
// 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(() {
@@ -250,12 +270,113 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
}
}
editarAtendimento()async{
Map map = widget.dados;
map.forEach((chave,valor){
print('$chave: $valor' );
});
ID_ATENDIMENTO_DOMICILIAR = map['ID_ATENDIMENTO_DOMICILIAR'];
dateDB = map['DATA'];
List splited = dateDB.split('-');
date = '${splited[2]}/${splited[1]}/${splited[0]}';
LOCAL_ATENDIMENTO_COD = map['LOCAL_ATENDIMENTO'];
for(int i = 0;ConstVariable().listServicePlace.length >i;i++){
if(ConstVariable().listServicePlace[i].cod == LOCAL_ATENDIMENTO_COD){
LOCAL_ATENDIMENTO = ConstVariable().listServicePlace[i].title;
}
}
TIPO_ATENDIMENTO_COD = map['TIPO_ATENDIMENTO'];
for(int i = 0;ConstVariable().typeService.length >i;i++){
if(ConstVariable().typeService[i].cod == TIPO_ATENDIMENTO_COD){
TIPO_ATENDIMENTO = ConstVariable().typeService[i].title;
}
}
CBO_PROFISSIONAL_DB = map['CBO_PROFISSIONAL'];
for(int i = 0;listCBO.length > i; i++){
String splited = listCBO[i].split(' - ').last;
if(splited == CBO_PROFISSIONAL_DB){
CBO_PROFISSIONAL = listCBO[i];
}
}
ID_EQUIPE = map['ID_EQUIPE'];
List listINE = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
int AREA_DESCRICAO = 0;
int MICROAREA_DESCRICAO = 0;
for(int i = 0;listINE.length >i;i++){
if(listINE[i]['ID_EQUIPE']==ID_EQUIPE){
INE_PROFISSIONAL = listINE[i]['INE']??'';
AREA_DESCRICAO = listINE[i]['AREA'];
MICROAREA_DESCRICAO = listINE[i]['MICROAREA'];
}
}
for(int i = 0;listINEPROF.length >i;i++){
RegExp ineRegExp = RegExp(r"INE:\s(\d+)");
RegExp areaRegExp = RegExp(r"Área:\s(\d+)");
RegExp microareaRegExp = RegExp(r"Microárea\s:\s(\d+)");
String ine = ineRegExp.firstMatch(listINEPROF[i])?.group(1) ?? '';
String area = areaRegExp.firstMatch(listINEPROF[i])?.group(1) ?? '';
String microarea = microareaRegExp.firstMatch(listINEPROF[i])?.group(1) ?? '';
if(INE_PROFISSIONAL==ine && AREA_DESCRICAO.toString() == area && MICROAREA_DESCRICAO.toString() == microarea){
INE_RESP_CADASTRO = listINEPROF[i];
}
}
MODALIDADE_COD = map['MODALIDADE'];
for(int i = 0;ConstVariable().typeModelService.length >i;i++){
if(ConstVariable().typeModelService[i].cod == MODALIDADE_COD){
MODALIDADE = ConstVariable().typeModelService[i].title;
}
}
TURNO_COD = map['TURNO'];
for(int i = 0;ConstVariable().typeTurnService.length >i;i++){
if(ConstVariable().typeTurnService[i].cod == TURNO_COD){
TURNO = ConstVariable().typeTurnService[i].title;
}
}
Database db = await DbSqliteLoad().intialDB();
condicoes = await db.query('ATENDS_DOM_COMPL WHERE ID_ATENDIMENTO_DOMICILIAR = $ID_ATENDIMENTO_DOMICILIAR');
procedimentos = await db.query('ATENDS_DOM_PROC WHERE ID_ATENDIMENTO_DOMICILIAR = $ID_ATENDIMENTO_DOMICILIAR');
// print(condicoes);
print(procedimentos);
for (int index = 0; index < ConstVariable().serviceHomeCheckConditionlist.length; index++) {
bool checkValue = condicoes.any((cond) =>cond['COND_AVAL_ATEND_DOM'] == index + 1);
serviceHomeModel.add(
CheckModel(
cod: 0,
subtitle: ConstVariable().serviceHomeCheckConditionlist[index],
check: checkValue,
),
);
}
for (int index = 0; index < ConstVariable().serviceHomeCheckProclist.length; index++) {
bool checkValue = procedimentos.any((cond) =>cond['PROC_ATEND_DOM'] == ConstVariable().serviceHomeCheckProclist[index].COD_SIA);
serviceProcModel.add(
CheckProcedSiaModel(
COD_SIA: ConstVariable().serviceHomeCheckProclist[index].COD_SIA,
DESCRICAO_PROCEDIMENTO: ConstVariable().serviceHomeCheckProclist[index].DESCRICAO_PROCEDIMENTO,
check: checkValue
)
);
}
CONDUTA_COD = map['CONDUTA'];
for(int i = 0;ConstVariable().listConduct.length >i;i++){
if(ConstVariable().listConduct[i].cod == CONDUTA_COD){
CONDUTA = ConstVariable().listConduct[i].title;
}
}
setState(() {});
}
saveServiceHome()async{
Map<String, dynamic> row = {
'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),
@@ -270,15 +391,26 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
'CONDUTA' : CONDUTA_COD,
'SINCRONIZADO' : 'N',
};
await DbSqliteSync().insertAtendimentoDomiciliar(row).then((value){
await DbSqliteSync().insertAtendimentoDomiciliar(row,widget.dados==null,ID_ATENDIMENTO_DOMICILIAR).then((value)async{
Database db = await DbSqliteLoad().intialDB();
await db.delete(
'ATENDS_DOM_COMPL', // Substitua pelo nome da sua tabela
where: 'ID_ATENDIMENTO_DOMICILIAR = ?',
whereArgs: [ID_ATENDIMENTO_DOMICILIAR],
);
for(int i = 0;serviceHomeModel.length>i;i++){
if(serviceHomeModel[i].check){
DbSqliteSync().insertCondicoesAvaliadas(value,i+1);
}
}
await db.delete(
'ATENDS_DOM_PROC', // Substitua pelo nome da sua tabela
where: 'ID_ATENDIMENTO_DOMICILIAR = ?',
whereArgs: [ID_ATENDIMENTO_DOMICILIAR],
);
for(int i = 0;serviceProcModel.length>i;i++){
if(serviceProcModel[i].check){
DbSqliteSync().insertProcedimentosDomiciliares(value,i+1);
DbSqliteSync().insertProcedimentosDomiciliares(value,serviceProcModel[i].COD_SIA);
}
}
AlertDialogDefault().alert(
@@ -296,11 +428,12 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
ID_CIDADAO = list[0]['ID_CIDADAO'];
CD_USUARIO_SUS = list[0]['CD_USUARIO_SUS'];
});
if(widget.dados==null){
List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
INE_PROFISSIONAL = list[0]['INE']??'';
ID_EQUIPE = list[0]['ID_EQUIPE']??0;
}
}
@override
void initState() {
@@ -365,7 +498,7 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
onChanged: (v)=>setState((){}),
),
DropdownWithSubtitle(
list: PROCEDIMENTOS_SIGTAP,
list: listCBO,
widthSubtitle: width*0.7,
subtitle: 'CBO',
hintDropdown: 'CBO',
@@ -375,6 +508,9 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
onChanged: (value){
setState(() {
CBO_PROFISSIONAL = value!;
List list = CBO_PROFISSIONAL.toString().split(' - ');
CBO_PROFISSIONAL_DB = list.last;
print(CBO_PROFISSIONAL_DB);
});
},
colorBorder: ColorPalette.white,
@@ -531,19 +667,22 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
children: [
SizedBox(height: 10,),
TitleContainers(title: 'Condição Avaliada',width: width * 0.73),
Container(
widget.dados!=null && serviceHomeModel.length !=ConstVariable().serviceHomeCheckConditionlist.length?Container():Container(
width: width*0.7,
height: heigth*0.95,
height: 1160,
child: ListView.builder(
physics: const NeverScrollableScrollPhysics(),
itemCount: ConstVariable().serviceHomeCheckConditionlist.length,
itemBuilder: (context,index){
if(widget.dados==null){
serviceHomeModel.add(
CheckModel(
cod: 0,
subtitle: ConstVariable().serviceHomeCheckConditionlist[index],
check: false
)
);
}
return CheckBoxSubtitle(
subtitle: serviceHomeModel[index].subtitle,
checkbox:serviceHomeModel[index].check,
@@ -605,7 +744,7 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
padding: EdgeInsets.symmetric(vertical: 10),
width: width*0.7,
child: TextDefault(
text: CID!=null?'CID $CIAP':'CID',
text: CID!=null?'CID $CID':'CID',
color:Colors.black,
fontSize: 15,
)
@@ -635,22 +774,31 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: Container(
width: width*0.7,
height: heigth*0.9,
height: 970,
child: ListView.builder(
physics: const NeverScrollableScrollPhysics(),
itemCount: ConstVariable().serviceHomeCheckProclist.length,
itemBuilder: (context,index){
if(widget.dados==null){
serviceProcModel.add(
CheckModel(
subtitle: ConstVariable().serviceHomeCheckProclist[index],
check: false
CheckProcedSiaModel(
COD_SIA: ConstVariable().serviceHomeCheckProclist[index].COD_SIA,
DESCRICAO_PROCEDIMENTO: ConstVariable().serviceHomeCheckProclist[index].DESCRICAO_PROCEDIMENTO,
)
);
}
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);
}),
);
}
),
@@ -712,7 +860,9 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 5.0),
child: Container(
child: Column(
children: [
Container(
width: width*0.7,
child: Row(
children: [
@@ -739,10 +889,13 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
)
],
),
),
CONDUTA_COD ==0 && mandatory?ErrorDefault():Container(),
],
)
)
),
]
)
),
]
)
),

View File

@@ -485,6 +485,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
itemBuilder: (context,index){
serviceConditionModel.add(
CheckModel(
cod: 0,
subtitle: ConstVariable().serviceIndividualCheckBoxList[index],
check: false
)
@@ -515,6 +516,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
itemBuilder: (context,index){
communicableDiseasesModel.add(
CheckModel(
cod: 0,
subtitle: ConstVariable().communicableDiseasesList[index],
check: false
)
@@ -539,6 +541,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
itemBuilder: (context,index){
trackingModel.add(
CheckModel(
cod: 0,
subtitle: ConstVariable().trackingModelList[index],
check: false
)
@@ -731,6 +734,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
itemBuilder: (context,index){
nasfPoloModelList.add(
CheckModel(
cod: 0,
subtitle: ConstVariable().nasfPoloModelList[index],
check: false
)
@@ -755,6 +759,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
itemBuilder: (context,index){
conductList.add(
CheckModel(
cod: 0,
subtitle: ConstVariable().conductModelList[index],
check: false
)
@@ -779,6 +784,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
itemBuilder: (context,index){
forwardingList.add(
CheckModel(
cod: 0,
subtitle: ConstVariable().forwardingModelList[index],
check: false
)

View File

@@ -24,16 +24,17 @@ import '../../widgets/switch_with_subtitle.dart';
import '../../widgets/text_default.dart';
import '../../widgets/title_containers.dart';
class HomeVisitScreen extends StatefulWidget {
class VisitaDomiciliarTela extends StatefulWidget {
String name;
String username;
HomeVisitScreen({required this.name, required this.username});
var dados;
VisitaDomiciliarTela({required this.name, required this.username, required this.dados});
@override
State<HomeVisitScreen> createState() => _HomeVisitScreenState();
State<VisitaDomiciliarTela> createState() => _VisitaDomiciliarTelaState();
}
class _HomeVisitScreenState extends State<HomeVisitScreen> {
class _VisitaDomiciliarTelaState extends State<VisitaDomiciliarTela> {
var PESO = TextEditingController();
var ALTURA = TextEditingController();
@@ -54,6 +55,9 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
bool ACAO_MECANICA = false;
bool IMOVEL_FOCO = false;
bool TRATAMENTO_FOCAL = false;
bool sexoCidadaoFeminino = false;
bool carregando = true;
String? TURNO;
String? TIPO_IMOVEL;
@@ -67,6 +71,8 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
int ID_PROFISSIONAL=0;
int ID_CIDADAO=0;
int ID_EQUIPE=0;
int ID_VISITA_DOMICILIAR=0;
String CBO_DB ='0';
String INE_PROFISSIONAL='';
String CD_USUARIO_SUS='';
@@ -84,6 +90,7 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
List<CheckModel> tipoAcompanhamentoModel = [];
List<CheckModel> outrosModel = [];
List listProc = [];
List listProf = [];
escolherprazoInicio(BuildContext context) async {
var pickDate = await showDatePicker(
@@ -109,6 +116,7 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
getUsers()async{
await DBQuerys().buscaCidadao(widget.name).then((list){
sexoCidadaoFeminino = list[0]['SEXO']=='M'?false:true;
ID_CIDADAO = list[0]['ID_CIDADAO'];
CD_USUARIO_SUS = list[0]['CD_USUARIO_SUS'];
});
@@ -121,13 +129,39 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
});
_prefService.readCacheUnidade().then((value){
if(value!=null){
idUnidade = value[0];
idUnidade = value[0].toString();
CNES_UNIDADE.text = value[1];
}
});
Database dbcbo = await DbSqliteLoad().intialDB();
var query = 'SELECT * FROM PROFISSIONAIS_CBOS WHERE ID_PROFISSIONAL = $idUsuario';
List listcbo = await dbcbo.rawQuery(query);
var querycbo = 'SELECT * FROM PROFISSIONAIS_CBOS WHERE ID_PROFISSIONAL = $idUsuario';
List listcbo = await dbcbo.rawQuery(querycbo);
List todosSigtap = [];
// print('listcbo');
// print(listcbo.length);
// print(listcbo);
for(int i = 0; listcbo.length > i ; i++){
var querySigtap = 'SELECT * FROM PROCEDIMENTOS_SIGTAP_CBO WHERE CODIGO_CBO = ${listcbo[i]['CODIGO_CBO']}';
List listSigtap = await dbcbo.rawQuery(querySigtap);
todosSigtap.addAll(listSigtap);
// print('listSigtap');
// print(listSigtap.length);
// print('todosSigtap');
// print(todosSigtap.length);
}
List aux = todosSigtap.toSet().toList();
todosSigtap = aux;
for(int i = 0; todosSigtap.length > i ; i++){
var querySigtapDesc = 'SELECT * FROM PROCEDIMENTOS_SIGTAP WHERE COD_PROC_SIGTAP = \'${todosSigtap[i]['COD_PROC_SIGTAP']}\'';
List listSigtapDesc = await dbcbo.rawQuery(querySigtapDesc);
if(listSigtapDesc.isNotEmpty){
PROCEDIMENTOS_SIGTAP.add('${listSigtapDesc[0]['COD_PROC_SIGTAP']} - ${listSigtapDesc[0]['DESC_PROC_SIGTAP']}');
}
}
if(listcbo.length!=0){
for(int i = 0; listcbo.length>i;i++){
@@ -139,27 +173,32 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
}
}
var querycbo = 'SELECT * FROM CBOS WHERE CODIGO_CBO = 223208';
// var query = 'SELECT * FROM PROFISSIONAIS_CBOS';
/*var querycbo = 'SELECT * FROM CBOS WHERE CODIGO_CBO = 223208';
var query = 'SELECT * FROM PROFISSIONAIS_CBOS';
List listcbocompleta = await dbcbo.rawQuery(querycbo);
print(listcbocompleta);
print(listcbocompleta);*/
List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
for(int i=0; list.length > i;i++){
INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}';
listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}');
INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}';
listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}');
}
var db = await DbSqliteLoad().intialDB();
List listSIGTAP = await db.query('PROCEDIMENTOS_SIGTAP');
for(int i = 0; listSIGTAP.length>i;i++){
if(listSIGTAP[i]['COD_PROC_SIGTAP']!=null && listSIGTAP[i]['DESC_PROC_SIGTAP']!=null){
PROCEDIMENTOS_SIGTAP.add('${listSIGTAP[i]['COD_PROC_SIGTAP']} - ${listSIGTAP[i]['DESC_PROC_SIGTAP']}');
}
}
List listProf = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
// var db = await DbSqliteLoad().intialDB();
// List listSIGTAP = await db.query('PROCEDIMENTOS_SIGTAP');
// for(int i = 0; listSIGTAP.length>i;i++){
// if(listSIGTAP[i]['COD_PROC_SIGTAP']!=null && listSIGTAP[i]['DESC_PROC_SIGTAP']!=null){
// PROCEDIMENTOS_SIGTAP.add('${listSIGTAP[i]['COD_PROC_SIGTAP']} - ${listSIGTAP[i]['DESC_PROC_SIGTAP']}');
// }
// }
listProf = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
INE_PROFISSIONAL = listProf[0]['INE'];
ID_EQUIPE = listProf[0]['ID_EQUIPE'];
carregando = false;
setState(() {});
if(widget.dados!=null){
editarVisita();
}
}
loadLists()async {
@@ -176,8 +215,8 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
}
loadData()async{
print('idUsuario');
print(idUsuario);
// print('idUsuario');
// print(idUsuario);
await DBQuerys().buscaProfissionalCadInd(idUsuario).then((list){
ID_PROFISSIONAL = list['ID_PROFISSIONAL'];
NOME_PROFISSIONAL.text = list['NOME_PROFISSIONAL'];
@@ -190,86 +229,44 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
}
checkSave()async{
// adicionar depois e usar um usuário real
// CBO_RESP_CADASTRO
//ok
if(date.isEmpty || dateDB.isEmpty || TIPO_IMOVEL_COD==0 || DESFECHO_COD ==0 || TURNO_COD == 0 || CBO_PROFISSIONAL == null
/* adicionar depois e usar um usuário real
CBO_RESP_CADASTRO
ok*/
//salvar
if(date.isEmpty || dateDB.isEmpty || TIPO_IMOVEL_COD==0 || DESFECHO_COD ==0 || TURNO_COD == 0 || CBO_PROFISSIONAL == null ||
( ALTURA.text.isEmpty?false:double.parse(ALTURA.text.replaceAll(',', '.'))<=0.2 && double.parse(ALTURA.text.replaceAll(',', '.')) >= 2.5 && ALTURA.text.isEmpty) ||
( PESO.text.isEmpty?false:double.parse(PESO.text.replaceAll(',', '.'))<=0.5 && double.parse(PESO.text.replaceAll(',', '.')) >= 500 && PESO.text.isEmpty)
){
print('erro');
print('erro principal');
setState(() {
showCheckError = true;
mandatory = true;
});
}else{
print('passou');
setState(() {
mandatory = false;
showCheckError = false;
//TIPO VISITA
if(tipoVisitaModel[0].check || tipoVisitaModel[1].check){
//BUSCA ATIVA
if(CONSULTA || VACINA || EXAME || CONDICIONALIDADES){
//CONTROLE AMBIENTAL
if(ACAO_EDUCATIVA || ACAO_MECANICA || IMOVEL_FOCO || TRATAMENTO_FOCAL){
bool check1 = false;
bool check2 = false;
for(int i=0; tipoAcompanhamentoModel.length>i;i++){
if(tipoAcompanhamentoModel[i].check){
print('pegou a $i');
check1 = true;
break;
}
}
for(int i=0; outrosModel.length>i;i++){
if(outrosModel[i].check){
print('outros $i');
check2 = true;
break;
}
}
if(!check1 || !check2){
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){
/*TIPO VISITA*/
print('save');
saveHomeVisit();
}
}else{
print('AQUI');
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');
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'
);
}
});
}
}
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<String, dynamic> row = {
'ID_CIDADAO' : ID_CIDADAO,
'CD_USUARIO_SUS' : CD_USUARIO_SUS,
@@ -278,126 +275,313 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
'TIPO_IMOVEL' : TIPO_IMOVEL_COD,
'VISITA_ACOMPANHADA' : VISITA_ACOMPANHADA?1:2,
'DESFECHO' : DESFECHO_COD,
'PESO' : PESO.text,
'ALTURA' : ALTURA.text,
'PESO' : PESO.text.toString().replaceAll(',', '.'),
'ALTURA' : ALTURA.text.toString().replaceAll(',','').replaceAll('.',''),
'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,
'SINCRONIZADO' : 'N',
};
await DbSqliteSync().insertVisitaDomiciliar(row).then((value)async{
print('value');
print(value);
//tipo visita == 1
await DbSqliteSync().insertVisitaDomiciliar(row,ID_VISITA_DOMICILIAR, widget.dados==null).then((value)async{
// print('value');
// print(value);
/*tipo visita == 1*/
Database db = await DbSqliteLoad().intialDB();
await db.delete(
'VISITAS_DOMICILIARES_COMPL', // Substitua pelo nome da sua tabela
where: 'ID_VISITA_DOMICILIAR = ?',
whereArgs: [ID_VISITA_DOMICILIAR],
);
for(int i = 0;tipoVisitaModel.length>i;i++){
if(tipoVisitaModel[i].check){
//cadastramento = 1
/*cadastramento = 1*/
if(i==0){
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,1,1);
}else if(i == 1){
//periodica = 29
/*periodica = 29*/
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,1,29);
}
}
}
//busca ativa == 2
//CONSULTA 2
/*busca ativa == 2
CONSULTA 2*/
if(CONSULTA){
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,2,2);
}
//busca ativa == 2
//EXAME 3
/*busca ativa == 2
EXAME 3*/
if(EXAME){
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,2,3);
}
//busca ativa == 2
//VACINA 8
/*busca ativa == 2
VACINA 8*/
if(VACINA){
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,2,8);
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,2,4);
}
//busca ativa == 2
//CONDICIONALIDADES 30
/*busca ativa == 2
CONDICIONALIDADES 30*/
if(CONDICIONALIDADES){
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,2,30);
}
//controle ambiental == 5
// ACAO_EDUCATIVA == 34
/*controle ambiental == 5
ACAO_EDUCATIVA == 34*/
if(ACAO_EDUCATIVA){
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,5,34);
}
//controle ambiental == 5
// IMOVEL_FOCO == 35
/*controle ambiental == 5
IMOVEL_FOCO == 35*/
if(IMOVEL_FOCO){
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,5,35);
}
//controle ambiental == 5
// ACAO_MECANICA == 36
/*controle ambiental == 5
ACAO_MECANICA == 36*/
if(ACAO_MECANICA){
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,5,36);
}
//controle ambiental == 5
// TRATAMENTO_FOCAL == 37
/*controle ambiental == 5
TRATAMENTO_FOCAL == 37*/
if(TRATAMENTO_FOCAL){
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,5,37);
}
//ACOMPANHAMENTO == 3
/*ACOMPANHAMENTO == 3*/
for(int i=0; tipoAcompanhamentoModel.length>i;i++){
if(tipoAcompanhamentoModel[i].check){
print('pegou a $i');
print(tipoAcompanhamentoModel[i].subtitle);
if(i<=13){
print('CODIGO ${i+5}');
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,3,i+5);
}else if(i==14){
//respiratorios == 32
print('CODIGO ${i}');
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,3,32);
}else if(i==15){
print('CODIGO ${i}');
//tabagista == 33
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,3,33);
}else if(i>=16){
print('CODIGO ${i+3}');
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,3,i+3);
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,3,tipoAcompanhamentoModel[i].cod);
}
}
}
//outros == 4
/*outros == 4*/
for(int i=0; outrosModel.length>i;i++){
if(outrosModel[i].check){
print('outros a $i');
print(outrosModel[i].subtitle);
//orientacao prevencao == 31
if(i==3){
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,4,31);
}else if(i==4){
print('CODIGO outros ${i+24}');
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,4,i+24);
}else{
print('CODIGO outros ${i+25}');
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,4,i+25);
}
await DbSqliteSync().insertVisitaDomiciliarCOMPL(value,4,outrosModel[i].cod);
}
}
for(int i=0;listProc.length>i;i++){
List splitted = listProc[i].toString().split(' ');
await DbSqliteSync().insertVISITAS_DOMICILIARES_PROC(value,splitted[0]);
}
AlertDialogDefault().alert(
AlertDialogDefault().sucess(
context,
'Aviso',
'Visita Domiciliar realizada com sucesso!',
'OK'
);
'OK',
(){
Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: widget.username)), (route) => false);
}
);
});
}
editarVisita()async{
Map map = widget.dados;
map.forEach((chave, valor){
print('$chave : $valor');
});
ID_VISITA_DOMICILIAR = map['ID_VISITA_DOMICILIAR'];
dateDB = map['DT_ATENDIMENTO'];
List splited = dateDB.split('-');
date = '${splited[2]}/${splited[1]}/${splited[0]}';
TURNO_COD = map['TURNO'];
for(int i = 0;ConstVariable().typeTurnService.length >i;i++){
if(ConstVariable().typeTurnService[i].cod == TURNO_COD){
TURNO = ConstVariable().typeTurnService[i].title;
}
}
TIPO_IMOVEL_COD = map['TIPO_IMOVEL'];
for(int i = 0;ConstVariable().listTypeHome.length >i;i++){
if(ConstVariable().listTypeHome[i].cod == TIPO_IMOVEL_COD){
TIPO_IMOVEL = ConstVariable().listTypeHome[i].title;
}
}
VISITA_ACOMPANHADA = map['VISITA_ACOMPANHADA']==1?true:false;
DESFECHO_COD = map['DESFECHO'];
for(int i = 0;ConstVariable().listDesfecho.length >i;i++){
if(ConstVariable().listDesfecho[i].cod == DESFECHO_COD){
DESFECHO = ConstVariable().listDesfecho[i].title;
}
}
Database db = await DbSqliteLoad().intialDB();
List listaVisita = await db.query('VISITAS_DOMICILIARES_COMPL WHERE ID_VISITA_DOMICILIAR = $ID_VISITA_DOMICILIAR');
for (int index = 0; index < ConstVariable().tipoVisitaModel.length; index++) {
bool tipoVisitaCadastramento = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 1 && cond['ID_VISITA_COMPLEMENTO'] == 1);
bool tipoVisitaPediodica = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 1 && cond['ID_VISITA_COMPLEMENTO'] == 29);
//TIPO DE VISITA CADASTRAMENTO/ATUALIZAÇÃO
if(index == 0){
tipoVisitaModel.add(
CheckModel(
cod: 0,
subtitle: ConstVariable().tipoVisitaModel[index],
check: tipoVisitaCadastramento
)
);
}
//TIPO DE VISITA PERIÓDICA
if(index == 1){
tipoVisitaModel.add(
CheckModel(
cod: 29,
subtitle: ConstVariable().tipoVisitaModel[index],
check: tipoVisitaPediodica
)
);
}
//BUSCA ATIVA CONSULTA
CONSULTA = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 2 && cond['ID_VISITA_COMPLEMENTO'] == 2);
//BUSCA ATIVA EXAME
EXAME = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 2 && cond['ID_VISITA_COMPLEMENTO'] == 3);
//BUSCA ATIVA VACINA
VACINA = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 2 && cond['ID_VISITA_COMPLEMENTO'] == 8);
//BUSCA ATIVA CONDICIONALIDADES
CONDICIONALIDADES = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 2 && cond['ID_VISITA_COMPLEMENTO'] == 30);
//BUSCA ATIVA ACAO_EDUCATIVA
ACAO_EDUCATIVA = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 5 && cond['ID_VISITA_COMPLEMENTO'] == 34);
//BUSCA ATIVA IMOVEL_FOCO
IMOVEL_FOCO = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 5 && cond['ID_VISITA_COMPLEMENTO'] == 35);
//BUSCA ATIVA ACAO_MECANICA
ACAO_MECANICA = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 5 && cond['ID_VISITA_COMPLEMENTO'] == 36);
//BUSCA ATIVA TRATAMENTO_FOCAL
TRATAMENTO_FOCAL = listaVisita.any((cond) =>cond['ID_VISITA_DOM_TIPO'] == 5 && cond['ID_VISITA_COMPLEMENTO'] == 37);
}
for (int i = 0; i < ConstVariable().tipoAcompanhamentoModel.length; i++) {
tipoAcompanhamentoModel.add(
CheckModel(
cod: ConstVariable().tipoAcompanhamentoModel[i].cod,
subtitle: ConstVariable().tipoAcompanhamentoModel[i].subtitle,
check: listaVisita.any((cond) =>cond['ID_VISITA_COMPLEMENTO'] == ConstVariable().tipoAcompanhamentoModel[i].cod)
)
);
}
for(int i=0; ConstVariable().outrosModel.length>i;i++){
outrosModel.add(
CheckModel(
cod: ConstVariable().outrosModel[i].cod,
subtitle: ConstVariable().outrosModel[i].subtitle,
check: listaVisita.any((cond) =>cond['ID_VISITA_COMPLEMENTO'] == ConstVariable().outrosModel[i].cod)
)
);
}
PESO.text = map['PESO'];
ALTURA.text = map['ALTURA'].toString().isEmpty?'':'${int.parse(map['ALTURA'])/100}'.replaceAll('.', ',');
CBO_DB = map['CBO_PROFISSIONAL'];
print('CBO_DB');
print(CBO_DB);
for(int i = 0;listCBO.length > i; i++){
String splited = listCBO[i].split(' - ').last;
if(splited == CBO_DB){
CBO_PROFISSIONAL = listCBO[i];
}
}
List listINE = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario);
int AREA_DESCRICAO = 0;
int MICROAREA_DESCRICAO = 0;
for(int i = 0;listINE.length >i;i++){
if(listINE[i]['ID_EQUIPE']==ID_EQUIPE){
INE_PROFISSIONAL = listINE[i]['INE']??'';
AREA_DESCRICAO = listINE[i]['AREA'];
MICROAREA_DESCRICAO = listINE[i]['MICROAREA'];
}
}
for(int i = 0;listINEPROF.length >i;i++){
RegExp ineRegExp = RegExp(r"INE:\s(\d+)");
RegExp areaRegExp = RegExp(r"Área:\s(\d+)");
RegExp microareaRegExp = RegExp(r"Microárea\s:\s(\d+)");
String ine = ineRegExp.firstMatch(listINEPROF[i])?.group(1) ?? '';
String area = areaRegExp.firstMatch(listINEPROF[i])?.group(1) ?? '';
String microarea = microareaRegExp.firstMatch(listINEPROF[i])?.group(1) ?? '';
if(INE_PROFISSIONAL==ine && AREA_DESCRICAO.toString() == area && MICROAREA_DESCRICAO.toString() == microarea){
INE_RESP_CADASTRO = listINEPROF[i];
}
}
COMPLEMENTO.text = map['COMPLEMENTO'];
carregando = false;
setState(() {});
}
alerta_cadastramento_atualizacao() {
double width = MediaQuery.of(context).size.width;
return showDialog(
context: context,
builder: (context){
return AlertDialog(
title: TextDefault(
text: 'Aviso',
color: ColorPalette.black54,
textAlign: TextAlign.center,
fontWeigth: FontWeight.bold,
),
content: TextDefault(
text: 'Quando o motivo da visita for uma das opções:\n'
'- Cadastramento/Atualização\n'
'- Busca Ativa\n'
'- Acompanhamento\n'
'- Egresso de Internação\n'
'O motivo "Visita periódica" não pode ser selecionado.',
color: ColorPalette.black54,
maxLines: 7,
),
actions: [
ButtonDefault(
onPressed: ()=>Navigator.pop(context),
title: 'OK',
width: width*0.15,
textColor: ColorPalette.white,
borderColor: ColorPalette.appBar,
background: ColorPalette.appBar,
)
],
);
}
);
}
alerta_visita_periodica() {
double width = MediaQuery.of(context).size.width;
return showDialog(
context: context,
builder: (context){
return AlertDialog(
title: TextDefault(
text: 'Aviso',
color: ColorPalette.black54,
textAlign: TextAlign.center,
fontWeigth: FontWeight.bold,
),
content: TextDefault(
text: 'O motivo da visita já foi selecionada como Visita periódica. Para selecionar um outro motivo, desmarque esta opção.',
color: ColorPalette.black54,
maxLines: 7,
),
actions: [
ButtonDefault(
onPressed: ()=>Navigator.pop(context),
title: 'OK',
width: width*0.15,
textColor: ColorPalette.white,
borderColor: ColorPalette.appBar,
background: ColorPalette.appBar,
)
],
);
}
);
}
@override
void initState() {
super.initState();
@@ -417,7 +601,18 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
height: double.infinity,
width: double.infinity,
decoration: ConstVariable().backgroundGradient,
child: ListView(
child: carregando?Center(child: Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
CircularProgressIndicator(),
TextDefault(text: 'Carregando dados ...',color: ColorPalette.black54,)
],
),
)
)):ListView(
children: [
Card(
margin: EdgeInsets.all(10),
@@ -535,22 +730,49 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
Container(
width: width*0.7,
height: heigth*0.1,
child: ListView.builder(
child: tipoVisitaModel.isEmpty && widget.dados!=null?Container():ListView.builder(
physics: const NeverScrollableScrollPhysics(),
itemCount: ConstVariable().tipoVisitaModel.length,
itemBuilder: (context,index){
if(widget.dados==null){
tipoVisitaModel.add(
CheckModel(
cod: 1,
subtitle: ConstVariable().tipoVisitaModel[index],
check: false
)
);
}
return CheckBoxSubtitle(
ontap:DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>tipoVisitaModel[index].check?tipoVisitaModel[index].check=false:tipoVisitaModel[index].check=true),
ontap:DESFECHO != 'VISITA REALIZADA'?null: (){
if(tipoVisitaModel[0].check == true && tipoVisitaModel[1].check == false && index == 1){
alerta_cadastramento_atualizacao();
}else if(tipoVisitaModel[0].check == false && tipoVisitaModel[1].check == true && index == 0){
alerta_visita_periodica();
}else if(CONSULTA || EXAME || VACINA || CONDICIONALIDADES ||
tipoAcompanhamentoModel.any((element) => element.check) ||outrosModel[0].check ){
alerta_cadastramento_atualizacao();
}else{
tipoVisitaModel[index].check?tipoVisitaModel[index].check=false:tipoVisitaModel[index].check=true;
}
setState((){});
},
subtitle: tipoVisitaModel[index].subtitle,
checkbox:tipoVisitaModel[index].check,
width: width*0.6,
onChanged:DESFECHO != 'VISITA REALIZADA'?null: (value)=>setState(()=>tipoVisitaModel[index].check=value),
onChanged:DESFECHO != 'VISITA REALIZADA'?null: (value){
if(tipoVisitaModel[0].check == true && tipoVisitaModel[1].check == false && index == 1){
alerta_cadastramento_atualizacao();
}else if(tipoVisitaModel[0].check == false && tipoVisitaModel[1].check == true && index == 0){
alerta_visita_periodica();
}else if(CONSULTA || EXAME || VACINA || CONDICIONALIDADES ||
tipoAcompanhamentoModel.any((element) => element.check) || outrosModel[0].check){
alerta_cadastramento_atualizacao();
}else{
tipoVisitaModel[index].check=value;
}
setState(() {});
},
);
}
),
@@ -562,10 +784,34 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
checkbox2: VACINA,
subtitle1: 'CONSULTA',
subtitle2: 'VACINA',
onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>CONSULTA=value),
onChanged2: DESFECHO != 'VISITA REALIZADA'?null: (value)=>setState(()=>VACINA=value),
ontap1: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>CONSULTA?CONSULTA=false:CONSULTA=true),
ontap2: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>VACINA?VACINA=false:VACINA=true),
onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value){
if(tipoVisitaModel[1].check == true){
alerta_visita_periodica();
}else{
setState(()=>CONSULTA=value);
}
},
onChanged2: DESFECHO != 'VISITA REALIZADA'?null: (value){
if(tipoVisitaModel[1].check == true){
alerta_visita_periodica();
}else{
setState(()=>VACINA=value);
}
},
ontap1: DESFECHO != 'VISITA REALIZADA'?null: (){
if(tipoVisitaModel[1].check == true){
alerta_visita_periodica();
}else{
setState(()=>CONSULTA?CONSULTA=false:CONSULTA=true);
}
},
ontap2: DESFECHO != 'VISITA REALIZADA'?null: (){
if(tipoVisitaModel[1].check == true){
alerta_visita_periodica();
}else{
setState(()=>VACINA?VACINA=false:VACINA=true);
}
},
),
CheckBoxTwoSubtitle(
width: width*0.7,
@@ -573,10 +819,34 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
checkbox2: CONDICIONALIDADES,
subtitle1: 'EXAME',
subtitle2: 'CONDICIONALIDADES',
onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>EXAME=value),
onChanged2: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>CONDICIONALIDADES=value),
ontap1: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>EXAME?EXAME=false:EXAME=true),
ontap2: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>CONDICIONALIDADES?CONDICIONALIDADES=false:CONDICIONALIDADES=true),
onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value){
if(tipoVisitaModel[1].check == true){
alerta_visita_periodica();
}else{
setState(()=>EXAME=value);
}
},
onChanged2: DESFECHO != 'VISITA REALIZADA'?null:(value){
if(tipoVisitaModel[1].check == true){
alerta_visita_periodica();
}else{
setState(()=>CONDICIONALIDADES=value);
}
},
ontap1: DESFECHO != 'VISITA REALIZADA'?null: (){
if(tipoVisitaModel[1].check == true){
alerta_visita_periodica();
}else{
setState(()=>EXAME?EXAME=false:EXAME=true);
}
},
ontap2: DESFECHO != 'VISITA REALIZADA'?null: (){
if(tipoVisitaModel[1].check == true){
alerta_visita_periodica();
}else{
setState(()=>CONDICIONALIDADES?CONDICIONALIDADES=false:CONDICIONALIDADES=true);
}
},
),
TitleContainers(title: 'Controle Ambiental',width: width*0.7,textAling: TextAlign.start,fontSize: 15),
CheckBoxTwoSubtitle(
@@ -604,22 +874,33 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
TitleContainers(title: 'Acompanhamento',width: width*0.7,textAling: TextAlign.start,fontSize: 15),
Container(
width: width*0.7,
height: heigth*0.85,
child: ListView.builder(
height: 1060,
child: widget.dados!=null && tipoAcompanhamentoModel.isEmpty?Container():ListView.builder(
physics: const NeverScrollableScrollPhysics(),
itemCount: ConstVariable().tipoAcompanhamentoModel.length,
itemBuilder: (context,index){
if(widget.dados == null){
tipoAcompanhamentoModel.add(
CheckModel(
subtitle: ConstVariable().tipoAcompanhamentoModel[index],
cod: ConstVariable().tipoAcompanhamentoModel[index].cod,
subtitle: ConstVariable().tipoAcompanhamentoModel[index].subtitle,
check: false
)
);
}
return CheckBoxSubtitle(
subtitle: tipoAcompanhamentoModel[index].subtitle,
checkbox:tipoAcompanhamentoModel[index].check,
width: width*0.6,
onChanged:DESFECHO != 'VISITA REALIZADA'?null: (value)=>setState(()=>tipoAcompanhamentoModel[index].check=value),
onChanged:DESFECHO != 'VISITA REALIZADA' || ((tipoAcompanhamentoModel[index].subtitle=='GESTANTE' && !sexoCidadaoFeminino)
|| (tipoAcompanhamentoModel[index].subtitle=='PUÉRPERA' && !sexoCidadaoFeminino)) ?null
: (value){
if(tipoVisitaModel[1].check == true){
alerta_visita_periodica();
}else{
setState(()=>tipoAcompanhamentoModel[index].check=value);
}
},
);
}
),
@@ -627,22 +908,31 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
TitleContainers(title: 'Outros',width: width*0.7,textAling: TextAlign.start,fontSize: 15),
Container(
width: width*0.7,
height: heigth*0.22,
child: ListView.builder(
height: 200,
child: outrosModel.isEmpty && widget.dados!=null?Container():ListView.builder(
physics: const NeverScrollableScrollPhysics(),
itemCount: ConstVariable().outrosModel.length,
itemBuilder: (context,index){
if(widget.dados==null){
outrosModel.add(
CheckModel(
subtitle: ConstVariable().outrosModel[index],
cod: ConstVariable().outrosModel[index].cod,
subtitle: ConstVariable().outrosModel[index].subtitle,
check: false
)
);
}
return CheckBoxSubtitle(
subtitle: outrosModel[index].subtitle,
checkbox:outrosModel[index].check,
width: width*0.6,
onChanged: (value)=>setState(()=>outrosModel[index].check=value),
onChanged: (value){
if(tipoVisitaModel[1].check == true && index==0){
alerta_visita_periodica();
}else{
setState(()=>outrosModel[index].check=value);
}
},
);
}
),
@@ -671,17 +961,19 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
InputWithSubtitle(
controller: PESO,
subtitle: 'Peso (em Kg - 000,000)',
// errorInput: PESO.text.isEmpty || PESO.text.length<2?'':double.parse(PESO.text.replaceAll(',', '.'))<0.5 && double.parse(PESO.text.replaceAll(',', '.'))>500?'O peso do paciente deve estar entre 0,5 e 500 kg':'',
errorInput: '',
labelInput: 'Peso (em Kg - 000,000)',
widthInput: width*0.7,
widthSubtitle: width*0.7,
hintInput: 'Escreva aqui',
mandatory: false,
mandatory: true,
enabled: true,
maxLength: 7,
textInputType: TextInputType.number,
onChanged: (v)=>setState((){}),
),
PESO.text.isEmpty || PESO.text.length<2?Container():double.parse(PESO.text.replaceAll(',', '.'))>=0.5 && double.parse(PESO.text.replaceAll(',', '.'))<=500?Container():ErrorDefault(error: 'O peso do paciente deve estar entre 0,5 e 500 kg',),
InputWithSubtitle(
controller: ALTURA,
subtitle: 'Altura (em metros - 0,00)',
@@ -696,6 +988,7 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
textInputType: TextInputType.number,
onChanged: (v)=>setState((){}),
),
ALTURA.text.isEmpty || ALTURA.text.length<1?Container():double.parse(ALTURA.text.replaceAll(',', '.'))>=0.2 && double.parse(ALTURA.text.replaceAll(',', '.'))<=2.5?Container():ErrorDefault(error: 'A altura do paciente deve estar entre 0,20 e 2,5 metros.',),
],
)
],
@@ -750,6 +1043,10 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
onChanged: (value){
setState(() {
CBO_PROFISSIONAL = value!;
List list = CBO_PROFISSIONAL.toString().split(' - ');
CBO_DB = list.last;
print('CBO_DB 1');
print(CBO_DB);
});
},
colorBorder: ColorPalette.white,
@@ -829,21 +1126,42 @@ class _HomeVisitScreenState extends State<HomeVisitScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
GestureDetector(
onTap: ()=>AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',PROCEDIMENTOS_SIGTAP,listProc),
onTap: ()=>setState(() {
AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',PROCEDIMENTOS_SIGTAP,listProc);
}),
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: Container(
height: 200,
width: width*0.7,
child: Row(
child: Column(
mainAxisAlignment:MainAxisAlignment.center ,
children: [
Row(
children: [
TextDefault(text: 'Procedimento',color: Colors.black,),
Spacer(),
IconButton(
icon: Icon(Icons.add_circle,color: ColorPalette.blackButton),
onPressed: (){
onPressed: ()=>setState(() {
AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',PROCEDIMENTOS_SIGTAP,listProc);
}),
)
],
),
GestureDetector(
onTap: ()=>setState(() {
AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',PROCEDIMENTOS_SIGTAP,listProc);
}),
child: Container(
height: listProc.isEmpty?0:150,
child: ListView.builder(
itemCount: listProc.length,
itemBuilder: (context,i){
return Text(listProc[i]);
},
),
),
)
],
),

View File

@@ -39,6 +39,7 @@ class _SplashScreenState extends State<SplashScreen> {
if(dataControl.length != 0){
var query = "SELECT * FROM CONTROLE_INTERNO";
dataControl = await db.rawQuery(query);
print(dataControl);
String? url;
if(list[3]=='desenvolvimento'){
url = UrlApiConst.ApiUrlDesenvolvimento;

View File

@@ -26,9 +26,12 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
String idUsuario = '';
String idUnidade = '';
String nomeUnidade = '';
int idArea = 0;
int idMicroarea = 0;
int AREA_ID = 0;
int AREA_DESCRICAO = 0;
int MICROAREA_ID = 0;
int MICROAREA_DESCRICAO = 0;
bool foraArea = false;
int foraAreaInt = 0;
String urlAPI='';
String mode = '';
String nameCityApi = '';
@@ -57,6 +60,7 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
codState = list[0]['COD_STATE'];
codCityIbge = list[0]['COD_IBGE'];
if(urlAPI!=''){
print('chegou');
dataUser();
}
});
@@ -64,12 +68,18 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
dataUser()async{
_prefService.readCacheUnidade().then((listUnidade)async{
print('listUnidade');
print(listUnidade);
_prefService.readCacheSync().then((list){
print('datauser');
print(list);
foraArea = list[8];
idArea = list[2];
idMicroarea = list[4];
idUnidade = listUnidade[0].toString();
AREA_ID = list[0];
AREA_DESCRICAO = list[1];
MICROAREA_ID = list[2];
MICROAREA_DESCRICAO = list[3];
foraArea = list[9];
foraAreaInt = foraArea?1:0;
idUnidade = list[5].toString();
nomeUnidade = listUnidade[1];
initSync();
});
@@ -79,9 +89,6 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
initSync()async{
await DbSqliteSync().deleteSync().then((_)async{
await ApiDataSync().syncPerm(urlAPI,mode,nameCityApi,user).then((response)async{
if(response['status'] == 0 || response['sync_perm'] != "S"){
AlertDialogDefault().alert(context, 'Erro', 'Usuário sem permissão para Sincronização de Unidade!', 'Voltar');
}else{
countProg = 0.1;
setState(()=> messageSteps = "Etapa 1 de 10 - Importando informações do CONECTASUS");
await ApiDataSync().syncBairros(urlAPI,mode,nameCityApi,user).then((value)async{
@@ -133,7 +140,7 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
await DbSqliteSync().insertProfissionaisCBOs(value).then((value)async{
countProg = 0.7;
setState(() {});
await ApiDataSync().syncCidadaos(urlAPI,mode,nameCityApi,user,idUnidade,idArea,idMicroarea,foraArea).then((value)async{
await ApiDataSync().syncCidadaos(urlAPI,mode,nameCityApi,user,idUnidade,AREA_ID,MICROAREA_ID,foraAreaInt).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros dos Cidadãos - Por favor, tente novamente!");
}else{
@@ -141,7 +148,7 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
await DbSqliteSync().insertCidadaos(value,'sync','').then((value)async{
countProg = 0.8;
setState(() {});
await ApiDataSync().syncCadastrosDomiciliares(urlAPI,mode,nameCityApi,user,idUnidade,idArea,idMicroarea,foraArea).then((value)async{
await ApiDataSync().syncCadastrosDomiciliares(urlAPI,mode,nameCityApi,user,idUnidade,AREA_ID,MICROAREA_ID,foraAreaInt).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros Domiciliares - Por favor, tente novamente!");
}else{
@@ -149,13 +156,13 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
await DbSqliteSync().insertCadastrosDomiciliares(value,'sync',0,0,'').then((value)async{
countProg = 0.9;
setState(() {});
await ApiDataSync().syncCadastrosIndividuais(urlAPI,mode,nameCityApi,user,idUnidade,idArea,idMicroarea,foraArea).then((value)async{
await ApiDataSync().syncCadastrosIndividuais(urlAPI,mode,nameCityApi,user,idUnidade,AREA_ID,MICROAREA_ID,foraAreaInt).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros Individuais - Por favor, tente novamente!");
}else{
setState(()=> messageSteps = "Etapa 10 de 10 - Gravando os Cadastros Individuais no Aplicativo");
await DbSqliteSync().insertCadastrosIndividuais(value,'sync',0).then((value)async{
await DbSqliteSync().saveSync(codCity,codState,urlAPI,mode,nameCityApi,nameCityFront,codCityIbge,user,idUnidade,nomeUnidade,idArea,idMicroarea).then((value)async{
await DbSqliteSync().saveSync(codCity,codState,urlAPI,mode,nameCityApi,nameCityFront,codCityIbge,user,idUnidade,nomeUnidade,AREA_ID,AREA_DESCRICAO,MICROAREA_ID,MICROAREA_DESCRICAO).then((value)async{
countProg = 1;
setState(() {});
Navigator.pushReplacement(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: user)));
@@ -186,7 +193,6 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
});
}
});
}
});
});
}

View File

@@ -25,6 +25,16 @@ class ApiDataLoad{
final map = json.decode(response.body);
return map;
}
Future loadEtniasIndigenas(urlAPI,mode,nameCityApi,user)async{
//https://app0.rkmsistemas.com.br/api/atb/homologacao/cabreuva/admin/load/unidades
// http://192.168.0.42:8061/api/atb/desenvolvimento/portoferreira/admin/load/etnias_indigenas
final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/etnias_indigenas';
// print(url);
final response = await http.get(Uri.parse(url));
final map = json.decode(response.body);
// print(map);
return map;
}
Future loadUnidades(urlAPI,mode,nameCityApi,user)async{
//https://app0.rkmsistemas.com.br/api/atb/homologacao/cabreuva/admin/load/unidades
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/unidades

View File

@@ -14,9 +14,10 @@ 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();

View File

@@ -56,7 +56,8 @@ class ApiDataSync{
}
Future syncCidadaos(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/cidadaos/1/1/true
final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/cidadaos/$area/$microarea/$foraArea';
// http://192.168.0.42:8061/api/atb/desenvolvimento/portoferreira/admin/sync/47/cidadaos/1/1/true
final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/cidadaos/$area/$microarea/${foraArea==1?1:0}';
print(url);
final response = await http.get(Uri.parse(url));
final map = json.decode(response.body);
@@ -64,14 +65,16 @@ class ApiDataSync{
}
Future syncCadastrosDomiciliares(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/cadastrosDomiciliares/1/1/true
final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/cadastrosDomiciliares/$area/$microarea/$foraArea';
final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/cadastrosDomiciliares/$area/$microarea/${foraArea==1?1:0}';
print(url);
final response = await http.get(Uri.parse(url));
final map = json.decode(response.body);
return map;
}
Future syncCadastrosIndividuais(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/cadastrosIndividuais/1/1/true
final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/cadastrosIndividuais/$area/$microarea/$foraArea';
final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/cadastrosIndividuais/$area/$microarea/${foraArea==1?1:0}';
print(url);
final response = await http.get(Uri.parse(url));
final map = json.decode(response.body);
return map;

View File

@@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:rkm/service/db/db_sqlite_load.dart';
import 'package:sqflite/sqflite.dart';
@@ -24,21 +25,20 @@ class DBQuerys{
var query = "SELECT * FROM CIAPS";
List list = await db.rawQuery(query);
// print(list);
return list[0];
return list;
}
Future buscaCID()async{
Database db = await DbSqliteLoad().intialDB();
var query = "SELECT * FROM CIDS";
List list = await db.rawQuery(query);
// print(list);
return list[0];
return list;
}
Future buscaAtendDomProc()async{
Database db = await DbSqliteLoad().intialDB();
var query = "SELECT * FROM ATENDS_DOM_SIGTAP";
var query = "SELECT * FROM PROCEDIMENTOS_SIGTAP";
List list = await db.rawQuery(query);
// print(list);
return list[0];
return list;
}
buscaDadosProfissional(String idUnidade, int idUsuario)async{
Database db = await DbSqliteLoad().intialDB();
@@ -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'");
@@ -113,6 +126,22 @@ class DBQuerys{
// print(list);
return list;
}
Future buscaPROCEDIMENTOS_SIGTAP_CBO(String CBO)async{
Database db = await DbSqliteLoad().intialDB();
var query = "SELECT * FROM PROCEDIMENTOS_SIGTAP_CBO WHERE CODIGO_CBO = $CBO";
List list = await db.rawQuery(query);
// print(list);
return list;
}
Future buscaPROCEDIMENTOS_SIGTAP(String SIGTAP)async{
Database db = await DbSqliteLoad().intialDB();
var query = "SELECT * FROM PROCEDIMENTOS_SIGTAP WHERE COD_PROC_SIGTAP = '$SIGTAP'";
List list = await db.rawQuery(query);
// print(list);
return list;
}
buscaCBOS()async{
Database db = await DbSqliteLoad().intialDB();
var query = "SELECT * FROM CBOS ORDER BY DESCRICAO_CBO";
@@ -154,6 +183,13 @@ class DBQuerys{
// print(list);
return list;
}
buscaEtniaIndigina(String COD_ETNIA)async{
Database db = await DbSqliteLoad().intialDB();
var query = 'SELECT * FROM ETNIAS_INDIGENAS WHERE ID_ETNIA_INDIGENA = "$COD_ETNIA"';
List list = await db.rawQuery(query);
// print(list);
return list;
}
buscaLoteamentoPorDesc(String DESC_LOGR_LOTEAMENTO)async{
Database db = await DbSqliteLoad().intialDB();
var query = 'SELECT * FROM LOGRADOUROS_LOTEAMENTOS WHERE DESC_LOGR_LOTEAMENTO = "$DESC_LOGR_LOTEAMENTO"';

View File

@@ -1,5 +1,3 @@
import 'package:rkm/config/const_variable.dart';
import 'package:rkm/controllers/main_controllers.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
@@ -33,10 +31,10 @@ class DbSqliteLoad{
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 INTEGER, 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, FIBROMIALGIA INTEGER, TRANSTORNO_ESPECTRO_AUTISTA 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, RENDA_TOTAL_FAMILIAR REAL , POSSUI_VEICULO TEXT , MODELO_VEICULO TEXT , ANO_VEICULO INTEGER , POSSUI_FINANCIAMENTO TEXT , VALOR_PARCELA_FINANCIAMENTO REAL , POSSUI_EMPRESTIMO TEXT , VALOR_PARCELA_EMPRESTIMO REAL);');
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_ETNIA_INDIGENA TEXT, 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, RENDA_TOTAL_FAMILIAR REAL , POSSUI_VEICULO TEXT , MODELO_VEICULO TEXT , ANO_VEICULO INTEGER , POSSUI_FINANCIAMENTO TEXT , VALOR_PARCELA_FINANCIAMENTO REAL , POSSUI_EMPRESTIMO TEXT , VALOR_PARCELA_EMPRESTIMO REAL);');
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, AREA INTEGER, MICROAREA 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, AREA_ID INTEGER, AREA_DESCRICAO INTEGER, MICROAREA_ID INTEGER, MICROAREA_DESCRICAO 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);');
@@ -58,6 +56,7 @@ class DbSqliteLoad{
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, ID_UNIDADE 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 ETNIAS_INDIGENAS (ID_ETNIA_INDIGENA TEXT, DESC_ETNIA_INDIGENA TEXT);');
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);');
@@ -103,6 +102,7 @@ class DbSqliteLoad{
'DELETE FROM PROFISSIONAIS;',
'DELETE FROM PROFISSIONAIS_CBOS;',
'DELETE FROM PROFISSIONAIS_EQUIPE;',
'DELETE FROM ETNIAS_INDIGENAS;',
'DELETE FROM UNIDADES;',
'DELETE FROM VISITAS_DOMICILIARES;',
'DELETE FROM VISITAS_DOMICILIARES_COMPL;',
@@ -143,6 +143,20 @@ class DbSqliteLoad{
return db;
}
Future saveEtniasIndigenasDB(List rows)async{
Database db = await intialDB();
Batch batch = db.batch();
rows.forEach((row) {
batch.insert('ETNIAS_INDIGENAS', row);
});
List<Object?> result = await batch.commit();
print('Linhas inseridas: ${result.length}');
List<Map<String, dynamic>> ETNIAS_INDIGENAS = await db.query('ETNIAS_INDIGENAS');
print('Total de Etnias Indigenas no banco de dados: ${ETNIAS_INDIGENAS.length}');
return db;
}
Future saveUnidadesDB(List rows)async{
Database db = await intialDB();
Batch batch = db.batch();

View File

@@ -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';
@@ -174,6 +175,10 @@ class DbSqliteSync{
Database db = await DbSqliteLoad().intialDB();
Batch batch = db.batch();
if(value.toString() == '[Erro para carregar os Cidadaos - Sync -> syncCidadaos()]'){
return db;
}
if(type=='sync'){
//para a carga inicial o datalista funciona
List dataList = value;
@@ -193,6 +198,7 @@ class DbSqliteSync{
'NO_MUNICIPIO_NASC' : value[i]['noMunicipioNasc'],
'ESTADO_UF_NASC' : value[i]['cdEstado'],
'ID_ETNIA' : value[i]['cdEtnia'],
'ID_ETNIA_INDIGENA' : value[i]['cdEtniaIndigena'],
'ID_ESCOLARIDADE' : value[i]['cdUsuarioEscolaridade'],
'ID_DEFICIENCIA' : value[i]['nrDeficiencia'],
'NOME_MAE' : value[i]['noMae'],
@@ -505,11 +511,15 @@ class DbSqliteSync{
}
return db;
}
Future insertAtendimentoDomiciliar(var value)async{
Future insertAtendimentoDomiciliar(var value, bool novo, int ID_ATENDIMENTO_DOMICILIAR)async{
Database db = await DbSqliteLoad().intialDB();
if(novo){
int id = await db.insert('ATENDIMENTOS_DOMICILIARES', value);
// print(await db.query('ATENDIMENTOS_DOMICILIARES'));
return id;
}else{
await db.update('ATENDIMENTOS_DOMICILIARES', value ,where: "ID_ATENDIMENTO_DOMICILIAR = $ID_ATENDIMENTO_DOMICILIAR");
return ID_ATENDIMENTO_DOMICILIAR;
}
}
Future insertCondicoesAvaliadas(int ID_ATENDIMENTO_DOMICILIAR,int COND_AVAL_ATEND_DOM)async{
Database db = await DbSqliteLoad().intialDB();
@@ -522,11 +532,15 @@ class DbSqliteSync{
// print(await db.query('ATENDS_DOM_COMPL'));
return db;
}
Future insertVisitaDomiciliar(var value)async{
Future insertVisitaDomiciliar(var value, int ID_VISITA_DOMICILIAR, bool novo)async{
Database db = await DbSqliteLoad().intialDB();
if(novo){
int id = await db.insert('VISITAS_DOMICILIARES', value);
print(await db.query('VISITAS_DOMICILIARES'));
return id;
}else{
await db.update('VISITAS_DOMICILIARES', value ,where: "ID_VISITA_DOMICILIAR = $ID_VISITA_DOMICILIAR");
return ID_VISITA_DOMICILIAR;
}
}
Future insertVisitaDomiciliarCOMPL(int ID_VISITA_DOMICILIAR,int ID_VISITA_DOM_TIPO, int ID_VISITA_COMPLEMENTO)async{
Database db = await DbSqliteLoad().intialDB();
@@ -540,15 +554,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<String,dynamic> 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{
@@ -562,7 +579,7 @@ class DbSqliteSync{
print(await db.query('VISITAS_DOMICILIARES_PROC'));
return db;
}
Future saveSync(codCity,codState,urlAPI,mode,nameCityApi,nameCityFront,codCityIbge,user,idUnidade,nomeUnidade,area,microarea)async{
Future saveSync(codCity,codState,urlAPI,mode,nameCityApi,nameCityFront,codCityIbge,user,idUnidade,nomeUnidade,AREA_ID,AREA_DESCRICAO,MICROAREA_ID,MICROAREA_DESCRICAO)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, '')}]';
@@ -578,8 +595,10 @@ class DbSqliteSync{
'AMBIENTE' : mode,
'SYNC_UNIDADE' : idUnidade,
'NOME_UNIDADE' : nomeUnidade,
'AREA' : area,
'MICROAREA' : microarea,
'AREA_ID' : AREA_ID,
'AREA_DESCRICAO' : AREA_DESCRICAO,
'MICROAREA_ID' : MICROAREA_ID,
'MICROAREA_DESCRICAO' : MICROAREA_DESCRICAO,
'ULTIMA_SINCRONIZACAO' : DateTime.now().toString(),
'COMPETENCIA' : '${DateTime.now().year}${DateTime.now().month<10?'0':''}${DateTime.now().month-1}',
};

View File

@@ -18,24 +18,32 @@ class PrefService{
Future createCacheUnidade(String idUnidade, String nomeUnidade)async{
print('idUnidade $idUnidade');
print('nomeUnidade $nomeUnidade');
SharedPreferences _preferences = await SharedPreferences.getInstance();
_preferences.setString('idUnidade', idUnidade);
_preferences.setString('nomeUnidade', nomeUnidade);
return [_preferences.getString('idUnidade'),_preferences.getString('nomeUnidade')];
}
Future readCacheUnidade() async{
SharedPreferences _preferences = await SharedPreferences.getInstance();
return [_preferences.getInt('idUnidade'),_preferences.getString('nomeUnidade')];
}
Future createCacheSync(EquipeModelo equipe,bool foraArea)async{
SharedPreferences _preferences = await SharedPreferences.getInstance();
_preferences.setInt('idEquipe',equipe.ID_EQUIPE);
_preferences.setString('ine',equipe.INE);
_preferences.setInt('area',equipe.AREA);
_preferences.setInt('idAtbMicroarea',equipe.ID_ATB_MICROAREA);
_preferences.setInt('idAtbArea',equipe.ID_ATB_AREA);
_preferences.setInt('microarea',equipe.MICROAREA);
_preferences.setInt('area',equipe.AREA);
_preferences.setInt('idAtbMicroarea',equipe.ID_ATB_MICROAREA==null?0:equipe.ID_ATB_MICROAREA);
_preferences.setInt('microarea',equipe.MICROAREA==null?0:equipe.MICROAREA);
_preferences.setInt('idEquipe',equipe.ID_EQUIPE);
_preferences.setInt('idUnidade',equipe.ID_UNIDADE);
_preferences.setString('ine',equipe.INE);
_preferences.setInt('idProfissional',equipe.ID_PROFISSIONAL);
_preferences.setInt('ativo',equipe.ATIVO);
_preferences.setBool('foraArea', foraArea);
}
Future createCacheModel(String user,String password,String city,String mode)async{
SharedPreferences _preferences = await SharedPreferences.getInstance();
@@ -44,22 +52,11 @@ class PrefService{
_preferences.setString('city', city);
_preferences.setString('mode', mode);
}
Future readCacheIdUsername(String username) async{
SharedPreferences _preferences = await SharedPreferences.getInstance();
var username = _preferences.getString('username');
return username;
}
Future readCacheUnidade() async{
SharedPreferences _preferences = await SharedPreferences.getInstance();
var idUnidade = _preferences.getString('idUnidade');
var nomeUnidade = _preferences.getString('nomeUnidade');
List list =[
idUnidade,
nomeUnidade,
];
return list;
}
Future readCacheModel(String user,String password,String city,String mode) async{
SharedPreferences _preferences = await SharedPreferences.getInstance();
String? username = _preferences.getString('username');
@@ -76,22 +73,24 @@ class PrefService{
}
Future readCacheSync() async{
SharedPreferences _preferences = await SharedPreferences.getInstance();
int? area = _preferences.getInt('area');
int? AREA_ID = _preferences.getInt('idAtbArea');
int? AREA_DESCRICAO = _preferences.getInt('area');
int? MICROAREA_ID = _preferences.getInt('idAtbMicroarea');
int? MICROAREA_DESCRICAO = _preferences.getInt('microarea');
int? idEquipe = _preferences.getInt('idEquipe');
int? idUnidade = _preferences.getInt('idUnidade');
String? ine = _preferences.getString('ine');
int? idAtbMicroarea = _preferences.getInt('idAtbMicroarea');
int? idAtbArea = _preferences.getInt('idAtbArea');
int? microarea = _preferences.getInt('microarea');
int? idProfissional = _preferences.getInt('idProfissional');
int? ativo = _preferences.getInt('ativo');
bool? foraArea = _preferences.getBool('foraArea');
List list =[
AREA_ID,
AREA_DESCRICAO,
MICROAREA_ID,
MICROAREA_DESCRICAO,
idEquipe,
idUnidade,
ine,
idAtbArea,
area,
idAtbMicroarea,
microarea,
idProfissional,
ativo,
foraArea
@@ -99,8 +98,13 @@ class PrefService{
return list;
}
Future removeCache(String idUsuario) async{
Future removeCache() async{
SharedPreferences _preferences = await SharedPreferences.getInstance();
_preferences.remove('username');
}
Future removeUnidade() async{
SharedPreferences _preferences = await SharedPreferences.getInstance();
_preferences.remove('idUnidade');
_preferences.remove('nomeUnidade');
}
}

View File

@@ -6,14 +6,14 @@ import 'package:rkm/screens/select_service/consumption_markers_screen.dart';
import 'package:rkm/screens/select_service/eligibility_assessment_screen.dart';
import 'package:rkm/screens/select_service/procedures_screen.dart';
import 'package:rkm/screens/select_service/service_dental_screen.dart';
import 'package:rkm/screens/select_service/service_home_screen.dart';
import 'package:rkm/screens/select_service/atendimento_domiciliar_tela.dart';
import 'package:rkm/screens/select_service/service_individual_screen.dart';
import 'package:rkm/widgets/button_default.dart';
import 'package:rkm/widgets/dropdown_button_com_pesquisa.dart';
import 'package:rkm/widgets/switch_with_subtitle.dart';
import 'package:rkm/widgets/text_default.dart';
import 'package:rkm/widgets/title_containers.dart';
import '../screens/select_service/home_visit_screen.dart';
import '../screens/select_service/visita_domiciliar_tela.dart';
import 'dropdown_button_default.dart';
import 'input_search_text.dart';
class AlertDialogDefault {
@@ -85,6 +85,41 @@ class AlertDialogDefault {
);
}
sucess(BuildContext context,String title,String subtitle,String textButtom, var onPressed) {
double width = MediaQuery.of(context).size.width;
double height = MediaQuery.of(context).size.height;
return showDialog(
context: context,
builder: (context){
return AlertDialog(
title: TextDefault(
text: title,
color: ColorPalette.black54,
textAlign: TextAlign.center,
fontWeigth: FontWeight.bold,
),
content: TextDefault(
text: subtitle,
color: ColorPalette.black54,
maxLines: 4,
),
actions: [
ButtonDefault(
onPressed: onPressed,
title: textButtom,
width: width*0.85,
textColor: ColorPalette.white,
borderColor: ColorPalette.appBar,
background: ColorPalette.appBar,
)
],
);
}
);
}
alertSelect(BuildContext context,String name,String username, var dataPatient) {
//Cadastro e edição do Cadastro do Cidadão, Cadastro Individual, Cadastro Domiciliar e Visita Domiciliar
List list = [
@@ -95,7 +130,7 @@ class AlertDialogDefault {
// 'Ficha Complementar',
// 'Marcadores de Consumo',
// 'Procedimentos',
'Visita domiciliar',
'Visita Domiciliar',
];
double width = MediaQuery.of(context).size.width;
@@ -126,12 +161,12 @@ class AlertDialogDefault {
if(index==0){
Navigator.push(
context,
MaterialPageRoute(builder:(context) => ServiceHomeScreen(name: name,username: username,)),
MaterialPageRoute(builder:(context) => AtendimentoDomiciliarTela(name: name,username: username,dados: null,)),
);
}else if(index == 1){
Navigator.push(
context,
MaterialPageRoute(builder:(context) => HomeVisitScreen(name: name,username: username,)),
MaterialPageRoute(builder:(context) => VisitaDomiciliarTela(name: name,username: username,dados: null,)),
);
// Navigator.push(
// context,
@@ -165,7 +200,7 @@ class AlertDialogDefault {
}else if (index==7){
Navigator.push(
context,
MaterialPageRoute(builder:(context) => HomeVisitScreen(name: name,username: username,)),
MaterialPageRoute(builder:(context) => VisitaDomiciliarTela(name: name,username: username,dados: null,)),
);
}
},
@@ -458,7 +493,7 @@ class AlertDialogDefault {
String? selectProfessionals,
String? selectCBO,
String add,
List list,
List listProcProfissional,
List listProc,
) {
@@ -498,22 +533,22 @@ class AlertDialogDefault {
}),
select: selectProfessionals,
title: '',
list: list,
list: listProcProfissional,
width: width*0.8,
widthContainer: width*0.75,
),
ButtonDefault(
onPressed:(){
listProc.add(selectProfessionals);
setState((){});
},
title: 'Adicionar',
width: width*0.8,
textColor: ColorPalette.white,
borderColor:ColorPalette.appBar,
background: ColorPalette.appBar,
disableColor: ColorPalette.buttonDisable,
)
// ButtonDefault(
// onPressed:(){
// listProc.add(selectProfessionals);
// setState((){});
// },
// title: 'Adicionar',
// width: width*0.8,
// textColor: ColorPalette.white,
// borderColor:ColorPalette.appBar,
// background: ColorPalette.appBar,
// disableColor: ColorPalette.buttonDisable,
// )
],
),
),
@@ -522,7 +557,7 @@ class AlertDialogDefault {
mainAxisSize: MainAxisSize.min,
children: [
TitleContainers(title: 'Procedimentos'),
list.length!=0
listProcProfissional.length!=0
?Container(
width: width*0.8,
height: listProc.length*70,
@@ -548,6 +583,7 @@ class AlertDialogDefault {
onPressed: () =>
setState(() {
listProc.removeAt(index);
setState((){});
}),
)
],

View File

@@ -46,7 +46,7 @@ class DropDownEquipe extends StatelessWidget {
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 0.0),
child: TextDefault(
text: 'INE: ${value.INE} / Área: ${value.AREA} - Microárea : ${value.MICROAREA==null?'':value.MICROAREA}',
text: 'INE: ${value.INE} / Área: ${value.AREA} ${value.MICROAREA==null?'':'- Microárea : ${value.MICROAREA}'}',
maxLines: 2,
fontSize: fontSize,
color: Colors.black,

View File

@@ -0,0 +1,87 @@
import 'package:flutter/material.dart';
import 'package:rkm/widgets/text_default.dart';
import '../config/color_palette.dart';
import '../config/const_variable.dart';
import '../models/drop_down_data_string_model.dart';
class DropDownEtniaIndigena extends StatelessWidget {
var onChanged;
DropDownDataStringModel? select;
String title;
double fontSize;
List<DropDownDataStringModel> list;
double width;
double widthContainer;
DropDownEtniaIndigena({
required this.onChanged,
required this.select,
required this.title,
required this.list,
required this.width,
this.fontSize = 15,
this.widthContainer = 300
});
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: width,
margin: EdgeInsets.symmetric(horizontal: 5),
padding: EdgeInsets.symmetric(horizontal: 2),
child: TextDefault(
textAlign: TextAlign.start,
text: title,
color: ColorPalette.black54,
fontSize: 12,
),
),
Container(
width: width*0.95,
alignment: Alignment.centerLeft,
margin: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(5),
border: Border.all(color: Colors.white)
),
padding: EdgeInsets.symmetric(horizontal: 5),
child: DropdownButtonHideUnderline(
child: DropdownButton(
dropdownColor: Colors.white,
hint: Padding(
padding: const EdgeInsets.symmetric(horizontal: 0.0),
child: TextDefault(text: '-SELECIONE-',fontSize: ConstVariable().fontSizeInput,textAlign: TextAlign.end,color: Colors.black,),
),
value: select,
items: list.map((value) => DropdownMenuItem<DropDownDataStringModel>(
value: value,
child: Container(
alignment: Alignment.centerLeft,
color: Colors.white,
height: 50,
width: width*0.88,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 0.0),
child: TextDefault(
text: value.title,
maxLines: 2,
fontSize: fontSize,
color: Colors.black,
),
),
),
)
).toList(),
onChanged:onChanged
),
),
),
],
);
}
}

View File

@@ -46,7 +46,6 @@ class DropdownWithSubtitle extends StatelessWidget {
fontSize: 12,
),
),
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(5),

View File

@@ -0,0 +1,12 @@
import Cocoa
import FlutterMacOS
import XCTest
class RunnerTests: XCTestCase {
func testExample() {
// If you add code to the Runner application, consider adding tests here.
// See https://developer.apple.com/documentation/xctest for more information about using XCTest.
}
}

View File

@@ -37,10 +37,10 @@ packages:
dependency: "direct main"
description:
name: brasil_fields
sha256: c36edf02897d3470ebfff6f9fafc0e87a648c7d3e3f0a2386fe72fda7e9c6437
sha256: "6c802e8629d8e5c81af32d611d1cf260d7ecc86b99e27c127f64490bf1606256"
url: "https://pub.dev"
source: hosted
version: "1.11.0"
version: "1.15.0"
characters:
dependency: transitive
description:
@@ -217,10 +217,10 @@ packages:
dependency: "direct main"
description:
name: get
sha256: "2ba20a47c8f1f233bed775ba2dd0d3ac97b4cf32fc17731b3dfc672b06b0e92a"
sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e
url: "https://pub.dev"
source: hosted
version: "4.6.5"
version: "4.6.6"
http:
dependency: "direct main"
description:
@@ -241,10 +241,10 @@ packages:
dependency: "direct main"
description:
name: intl
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
url: "https://pub.dev"
source: hosted
version: "0.18.1"
version: "0.19.0"
js:
dependency: transitive
description:
@@ -253,6 +253,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.6.7"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
url: "https://pub.dev"
source: hosted
version: "10.0.4"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
url: "https://pub.dev"
source: hosted
version: "3.0.3"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
line_icons:
dependency: "direct main"
description:
@@ -269,30 +293,38 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.1"
mask_text_input_formatter:
dependency: "direct main"
description:
name: mask_text_input_formatter
sha256: "978c58ec721c25621ceb468e633f4eef64b64d45424ac4540e0565d4f7c800cd"
url: "https://pub.dev"
source: hosted
version: "2.9.0"
matcher:
dependency: transitive
description:
name: matcher
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
version: "0.12.16"
version: "0.12.16+1"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
url: "https://pub.dev"
source: hosted
version: "0.5.0"
version: "0.8.0"
meta:
dependency: transitive
description:
name: meta
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.12.0"
package_info_plus:
dependency: "direct main"
description:
@@ -313,10 +345,10 @@ packages:
dependency: transitive
description:
name: path
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
version: "1.8.3"
version: "1.9.0"
path_provider_linux:
dependency: transitive
description:
@@ -385,10 +417,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:
@@ -534,10 +566,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
url: "https://pub.dev"
source: hosted
version: "0.6.1"
version: "0.7.0"
typed_data:
dependency: transitive
description:
@@ -554,14 +586,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
web:
vm_service:
dependency: transitive
description:
name: web
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
url: "https://pub.dev"
source: hosted
version: "0.3.0"
version: "14.2.1"
web:
dependency: "direct main"
description:
name: web
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
url: "https://pub.dev"
source: hosted
version: "0.5.1"
win32:
dependency: transitive
description:
@@ -579,5 +619,5 @@ packages:
source: hosted
version: "1.0.0"
sdks:
dart: ">=3.2.3 <4.0.0"
flutter: ">=3.16.0"
dart: ">=3.3.0 <4.0.0"
flutter: ">=3.19.0"

View File

@@ -2,9 +2,20 @@ name: rkm
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+11 AJUSTES PARA A SINCRONIZAÇÃO DIA 22/08/2024
#versão 1.0.11+12 AJUSTES PARA NÃO EXIBIR MICROAREA NULL, E AJUSTE DADOS FORA DE AREA DIA 23/08/2024
#versão 1.0.12+13 AJUSTE DE ID E DESCRIÇÃO DE AREA E MICROAREA, AJUSTE DA MENSAGEM DADOS SALVOS DA EDIÇÃO DO PACIENTE. 26/08/2024
#versão 1.0.13+14 SETSTATE SALVAR DADOS CIDADAO E EDITAR E EXCLUIR ATENDICMENTO E VISITA. 27/08/2024
#versão 1.0.13+14 EDITAR E EXCLUIR VISITA DOMICILIAR E ALTERADA PARA ZERO SEM FORA DE AREA E UM PARA FORA DE AREA. 28/08/2024
#versão 1.0.14+15 AJUSTADA A ALTURA DA LISTA DOS PROCEDIMENTOS E DO ACOMPANHAMENTO, E A MENSAGEM DE AVISO DE NÃO SALVAR QUANDO ESTIVER EM EDIÇÃO. 29/08/2024
#versão 1.0.15+16 AJUSTE DAS RESTRIÇÕES DE VISITAS PERIODICAS, ENVIO DE PESO E ALTURA E DO LOADING. 30/08/2024
#versão 1.0.15+16 AJUSTE DOS CODIGOS, ENVIO DE PESO E ALTURA E SINCRONIZADO QUE NAO EXIBIA. 02/09/2024
#versão 1.0.16+17 AJUSTE DA COMPETENCIA. 10/09/2024
#versão 1.0.17+18 AJUSTE PARA NÃO DEIXAR ESPAÇO DIGITAÇÃO DO LOGIN E CORREÇÃO DO SCROOL DA LISTA DE ATENDIMENTOS. 19/09/2024
publish_to: 'none'
version: 1.0.6+5
version: 1.0.17+18
environment:
sdk: '>=3.2.3 <4.0.0'
@@ -19,12 +30,14 @@ dependencies:
line_icons: ^2.0.1
http:
gainer_crypto: ^0.0.6
mask_text_input_formatter: ^2.3.0
sqflite: ^2.0.0+3
shared_preferences: ^2.0.15
get:
brasil_fields:
get: ^4.6.6
brasil_fields: ^1.15.0
# lista com pesquisa
flutter_typeahead: ^5.2.0
web: ^0.5.1
flutter_localizations:
sdk: flutter

View File

@@ -18,41 +18,21 @@
<meta charset="UTF-8">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<meta name="description" content="RKM AB 2.0.">
<meta name="description" content="A new Flutter project.">
<!-- iOS meta tags & icons -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="rkm">
<meta name="apple-mobile-web-app-title" content="rkmmobile">
<link rel="apple-touch-icon" href="icons/Icon-192.png">
<!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png"/>
<title>rkm</title>
<title>rkmmobile</title>
<link rel="manifest" href="manifest.json">
<script>
// The value below is injected by flutter build, do not touch.
var serviceWorkerVersion = null;
</script>
<!-- This script adds the flutter initialization JS code -->
<script src="flutter.js" defer></script>
</head>
<body>
<script>
window.addEventListener('load', function(ev) {
// Download main.dart.js
_flutter.loader.loadEntrypoint({
serviceWorker: {
serviceWorkerVersion: serviceWorkerVersion,
}
}).then(function(engineInitializer) {
return engineInitializer.initializeEngine();
}).then(function(appRunner) {
return appRunner.runApp();
});
});
</script>
<script src="flutter_bootstrap.js" async></script>
</body>
</html>

View File

@@ -1,11 +1,11 @@
{
"name": "rkm",
"short_name": "rkm",
"name": "rkmmobile",
"short_name": "rkmmobile",
"start_url": ".",
"display": "standalone",
"background_color": "#0175C2",
"theme_color": "#0175C2",
"description": "RKM AB 2.0.",
"description": "A new Flutter project.",
"orientation": "portrait-primary",
"prefer_related_applications": false,
"icons": [