From 532d186d5b77c2a99a281d4693ec148e0cd42e5c Mon Sep 17 00:00:00 2001 From: Reginaldo Date: Fri, 5 May 2023 17:49:04 -0300 Subject: [PATCH] ajustes na tela de Atendimento Domiliar, nos models e alert dialog --- lib/config/const_variable.dart | 118 +++---- lib/models/drop_down_data_string_model.dart | 10 + .../select_service/service_home_screen.dart | 310 ++++++++++++++---- .../service_individual_screen.dart | 49 ++- lib/service/db/db_querys.dart | 21 ++ lib/service/db/db_sqlite_Sigtap.dart | 14 +- lib/widgets/alert_dialog_default.dart | 130 +++++++- lib/widgets/check_box_subtitle.dart | 2 +- 8 files changed, 507 insertions(+), 147 deletions(-) create mode 100644 lib/models/drop_down_data_string_model.dart diff --git a/lib/config/const_variable.dart b/lib/config/const_variable.dart index a7cabf3..ec5da03 100644 --- a/lib/config/const_variable.dart +++ b/lib/config/const_variable.dart @@ -22,45 +22,15 @@ class ConstVariable{ 'ESTRANGEIRO', 'NATURALIZADO', ]; - List CID = []; - List CIAP = [ - '30 - EXAME MÉDICO/AVALIAÇÃO DE SAÚDE - COMPLETO', - '31 - EXAME MÉDICO/AVALIAÇÃO DE SAÚDE - PARCIAL', - '32 - TESTE DE SENSIBILIDADE', - '33 - EXAME MICROBIOLÓGICO/IMUNOLÓGICO', - ]; - List listConduct = [ - 'ALTA ADMINISTRATIVA', - 'ALTA CLÍNICA', - 'END. AD1', - 'ENC. INTERNAÇÃO HOSPITALAR', - 'ENC. URGÊNCIA E EMERGÊNCIA', - 'ÓBITO', - 'PERMANÊNCIA', - ]; - - List proceduresModel = [ - 'ACOMPANHAMENTO DE PACIENTE EM REABILITAÇÃO', - 'ENEMA', - 'ANTIBIOTICOTERAPIA PARENTERAL', - 'OXIGENOTERAPIA', - 'ATEND./ACOMP.PACIENTE EM REABILITAÇÃO DO DES...', - 'RETIRADA DE PONTOS DE CIRURGIAS BÁSICAS', - 'ATEND. FISIOTERAPÊUTICO PACIENTE C/ TRANST. RES...', - 'SONDAGEM GÁSTRICA', - 'ATENDIMENTO MÉDICO COM FINALIDADE DE ATESTAR...', - 'TERAPIA DE REIDRATAÇÃO ORAL', - 'ATENDIMENTO/ACOMPANHMENTO DE REABILITAÇÃO', - 'TERAPIA DE REIDRATAÇÃO PARENTAL', - 'CATETERISMO VESICAL DE ALÍVIO', - 'TERAPIA FONOAUDIOLÓGICA INDIVIDUAL', - 'CATETERISMO VESICAL DE DEMORA', - 'TRATAMENTO DE TRAUMATISMOS DE LOCALIZAÇÃO E...', - 'COLETA DE MATERIAL PARA EXAME LABORATORIAL', - 'TRATAMENTO EM REABILITAÇÃO', - 'CUIDADOS COM ESTOMAS', - 'CUIDADOS COM TRAQUEOSTOMIA', + List listConduct = [ + DropDownDataModel(cod: 3, title: 'ALTA ADMINISTRATIVA'), + DropDownDataModel(cod: 1, title: 'ALTA CLÍNICA'), + DropDownDataModel(cod: 2, title: 'END. AD1'), + DropDownDataModel(cod: 5, title: 'ENC. INTERNAÇÃO HOSPITALAR'), + DropDownDataModel(cod: 4, title: 'ENC. URGÊNCIA E EMERGÊNCIA'), + DropDownDataModel(cod: 9, title: 'ÓBITO'), + DropDownDataModel(cod: 7, title: 'PERMANÊNCIA'), ]; List serviceIndividualCheckBoxList =[ @@ -123,25 +93,61 @@ class ConstVariable{ 'PARACENTESE', 'MEDICAÇÃO PARENTERAL', ]; - List listServicePlace = [ - 'UBS', - 'UNIDADE MÓVEL', - 'RUA', - 'DOMICÍLIO', - 'ESCOLA/CRECHE', - 'OUTROS', - 'POLO', - 'INSTITUIÇÃO/ABRIGO', - 'UNIDADE PRISIONAL OU CONGÊNERES', - 'UNIDADE SOCIOEDUCATIVA', - 'HOSPITAL', - 'UNIDADE DE PRONTO ATENDIMENTO', - 'CACON/UNACON', + + List serviceHomeCheckProclist = [ + 'ACOMPANHAMENTO DE PACIENTE EM REABILITAÇÃO', + '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', + 'ATENDIMENTO MÉDICO COM FINALIDADE DE ATESTAR ÓBITO', + 'TERAPIA DE REIDRATAÇÃO ORAL', + 'ATENDIMENTO/ACOMPANHAMENTO EM REABILITAÇÃO NAS MÚLTIPLS DEFICIÊNCIAS', + 'TERAPIA DE REIDRATAÇÃO PARENTAL', + '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 ESPECIF/NÃO ESPECIFICADA', + 'COLETA DE MATERIAL PARA EXAME LABORATORIAL', + 'TRATAMENTO EM REABILITAÇÃO', + 'CUIDADOS COM ESTOMAS', + 'CUIDADOS COM TRAQUEOSTOMIA' ]; - List typeService = [ - 'ATENDIMENTO PROGRAMADO', - 'ATENDIMENTO NÃO PROGRAMADO', - 'VISITA DOMICILIAR PÓS ÓBITO', + + List listServicePlace = [ + DropDownDataModel(cod: 1,title: 'UBS'), + DropDownDataModel(cod: 2,title: 'UNIDADE MÓVEL'), + DropDownDataModel(cod: 3,title: 'RUA'), + DropDownDataModel(cod: 4,title: 'DOMICÍLIO'), + DropDownDataModel(cod: 5,title: 'ESCOLA/CRECHE'), + DropDownDataModel(cod: 6,title: 'OUTROS'), + DropDownDataModel(cod: 7,title: 'POLO'), + DropDownDataModel(cod: 8,title: 'INSTITUIÇÃO/ABRIGO'), + DropDownDataModel(cod: 9,title: 'UNIDADE PRISIONAL OU CONGÊNERES'), + DropDownDataModel(cod: 10,title: 'UNIDADE SOCIOEDUCATIVA'), + DropDownDataModel(cod: 11,title: 'HOSPITAL'), + DropDownDataModel(cod: 12,title: 'UNIDADE DE PRONTO ATENDIMENTO'), + DropDownDataModel(cod: 13,title: 'CACON/UNACON'), + ]; + List typeService = [ + DropDownDataModel(cod: 7,title: 'ATENDIMENTO PROGRAMADO'), + DropDownDataModel(cod: 8,title: 'ATENDIMENTO NÃO PROGRAMADO'), + DropDownDataModel(cod: 9,title: 'VISITA DOMICILIAR PÓS ÓBITO'), + ]; + List typeModelService = [ + DropDownDataModel(cod: 1,title: 'AD1'), + DropDownDataModel(cod: 2,title: 'AD2'), + DropDownDataModel(cod: 3,title: 'AD3'), + ]; + List typeTurnService = [ + DropDownDataModel(cod: 1,title: 'MANHÃ'), + DropDownDataModel(cod: 2,title: 'TARDE'), + DropDownDataModel(cod: 3,title: 'NOITE'), ]; List typeService2 = [ 'CONSULTA AGENDADA PROGRAMADA/CUIDADO CONTINUADO', diff --git a/lib/models/drop_down_data_string_model.dart b/lib/models/drop_down_data_string_model.dart new file mode 100644 index 0000000..7654539 --- /dev/null +++ b/lib/models/drop_down_data_string_model.dart @@ -0,0 +1,10 @@ +class DropDownDataStringModel{ + String cod; + String title; + + DropDownDataStringModel({ + required this.cod, + required this.title + }); +} + diff --git a/lib/screens/select_service/service_home_screen.dart b/lib/screens/select_service/service_home_screen.dart index ba9d9c8..cd2536b 100644 --- a/lib/screens/select_service/service_home_screen.dart +++ b/lib/screens/select_service/service_home_screen.dart @@ -3,9 +3,16 @@ import 'package:intl/intl.dart'; import 'package:line_icons/line_icons.dart'; import 'package:rkm/models/check_model.dart'; import 'package:rkm/config/color_palette.dart'; +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 '../../config/const_variable.dart'; +import '../../models/drop_down_data_string_model.dart'; +import '../../service/api/api_data_import_sigtap.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/check_box_subtitle.dart'; import '../../widgets/dropdown_with_subtitle.dart'; @@ -23,22 +30,55 @@ class ServiceHomeScreen extends StatefulWidget { class _ServiceHomeScreenState extends State { - var professionalController = TextEditingController(text: 'ADMINISTRADOR'); - var unitController = TextEditingController(text: 'USF PINHAL - EMILIA STEPHANI SIMIONATO'); + var NOME_PROFISSIONAL = TextEditingController(); + var CNES_UNIDADE = TextEditingController(); var controllerSearchCondition = TextEditingController(); var controllerSearchCID = TextEditingController(); - String date='Data'; + + String date=''; + String dateDB=''; + String idUsuario=''; + String idUnidade=''; + + 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; + int CONDUTA_COD=0; + String CID_COD=''; + String? selectCBO; - String? selectCodTeam; - String? selectServicePlace; - String? selectTypeService; - String? selectModality; - String? selectRotation; - String? selectCIAP; - String? selectCID; - String? selectConduct; + String? CIAP; + String? CID; + String? CBO_RESP_CADASTRO; + String? INE_RESP_CADASTRO; + String? LOCAL_ATENDIMENTO; + String? TIPO_ATENDIMENTO; + String? MODALIDADE; + String? TURNO; + String? CONDUTA; + String? nameCityApi; + String? mode; + String? urlAPI; + List serviceHomeModel = []; - List proceduresModel = []; + List serviceProcModel = []; + List listCBO = []; + List listServicePlace = []; + List typeService = []; + List typeModelService = []; + List typeTurnService = []; + List listINEPROF = []; + List listCIAP = []; + List listCID = []; + List PROCEDIMENTOS_SIGTAP = []; + List ATENDS_DOM_PROC = []; + List listConduct = []; + List listProc = []; + + bool CNS_VALIDO = false; escolherprazoInicio(BuildContext context) async { var pickDate = await showDatePicker( @@ -48,8 +88,8 @@ class _ServiceHomeScreenState extends State { lastDate: DateTime(2025)); if (pickDate != null) { setState(() { + dateDB = '${pickDate.year}-${pickDate.month<10?'0':''}${pickDate.month}-${pickDate.day<10?'0':''}${pickDate.day}'; date = formatData(year: pickDate.year, month: pickDate.month, day: pickDate.day); - date = 'Data $date'; }); } } @@ -60,6 +100,98 @@ class _ServiceHomeScreenState extends State { return formattedDate; } + loadLists() { + for (int i = 0; ConstVariable().listServicePlace.length > i; i++) { + listServicePlace.add(ConstVariable().listServicePlace[i].title); + } + for (int i = 0; ConstVariable().typeService.length > i; i++) { + typeService.add(ConstVariable().typeService[i].title); + } + for (int i = 0; ConstVariable().typeModelService.length > i; i++) { + typeModelService.add(ConstVariable().typeModelService[i].title); + } + for (int i = 0; ConstVariable().typeTurnService.length > i; i++) { + typeTurnService.add(ConstVariable().typeTurnService[i].title); + } + for (int i = 0; ConstVariable().listConduct.length > i; i++) { + listConduct.add(ConstVariable().listConduct[i].title); + } + } + + getUser()async{ + final PrefService _prefService = PrefService(); + _prefService.readCacheIdUsuario('idUsuario').then((value){ + if(value != null){ + idUsuario = value; + loadData(); + } + }); + _prefService.readCacheUnidade('idUnidade').then((value){ + if(value!=null){ + idUnidade = value[0]; + CNES_UNIDADE.text = value[1]; + } + }); + 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{ + await ApiDataImportSigtap().loadSIGTAP(urlAPI, mode, nameCityApi).then((value)async{ + await DbSqliteSigtap().saveProceduresSigtapDB(value).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']); + } + } + setState(() {}); + }); + }); + }); + await DBQuerys().buscaCIAP().then((list){ + listCIAP.add(DropDownDataModel(cod: int.parse(list['CODIGO_CIAP']), title: list['DESC_CIAP'])); + }); + await DBQuerys().buscaCID().then((list){ + listCID.add(DropDownDataStringModel(cod: list['CODIGO_CID'], title: list['DESCRICAO_CID'])); + }); + } + + loadData()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; + } + setState(() {}); + }); + await DBQuerys().buscaCBOProfissional(idUsuario).then((list){ + if(list.length!=0){ + for(int i = 0; list.length>i;i++){ + listCBO.add(list[i]['CODIGO_CBO'].toString()); + } + } + CBO_RESP_CADASTRO = list.length == 0?null:list[0]['CODIGO_CBO'].toString(); + setState(() {}); + }); + 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(); + loadLists(); + } + @override Widget build(BuildContext context) { @@ -93,7 +225,7 @@ class _ServiceHomeScreenState extends State { mainAxisSize: MainAxisSize.min, children: [ InputWithSubtitle( - controller: professionalController, + controller: NOME_PROFISSIONAL, subtitle: 'Profissional', errorInput: 'Campo Obrigatório', labelInput: 'Profissional', @@ -104,7 +236,7 @@ class _ServiceHomeScreenState extends State { onChanged: (v)=>setState((){}), ), InputWithSubtitle( - controller: unitController, + controller: CNES_UNIDADE, subtitle: 'Unidade', errorInput: 'Campo Obrigatório', labelInput: 'Unidade', @@ -115,7 +247,7 @@ class _ServiceHomeScreenState extends State { onChanged: (v)=>setState((){}), ), DropdownWithSubtitle( - list: [], + list: listCBO, widthSubtitle: width*0.7, subtitle: 'CBO', hintDropdown: 'CBO', @@ -130,20 +262,29 @@ class _ServiceHomeScreenState extends State { colorBorder: ColorPalette.white, ), DropdownWithSubtitle( - list: ['INE: 0001558536 / Área 4 - Microárea: - '], - widthSubtitle: width*0.2, + list: listINEPROF, + widthSubtitle: width*0.3, subtitle: 'Código da Equipe', hintDropdown: 'Selecione', - select: selectCodTeam, + select: INE_RESP_CADASTRO, widthDropdown: width*0.7, - widthContainerDropdown: width*0.4, + widthContainerDropdown: width*0.5, onChanged: (value){ setState(() { - selectCodTeam = value!; + INE_RESP_CADASTRO = value!; }); }, colorBorder: ColorPalette.white, ), + Container( + width: width*0.7, + child: TextDefault( + textAlign: TextAlign.start, + text: 'Data', + color: ColorPalette.black54, + fontSize: 12, + ), + ), GestureDetector( onTap: ()=>escolherprazoInicio(context), child: Container( @@ -159,64 +300,84 @@ class _ServiceHomeScreenState extends State { width: width*0.7, child: TextDefault( text: date, - color: ColorPalette.black54, - fontSize: 18, + color: Colors.black, + fontSize: 15, ), ), ), DropdownWithSubtitle( - list: ConstVariable().listServicePlace, + list: listServicePlace, widthSubtitle: width*0.2, subtitle: 'Local de Atendimento', hintDropdown: 'Local de Atendimento', - select: selectServicePlace, + select: LOCAL_ATENDIMENTO, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, - onChanged: (value)=>setState(()=>selectServicePlace = value!), + onChanged: (value){ + LOCAL_ATENDIMENTO = value; + for(int i = 0;ConstVariable().listServicePlace.length >i;i++){ + if(ConstVariable().listServicePlace[i].title == LOCAL_ATENDIMENTO){ + LOCAL_ATENDIMENTO_COD = ConstVariable().listServicePlace[i].cod; + } + } + setState(() {}); + }, colorBorder: ColorPalette.white, ), DropdownWithSubtitle( - list: ConstVariable().typeService, + list: typeService, widthSubtitle: width*0.2, subtitle: 'Tipo de Atendimento', hintDropdown: 'Tipo de Atendimento', - select: selectTypeService, + select: TIPO_ATENDIMENTO, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged: (value){ - setState(() { - selectTypeService = value!; - }); + TIPO_ATENDIMENTO = value; + for(int i = 0;ConstVariable().typeService.length >i;i++){ + if(ConstVariable().typeService[i].title == TIPO_ATENDIMENTO){ + TIPO_ATENDIMENTO_COD = ConstVariable().typeService[i].cod; + } + } + setState(() {}); }, colorBorder: ColorPalette.white, ), DropdownWithSubtitle( - list: ['AD1','AD2','AD3'], + list: typeModelService, widthSubtitle: width*0.2, subtitle: 'Modalidade', hintDropdown: 'Modalidade', - select: selectModality, + select: MODALIDADE, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged: (value){ - setState(() { - selectModality = value!; - }); + MODALIDADE = value; + for(int i = 0;ConstVariable().typeModelService.length >i;i++){ + if(ConstVariable().typeModelService[i].title == MODALIDADE){ + MODALIDADE_COD = ConstVariable().typeModelService[i].cod; + } + } + setState(() {}); }, colorBorder: ColorPalette.white, ), DropdownWithSubtitle( - list: ['MANHÃ','TARDE','NOITE'], + list: typeTurnService, widthSubtitle: width*0.2, subtitle: 'Turno', hintDropdown: 'Turno', - select: selectRotation, + select: TURNO, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged: (value){ - setState(() { - selectRotation = value!; - }); + TURNO = value; + for(int i = 0;ConstVariable().typeTurnService.length >i;i++){ + if(ConstVariable().typeTurnService[i].title == TURNO){ + TURNO_COD = ConstVariable().typeTurnService[i].cod; + } + } + setState(() {}); }, colorBorder: ColorPalette.white, ), @@ -274,15 +435,16 @@ class _ServiceHomeScreenState extends State { context, controllerSearchCondition, ListView.separated( - itemCount: ConstVariable().CIAP.length, + itemCount: listCIAP.length, separatorBuilder: (context,index)=>Divider(color: ColorPalette.black54), itemBuilder: (context,index){ return ListTile( onTap: ()=>setState(() { - selectCIAP = ConstVariable().CIAP[index]; + CIAP_COD = listCIAP[index].cod; + CIAP = listCIAP[index].cod.toString() +' - '+ listCIAP[index].title; Navigator.pop(context); }), - title: TextDefault(text: ConstVariable().CIAP[index],maxLines: 2,) + title: TextDefault(text: listCIAP[index].cod.toString() +' - '+ listCIAP[index].title,maxLines: 2,fontSize: 15,color: Colors.black,) ); }, ) @@ -291,8 +453,9 @@ class _ServiceHomeScreenState extends State { padding: EdgeInsets.symmetric(vertical: 10), width: width*0.7, child: TextDefault( - text: selectCIAP!=null?'CIAP $selectCIAP':'CIAP', - color: ColorPalette.black54, + text: CIAP!=null?'CIAP $CIAP':'CIAP', + color:Colors.black, + fontSize: 15, ) ) ), @@ -301,15 +464,16 @@ class _ServiceHomeScreenState extends State { context, controllerSearchCID, ListView.separated( - itemCount: ConstVariable().CID.length, + itemCount: listCID.length, separatorBuilder: (context,index)=>Divider(color: ColorPalette.black54), itemBuilder: (context,index){ return ListTile( onTap: ()=>setState(() { - selectCID = ConstVariable().CIAP[index]; + CID_COD =listCID[index].cod; + CID = listCID[index].cod +' - '+ listCID[index].title; Navigator.pop(context); }), - title: TextDefault(text: ConstVariable().CID[index],maxLines: 2,) + title: TextDefault(text: listCID[index].cod +' - '+ listCID[index].title,maxLines: 2,fontSize: 15,color: Colors.black,) ); }, ) @@ -318,8 +482,9 @@ class _ServiceHomeScreenState extends State { padding: EdgeInsets.symmetric(vertical: 10), width: width*0.7, child: TextDefault( - text: selectCID!=null?'CID $selectCIAP':'CID', - color: ColorPalette.black54, + text: CID!=null?'CID $CIAP':'CID', + color:Colors.black, + fontSize: 15, ) ) ), @@ -347,22 +512,22 @@ class _ServiceHomeScreenState extends State { padding: const EdgeInsets.symmetric(horizontal: 10.0), child: Container( width: width*0.7, - height: heigth*1.1, + height: heigth*1.2, child: ListView.builder( physics: const NeverScrollableScrollPhysics(), - itemCount: ConstVariable().proceduresModel.length, + itemCount: ConstVariable().serviceHomeCheckProclist.length, itemBuilder: (context,index){ - proceduresModel.add( + serviceProcModel.add( CheckModel( - subtitle: ConstVariable().proceduresModel[index], + subtitle: ConstVariable().serviceHomeCheckProclist[index], check: false ) ); return CheckBoxSubtitle( - subtitle: proceduresModel[index].subtitle, - checkbox:proceduresModel[index].check, + subtitle: serviceProcModel[index].subtitle, + checkbox:serviceProcModel[index].check, width: width*0.6, - onChanged: (value)=>setState(()=>proceduresModel[index].check=value), + onChanged: (value)=>setState(()=>serviceProcModel[index].check=value), ); } ), @@ -392,9 +557,14 @@ class _ServiceHomeScreenState extends State { width: width*0.7, child: Row( children: [ - TextDefault(text: 'Procedimento'), + TextDefault(text: 'Procedimento',color: Colors.black,), Spacer(), - IconButton(onPressed: (){}, icon: Icon(Icons.add_circle,color: ColorPalette.blackButton,)) + IconButton( + icon: Icon(Icons.add_circle,color: ColorPalette.blackButton), + onPressed: (){ + AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', selectCBO, selectCBO, 'add',PROCEDIMENTOS_SIGTAP,listProc); + }, + ) ], ), ) @@ -427,14 +597,22 @@ class _ServiceHomeScreenState extends State { Spacer(), DropdownWithSubtitle( colorBorder: ColorPalette.white, - list: ConstVariable().listConduct, + list: listConduct, subtitle: 'SELECIONE', - select: selectConduct, - widthDropdown: width*0.4, - widthContainerDropdown: width*0.35, - widthSubtitle: width*0.35, + select: CONDUTA, + widthDropdown: width*0.39, + widthContainerDropdown: width*0.3, + widthSubtitle: width*0.3, hintDropdown: 'SELECIONE', - onChanged: (value)=>setState(()=>selectConduct=value), + onChanged: (value){ + CONDUTA = value; + for(int i = 0;ConstVariable().listConduct.length >i;i++){ + if(ConstVariable().listConduct[i].title == CONDUTA){ + CONDUTA_COD = ConstVariable().listConduct[i].cod; + } + } + setState(() {}); + }, ) ], ), diff --git a/lib/screens/select_service/service_individual_screen.dart b/lib/screens/select_service/service_individual_screen.dart index ddc0e66..87a26b7 100644 --- a/lib/screens/select_service/service_individual_screen.dart +++ b/lib/screens/select_service/service_individual_screen.dart @@ -5,6 +5,8 @@ import 'package:rkm/widgets/input_text.dart'; import '../../models/check_model.dart'; import '../../config/color_palette.dart'; import '../../config/const_variable.dart'; +import '../../models/drop_down_data_model.dart'; +import '../../service/db/db_querys.dart'; import '../../widgets/alert_dialog_default.dart'; import '../../widgets/appbar_default.dart'; import '../../widgets/button_default.dart'; @@ -47,6 +49,7 @@ class _ServiceIndividualScreenState extends State { String? selectCBO; String add=''; List examsList=[]; + List listServicePlace=[]; List serviceConditionModel = []; List trackingModel = []; List nasfPoloModelList = []; @@ -54,6 +57,7 @@ class _ServiceIndividualScreenState extends State { List proceduresModel = []; List conductList = []; List forwardingList = []; + List listCIAP = []; bool switchVaccineUpToDate = false; bool switchPregnancyPlane = false; bool switchResquestedTest = false; @@ -91,6 +95,21 @@ class _ServiceIndividualScreenState extends State { return formattedDate; } + loadLists() async{ + for (int i = 0; ConstVariable().listServicePlace.length > i; i++) { + listServicePlace.add(ConstVariable().listServicePlace[i].title); + } + await DBQuerys().buscaCIAP().then((list){ + listCIAP.add(DropDownDataModel(cod: int.parse(list['CODIGO_CIAP']), title: list['DESC_CIAP'])); + }); + } + + @override + void initState() { + super.initState(); + loadLists(); + } + @override Widget build(BuildContext context) { @@ -160,7 +179,7 @@ class _ServiceIndividualScreenState extends State { colorBorder: ColorPalette.white, ), DropdownWithSubtitle( - list: ConstVariable().listServicePlace, + list: listServicePlace, widthSubtitle: width*0.2, subtitle: 'Local de Atendimento', hintDropdown: 'Local de Atendimento', @@ -193,7 +212,7 @@ class _ServiceIndividualScreenState extends State { Spacer(), IconButton( icon: Icon(Icons.people_alt_rounded), - onPressed: ()=>AlertDialogDefault().outherProfessionals( + onPressed: ()=>AlertDialogDefault().otherProfessionals( context, 'Outros Profissionais', 'Adicionar Profissional', @@ -518,15 +537,15 @@ class _ServiceIndividualScreenState extends State { context, controllerSearchCondition, ListView.separated( - itemCount: ConstVariable().CIAP.length, + itemCount: listCIAP.length, separatorBuilder: (context,index)=>Divider(color: ColorPalette.black54), itemBuilder: (context,index){ return ListTile( onTap: ()=>setState(() { - selectCIAP1 = ConstVariable().CIAP[index]; + selectCIAP1 = listCIAP[index].title; Navigator.pop(context); }), - title: TextDefault(text: ConstVariable().CIAP[index],maxLines: 2,) + title: TextDefault(text: listCIAP[index].title,maxLines: 2,) ); }, ) @@ -545,15 +564,15 @@ class _ServiceIndividualScreenState extends State { context, controllerSearchCondition, ListView.separated( - itemCount: ConstVariable().CIAP.length, + itemCount: listCIAP.length, separatorBuilder: (context,index)=>Divider(color: ColorPalette.black54), itemBuilder: (context,index){ return ListTile( onTap: ()=>setState(() { - selectCIAP2 = ConstVariable().CIAP[index]; + selectCIAP2 = listCIAP[index].title; Navigator.pop(context); }), - title: TextDefault(text: ConstVariable().CIAP[index],maxLines: 2,) + title: TextDefault(text: listCIAP[index].title,maxLines: 2,) ); }, ) @@ -572,15 +591,15 @@ class _ServiceIndividualScreenState extends State { context, controllerSearchCID, ListView.separated( - itemCount: ConstVariable().CID.length, + itemCount: listCIAP.length, separatorBuilder: (context,index)=>Divider(color: ColorPalette.black54), itemBuilder: (context,index){ return ListTile( onTap: ()=>setState(() { - selectCID = ConstVariable().CIAP[index]; + selectCID = listCIAP[index].title; Navigator.pop(context); }), - title: TextDefault(text: ConstVariable().CID[index],maxLines: 2,) + title: TextDefault(text: listCIAP[index].title,maxLines: 2,) ); }, ) @@ -599,15 +618,15 @@ class _ServiceIndividualScreenState extends State { context, controllerSearchCID, ListView.separated( - itemCount: ConstVariable().CID.length, + itemCount: listCIAP.length, separatorBuilder: (context,index)=>Divider(color: ColorPalette.black54), itemBuilder: (context,index){ return ListTile( onTap: ()=>setState(() { - selectCID = ConstVariable().CIAP[index]; + selectCID = listCIAP[index].title; Navigator.pop(context); }), - title: TextDefault(text: ConstVariable().CID[index],maxLines: 2,) + title: TextDefault(text: listCIAP[index].title,maxLines: 2,) ); }, ) @@ -642,7 +661,7 @@ class _ServiceIndividualScreenState extends State { Spacer(), IconButton( icon: Icon(Icons.add_circle), - onPressed: ()=>AlertDialogDefault().outherExams( + onPressed: ()=>AlertDialogDefault().otherExams( context, 'Outros Exames', 'Adicionar Exames', diff --git a/lib/service/db/db_querys.dart b/lib/service/db/db_querys.dart index f3238f9..22cd03e 100644 --- a/lib/service/db/db_querys.dart +++ b/lib/service/db/db_querys.dart @@ -19,6 +19,27 @@ class DBQuerys{ // List list = await db.rawQuery("SELECT * FROM CIDADAOS WHERE CPF = $teste"); return list; } + Future buscaCIAP()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT * FROM CIAPS"; + List list = await db.rawQuery(query); + // print(list); + return list[0]; + } + Future buscaCID()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT * FROM CIDS"; + List list = await db.rawQuery(query); + // print(list); + return list[0]; + } + Future buscaAtendDomProc()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT * FROM ATENDS_DOM_SIGTAP"; + List list = await db.rawQuery(query); + print(list); + return list[0]; + } buscaDadosProfissional(String idUnidade, String idUsuario)async{ 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"; diff --git a/lib/service/db/db_sqlite_Sigtap.dart b/lib/service/db/db_sqlite_Sigtap.dart index fa830f7..d3fd62f 100644 --- a/lib/service/db/db_sqlite_Sigtap.dart +++ b/lib/service/db/db_sqlite_Sigtap.dart @@ -22,13 +22,13 @@ class DbSqliteSigtap{ // {"codProcedimento":"0701020580","nome":"MANUTEN\u00c7\u00c3O DE OPM ORTOP\u00c9DICA","codGrupo":"07","qtdeMax":2,"idadeMin":833,"idadeMax":833,"sexo":"N"} for(int i=0;value.length > i;i++){ Map row = { - 'COD_PROC_SIGTAP' : value[i]['codProcedimento'], - 'DESC_PROC_SIGTAP' : value[i]['nome'], - 'GRUPO_PROC_SIGTAP' : value[i]['codGrupo'], - 'QTDE_MAXIMA' : value[i]['qtdeMax'], - 'IDADE_MIN' : value[i]['idadeMin'], - 'IDADE_MAX' : value[i]['idadeMax'], - 'SEXO' : value[i]['sexo'], + 'COD_PROC_SIGTAP' : value['codProcedimento'], + 'DESC_PROC_SIGTAP' : value['nome'], + 'GRUPO_PROC_SIGTAP' : value['codGrupo'], + 'QTDE_MAXIMA' : value['qtdeMax'], + 'IDADE_MIN' : value['idadeMin'], + 'IDADE_MAX' : value['idadeMax'], + 'SEXO' : value['sexo'], }; int id = await db.insert('PROCEDIMENTOS_SIGTAP', row); } diff --git a/lib/widgets/alert_dialog_default.dart b/lib/widgets/alert_dialog_default.dart index 9a5ddb3..5abd0d2 100644 --- a/lib/widgets/alert_dialog_default.dart +++ b/lib/widgets/alert_dialog_default.dart @@ -138,7 +138,7 @@ class AlertDialogDefault { ); } - outherProfessionals( + otherProfessionals( BuildContext context,String title,String subtitle,String? selectProfessionals,String? selectCBO,String add ) { @@ -254,7 +254,7 @@ class AlertDialogDefault { ); } - outherExams( + otherExams( BuildContext context, String title,String subtitle, String? selectProfessionals, @@ -404,4 +404,130 @@ class AlertDialogDefault { } ); } + + otherProc( + BuildContext context, + String title, + String subtitle, + String? selectProfessionals, + String? selectCBO, + String add, + List list, + List listProc, + ) { + + double width = MediaQuery.of(context).size.width; + double height = MediaQuery.of(context).size.height; + + return showDialog( + context: context, + builder: (context){ + return StatefulBuilder( + builder:(context,setState)=> AlertDialog( + titlePadding: EdgeInsets.all(0), + contentPadding: EdgeInsets.all(0), + title: Container( + padding: EdgeInsets.all(10), + color: ColorPalette.blackButton, + child: TextDefault( + text: title, + color: ColorPalette.white, + textAlign: TextAlign.center, + fontWeigth: FontWeight.bold, + ), + ), + content: Container( + decoration: ConstVariable().backgroundGradient, + child: Column( + children: [ + Card( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TitleContainers(title: subtitle), + DropDownButtonDefault( + onChanged: (value)=>setState((){ + selectProfessionals=value; + }), + select: selectProfessionals, + title: 'Procedimento', + list: list, + width: width + ), + ButtonDefault( + onPressed:(){ + listProc.add(selectProfessionals); + setState((){}); + }, + title: 'Adicionar', + width: width*0.8, + textColor: ColorPalette.white, + borderColor:ColorPalette.appBar, + background: ColorPalette.appBar, + disableColor: ColorPalette.buttonDisable, + ) + ], + ), + ), + Card( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TitleContainers(title: 'Procedimentos'), + list.length!=0 + ?Container( + width: width*0.8, + height: height*0.4, + child: ListView.builder( + itemCount: listProc.length, + itemBuilder: (context,index) { + return Container( + width: width * 0.8, + padding: EdgeInsets.all(10), + child: Row( + children: [ + Container( + width: width * 0.65, + child: TextDefault( + fontSize: 15, + text: listProc[index], + color: ColorPalette.black54,) + ), + Spacer(), + IconButton( + icon: Icon(Icons.delete), + onPressed: () => + setState(() { + listProc.removeAt(index); + }), + ) + ], + ), + ); + } + ), + ) + :Container() + ], + ), + ) + ], + ), + ), + actionsAlignment: MainAxisAlignment.start, + actions: [ + ButtonDefault( + onPressed: ()=>Navigator.pop(context), + title: 'Fechar', + width: width*0.2, + textColor: ColorPalette.black54, + borderColor: ColorPalette.white, + background: ColorPalette.white, + ) + ], + ), + ); + } + ); + } } diff --git a/lib/widgets/check_box_subtitle.dart b/lib/widgets/check_box_subtitle.dart index d1865fe..9874f90 100644 --- a/lib/widgets/check_box_subtitle.dart +++ b/lib/widgets/check_box_subtitle.dart @@ -15,7 +15,7 @@ class CheckBoxSubtitle extends StatelessWidget { required this.checkbox, required this.subtitle, required this.onChanged, - this.fontSize = 15 + this.fontSize = 14 }); @override