---
openapi: 3.0.0
info:
  title: API CDESP - Vacinação
  description: Compartilhamento de dados de **Vacinação no Estado de São Paulo** por
    meio da Central de Dados e Informações do Estado de São Paulo (CDESP).
  version: 1.0.0
servers:
- url: https://cdesp-vacinacao.api-hml.rota.sp.gov.br
  description: Homologação
tags:
- name: VaciVida
  description: Operações relacionadas ao sistema VaciVida (Aplicativo de Vacinação
    do Estado de São Paulo)
security:
- IDP.SP: []
paths:
  /vacivida/vacinacoes:
    get:
      operationId: get-vacinacoes
      summary: Consulta dados de vacinações
      description: Consulta dados de vacinações realizadas no Estado de São Paulo
        com registro no sistema VaciVida
      security:
      - IDP.SP:
        - api:integrador.cdesp-vacinacao.pacientes.read
        - api:integrador.cdesp-vacinacao.pacientes.read
        - api:integrador.cdesp-vacinacao.estabelecimentos.read
        - api:integrador.cdesp-vacinacao.profissionais.read
        - api:integrador.cdesp-vacinacao.imunizantes.read
      tags:
      - VaciVida
      parameters:
      - name: cpf
        in: query
        required: false
        description: CPF do paciente
        schema:
          type: string
      - name: pacienteId
        in: query
        required: false
        description: ID do paciente
        schema:
          type: string
      - name: cns
        in: query
        required: false
        description: CNS do paciente
        schema:
          type: string
      - name: cnes
        in: query
        required: false
        description: CNES do estabelecimento de saúde
        schema:
          type: string
      - name: startDate
        in: query
        required: false
        description: '**Data de aplicação** inicial do intervalo de pesquisa no formato
          `YYYY-MM-DD`'
        schema:
          format: date
          type: string
      - name: endDate
        in: query
        required: false
        description: '**Data de aplicação** final do intervalo de pesquisa no formato
          `YYYY-MM-DD`'
        schema:
          format: date
          type: string
      - name: page
        in: query
        required: false
        description: Número da página de resultado. Inicia-se em 1
        schema:
          default: 1
          minimum: 1
          type: integer
      - name: limit
        in: query
        required: false
        description: "Quantidade de resultados por página. Máximo: 100"
        schema:
          default: 10
          maximum: 100
          minimum: 1
          type: integer
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/VacividaVacinacaoResponse"
        "204":
          $ref: "#/components/responses/EmptyResponse"
        "400":
          $ref: "#/components/responses/ClientError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ScopeError"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/CircuitBreakerError"
        "504":
          $ref: "#/components/responses/TimeoutError"
  /vacivida/vacinacoes/{vacinacaoId}:
    get:
      operationId: get-vacinacoes-by-id
      summary: Consulta dados de vacinações pelo ID da vacinação
      description: Consulta dados de uma vacinação pelo ID da vacinação aplicada no
        Estado de São Paulo com registro no sistema VaciVida
      security:
      - IDP.SP:
        - api:integrador.cdesp-vacinacao.pacientes.read
        - api:integrador.cdesp-vacinacao.pacientes.read
        - api:integrador.cdesp-vacinacao.estabelecimentos.read
        - api:integrador.cdesp-vacinacao.profissionais.read
        - api:integrador.cdesp-vacinacao.imunizantes.read
      tags:
      - VaciVida
      parameters:
      - name: vacinacaoId
        in: path
        required: true
        description: ID da vacinação
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VacividaVacinacaoIdResponse"
        "204":
          $ref: "#/components/responses/EmptyResponse"
        "400":
          $ref: "#/components/responses/ClientError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ScopeError"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/CircuitBreakerError"
        "504":
          $ref: "#/components/responses/TimeoutError"
  /vacivida/pacientes:
    get:
      operationId: get-pacientes
      summary: Consulta dados de pacientes vacinados
      description: Consulta dados de pacientes vacinados no Estado de São Paulo com
        registro no sistema VaciVida
      security:
      - IDP.SP:
        - api:integrador.cdesp-vacinacao.pacientes.read
      tags:
      - VaciVida
      parameters:
      - name: cpf
        in: query
        required: false
        description: CPF do servidor público
        schema:
          type: string
      - name: cns
        in: query
        required: false
        description: CNS do paciente
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: Número da página de resultado. Inicia-se em 1
        schema:
          default: 1
          minimum: 1
          type: integer
      - name: limit
        in: query
        required: false
        description: "Quantidade de resultados por página. Máximo: 100"
        schema:
          default: 10
          maximum: 100
          minimum: 1
          type: integer
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/VacividaPacienteResponse"
        "204":
          $ref: "#/components/responses/EmptyResponse"
        "400":
          $ref: "#/components/responses/ClientError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ScopeError"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/CircuitBreakerError"
        "504":
          $ref: "#/components/responses/TimeoutError"
  /vacivida/pacientes/{pacienteId}:
    get:
      operationId: get-pacientes-by-id
      summary: Consulta dados de um paciente vacinado pelo ID do paciente
      description: Consulta dados de um paciente vacinado no Estado de São Paulo com
        registro no sistema VaciVida
      security:
      - IDP.SP:
        - api:integrador.cdesp-vacinacao.pacientes.read
      tags:
      - VaciVida
      parameters:
      - name: pacienteId
        in: path
        required: true
        description: ID do paciente
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VacividaPacienteResponse"
        "204":
          $ref: "#/components/responses/EmptyResponse"
        "400":
          $ref: "#/components/responses/ClientError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ScopeError"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/CircuitBreakerError"
        "504":
          $ref: "#/components/responses/TimeoutError"
  /vacivida/estabelecimentos:
    get:
      operationId: get-estabelecimentos
      summary: Consulta dados de estabelecimentos de vacinação
      description: Consulta dados de estabelecimentos de vacinação no Estado de São
        Paulo com registro no sistema VaciVida
      security:
      - IDP.SP:
        - api:integrador.cdesp-vacinacao.estabelecimentos.read
      tags:
      - VaciVida
      parameters:
      - name: cnes
        in: query
        required: false
        description: CNES do estabelecimento
        schema:
          type: string
      - name: municipio
        in: query
        required: false
        description: Município do estabelecimento (Maiúsculo sem acento)
        schema:
          type: string
      - name: gve
        in: query
        required: false
        description: Grupo de Vigilância Epidemiológica do estabelecimento (Maiúsculo
          sem acento)
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: Número da página de resultado. Inicia-se em 1
        schema:
          default: 1
          minimum: 1
          type: integer
      - name: limit
        in: query
        required: false
        description: "Quantidade de resultados por página. Máximo: 100"
        schema:
          default: 10
          maximum: 100
          minimum: 1
          type: integer
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/VacividaEstabelecimentoResponse"
        "204":
          $ref: "#/components/responses/EmptyResponse"
        "400":
          $ref: "#/components/responses/ClientError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ScopeError"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/CircuitBreakerError"
        "504":
          $ref: "#/components/responses/TimeoutError"
  /vacivida/estabelecimentos/{cnes}:
    get:
      operationId: get-estabelecimentos-by-cnes
      summary: Consulta dados de um estabelecimento de vacinação pelo CNES
      description: Consulta dados de estabelecimentos de saúde utilizados na vacinação
        no Estado de São Paulo com registro no sistema VaciVida
      security:
      - IDP.SP:
        - api:integrador.cdesp-vacinacao.estabelecimentos.read
      tags:
      - VaciVida
      parameters:
      - name: cnes
        in: path
        required: true
        description: CNES do estabelecimento
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VacividaEstabelecimentoResponse"
        "204":
          $ref: "#/components/responses/EmptyResponse"
        "400":
          $ref: "#/components/responses/ClientError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ScopeError"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/CircuitBreakerError"
        "504":
          $ref: "#/components/responses/TimeoutError"
  /vacivida/vacinadores:
    get:
      operationId: get-vacinadores
      summary: Consulta dados de vacinadores
      description: Consulta dados de vacinadores (profissionais de saúde) no Estado
        de São Paulo com registro no sistema VaciVida
      security:
      - IDP.SP:
        - api:integrador.cdesp-vacinacao.profissionais.read
      tags:
      - VaciVida
      parameters:
      - name: cpf
        in: query
        required: false
        description: CPF do vacinador
        schema:
          type: string
      - name: numeroRegistro
        in: query
        required: false
        description: "Número do registro profissional do vacinador, por exemplo COREN-SP"
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: Número da página de resultado. Inicia-se em 1
        schema:
          default: 1
          minimum: 1
          type: integer
      - name: limit
        in: query
        required: false
        description: "Quantidade de resultados por página. Máximo: 100"
        schema:
          default: 10
          maximum: 100
          minimum: 1
          type: integer
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/VacividaVacinadorResponse"
        "204":
          $ref: "#/components/responses/EmptyResponse"
        "400":
          $ref: "#/components/responses/ClientError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ScopeError"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/CircuitBreakerError"
        "504":
          $ref: "#/components/responses/TimeoutError"
  /vacivida/vacinadores/{vacinadorId}:
    get:
      operationId: get-vacinadores-by-id
      summary: Consulta dados de vacinadores
      description: Consulta dados de um vacinador (profissional de saúde) no Estado
        de São Paulo com registro no sistema VaciVida
      security:
      - IDP.SP:
        - api:integrador.cdesp-vacinacao.profissionais.read
      tags:
      - VaciVida
      parameters:
      - name: vacinadorId
        in: path
        required: true
        description: ID do vacinador
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VacividaVacinadorResponse"
        "204":
          $ref: "#/components/responses/EmptyResponse"
        "400":
          $ref: "#/components/responses/ClientError"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          $ref: "#/components/responses/ScopeError"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/CircuitBreakerError"
        "504":
          $ref: "#/components/responses/TimeoutError"
components:
  responses:
    ClientError:
      description: Erro de cliente - parâmetros inválidos ou não informados
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    UnauthorizedError:
      description: Access token é invalido ou expirado
    ScopeError:
      description: Acesso negado - Scope inválido
    CircuitBreakerError:
      description: Circuit breaker aberto - tente novamente após alguns segundos
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    TimeoutError:
      description: Timeout no acesso a algum recurso
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    InternalServerError:
      description: Erro interno
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    EmptyResponse:
      description: Não há dados conforme parâmetros informados ou no intervalo de
        datas
    NotFoundError:
      description: Servidor público não encontrado com os dados informados
  securitySchemes:
    IDP.SP:
      flows:
        clientCredentials:
          tokenUrl: https://rhsso.idp-hml.sp.gov.br/auth/realms/idpsp/protocol/openid-connect/token
          scopes:
            api:integrador.cdesp-vacinacao.pacientes.read: Acesso aos dados de pacientes
              da vacinação no Estado de São Paulo
            api:integrador.cdesp-vacinacao.estabelecimentos.read: Acesso aos dados
              de estabelecimentos de vacinação no Estado de São Paulo
            api:integrador.cdesp-vacinacao.profissionais.read: Acesso aos dados de
              profissionais de saúde na vacinação no Estado de São Paulo
            api:integrador.cdesp-vacinacao.imunizantes.read: Acesso aos dados de imunizantes
              aplicados na vacinação no Estado de São Paulo
      type: oauth2
      description: OAuth2 com IDP.SP
  schemas:
    ErrorResponse:
      type: object
      properties:
        status:
          description: Código HTTP retornado pela API
          type: integer
        trace:
          description: Identificador de rastreamento da requisição
          type: string
        messages:
          description: Lista de mensagens de erro
          type: array
          items:
            type: string
    VacividaPacienteResponse:
      description: Pacientes do sistema de vacinação VaciVida
      type: object
      properties:
        idPaciente:
          format: uuid
          description: ID do paciente
          type: string
        nomeCompleto:
          description: Nome completo do paciente
          type: string
        nomeSocial:
          description: Nome social do paciente
          type: string
        cpf:
          description: CPF do paciente
          type: string
        cns:
          description: Cartão Nacional de Saúde do paciente
          type: number
        nomeMae:
          description: Nome da mãe do paciente
          type: string
        dataNascimento:
          format: date
          description: Data de nascimento no formato ISO (yyyy-MM-dd)
          type: string
          nullable: true
        sexo:
          description: Sexo do paciente
          enum:
          - MASCULINO
          - FEMININO
          - SEM INFORMACAO
          type: string
        emails:
          type: array
          items:
            $ref: "#/components/schemas/VacividaPacienteEmailResponse"
        telefones:
          type: array
          items:
            $ref: "#/components/schemas/VacividaPacienteTelefoneResponse"
        raca:
          description: Raça do paciente
          enum:
          - AMARELA
          - BRANCA
          - INDIGENA
          - NAO INFORMADA
          - PARDA
          - PRETA
          type: string
        etnia:
          description: Etnia do paciente
          type: string
        estrangeiro:
          description: Indica se paciente é estrangeiro
          enum:
          - SIM
          - NAO
          type: string
        gestante:
          description: Indica se paciente está gestante
          enum:
          - SIM
          - NAO
          type: string
        puerpere:
          description: Indica se paciente está no período do puerpério
          enum:
          - SIM
          - NAO
        dataHoraCadastro:
          format: date-time
          description: Data do cadastro
          type: string
        dataHoraAtualizacao:
          format: date-time
          description: Data de atualização
          type: string
    VacividaPacienteEmailResponse:
      description: Emails cadastrados para o paciente no sistema de vacinação VaciVida
      type: object
      properties:
        idPacienteEmail:
          format: uuid
          description: ID email do paciente
          type: string
        email:
          format: email
          description: Email do paciente
          type: string
        dataHoraCadastro:
          format: date-time
          description: Data do cadastro
          type: string
    VacividaPacienteTelefoneResponse:
      description: Telefones cadastrados para o paciente no sistema de vacinação VaciVida
      type: object
      properties:
        idPacienteTelefone:
          format: uuid
          description: ID telefone do paciente
          type: string
        ddd:
          format: phone
          description: DDD do telefone do paciente
          type: string
        telefone:
          format: phone
          description: Telefone do paciente
          type: string
        dataHoraCadastro:
          format: date-time
          description: Data do cadastro
          type: string
    VacividaEstabelecimentoResponse:
      description: Estabelecimentos de vacinação no sistema de vacinação VaciVida
      type: object
      properties:
        cnes:
          description: CNES do estabelecimento
          type: string
        nomeFantasia:
          description: Nome do estabelecimento
          type: string
        logradouro:
          description: Logradouro do estabelecimento
          type: string
        numeroEndereco:
          description: Número do endereço do estabelecimento
          type: string
        bairro:
          description: Bairro do estabelecimento
          type: string
        cep:
          description: CEP do estabelecimento
          type: string
        municipio:
          description: Município do estabelecimento
          type: string
        codigoIbge:
          description: Código IBGE do município do estabelecimento
          type: string
        gve:
          description: Grupo de Vigilância Epidemiológica do estabelecimento
          type: string
        dataHoraCadastro:
          format: date-time
          description: Data do cadastro
          type: string
    VacividaVacinadorResponse:
      description: Profissionais de saúde (vacinadores) no sistema de vacinação VaciVida
      type: object
      properties:
        idVacinador:
          format: uuid
          description: ID do vacinador
          type: string
        nomeCompleto:
          description: Nome completo do profissional
          type: string
        cpf:
          description: CPF do profissional de saúde
          type: string
        numeroRegistro:
          description: "Número do registro profissional, por exemplo COREN-SP"
          type: string
        ddd:
          description: DDD do telefone do profissional
          type: string
        telefone:
          description: Telefone do profissional
          type: string
        dataHoraCadastro:
          format: date-time
          description: Data do cadastro
          type: string
        dataHoraAtualizacao:
          format: date-time
          description: Data de atualização
          type: string
    VacividaVacinacaoResponse:
      description: Dados de aplicação de vacina no sistema de vacinação VaciVida
      type: object
      properties:
        idVacinacao:
          format: uuid
          description: ID da vacinação
          type: string
        idPaciente:
          format: uuid
          description: ID do paciente
          type: string
        cnes:
          description: CNES do estabelecimento
          type: string
        idVacinador:
          format: uuid
          description: ID do vacinador
          type: string
        dataAplicacao:
          format: date
          description: Data da aplicação no formato ISO (yyyy-MM-dd)
          type: string
        dataAprazamento:
          format: date
          description: Data do aprazamento no formato ISO (yyyy-MM-dd)
          type: string
          nullable: true
        grupoAtendimento:
          description: Grupo de atendimento
          type: string
        estrategia:
          description: Estratégia de vacinação
          type: string
        fabricante:
          description: Nome do fabricante do imunizante
          type: string
        imunobiologico:
          description: Nome do imunobiológico
          type: string
        lote:
          description: Lote do imunizante
          type: string
        dataHoraValidadeLote:
          format: date-time
          description: Data de validade do lote no formato ISO (yyyy-MM-dd)
          type: string
        dose:
          description: Dose aplicada
          type: string
        viaAdministracao:
          description: Via de administração
          type: string
        localAplicacao:
          description: Local de aplicação
          type: string
        dataHoraCadastro:
          format: date-time
          description: Data do cadastro
          type: string
        dataHoraAtualizacao:
          format: date-time
          description: Data de atualização
          type: string
    VacividaVacinacaoIdResponse:
      description: Dados de aplicação de vacina no sistema de vacinação VaciVida
      type: object
      properties:
        idVacinacao:
          format: uuid
          description: ID da vacinação
          type: string
        paciente:
          $ref: "#/components/schemas/VacividaPacienteResponse"
        estabelecimento:
          $ref: "#/components/schemas/VacividaEstabelecimentoResponse"
        vacinador:
          $ref: "#/components/schemas/VacividaVacinadorResponse"
        dataAplicacao:
          format: date
          description: Data da aplicação no formato ISO (yyyy-MM-dd)
          type: string
        dataAprazamento:
          format: date
          description: Data do aprazamento no formato ISO (yyyy-MM-dd)
          type: string
          nullable: true
        grupoAtendimento:
          description: Grupo de atendimento
          type: string
        estrategia:
          description: Estratégia de vacinação
          type: string
        fabricante:
          description: Nome do fabricante do imunizante
          type: string
        imunobiologico:
          description: Nome do imunobiológico
          type: string
        lote:
          description: Lote do imunizante
          type: string
        dataHoraValidadeLote:
          format: date-time
          description: Data de validade do lote no formato ISO (yyyy-MM-dd)
          type: string
        dose:
          description: Dose aplicada
          type: string
        viaAdministracao:
          description: Via de administração
          type: string
        localAplicacao:
          description: Local de aplicação
          type: string
        dataHoraCadastro:
          format: date-time
          description: Data do cadastro
          type: string
        dataHoraAtualizacao:
          format: date-time
          description: Data de atualização
          type: string
