0, 'atendimento_individual' => 0, 'visita_domiciliar' => 0, 'avaliacao_elegibilidade' => 0, 'ficha_complementar' => 0, 'procedimentos' => 0, 'marcadores_consumo' => 0, 'atendimento_domiciliar' => 0, ]; $identificacoes = []; $fichas = request()->all(); self::adicionarLogSincronizacao($fichas); if (isset($fichas['cadastro_paciente'])) { self::sincronizarCadastroPaciente($fichas['cadastro_paciente'], $identificacoes, $response); } if (isset($fichas['atendimento_individual'])) { self::sincronizarAtendimentoIndividual($fichas['atendimento_individual'], $identificacoes, $response); } if (isset($fichas['visita_domiciliar'])) { self::sincronizarVisitaDomiciliar($fichas['visita_domiciliar'], $identificacoes, $response); } if (isset($fichas['avaliacao_elegibilidade'])) { self::sincronizarAvaliacaoElegibilidade($fichas['avaliacao_elegibilidade'], $identificacoes, $response); } if (isset($fichas['ficha_complementar'])) { self::sincronizarFichaComplementar($fichas['ficha_complementar'], $identificacoes, $response); } if (isset($fichas['procedimentos'])) { self::sincronizarProcedimentos($fichas['procedimentos'], $identificacoes, $response); } if (isset($fichas['marcadores_consumo'])) { self::sincronizarMarcadorConsumoAlimentar($fichas['marcadores_consumo'], $identificacoes, $response); } if (isset($fichas['atendimento_domiciliar'])) { self::sincronizarAtendimentoDomiciliar($fichas['atendimento_domiciliar'], $identificacoes, $response); } return response()->json($response, Response::HTTP_OK); } private static function sincronizarCadastroPaciente($fichas, &$identificacoes, &$response) { if (is_array($fichas) && sizeof($fichas) > 0) { foreach ($fichas as &$ficha) { $paciente = new PacienteController(); $fichaPaciente = $paciente->getPaciente($ficha['paciente_id'] ?? null); if (is_null($fichaPaciente)) { $pacienteIdPorCpf = $paciente->obterFichaPacientePorCpf($ficha['cidadao']['cpf']); $fichaPaciente = $paciente->getPaciente($pacienteIdPorCpf ?? null); } $idPaciente = $paciente->saveStore($ficha, $fichaPaciente); if (is_numeric($idPaciente) && $idPaciente > 0 && isset($ficha['ID_TMP']) && $ficha['ID_TMP'] > 0 && is_null($ficha['cidadao']['id'])) { $identificacoes['paciente'][$ficha['ID_TMP']] = $idPaciente; } $response['cadastro_paciente'] += 1; } } } private static function sincronizarCadastroDomiciliar($fichas, $identificacoes, &$response) { if (is_array($fichas) && sizeof($fichas) > 0) { foreach ($fichas as &$ficha) { CadastroDomiciliarService::saveStore($ficha); $response['cadastro_domiciliar'] += 1; } } } private static function sincronizarCadastroIndividual($fichas, &$identificacoes, &$response) { if (is_array($fichas) && sizeof($fichas) > 0) { foreach ($fichas as $ficha) { CadastroIndividualService::saveStore($ficha); $response['cadastro_individual'] += 1; } } } private static function sincronizarAtendimentoIndividual($fichas, $identificacoes, &$response) { if (is_array($fichas) && sizeof($fichas) > 0) { foreach ($fichas as $ficha) { $ficha['paciente_id'] = self::obterIdentificacaoPaciente($identificacoes, $ficha['paciente_id'], $ficha['PACIENTE_ID_TMP']); AtendimentoIndividualService::saveStore($ficha); $response['atendimento_individual'] += 1; } } } private static function sincronizarVisitaDomiciliar($fichas, $identificacoes, &$response) { if (is_array($fichas) && sizeof($fichas) > 0) { foreach ($fichas as $ficha) { $ficha['paciente_id'] = self::obterIdentificacaoPaciente($identificacoes, $ficha['paciente_id'], $ficha['PACIENTE_ID_TMP']); VisitaDomiciliarService::saveStore($ficha, true); $response['visita_domiciliar'] += 1; } } } private static function sincronizarAvaliacaoElegibilidade($fichas, $identificacoes, &$response) { if (is_array($fichas) && sizeof($fichas) > 0) { foreach ($fichas as $ficha) { $ficha['paciente_id'] = self::obterIdentificacaoPaciente($identificacoes, $ficha['paciente_id'], $ficha['PACIENTE_ID_TMP']); AvaliacaoService::saveStore($ficha); $response['avaliacao_elegibilidade'] += 1; } } } private static function sincronizarFichaComplementar($fichas, $identificacoes, &$response) { if (is_array($fichas) && sizeof($fichas) > 0) { foreach ($fichas as $ficha) { $ficha['paciente'] = self::obterIdentificacaoPaciente($identificacoes, $ficha['paciente'], $ficha['PACIENTE_ID_TMP']); FichaComplementarService::saveStore($ficha); $response['ficha_complementar'] += 1; } } } private static function sincronizarProcedimentos($fichas, $identificacoes, &$response) { if (is_array($fichas) && sizeof($fichas) > 0) { foreach ($fichas as $ficha) { foreach ($ficha['atendimentos'] as $atendimento) { $atendimento['paciente_id'] = self::obterIdentificacaoPaciente($identificacoes, $atendimento['paciente_id'], $atendimento['PACIENTE_ID_TMP']); } ProcedimentoService::saveStore($ficha); $response['procedimentos'] += 1; } } } private static function sincronizarMarcadorConsumoAlimentar($fichas, $identificacoes, &$response) { if (is_array($fichas) && sizeof($fichas) > 0) { foreach ($fichas as $ficha) { $ficha['paciente_id'] = self::obterIdentificacaoPaciente($identificacoes, $ficha['paciente_id'], $ficha['PACIENTE_ID_TMP']); MarcadorConsumoAlimentarService::saveStore($ficha); $response['marcadores_consumo'] += 1; } } } private static function sincronizarAtendimentoDomiciliar($fichas, $identificacoes, &$response) { if (is_array($fichas) && sizeof($fichas) > 0) { foreach ($fichas as $ficha) { foreach ($ficha['atendimentos'] as $atendimento) { $ficha['paciente_id'] = self::obterIdentificacaoPaciente($identificacoes, $atendimento['paciente_id'], $atendimento['PACIENTE_ID_TMP']); } AtendimentoDomiciliarService::saveStore($ficha); $response['atendimento_domiciliar'] += 1; } } } private static function obterIdentificacaoPaciente($identificacoes, $idPaciente, $identificacaoTemporaria) { if ($idPaciente > 0) { return $idPaciente; } if (isset($identificacoes['paciente'][$identificacaoTemporaria]) && $identificacoes['paciente'][$identificacaoTemporaria] > 0) { return $identificacoes['paciente'][$identificacaoTemporaria]; } } private static function adicionarLogSincronizacao($fichas) { $cliente = request()->header('customer'); $dataHora = \Carbon\Carbon::now()->format('YmdHi'); $caminho = "{$cliente}/{$dataHora}.json"; \Storage::disk('mobile')->put($caminho, json_encode($fichas)); } }