SIRG Logo

SIRG

Integração com o SIRG

Arquitetura, objetivos e como integrar via HTTP e RabbitMQ.

Objetivos

  • Compartilhar capacidade regional por meio de pactos entre municípios.
  • Publicar e consumir solicitações de forma segura e rastreável.
  • Integrar sistemas externos via HTTP e mensageria RabbitMQ.
  • Reduzir tempo de espera e aumentar a eficiência na regulação.

Arquitetura

Backend Spring Boot, Frontend SvelteKit e RabbitMQ para distribuição de eventos. Troca via TopicExchange (regional_topic_exchange) e filas por município.

Filas compartilhadas

  • encaminhamento.<MUNICIPIO>.pacto.<ID>.nova: novas solicitações publicadas.
  • evento-claim-aceite.<ORIGEM>.pacto.<ID>: confirmação de consumo.
  • convite/convite-aceite e ingresso/ingresso-aceite: convites e ingressos.
  • agendamento-externo: sinalização de agendamentos externos.

Configuração local

  • Queue: app.municipio.queue-name.
  • Identificador (routing keys): app.municipio.nome-identificador.
  • Exchange central: regional_topic_exchange.

Integração HTTP

1) Cadastro público de município

POST /api/registry/municipios/register-public

{
  "nome": "Santo Antônio de Jesus",
  "cnes": "0000000",
  "rabbitQueueName": "SAJ_QUEUE",
  "baseUrl": "https://saj.gov.br/sirg"
}

2) Listar pactos públicos

GET /api/registry/pactos

curl -s http://HOST/api/registry/pactos

3) Solicitar ingresso em um pacto

POST /api/registry/pactos/{pactoId}/join-requests

{
  "mensagem": "Gostaríamos de participar com a fila da cardiologia."
}

Observação: a instância chamadora usa seu município local para identificar o solicitante. Pode requerer autenticação.

4) Criar pacto (autenticado)

POST /api/pactos

{
  "nome": "Pacto Regional de Oftalmologia",
  "descricao": "Compartilhamento de consultas e exames de oftalmologia"
}

Mensageria (RabbitMQ)

Exchange: regional_topic_exchange

Bindings por município

  • encaminhamento.<MEU_MUNICIPIO>.#
  • convite.<MEU_MUNICIPIO>.# e convite-aceite.<MEU_MUNICIPIO>.#
  • ingresso.<MEU_MUNICIPIO>.# e ingresso-aceite.<MEU_MUNICIPIO>.#
  • evento-claim-aceite.<MEU_MUNICIPIO>.#

Exemplos de routing key

encaminhamento.SAJ.pacto.42.nova
evento-claim-aceite.SAJ.pacto.42
convite.FEIRA_DE_SANTANA.pacto.7
ingresso-aceite.SAJ.pacto.7

Mensagens trafegam como JSON (ex.: PactoEventoResumoDTO, PactoJoinRequestMensagemDTO).

Pactos públicos

IDNomeDescrição
Nenhum pacto disponível.

Cadastro de Município Externo

Use este formulário para anunciar seu município e facilitar a descoberta por outros pactos.