1117 lines
79 KiB
PHP
1117 lines
79 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Integracao\Ria;
|
|
|
|
use App\Enums\Integracao\Ria\Estrategia;
|
|
use App\Models\Integracao\Ria\DocumentoImunologicoRotina;
|
|
use App\Models\Integracao\Ria\DocumentoImunologicoRotinaResposta;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class DocumentoImunologicoRotinaService
|
|
{
|
|
public static function show($id)
|
|
{
|
|
return DocumentoImunologicoRotina::find($id);
|
|
}
|
|
|
|
public static function store($params)
|
|
{
|
|
$documentoImunologicoRotina = DocumentoImunologicoRotina::create([
|
|
'registro_aplicacao_id' => 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,
|
|
];
|
|
});
|
|
}
|
|
}
|