isset($params->registro_aplicacao_id) ? $params->registro_aplicacao_id : null, 'registro_atualizacao_id' => isset($params->registro_atualizacao_id) ? $params->registro_atualizacao_id : null, 'identificador_rnds' => $params->identificador_rnds, 'identificador_solicitante' => $params->identificador_solicitante, 'identificador_condicao' => $params->identificador_condicao, 'cns_solicitante' => $params->cns_solicitante, 'identificador_documento' => $params->identificador_documento, 'identificador_composicao' => $params->identificador_composicao, 'identificador_imunizacao' => $params->identificador_imunizacao, 'data_hora_envio' => $params->data_hora_envio, ]); $response = $params->response; if (isset($response['issue'])) { foreach ($response['issue'] as $issue) { DocumentoImunologicoRotinaResposta::create([ 'documento_imunologico_rotina_id' => $documentoImunologicoRotina->id, 'resposta' => $issue['diagnostics'], ]); } } } public static function update($id, $params) { $data = [ 'cns_solicitante' => $params->cns_solicitante, 'data_hora_envio' => $params->data_hora_envio, 'identificador_composicao' => $params->identificador_composicao, 'identificador_condicao' => $params->identificador_condicao, 'identificador_documento' => $params->identificador_documento, 'identificador_imunizacao' => $params->identificador_imunizacao, 'identificador_rnds' => $params->identificador_rnds, 'identificador_solicitante' => $params->identificador_solicitante, ]; if (isset($params->alterar)) { $data['alterar'] = $params->alterar; } if (isset($params->atualizado)) { $data['atualizado'] = $params->atualizado; $data['tentou_substituir'] = false; } $hasIssue = isset($response['issue']); if (!$hasIssue) { $data['usuario_atualizou'] = false; } self::show($id)->update($data); DocumentoImunologicoRotinaResposta::where('documento_imunologico_rotina_id', $id)->delete(); $response = $params->response; if ($hasIssue) { foreach ($response['issue'] as $issue) { DocumentoImunologicoRotinaResposta::create([ 'documento_imunologico_rotina_id' => $id, 'resposta' => $issue['diagnostics'], ]); } } } public static function updateInconsistencias($id, $response) { DocumentoImunologicoRotinaResposta::where('documento_imunologico_rotina_id', $id)->delete(); if (isset($response['issue'])) { foreach ($response['issue'] as $issue) { DocumentoImunologicoRotinaResposta::create([ 'documento_imunologico_rotina_id' => $id, 'resposta' => $issue['diagnostics'], ]); } } } public static function getDocumentoComInconsistencia($id) { $documentoComInconsistencia = DB::table('integracao_ria_documento_imunologico_rotina') ->select([ 'integracao_ria_documento_imunologico_rotina.id AS documento_imunologico_rotina_id', 'integracao_ria_documento_imunologico_rotina.registro_aplicacao_id', 'integracao_ria_documento_imunologico_rotina.registro_atualizacao_id', ]) ->where('integracao_ria_documento_imunologico_rotina.id', $id) ->where('integracao_ria_documento_imunologico_rotina.excluir', false) ->where('integracao_ria_documento_imunologico_rotina.alterar', false) ->where(function ($query) { $query->whereExists(function ($q) { $q->select(DB::raw(1)) ->from('integracao_ria_documento_imunologico_rotina_resposta') ->whereColumn( 'integracao_ria_documento_imunologico_rotina_resposta.documento_imunologico_rotina_id', 'integracao_ria_documento_imunologico_rotina.id' ); }) ->orWhereNull('integracao_ria_documento_imunologico_rotina.identificador_rnds'); }) ->first(); if (isset($documentoComInconsistencia->registro_aplicacao_id)) { $registroAplicacao = DB::table('imunizacao_registro_aplicacao') ->select([ DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', 'imunizacao_registro_aplicacao.gestante', 'imunizacao_registro_aplicacao.puerpera', 'imunizacao_registro_aplicacao.comunicante_hanseniase', 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_aplicacao.data_aplicacao', 'imunizacao_produtor.codigo_ria AS produtor_codigo', 'imunizacao_entrada_vacina.lote', 'imunizacao_entrada_vacina.data_validade_lote', DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', 'cid.codigo AS cid_codigo', 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo', 'imunizacao_via_administracao.codigo_ria AS via_administracao_codigo', 'imunizacao_local_aplicacao.codigo_ria AS local_aplicacao_codigo', ]) ->join('imunizacao_entrada_vacina', 'imunizacao_entrada_vacina.id', 'imunizacao_registro_aplicacao.entrada_vacina_id') ->join('imunizacao_entrada', 'imunizacao_entrada.id', 'imunizacao_entrada_vacina.entrada_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_entrada.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_aplicacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_aplicacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_entrada_vacina.vacina_id') ->join('imunizacao_produtor', 'imunizacao_produtor.id', 'imunizacao_entrada_vacina.produtor_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_aplicacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_aplicacao.dose_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_aplicacao.grupo_atendimento_id') ->leftJoin('sigtap.cid', 'cid.id', 'imunizacao_registro_aplicacao.cid_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_aplicacao.ocupacao_id') ->leftJoin('imunizacao_via_administracao', 'imunizacao_via_administracao.id', 'imunizacao_registro_aplicacao.via_administracao_id') ->leftJoin('imunizacao_local_aplicacao', 'imunizacao_local_aplicacao.id', 'imunizacao_registro_aplicacao.local_aplicacao_id') ->where('imunizacao_registro_aplicacao.id', $documentoComInconsistencia->registro_aplicacao_id) ->first(); return (object) [ 'identificador_documento' => uniqid(), 'identificador_composicao' => uniqid(), 'identificador_imunizacao' => uniqid(), 'identificador_condicao' => $registroAplicacao->estrategia_codigo === Estrategia::ESPECIAL ? uniqid() : null, 'documento_imunologico_rotina_id' => $documentoComInconsistencia->documento_imunologico_rotina_id, 'paciente_cns_ou_cpf' => $registroAplicacao->paciente_cns_ou_cpf, 'unidade_cnes' => $registroAplicacao->unidade_cnes, 'registro_aplicacao_id' => $documentoComInconsistencia->registro_aplicacao_id, 'grupo_atendimento_codigo' => $registroAplicacao->grupo_atendimento_codigo, 'gestante' => (bool) $registroAplicacao->gestante, 'puerpera' => (bool) $registroAplicacao->puerpera, 'comunicante_hanseniase' => (bool) $registroAplicacao->comunicante_hanseniase, 'vacina_codigo' => $registroAplicacao->vacina_codigo, 'data' => $registroAplicacao->data_aplicacao, 'produtor_codigo' => $registroAplicacao->produtor_codigo, 'lote' => $registroAplicacao->lote, 'data_validade_lote' => $registroAplicacao->data_validade_lote, 'aplicador_cns_ou_cpf' => $registroAplicacao->aplicador_cns_ou_cpf, 'estrategia_codigo' => $registroAplicacao->estrategia_codigo, 'cid_codigo' => $registroAplicacao->cid_codigo, 'dose_codigo' => $registroAplicacao->dose_codigo, 'cbo' => $registroAplicacao->cbo, 'via_administracao_codigo' => $registroAplicacao->via_administracao_codigo, 'local_aplicacao_codigo' => $registroAplicacao->local_aplicacao_codigo, ]; } else if (isset($documentoComInconsistencia->registro_atualizacao_id)) { $registroAtualizacao = DB::table('imunizacao_registro_atualizacao') ->select([ DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_atualizacao.data_atualizacao', DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.cid.codigo AS cid_codigo', 'sigtap.ocupacao.codigo as cbo' ]) ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_registro_atualizacao.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_atualizacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_atualizacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_registro_atualizacao.vacina_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_atualizacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_atualizacao.dose_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_atualizacao.grupo_atendimento_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_atualizacao.ocupacao_id') ->leftJoin('sigtap.cid', 'sigtap.cid.id', 'imunizacao_registro_atualizacao.cid_id') ->where('imunizacao_registro_atualizacao.id', $documentoComInconsistencia->registro_atualizacao_id) ->first(); return (object) [ 'identificador_documento' => uniqid(), 'identificador_composicao' => uniqid(), 'identificador_imunizacao' => uniqid(), 'identificador_condicao' => $registroAtualizacao->estrategia_codigo === Estrategia::ESPECIAL ? uniqid() : null, 'documento_imunologico_rotina_id' => $documentoComInconsistencia->documento_imunologico_rotina_id, 'paciente_cns_ou_cpf' => $registroAtualizacao->paciente_cns_ou_cpf, 'unidade_cnes' => $registroAtualizacao->unidade_cnes, 'registro_atualizacao_id' => $documentoComInconsistencia->registro_atualizacao_id, 'grupo_atendimento_codigo' => $registroAtualizacao->grupo_atendimento_codigo, 'gestante' => false, 'puerpera' => false, 'comunicante_hanseniase' => false, 'vacina_codigo' => $registroAtualizacao->vacina_codigo, 'data' => $registroAtualizacao->data_atualizacao, 'produtor_codigo' => null, 'lote' => null, 'data_validade_lote' => null, 'aplicador_cns_ou_cpf' => $registroAtualizacao->aplicador_cns_ou_cpf, 'estrategia_codigo' => $registroAtualizacao->estrategia_codigo, 'cid_codigo' => $registroAtualizacao->cid_codigo ?? null, 'dose_codigo' => $registroAtualizacao->dose_codigo, 'cbo' => $registroAtualizacao->cbo, 'via_administracao_codigo' => null, 'local_aplicacao_codigo' => null, ]; } } public static function getDocumentosComInconsistencia() { $registrosAplicacao = DB::table('integracao_ria_documento_imunologico_rotina') ->select([ 'integracao_ria_documento_imunologico_rotina.id AS documento_imunologico_rotina_id', DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', 'imunizacao_registro_aplicacao.gestante', 'imunizacao_registro_aplicacao.puerpera', 'imunizacao_registro_aplicacao.comunicante_hanseniase', 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_aplicacao.data_aplicacao AS data', 'imunizacao_produtor.codigo_ria AS produtor_codigo', 'imunizacao_entrada_vacina.lote', 'imunizacao_entrada_vacina.data_validade_lote', DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', 'cid.codigo AS cid_codigo', 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo', 'imunizacao_via_administracao.codigo_ria AS via_administracao_codigo', 'imunizacao_local_aplicacao.codigo_ria AS local_aplicacao_codigo', ]) ->join('imunizacao_registro_aplicacao', 'imunizacao_registro_aplicacao.id', 'integracao_ria_documento_imunologico_rotina.registro_aplicacao_id') ->join('imunizacao_entrada_vacina', 'imunizacao_entrada_vacina.id', 'imunizacao_registro_aplicacao.entrada_vacina_id') ->join('imunizacao_entrada', 'imunizacao_entrada.id', 'imunizacao_entrada_vacina.entrada_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_entrada.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_aplicacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_aplicacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_entrada_vacina.vacina_id') ->join('imunizacao_produtor', 'imunizacao_produtor.id', 'imunizacao_entrada_vacina.produtor_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_aplicacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_aplicacao.dose_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_aplicacao.ocupacao_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_aplicacao.grupo_atendimento_id') ->leftJoin('sigtap.cid', 'cid.id', 'imunizacao_registro_aplicacao.cid_id') ->leftJoin('imunizacao_via_administracao', 'imunizacao_via_administracao.id', 'imunizacao_registro_aplicacao.via_administracao_id') ->leftJoin('imunizacao_local_aplicacao', 'imunizacao_local_aplicacao.id', 'imunizacao_registro_aplicacao.local_aplicacao_id') ->where('integracao_ria_documento_imunologico_rotina.excluir', false) ->where('integracao_ria_documento_imunologico_rotina.alterar', false) ->whereDate('imunizacao_registro_aplicacao.data_aplicacao', '>=', Carbon::parse('2024-09-01')) ->where(function ($query) { $query->whereExists(function ($q) { $q->select(DB::raw(1)) ->from('integracao_ria_documento_imunologico_rotina_resposta') ->whereColumn( 'integracao_ria_documento_imunologico_rotina_resposta.documento_imunologico_rotina_id', 'integracao_ria_documento_imunologico_rotina.id' ); }) ->orWhereNull('integracao_ria_documento_imunologico_rotina.identificador_rnds'); }) ->orderBy('imunizacao_registro_aplicacao.id'); $registrosAtualizacao = DB::table('integracao_ria_documento_imunologico_rotina') ->select([ 'integracao_ria_documento_imunologico_rotina.id AS documento_imunologico_rotina_id', DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', DB::raw("FALSE AS gestante"), DB::raw("FALSE AS puerpera"), DB::raw("FALSE AS comunicante_hanseniase"), 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_atualizacao.data_atualizacao AS data', DB::raw("NULL AS produtor_codigo"), DB::raw("NULL AS lote"), DB::raw("NULL AS data_validade_lote"), DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', DB::raw("NULL AS cid_codigo"), 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo', DB::raw("NULL AS via_administracao_codigo"), DB::raw("NULL AS local_aplicacao_codigo"), ]) ->join('imunizacao_registro_atualizacao', 'imunizacao_registro_atualizacao.id', 'integracao_ria_documento_imunologico_rotina.registro_atualizacao_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_registro_atualizacao.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_atualizacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_atualizacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_registro_atualizacao.vacina_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_atualizacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_atualizacao.dose_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_atualizacao.ocupacao_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_atualizacao.grupo_atendimento_id') ->where('integracao_ria_documento_imunologico_rotina.excluir', false) ->where('integracao_ria_documento_imunologico_rotina.alterar', false) ->whereDate('imunizacao_registro_atualizacao.data_atualizacao', '>=', Carbon::parse('2024-09-01')) ->where(function ($query) { $query->whereExists(function ($q) { $q->select(DB::raw(1)) ->from('integracao_ria_documento_imunologico_rotina_resposta') ->whereColumn( 'integracao_ria_documento_imunologico_rotina_resposta.documento_imunologico_rotina_id', 'integracao_ria_documento_imunologico_rotina.id' ); }) ->orWhereNull('integracao_ria_documento_imunologico_rotina.identificador_rnds'); }) ->orderBy('imunizacao_registro_atualizacao.id'); return $registrosAplicacao->union($registrosAtualizacao) ->get() ->map(function($documentoComInconsistencia) { return (object) [ 'identificador_documento' => uniqid(), 'identificador_composicao' => uniqid(), 'identificador_imunizacao' => uniqid(), 'identificador_condicao' => $documentoComInconsistencia->estrategia_codigo === Estrategia::ESPECIAL ? uniqid() : null, 'documento_imunologico_rotina_id' => $documentoComInconsistencia->documento_imunologico_rotina_id, 'paciente_cns_ou_cpf' => $documentoComInconsistencia->paciente_cns_ou_cpf, 'unidade_cnes' => $documentoComInconsistencia->unidade_cnes, 'grupo_atendimento_codigo' => $documentoComInconsistencia->grupo_atendimento_codigo, 'gestante' => (bool) $documentoComInconsistencia->gestante, 'puerpera' => (bool) $documentoComInconsistencia->puerpera, 'comunicante_hanseniase' => (bool) $documentoComInconsistencia->comunicante_hanseniase, 'vacina_codigo' => $documentoComInconsistencia->vacina_codigo, 'data' => $documentoComInconsistencia->data, 'produtor_codigo' => $documentoComInconsistencia->produtor_codigo, 'lote' => $documentoComInconsistencia->lote, 'data_validade_lote' => $documentoComInconsistencia->data_validade_lote, 'aplicador_cns_ou_cpf' => $documentoComInconsistencia->aplicador_cns_ou_cpf, 'estrategia_codigo' => $documentoComInconsistencia->estrategia_codigo, 'cid_codigo' => $documentoComInconsistencia->cid_codigo, 'dose_codigo' => $documentoComInconsistencia->dose_codigo, 'cbo' => $documentoComInconsistencia->cbo, 'via_administracao_codigo' => $documentoComInconsistencia->via_administracao_codigo, 'local_aplicacao_codigo' => $documentoComInconsistencia->local_aplicacao_codigo, ]; }); } public static function getRegistrosAplicacao() { return Db::table('imunizacao_registro_aplicacao') ->select([ DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_registro_aplicacao.id AS registro_aplicacao_id', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', 'imunizacao_registro_aplicacao.gestante', 'imunizacao_registro_aplicacao.puerpera', 'imunizacao_registro_aplicacao.comunicante_hanseniase', 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_aplicacao.data_aplicacao', 'imunizacao_produtor.codigo_ria AS produtor_codigo', 'imunizacao_entrada_vacina.lote', 'imunizacao_entrada_vacina.data_validade_lote', DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', 'cid.codigo AS cid_codigo', 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo', 'imunizacao_via_administracao.codigo_ria AS via_administracao_codigo', 'imunizacao_local_aplicacao.codigo_ria AS local_aplicacao_codigo', ]) ->join('imunizacao_entrada_vacina', 'imunizacao_entrada_vacina.id', 'imunizacao_registro_aplicacao.entrada_vacina_id') ->join('imunizacao_entrada', 'imunizacao_entrada.id', 'imunizacao_entrada_vacina.entrada_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_entrada.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_aplicacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_aplicacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_entrada_vacina.vacina_id') ->join('imunizacao_produtor', 'imunizacao_produtor.id', 'imunizacao_entrada_vacina.produtor_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_aplicacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_aplicacao.dose_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_aplicacao.ocupacao_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_aplicacao.grupo_atendimento_id') ->leftJoin('sigtap.cid', 'cid.id', 'imunizacao_registro_aplicacao.cid_id') ->leftJoin('imunizacao_via_administracao', 'imunizacao_via_administracao.id', 'imunizacao_registro_aplicacao.via_administracao_id') ->leftJoin('imunizacao_local_aplicacao', 'imunizacao_local_aplicacao.id', 'imunizacao_registro_aplicacao.local_aplicacao_id') ->whereDate('imunizacao_registro_aplicacao.data_aplicacao', '>=', Carbon::parse('2024-09-01')) ->whereNotExists(fn ($q) => $q ->select(DB::raw(1)) ->from('integracao_ria_documento_imunologico_rotina') ->whereColumn('integracao_ria_documento_imunologico_rotina.registro_aplicacao_id', 'imunizacao_registro_aplicacao.id') ) ->orderBy('imunizacao_registro_aplicacao.id') ->get() ->map(function($registroAplicacao) { return (object) [ 'identificador_documento' => uniqid(), 'identificador_composicao' => uniqid(), 'identificador_imunizacao' => uniqid(), 'identificador_condicao' => $registroAplicacao->estrategia_codigo === Estrategia::ESPECIAL ? uniqid() : null, 'paciente_cns_ou_cpf' => $registroAplicacao->paciente_cns_ou_cpf, 'unidade_cnes' => $registroAplicacao->unidade_cnes, 'registro_aplicacao_id' => $registroAplicacao->registro_aplicacao_id, 'grupo_atendimento_codigo' => $registroAplicacao->grupo_atendimento_codigo, 'gestante' => (bool) $registroAplicacao->gestante, 'puerpera' => (bool) $registroAplicacao->puerpera, 'comunicante_hanseniase' => (bool) $registroAplicacao->comunicante_hanseniase, 'vacina_codigo' => $registroAplicacao->vacina_codigo, 'data' => $registroAplicacao->data_aplicacao, 'produtor_codigo' => $registroAplicacao->produtor_codigo, 'lote' => $registroAplicacao->lote, 'data_validade_lote' => $registroAplicacao->data_validade_lote, 'aplicador_cns_ou_cpf' => $registroAplicacao->aplicador_cns_ou_cpf, 'estrategia_codigo' => $registroAplicacao->estrategia_codigo, 'cid_codigo' => $registroAplicacao->cid_codigo, 'dose_codigo' => $registroAplicacao->dose_codigo, 'cbo' => $registroAplicacao->cbo, 'via_administracao_codigo' => $registroAplicacao->via_administracao_codigo, 'local_aplicacao_codigo' => $registroAplicacao->local_aplicacao_codigo, ]; }); } public static function getRegistrosAtualizacao() { return Db::table('imunizacao_registro_atualizacao') ->select([ DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_registro_atualizacao.id AS registro_atualizacao_id', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_atualizacao.data_atualizacao AS data_atualizacao', DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.cid.codigo as cid_codigo', 'sigtap.ocupacao.codigo as cbo', ]) ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_registro_atualizacao.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_atualizacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_atualizacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_registro_atualizacao.vacina_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_atualizacao.dose_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_atualizacao.estrategia_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_atualizacao.ocupacao_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_atualizacao.grupo_atendimento_id') ->leftJoin('sigtap.cid', 'sigtap.cid.id', 'imunizacao_registro_atualizacao.cid_id') ->whereDate('imunizacao_registro_atualizacao.data_atualizacao', '>=', Carbon::parse('2024-09-01')) ->whereNotExists(fn ($q) => $q ->select(DB::raw(1)) ->from('integracao_ria_documento_imunologico_rotina') ->whereColumn('integracao_ria_documento_imunologico_rotina.registro_atualizacao_id', 'imunizacao_registro_atualizacao.id') ) ->orderBy('imunizacao_registro_atualizacao.id') ->get() ->map(function($registroAtualizacao) { return (object) [ 'identificador_documento' => uniqid(), 'identificador_composicao' => uniqid(), 'identificador_imunizacao' => uniqid(), 'identificador_condicao' => $registroAtualizacao->estrategia_codigo === Estrategia::ESPECIAL ? uniqid() : null, 'paciente_cns_ou_cpf' => $registroAtualizacao->paciente_cns_ou_cpf, 'unidade_cnes' => $registroAtualizacao->unidade_cnes, 'registro_atualizacao_id' => $registroAtualizacao->registro_atualizacao_id, 'grupo_atendimento_codigo' => $registroAtualizacao->grupo_atendimento_codigo, 'gestante' => false, 'puerpera' => false, 'comunicante_hanseniase' => false, 'vacina_codigo' => $registroAtualizacao->vacina_codigo, 'data' => $registroAtualizacao->data_atualizacao, 'produtor_codigo' => null, 'lote' => null, 'data_validade_lote' => null, 'aplicador_cns_ou_cpf' => $registroAtualizacao->aplicador_cns_ou_cpf, 'estrategia_codigo' => $registroAtualizacao->estrategia_codigo, 'cid_codigo' => $registroAtualizacao->cid_codigo ?? null, 'dose_codigo' => $registroAtualizacao->dose_codigo, 'cbo' => $registroAtualizacao->cbo, 'via_administracao_codigo' => null, 'local_aplicacao_codigo' => null, ]; }); } public static function getDocumentosComInconsistenciaRetroativos() { $registrosAplicacao = DB::table('integracao_ria_documento_imunologico_rotina') ->select([ 'integracao_ria_documento_imunologico_rotina.id AS documento_imunologico_rotina_id', DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', 'imunizacao_registro_aplicacao.gestante', 'imunizacao_registro_aplicacao.puerpera', 'imunizacao_registro_aplicacao.comunicante_hanseniase', 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_aplicacao.data_aplicacao AS data', 'imunizacao_produtor.codigo_ria AS produtor_codigo', 'imunizacao_entrada_vacina.lote', 'imunizacao_entrada_vacina.data_validade_lote', DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', 'cid.codigo AS cid_codigo', 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo', 'imunizacao_via_administracao.codigo_ria AS via_administracao_codigo', 'imunizacao_local_aplicacao.codigo_ria AS local_aplicacao_codigo', ]) ->join('imunizacao_registro_aplicacao', 'imunizacao_registro_aplicacao.id', 'integracao_ria_documento_imunologico_rotina.registro_aplicacao_id') ->join('imunizacao_entrada_vacina', 'imunizacao_entrada_vacina.id', 'imunizacao_registro_aplicacao.entrada_vacina_id') ->join('imunizacao_entrada', 'imunizacao_entrada.id', 'imunizacao_entrada_vacina.entrada_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_entrada.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_aplicacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_aplicacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_entrada_vacina.vacina_id') ->join('imunizacao_produtor', 'imunizacao_produtor.id', 'imunizacao_entrada_vacina.produtor_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_aplicacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_aplicacao.dose_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_aplicacao.ocupacao_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_aplicacao.grupo_atendimento_id') ->leftJoin('sigtap.cid', 'cid.id', 'imunizacao_registro_aplicacao.cid_id') ->leftJoin('imunizacao_via_administracao', 'imunizacao_via_administracao.id', 'imunizacao_registro_aplicacao.via_administracao_id') ->leftJoin('imunizacao_local_aplicacao', 'imunizacao_local_aplicacao.id', 'imunizacao_registro_aplicacao.local_aplicacao_id') ->where('integracao_ria_documento_imunologico_rotina.excluir', false) ->where('integracao_ria_documento_imunologico_rotina.alterar', false) ->whereDate('imunizacao_registro_aplicacao.data_aplicacao', '<', Carbon::parse('2024-09-01')) ->whereExists(fn ($q) => $q ->select(DB::raw(1)) ->from('integracao_ria_documento_imunologico_rotina_resposta') ->whereColumn('integracao_ria_documento_imunologico_rotina_resposta.documento_imunologico_rotina_id', 'integracao_ria_documento_imunologico_rotina.id') ) ->orderBy('imunizacao_registro_aplicacao.id'); $registrosAtualizacao = DB::table('integracao_ria_documento_imunologico_rotina') ->select([ 'integracao_ria_documento_imunologico_rotina.id AS documento_imunologico_rotina_id', DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', DB::raw("FALSE AS gestante"), DB::raw("FALSE AS puerpera"), DB::raw("FALSE AS comunicante_hanseniase"), 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_atualizacao.data_atualizacao AS data', DB::raw("NULL AS produtor_codigo"), DB::raw("NULL AS lote"), DB::raw("NULL AS data_validade_lote"), DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', DB::raw("NULL AS cid_codigo"), 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo', DB::raw("NULL AS via_administracao_codigo"), DB::raw("NULL AS local_aplicacao_codigo"), ]) ->join('imunizacao_registro_atualizacao', 'imunizacao_registro_atualizacao.id', 'integracao_ria_documento_imunologico_rotina.registro_atualizacao_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_registro_atualizacao.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_atualizacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_atualizacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_registro_atualizacao.vacina_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_atualizacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_atualizacao.dose_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_atualizacao.ocupacao_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_atualizacao.grupo_atendimento_id') ->where('integracao_ria_documento_imunologico_rotina.excluir', false) ->where('integracao_ria_documento_imunologico_rotina.alterar', false) ->whereDate('imunizacao_registro_atualizacao.data_atualizacao', '<', Carbon::parse('2024-09-01')) ->whereExists(fn ($q) => $q ->select(DB::raw(1)) ->from('integracao_ria_documento_imunologico_rotina_resposta') ->whereColumn('integracao_ria_documento_imunologico_rotina_resposta.documento_imunologico_rotina_id', 'integracao_ria_documento_imunologico_rotina.id') ) ->orderBy('imunizacao_registro_atualizacao.id'); return $registrosAplicacao->union($registrosAtualizacao) ->get() ->map(function($documentoComInconsistencia) { return (object) [ 'identificador_documento' => uniqid(), 'identificador_composicao' => uniqid(), 'identificador_imunizacao' => uniqid(), 'identificador_condicao' => $documentoComInconsistencia->estrategia_codigo === Estrategia::ESPECIAL ? uniqid() : null, 'documento_imunologico_rotina_id' => $documentoComInconsistencia->documento_imunologico_rotina_id, 'paciente_cns_ou_cpf' => $documentoComInconsistencia->paciente_cns_ou_cpf, 'unidade_cnes' => $documentoComInconsistencia->unidade_cnes, 'grupo_atendimento_codigo' => $documentoComInconsistencia->grupo_atendimento_codigo, 'gestante' => (bool) $documentoComInconsistencia->gestante, 'puerpera' => (bool) $documentoComInconsistencia->puerpera, 'comunicante_hanseniase' => (bool) $documentoComInconsistencia->comunicante_hanseniase, 'vacina_codigo' => $documentoComInconsistencia->vacina_codigo, 'data' => $documentoComInconsistencia->data, 'produtor_codigo' => $documentoComInconsistencia->produtor_codigo, 'lote' => $documentoComInconsistencia->lote, 'data_validade_lote' => $documentoComInconsistencia->data_validade_lote, 'aplicador_cns_ou_cpf' => $documentoComInconsistencia->aplicador_cns_ou_cpf, 'estrategia_codigo' => $documentoComInconsistencia->estrategia_codigo, 'cid_codigo' => $documentoComInconsistencia->cid_codigo, 'dose_codigo' => $documentoComInconsistencia->dose_codigo, 'cbo' => $documentoComInconsistencia->cbo, 'via_administracao_codigo' => $documentoComInconsistencia->via_administracao_codigo, 'local_aplicacao_codigo' => $documentoComInconsistencia->local_aplicacao_codigo, ]; }); } public static function getRegistrosAplicacaoRetroativos() { return Db::table('imunizacao_registro_aplicacao') ->select([ DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_registro_aplicacao.id AS registro_aplicacao_id', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', 'imunizacao_registro_aplicacao.gestante', 'imunizacao_registro_aplicacao.puerpera', 'imunizacao_registro_aplicacao.comunicante_hanseniase', 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_aplicacao.data_aplicacao', 'imunizacao_produtor.codigo_ria AS produtor_codigo', 'imunizacao_entrada_vacina.lote', 'imunizacao_entrada_vacina.data_validade_lote', DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', 'cid.codigo AS cid_codigo', 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo', 'imunizacao_via_administracao.codigo_ria AS via_administracao_codigo', 'imunizacao_local_aplicacao.codigo_ria AS local_aplicacao_codigo', ]) ->join('imunizacao_entrada_vacina', 'imunizacao_entrada_vacina.id', 'imunizacao_registro_aplicacao.entrada_vacina_id') ->join('imunizacao_entrada', 'imunizacao_entrada.id', 'imunizacao_entrada_vacina.entrada_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_entrada.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_aplicacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_aplicacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_entrada_vacina.vacina_id') ->join('imunizacao_produtor', 'imunizacao_produtor.id', 'imunizacao_entrada_vacina.produtor_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_aplicacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_aplicacao.dose_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_aplicacao.ocupacao_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_aplicacao.grupo_atendimento_id') ->leftJoin('sigtap.cid', 'cid.id', 'imunizacao_registro_aplicacao.cid_id') ->leftJoin('imunizacao_via_administracao', 'imunizacao_via_administracao.id', 'imunizacao_registro_aplicacao.via_administracao_id') ->leftJoin('imunizacao_local_aplicacao', 'imunizacao_local_aplicacao.id', 'imunizacao_registro_aplicacao.local_aplicacao_id') ->whereDate('imunizacao_registro_aplicacao.data_aplicacao', '<', Carbon::parse('2024-09-01')) ->whereNotExists(fn ($q) => $q ->select(DB::raw(1)) ->from('integracao_ria_documento_imunologico_rotina') ->whereColumn('integracao_ria_documento_imunologico_rotina.registro_aplicacao_id', 'imunizacao_registro_aplicacao.id') ) ->orderBy('imunizacao_registro_aplicacao.id') ->limit(1000) ->get() ->map(function($registroAplicacao) { return (object) [ 'identificador_documento' => uniqid(), 'identificador_composicao' => uniqid(), 'identificador_imunizacao' => uniqid(), 'identificador_condicao' => $registroAplicacao->estrategia_codigo === Estrategia::ESPECIAL ? uniqid() : null, 'paciente_cns_ou_cpf' => $registroAplicacao->paciente_cns_ou_cpf, 'unidade_cnes' => $registroAplicacao->unidade_cnes, 'registro_aplicacao_id' => $registroAplicacao->registro_aplicacao_id, 'grupo_atendimento_codigo' => $registroAplicacao->grupo_atendimento_codigo, 'gestante' => (bool) $registroAplicacao->gestante, 'puerpera' => (bool) $registroAplicacao->puerpera, 'comunicante_hanseniase' => (bool) $registroAplicacao->comunicante_hanseniase, 'vacina_codigo' => $registroAplicacao->vacina_codigo, 'data' => $registroAplicacao->data_aplicacao, 'produtor_codigo' => $registroAplicacao->produtor_codigo, 'lote' => $registroAplicacao->lote, 'data_validade_lote' => $registroAplicacao->data_validade_lote, 'aplicador_cns_ou_cpf' => $registroAplicacao->aplicador_cns_ou_cpf, 'estrategia_codigo' => $registroAplicacao->estrategia_codigo, 'cid_codigo' => $registroAplicacao->cid_codigo, 'dose_codigo' => $registroAplicacao->dose_codigo, 'cbo' => $registroAplicacao->cbo, 'via_administracao_codigo' => $registroAplicacao->via_administracao_codigo, 'local_aplicacao_codigo' => $registroAplicacao->local_aplicacao_codigo, ]; }); } public static function getRegistrosAtualizacaoRetroativos() { return Db::table('imunizacao_registro_atualizacao') ->select([ DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_registro_atualizacao.id AS registro_atualizacao_id', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_atualizacao.data_atualizacao', DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo' ]) ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_registro_atualizacao.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_atualizacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_atualizacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_registro_atualizacao.vacina_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_atualizacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_atualizacao.dose_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_atualizacao.ocupacao_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_atualizacao.grupo_atendimento_id') ->whereDate('imunizacao_registro_atualizacao.data_atualizacao', '<', Carbon::parse('2024-09-01')) ->whereNotExists(fn ($q) => $q ->select(DB::raw(1)) ->from('integracao_ria_documento_imunologico_rotina') ->whereColumn('integracao_ria_documento_imunologico_rotina.registro_atualizacao_id', 'imunizacao_registro_atualizacao.id') ) ->orderBy('imunizacao_registro_atualizacao.id') ->limit(1000) ->get() ->map(function($registroAtualizacao) { return (object) [ 'identificador_documento' => uniqid(), 'identificador_composicao' => uniqid(), 'identificador_imunizacao' => uniqid(), 'identificador_condicao' => $registroAtualizacao->estrategia_codigo === Estrategia::ESPECIAL ? uniqid() : null, 'paciente_cns_ou_cpf' => $registroAtualizacao->paciente_cns_ou_cpf, 'unidade_cnes' => $registroAtualizacao->unidade_cnes, 'registro_atualizacao_id' => $registroAtualizacao->registro_atualizacao_id, 'grupo_atendimento_codigo' => $registroAtualizacao->grupo_atendimento_codigo, 'gestante' => false, 'puerpera' => false, 'comunicante_hanseniase' => false, 'vacina_codigo' => $registroAtualizacao->vacina_codigo, 'data' => $registroAtualizacao->data_atualizacao, 'produtor_codigo' => null, 'lote' => null, 'data_validade_lote' => null, 'aplicador_cns_ou_cpf' => $registroAtualizacao->aplicador_cns_ou_cpf, 'estrategia_codigo' => $registroAtualizacao->estrategia_codigo, 'cid_codigo' => null, 'dose_codigo' => $registroAtualizacao->dose_codigo, 'cbo' => $registroAtualizacao->cbo, 'via_administracao_codigo' => null, 'local_aplicacao_codigo' => null, ]; }); } public static function getDocumentosParaExclusao() { return DB::table('integracao_ria_documento_imunologico_rotina') ->select([ 'integracao_ria_documento_imunologico_rotina.id', 'integracao_ria_documento_imunologico_rotina.cns_solicitante', 'integracao_ria_documento_imunologico_rotina.data_hora_envio', 'integracao_ria_documento_imunologico_rotina.identificador_composicao', 'integracao_ria_documento_imunologico_rotina.identificador_condicao', 'integracao_ria_documento_imunologico_rotina.identificador_documento', 'integracao_ria_documento_imunologico_rotina.identificador_imunizacao', 'integracao_ria_documento_imunologico_rotina.identificador_rnds', 'integracao_ria_documento_imunologico_rotina.identificador_solicitante', ]) ->where('integracao_ria_documento_imunologico_rotina.excluir', true) ->get(); } public static function getDocumentoAlterado($id) { $documentoAlterado = DB::table('integracao_ria_documento_imunologico_rotina') ->select([ 'integracao_ria_documento_imunologico_rotina.id AS documento_imunologico_rotina_id', 'integracao_ria_documento_imunologico_rotina.identificador_documento', 'integracao_ria_documento_imunologico_rotina.identificador_rnds', 'integracao_ria_documento_imunologico_rotina.registro_aplicacao_id', 'integracao_ria_documento_imunologico_rotina.registro_atualizacao_id', ]) ->where('integracao_ria_documento_imunologico_rotina.id', $id) ->whereNotNull('integracao_ria_documento_imunologico_rotina.identificador_rnds') ->where('integracao_ria_documento_imunologico_rotina.excluir', false) ->where('integracao_ria_documento_imunologico_rotina.alterar', true) ->whereExists(function ($q) { $q->select(DB::raw(1)) ->from('integracao_ria_documento_imunologico_rotina_resposta') ->whereColumn( 'integracao_ria_documento_imunologico_rotina_resposta.documento_imunologico_rotina_id', 'integracao_ria_documento_imunologico_rotina.id' ); }) ->first(); if (isset($documentoAlterado->registro_aplicacao_id)) { $registroAplicacao = DB::table('imunizacao_registro_aplicacao') ->select([ DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', 'imunizacao_registro_aplicacao.gestante', 'imunizacao_registro_aplicacao.puerpera', 'imunizacao_registro_aplicacao.comunicante_hanseniase', 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_aplicacao.data_aplicacao', 'imunizacao_produtor.codigo_ria AS produtor_codigo', 'imunizacao_entrada_vacina.lote', 'imunizacao_entrada_vacina.data_validade_lote', DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', 'cid.codigo AS cid_codigo', 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo', 'imunizacao_via_administracao.codigo_ria AS via_administracao_codigo', 'imunizacao_local_aplicacao.codigo_ria AS local_aplicacao_codigo', ]) ->join('imunizacao_entrada_vacina', 'imunizacao_entrada_vacina.id', 'imunizacao_registro_aplicacao.entrada_vacina_id') ->join('imunizacao_entrada', 'imunizacao_entrada.id', 'imunizacao_entrada_vacina.entrada_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_entrada.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_aplicacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_aplicacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_entrada_vacina.vacina_id') ->join('imunizacao_produtor', 'imunizacao_produtor.id', 'imunizacao_entrada_vacina.produtor_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_aplicacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_aplicacao.dose_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_aplicacao.grupo_atendimento_id') ->leftJoin('sigtap.cid', 'cid.id', 'imunizacao_registro_aplicacao.cid_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_aplicacao.ocupacao_id') ->leftJoin('imunizacao_via_administracao', 'imunizacao_via_administracao.id', 'imunizacao_registro_aplicacao.via_administracao_id') ->leftJoin('imunizacao_local_aplicacao', 'imunizacao_local_aplicacao.id', 'imunizacao_registro_aplicacao.local_aplicacao_id') ->where('imunizacao_registro_aplicacao.id', $documentoAlterado->registro_aplicacao_id) ->first(); return (object) [ 'is_substituicao' => true, 'identificador_rnds' => basename(parse_url($documentoAlterado->identificador_rnds, PHP_URL_PATH)), 'identificador_documento' => $documentoAlterado->identificador_documento, 'identificador_composicao' => uniqid(), 'identificador_imunizacao' => uniqid(), 'identificador_condicao' => $registroAplicacao->estrategia_codigo === Estrategia::ESPECIAL ? uniqid() : null, 'documento_imunologico_rotina_id' => $documentoAlterado->documento_imunologico_rotina_id, 'paciente_cns_ou_cpf' => $registroAplicacao->paciente_cns_ou_cpf, 'unidade_cnes' => $registroAplicacao->unidade_cnes, 'registro_aplicacao_id' => $documentoAlterado->registro_aplicacao_id, 'grupo_atendimento_codigo' => $registroAplicacao->grupo_atendimento_codigo, 'gestante' => (bool) $registroAplicacao->gestante, 'puerpera' => (bool) $registroAplicacao->puerpera, 'comunicante_hanseniase' => (bool) $registroAplicacao->comunicante_hanseniase, 'vacina_codigo' => $registroAplicacao->vacina_codigo, 'data' => $registroAplicacao->data_aplicacao, 'produtor_codigo' => $registroAplicacao->produtor_codigo, 'lote' => $registroAplicacao->lote, 'data_validade_lote' => $registroAplicacao->data_validade_lote, 'aplicador_cns_ou_cpf' => $registroAplicacao->aplicador_cns_ou_cpf, 'estrategia_codigo' => $registroAplicacao->estrategia_codigo, 'cid_codigo' => $registroAplicacao->cid_codigo, 'dose_codigo' => $registroAplicacao->dose_codigo, 'cbo' => $registroAplicacao->cbo, 'via_administracao_codigo' => $registroAplicacao->via_administracao_codigo, 'local_aplicacao_codigo' => $registroAplicacao->local_aplicacao_codigo, ]; } else if (isset($documentoAlterado->registro_atualizacao_id)) { $registroAtualizacao = DB::table('imunizacao_registro_atualizacao') ->select([ DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_atualizacao.data_atualizacao', DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo' ]) ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_registro_atualizacao.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_atualizacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_atualizacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_registro_atualizacao.vacina_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_atualizacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_atualizacao.dose_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_atualizacao.grupo_atendimento_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_atualizacao.ocupacao_id') ->where('imunizacao_registro_atualizacao.id', $documentoAlterado->registro_atualizacao_id) ->first(); return (object) [ 'is_substituicao' => true, 'identificador_rnds' => basename(parse_url($documentoAlterado->identificador_rnds, PHP_URL_PATH)), 'identificador_documento' => $documentoAlterado->identificador_documento, 'identificador_composicao' => uniqid(), 'identificador_imunizacao' => uniqid(), 'identificador_condicao' => $registroAtualizacao->estrategia_codigo === Estrategia::ESPECIAL ? uniqid() : null, 'documento_imunologico_rotina_id' => $documentoAlterado->documento_imunologico_rotina_id, 'paciente_cns_ou_cpf' => $registroAtualizacao->paciente_cns_ou_cpf, 'unidade_cnes' => $registroAtualizacao->unidade_cnes, 'registro_atualizacao_id' => $documentoAlterado->registro_atualizacao_id, 'grupo_atendimento_codigo' => $registroAtualizacao->grupo_atendimento_codigo, 'gestante' => false, 'puerpera' => false, 'comunicante_hanseniase' => false, 'vacina_codigo' => $registroAtualizacao->vacina_codigo, 'data' => $registroAtualizacao->data_atualizacao, 'produtor_codigo' => null, 'lote' => null, 'data_validade_lote' => null, 'aplicador_cns_ou_cpf' => $registroAtualizacao->aplicador_cns_ou_cpf, 'estrategia_codigo' => $registroAtualizacao->estrategia_codigo, 'cid_codigo' => null, 'dose_codigo' => $registroAtualizacao->dose_codigo, 'cbo' => $registroAtualizacao->cbo, 'via_administracao_codigo' => null, 'local_aplicacao_codigo' => null, ]; } } public static function getDocumentosAlterados() { $registrosAplicacao = DB::table('integracao_ria_documento_imunologico_rotina') ->select([ 'integracao_ria_documento_imunologico_rotina.id AS documento_imunologico_rotina_id', 'integracao_ria_documento_imunologico_rotina.identificador_documento', 'integracao_ria_documento_imunologico_rotina.identificador_rnds', DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', 'imunizacao_registro_aplicacao.gestante', 'imunizacao_registro_aplicacao.puerpera', 'imunizacao_registro_aplicacao.comunicante_hanseniase', 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_aplicacao.data_aplicacao AS data', 'imunizacao_produtor.codigo_ria AS produtor_codigo', 'imunizacao_entrada_vacina.lote', 'imunizacao_entrada_vacina.data_validade_lote', DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', 'cid.codigo AS cid_codigo', 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo', 'imunizacao_via_administracao.codigo_ria AS via_administracao_codigo', 'imunizacao_local_aplicacao.codigo_ria AS local_aplicacao_codigo', ]) ->join('imunizacao_registro_aplicacao', 'imunizacao_registro_aplicacao.id', 'integracao_ria_documento_imunologico_rotina.registro_aplicacao_id') ->join('imunizacao_entrada_vacina', 'imunizacao_entrada_vacina.id', 'imunizacao_registro_aplicacao.entrada_vacina_id') ->join('imunizacao_entrada', 'imunizacao_entrada.id', 'imunizacao_entrada_vacina.entrada_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_entrada.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_aplicacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_aplicacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_entrada_vacina.vacina_id') ->join('imunizacao_produtor', 'imunizacao_produtor.id', 'imunizacao_entrada_vacina.produtor_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_aplicacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_aplicacao.dose_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_aplicacao.ocupacao_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_aplicacao.grupo_atendimento_id') ->leftJoin('sigtap.cid', 'cid.id', 'imunizacao_registro_aplicacao.cid_id') ->leftJoin('imunizacao_via_administracao', 'imunizacao_via_administracao.id', 'imunizacao_registro_aplicacao.via_administracao_id') ->leftJoin('imunizacao_local_aplicacao', 'imunizacao_local_aplicacao.id', 'imunizacao_registro_aplicacao.local_aplicacao_id') ->whereNotNull('integracao_ria_documento_imunologico_rotina.identificador_rnds') ->where('integracao_ria_documento_imunologico_rotina.excluir', false) ->where('integracao_ria_documento_imunologico_rotina.alterar', true) ->whereDate('imunizacao_registro_aplicacao.data_aplicacao', '>=', Carbon::parse('2024-09-01')) ->orderBy('imunizacao_registro_aplicacao.id'); $registrosAtualizacao = DB::table('integracao_ria_documento_imunologico_rotina') ->select([ 'integracao_ria_documento_imunologico_rotina.id AS documento_imunologico_rotina_id', 'integracao_ria_documento_imunologico_rotina.identificador_documento', 'integracao_ria_documento_imunologico_rotina.identificador_rnds', DB::raw("COALESCE(cadastro_cidadao_paciente.cns, cadastro_cidadao_paciente.cpf) AS paciente_cns_ou_cpf"), 'cadastro_unidade.cnes AS unidade_cnes', 'imunizacao_grupo_atendimento.codigo_ria AS grupo_atendimento_codigo', DB::raw("FALSE AS gestante"), DB::raw("FALSE AS puerpera"), DB::raw("FALSE AS comunicante_hanseniase"), 'cadastro_vacina.codigo_ria AS vacina_codigo', 'imunizacao_registro_atualizacao.data_atualizacao AS data', DB::raw("NULL AS produtor_codigo"), DB::raw("NULL AS lote"), DB::raw("NULL AS data_validade_lote"), DB::raw("COALESCE(cadastro_cidadao_usuario.cns, cadastro_cidadao_usuario.cpf) AS aplicador_cns_ou_cpf"), 'imunizacao_estrategia.codigo_ria AS estrategia_codigo', DB::raw("NULL AS cid_codigo"), 'imunizacao_dose.codigo_ria AS dose_codigo', 'sigtap.ocupacao.codigo as cbo', DB::raw("NULL AS via_administracao_codigo"), DB::raw("NULL AS local_aplicacao_codigo"), ]) ->join('imunizacao_registro_atualizacao', 'imunizacao_registro_atualizacao.id', 'integracao_ria_documento_imunologico_rotina.registro_atualizacao_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_registro_atualizacao.sala_vacinacao_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_atualizacao.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'imunizacao_registro_atualizacao.aplicador_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_registro_atualizacao.vacina_id') ->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_atualizacao.estrategia_id') ->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_atualizacao.dose_id') ->leftJoin('sigtap.ocupacao', 'sigtap.ocupacao.id', 'imunizacao_registro_atualizacao.ocupacao_id') ->leftJoin('imunizacao_grupo_atendimento', 'imunizacao_grupo_atendimento.id', 'imunizacao_registro_atualizacao.grupo_atendimento_id') ->whereNotNull('integracao_ria_documento_imunologico_rotina.identificador_rnds') ->where('integracao_ria_documento_imunologico_rotina.excluir', false) ->where('integracao_ria_documento_imunologico_rotina.alterar', true) ->whereDate('imunizacao_registro_atualizacao.data_atualizacao', '>=', Carbon::parse('2024-09-01')) ->orderBy('imunizacao_registro_atualizacao.id'); return $registrosAplicacao->union($registrosAtualizacao) ->get() ->map(function($documentoAlterado) { return (object) [ 'is_substituicao' => true, 'identificador_rnds' => basename(parse_url($documentoAlterado->identificador_rnds, PHP_URL_PATH)), 'identificador_documento' => $documentoAlterado->identificador_documento, 'identificador_composicao' => uniqid(), 'identificador_imunizacao' => uniqid(), 'identificador_condicao' => $documentoAlterado->estrategia_codigo === Estrategia::ESPECIAL ? uniqid() : null, 'documento_imunologico_rotina_id' => $documentoAlterado->documento_imunologico_rotina_id, 'paciente_cns_ou_cpf' => $documentoAlterado->paciente_cns_ou_cpf, 'unidade_cnes' => $documentoAlterado->unidade_cnes, 'grupo_atendimento_codigo' => $documentoAlterado->grupo_atendimento_codigo, 'gestante' => (bool) $documentoAlterado->gestante, 'puerpera' => (bool) $documentoAlterado->puerpera, 'comunicante_hanseniase' => (bool) $documentoAlterado->comunicante_hanseniase, 'vacina_codigo' => $documentoAlterado->vacina_codigo, 'data' => $documentoAlterado->data, 'produtor_codigo' => $documentoAlterado->produtor_codigo, 'lote' => $documentoAlterado->lote, 'data_validade_lote' => $documentoAlterado->data_validade_lote, 'aplicador_cns_ou_cpf' => $documentoAlterado->aplicador_cns_ou_cpf, 'estrategia_codigo' => $documentoAlterado->estrategia_codigo, 'cid_codigo' => $documentoAlterado->cid_codigo, 'dose_codigo' => $documentoAlterado->dose_codigo, 'cbo' => $documentoAlterado->cbo, 'via_administracao_codigo' => $documentoAlterado->via_administracao_codigo, 'local_aplicacao_codigo' => $documentoAlterado->local_aplicacao_codigo, ]; }); } }