Páginas filhas
  • 04 - API - Preenchimento da Ficha Médica do candidato no TOTVS Processo Seletivo.

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Sumário

...

Índice
excludeSumário

Objetivo

...

Este documento tem como objetivo exemplificar a forma de utilização da API de preenchimento da ficha médica do candidato no TOTVS Processo Seletivo.

Esta API possibilita incluir, atualizar ou acessar a ficha médica do candidato do TOTVS Processo Seletivo.

É importante ressaltar que neste modelo o aplicativo RM.Host é responsável por hospedar e expor os serviços de APIs. Veja mais sobre a configuração clicando aqui

Recurso disponível a partir da versão 12.1.2402.

Pré-requisitos

...

  • Permissão

Por questão de segurança e rastreabilidade, as requisições serão permitidas somente para um usuário cadastrado no RM, portanto é necessário conceder as devidas permissões apara o perfil do usuário que irá executar as requisições.

Image Added

           

  • Parâmetros 

O TOTVS Processo Seletivo irá considerar as parametrizações referentes ao termo de consentimento de uso de imagem e voz que foram definidas no TOTVS Educacional, para maiores informações clique aqui.

  • No TOTVS Processo Seletivo, é necessário indicar que a utilização da ficha médica está habilitada para o processo seletivo. A configuração deve ser realizada em "Edição de Processo Seletivo" > Parâmetros > Matrícula > Confirmação Matrícula > Utiliza ficha médica flexível. Para maiores informações acesse Parâmetro - Matrícula.

Image Added

Caso o parâmetro não esteja marcado, as chamadas para as APIs da ficha médica GET, POST e PUT, devem ter as seguintes informações no seu retorno:

Image Added

Dicas

...

A construção do modelo da ficha médica que será utilizada é realizada no TOTVS Educacional, no TOTVS Educacional será permitido definir um único modelo ativo por contexto, ou seja, o modelo que estiver ativo naquele contexto será o modelo disponibilizado para preenchimento em todo o RM (Portal do aluno, Portal Gestão Educacional ou Portal do TOTVS Processo Seletivo).

Para conhecer mais sobre a criação de modelos clique aqui.

Dica

Para ter acesso a estrutura do modelo ativo e que será utilizado pela API de preenchimento da ficha médica, orientamos consumir a API abaixo:

Máscara de Url:  http://{domínio}:{porta}/api/educational/v1/medicalrecord/templates/{Id. Modelo}?Expand=wrapper,section,field

Exemplo de configuração:

Domínio: localhost

Porta: 8051

Expand=wrapper,section,field: indica que a requisição ira retornar os agrupadores, seções e campos.

Id. Modelo: Identificador do modelo da ficha médica que está ativo no contexto.

Url Utilizada: http://localhost:8051/api/educational/v1/medicalrecord/templates/9?Expand=wrapper,section,field

Expandir
titleVer resultado JSON...
Bloco de código
languagejs
firstline1
titleResultado Positivo (JSON)
linenumberstrue
{
    "idModel": 9,
    "companyCode": 1,
    "branchCode": 1,
    "levelEducationCode": 1,
    "name": "Exemplo ficha de saúde aluno",
    "active": "S",
    "observation": "Teste",
    "wrappers": [
        {
            "id": 13,
            "idModel": 9,
            "title": "Questionário 1",
            "displayOrder": 1,
            "sections": [
                {
                    "idSection": 8,
                    "idWrapper": 13,
                    "title": "Seção 1",
                    "inactive": "N",
                    "displayOrder": 0,
                    "fields": [
                        {
                            "id": 56,
                            "title": "Faz algum tipo de controle médico?",
                            "fieldType": 8,
                            "required": "N",
                            "inactive": "N",
                            "displayOrder": 2,
                            "optionsForSelection": [
                                {
                                    "idField": 56,
                                    "sequential": 1,
                                    "text": "Sim",
                                    "inactive": "N",
                                    "optionUsedPeople": false
                                },
                                {
                                    "idField": 56,
                                    "sequential": 2,
                                    "text": "Não",
                                    "inactive": "N",
                                    "optionUsedPeople": false
                                }
                            ]
                        },
                        {
                            "id": 57,
                            "title": "Já esteve internado alguma vez? ",
                            "fieldType": 10,
                            "size": 50,
                            "required": "N",
                            "inactive": "N",
                            "displayOrder": 0,
                            "optionsForSelection": [
                                {
                                    "idField": 57,
                                    "sequential": 1,
                                    "text": "Sim",
                                    "inactive": "N",
                                    "optionUsedPeople": false
                                },
                                {
                                    "idField": 57,
                                    "sequential": 2,
                                    "text": "Não",
                                    "inactive": "N",
                                    "optionUsedPeople": false
                                }
                            ]
                        },
                        {
                            "id": 58,
                            "title": "Descreva sobre a internação",
                            "fieldType": 2,
                            "size": 500,
                            "required": "N",
                            "inactive": "N",
                            "displayOrder": -2,
                            "optionsForSelection": []
                        },
                        {
                            "id": 59,
                            "title": "Já teve ataque, desmaio, perda de sentido? ",
                            "fieldType": 7,
                            "required": "N",
                            "inactive": "N",
                            "displayOrder": 0,
                            "optionsForSelection": [
                                {
                                    "idField": 59,
                                    "sequential": 1,
                                    "text": "Sim",
                                    "inactive": "N",
                                    "optionUsedPeople": false
                                },
                                {
                                    "idField": 59,
                                    "sequential": 2,
                                    "text": "Não",
                                    "inactive": "N",
                                    "optionUsedPeople": false
                                }
                            ]
                        }
                    ]
                }
            ],
            "fields": [
                {
                    "id": 24,
                    "title": "Usa medicamentos controlado",
                    "descriptiveText": "teste cadastro hhhh",
                    "fieldType": 8,
                    "size": 60,
                    "mask": "9999-99999",
                    "required": "N",
                    "inactive": "N",
                    "displayOrder": 1,
                    "optionsForSelection": [
                        {
                            "idField": 24,
                            "sequential": 1,
                            "text": "ooo",
                            "inactive": "N",
                            "optionUsedPeople": false
                        }
                    ]
                }
            ]
        },
        {
            "id": 14,
            "idModel": 9,
            "title": "Questionário 2",
            "displayOrder": 2,
            "sections": [
                {
                    "idSection": 9,
                    "idWrapper": 14,
                    "title": "Patologia ",
                    "inactive": "N",
                    "displayOrder": 0,
                    "fields": [
                        {
                            "id": 60,
                            "title": "Possui algum tipo de alergia? ",
                            "descriptiveText": "teste cadastro hhhhsSSS",
                            "fieldType": 1,
                            "size": 10,
                            "mask": "9999-99999",
                            "required": "N",
                            "inactive": "N",
                            "displayOrder": 0,
                            "optionsForSelection": []
                        },
                        {
                            "id": 61,
                            "title": "Possui algum problema respiratório, reumatismo infeccioso ou sopro no coração?",
                            "fieldType": 11,
                            "required": "N",
                            "inactive": "N",
                            "displayOrder": 0,
                            "optionsForSelection": []
                        },
                        {
                            "id": 62,
                            "title": "Qual problema respiratório?",
                            "fieldType": 1,
                            "size": 100,
                            "required": "N",
                            "inactive": "N",
                            "displayOrder": 0,
                            "optionsForSelection": []
                        },
                        {
                            "id": 63,
                            "title": " É diabético?",
                            "fieldType": 7,
                            "required": "N",
                            "inactive": "N",
                            "displayOrder": 0,
                            "optionsForSelection": [
                                {
                                    "idField": 63,
                                    "sequential": 1,
                                    "text": "Sim",
                                    "inactive": "N",
                                    "optionUsedPeople": false
                                },
                                {
                                    "idField": 63,
                                    "sequential": 2,
                                    "text": "Não",
                                    "inactive": "N",
                                    "optionUsedPeople": false
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "id": 15,
            "idModel": 9,
            "title": "COVID-19",
            "displayOrder": 3,
            "fields": [
                {
                    "id": 64,
                    "title": " Já tomou todas as vacinas, inclusive a da COVID-19?",
                    "fieldType": 8,
                    "size": 50,
                    "required": "S",
                    "inactive": "N",
                    "displayOrder": 0,
                    "optionsForSelection": [
                        {
                            "idField": 64,
                            "sequential": 1,
                            "text": "Sim",
                            "inactive": "N",
                            "optionUsedPeople": false
                        },
                        {
                            "idField": 64,
                            "sequential": 2,
                            "text": "nao",
                            "inactive": "N",
                            "optionUsedPeople": false
                        },
                        {
                            "idField": 64,
                            "sequential": 3,
                            "text": "talve",
                            "inactive": "N",
                            "optionUsedPeople": false
                        }
                    ]
                },
                {
                    "id": 65,
                    "title": "Qual vacina da COVID-19?",
                    "fieldType": 1,
                    "size": 50,
                    "required": "N",
                    "inactive": "N",
                    "displayOrder": 0,
                    "optionsForSelection": []
                },
                {
                    "id": 66,
                    "title": "Data da Dose única da COVID-19:",
                    "fieldType": 4,
                    "required": "N",
                    "inactive": "N",
                    "displayOrder": 0,
                    "optionsForSelection": []
                },
                {
                    "id": 67,
                    "title": "Data em que tomou a 1º dose da COVID-19:",
                    "fieldType": 4,
                    "required": "N",
                    "inactive": "N",
                    "displayOrder": 0,
                    "optionsForSelection": []
                },
                {
                    "id": 68,
                    "title": "Data em que tomou a 2º dose da COVID-19:",
                    "fieldType": 4,
                    "required": "N",
                    "inactive": "N",
                    "displayOrder": 0,
                    "optionsForSelection": []
                },
                {
                    "id": 69,
                    "title": "Data em que tomou a dose de reforço da COVID-19",
                    "fieldType": 4,
                    "required": "N",
                    "inactive": "N",
                    "displayOrder": 0,
                    "optionsForSelection": []
                }
            ]
        },
        {
            "id": 16,
            "idModel": 9,
            "title": "Contato Escolar",
            "displayOrder": 0,
            "sections": [
                {
                    "idSection": 10,
                    "idWrapper": 16,
                    "title": "Em caso de emergência a escola deverá comunicar:",
                    "inactive": "N",
                    "displayOrder": 0,
                    "fields": [
                        {
                            "id": 70,
                            "title": "Nome",
                            "fieldType": 1,
                            "size": 100,
                            "required": "S",
                            "inactive": "N",
                            "displayOrder": 1,
                            "optionsForSelection": []
                        },
                        {
                            "id": 71,
                            "title": "Telefone",
                            "fieldType": 3,
                            "size": 20,
                            "mask": "(99)9999-9999",
                            "required": "S",
                            "inactive": "N",
                            "displayOrder": 0,
                            "optionsForSelection": []
                        },
                        {
                            "id": 72,
                            "title": "Parentesco",
                            "fieldType": 1,
                            "size": 40,
                            "mask": "(99)9999-9999",
                            "required": "S",
                            "inactive": "N",
                            "displayOrder": -1,
                            "optionsForSelection": []
                        }
                    ]
                }
            ]
        }
    ]
}


1 - Métodos

...

      Serão apresentados 3 métodos, os quais foram implementados na API do Termo, são eles:

  • GET ( Retorna a ficha médica cadastrada)
  • POST (Cria nova ficha médica)
  • PUT (Atualiza informações da ficha médica)

1.1 - GET (Retorna a ficha médica cadastrada)

...

Máscara de Url: http://{domínio}:{porta}/api/educational/v1/ApplicantRegistries/{Cód. da Coligada}|{Id. Processo Seletivo}|{Cód. Usuário PS }/medicalRecord/{Id. Ficha Médica}?BranchCode={Cód Filial}&LevelEducationCode={Nível de ensino}&ResponsibleApplicantCode={Cód. Usuário PS responsável pela operação}

Informações
iconfalse
titleExemplo de Configuração

Domínio: localhost

Porta: 8051

Cód. Coligada: 1,  Id. Processo Seletivo: 161, Cód. Usuário PS: 386, Id. Ficha Médica:-1, Cód. Filial: 1, Nível de Ensino:1, Cód. Usuário PS Responsável pela atualização:26

Url Utilizada: http://localhost:8051/api/educational/v1/ApplicantRegistries/1|161|386/medicalRecord/-1?BranchCode=1&LevelEducationCode=1&ResponsibleApplicantCode=26

Dica
titleId. Ficha Médica

"Id. Ficha Médica" se passado -1 o sistema retornará  a ficha médica do modelo que esta ativo, caso contrário deverá ser passada o Id. Ficha médica do candidato (tabela SFICHAMEDICAPESSOA)

Aviso

O cadastro do campo é global, ou seja, um mesmo campo cadastrado poderá ser utilizado em outros contexto ou em vários modelos do mesmo contexto.

Por exemplo: Campo cadastrado "Qual é o seu tipo sanguíneo?", esse mesmo campo poderá ser adicionado em outros modelos de outros contexto ou do mesmo contexto.

É importante ressaltar que o campo nasce global de forma nativa, e permite que  a informação preenchida pelo aluno também seja global, por exemplo, se o aluno preencher o campo "Qual é o seu tipo sanguíneo?" na ficha médica da filial 01, e depois se esse aluno for transferido para a filial 02, e a ficha médica da filial 02 usar o mesmo campo no seu modelo de ficha médica, essa informação já vai estar preenchida na ficha médica da filial 02.

O mesmo aproveitamento acontecerá, no seguinte cenário: o usuário realiza a cópia da ficha médica "X" para o mesmo contexto, passando a ter a ficha médica "X Cópia". Na sequência inativa a ficha médica "X",  ativa a ficha médica "X Cópia" e acrescenta alguns novos campos, com isso quando o aluno acessar a ficha médica o sistema vai mostrar a ficha médica ativa "X Cópia" e carregara os campos já preenchidos pelo aluno.

Considerando os cenários acima, podem existir casos que para o modelo ativo no TOTVS Educacional, o candidato ainda não possua nenhuma ficha médica preenchida, no entanto existem campos associados a esse modelo que já foram preenchidos pelo candidato em outro momento através de outro modelo, neste caso a ficha médica será retornada com os campos que já estão preenchidos e o idMedicalRecord será igual a  -1 indicando que será uma nova ficha médica.

Expandir
titleResultado - Usuário não cadastrado

Caso o usuário não possua nenhum ficha médica cadastrada (para o modelo ativo no RM) será retorno um objeto vazio conforme o exemplo abaixo:

idMedicalRecord: -1 = Indica que deverá ser incluída uma nova ficha médica.

idModel = Sempre retorna o id. modelo que esta ativo no TOTVS Educacional.

Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
    "applicantRegistryCode": "381",
    "selectionProcessCode": "161",
    "idMedicalRecord": -1,
    "idModel": 12,
    "fields": []
}
Expandir
titleVer resultado JSON...
Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
    "applicantRegistryCode": "386",
    "selectionProcessCode": "161",
    "idMedicalRecord": 47,
    "idModel": 9,
    "observation": "Modelo principal da ficha de saúde",
    "fields": [
        {
            "idField": 70,
            "value": "Joana Silva"
        },
        {
            "idField": 71,
            "value": "(31)9 9221-4225"
        },
        {
            "idField": 72,
            "value": "Mãe"
        },
        {
            "idField": 56,
            "value": "",
            "optionsSelected": [
                {
                    "sequential": 1,
                    "value": "Sim"
                }
            ]
        },
        {
            "idField": 64,
            "value": "",
            "optionsSelected": [
                {
                    "sequential": 1,
                    "value": "Sim"
                }
            ]
        }
    ]
}
Informações
titleInformações complementares

É importante ressaltar que se um candidato já for aluno (possuir vinculo com a tabela de Pessoa) a ficha médica do candidato é a mesma do aluno, ou seja, qualquer alteração na ficha médica do candidato automaticamente reflete na ficha médica do aluno (estará alterando a mesma ficha).

1.2 - POST (Criar uma nova ficha médica)

...

Máscara de Url: http://{domínio}:{porta}/api/educational/v1/ApplicantRegistries/{Cód. da Coligada}|{Id. Processo Seletivo}|{Cód. Usuário PS }/medicalRecord/?BranchCode={Cód Filial}&LevelEducationCode={Nível de ensino}&ResponsibleApplicantCode={Cód. Usuário PS responsável pela operação}

Informações
iconfalse
titleExemplo de Configuração

Domínio: localhost

Porta: 8051

Cód. Coligada: 1,  Id. Processo Seletivo: 161, Cód. Usuário PS: 386

Url Utilizada: http://localhost:8051/api/educational/v1/ApplicantRegistries/1|161|386/medicalRecord/


Informações
iconfalse
titleExemplo de Entrada
Expandir
titleVer resultado JSON...

Importante:

idModel: deve ser informado o id. modelo que esta ativo para o contexto.

Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
    "idModel": 9,
    "companyCode": 1,
    "branchCode": 1,
    "levelEducationCode": 1,     "observation": "Ficha da Elisa Stefany Milena Gonçalves",
    "fields": [
        {
            "idField": 70,
            "value": "Elisa Stefany Milena Gonçalves"
        },
        {
            "idField": 71,
            "value": "(31)998235743"
        },
        {
            "idField": 72,
            "value": "Mãe"
        },
        {
            "idField": 56,
            "value": "",
            "optionsSelected": [
                {
                    "sequential": 1,
                    "value": "Sim"
                }
            ]
        },
        {
            "idField": 64,
            "value": "",
            "optionsSelected": [
                {
                    "sequential": 1,
                    "value": "Sim"
                }
            ]
        }
    ]
}
Informações
iconfalse
titleExemplo de Resultado
Expandir
titleVer resultado JSON...
Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
    "applicantRegistryCode": "384",
    "responsibleApplicantCode": "26",
    "selectionProcessCode": "161",
    "idMedicalRecord": 48,
    "idModel": 9,
    "companyCode": 1,
    "branchCode": 1,
    "levelEducationCode": 1,
    "observation": "Ficha da Elisa Stefany Milena Gonçalves",
    "fields": [
        {
            "idField": 70,
            "value": "Elisa Stefany Milena Gonçalves",
            "optionsSelected": []
        },
        {
            "idField": 71,
            "value": "(31)998235743",
            "optionsSelected": []
        },
        {
            "idField": 72,
            "value": "Mãe",
            "optionsSelected": []
        },
        {
            "idField": 56,
            "value": "",
            "optionsSelected": [
                {
                    "sequential": 1,
                    "value": "Sim"
                }
            ]
        },
        {
            "idField": 64,
            "value": "",
            "optionsSelected": [
                {
                    "sequential": 1,
                    "value": "Sim"
                }
            ]
        }
    ]
}

1.3 - PUT (Atualiza informações da ficha médica)

...

Máscara de Url: http://{domínio}:{porta}/api/educational/v1/ApplicantRegistries/{Cód. da Coligada}|{Id. Processo Seletivo}|{Cód. Usuário PS }/medicalRecord/{Id. Ficha Médica}?BranchCode={Cód Filial}&LevelEducationCode={Nível de ensino}&ResponsibleApplicantCode={Cód. Usuário PS responsável pela operação}

Informações
iconfalse
titleExemplo de Configuração

Domínio: localhost

Porta: 8051

Cód. Coligada: 1,  Id. Processo Seletivo: 161, Cód. Usuário PS: 386, Id. Ficha Médica:48, Cód. Filial: 1, Nível de Ensino:1, Cód. Usuário PS Responsável pela atualização:26

Url Utilizada: http://localhost:8051/api/educational/v1/ApplicantRegistries/1|161|386/medicalRecord/48

Informações
iconfalse
titleExemplo de Entrada
Expandir
titleVer resultado JSON...
Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{  
   "idModel": 9,
    "companyCode": 1,
    "branchCode": 1,
    "levelEducationCode": 1,
     "observation": "Modelo principal da ficha de saúde",
    "fields": [
        {
            "idField": 70,
            "value": "Joana Silva"
        },
        {
            "idField": 71,
            "value": "(31)9 9221-4225"
        },
        {
            "idField": 72,
            "value": "Mãe"
        },
        {
            "idField": 56,
            "value": "",
            "optionsSelected": [
                {
                    "sequential": 1,
                    "value": "Sim"
                }
            ]
        },
        {
            "idField": 64,
            "value": "",
            "optionsSelected": [
                {
                    "sequential": 1,
                    "value": "Sim"
                }
            ]
        }
    ]
}
Informações
iconfalse
titleExemplo de Resultado
Expandir
titleVer resultado JSON...
Informações
iconfalse

Importante:

Serão retornados somete os campos que foram atualizado, pois quando enviamos as informações para atualização podemos enviar campos que não foram modificados, por isso é retornado somente os campos que foram atualizados. 

Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
    "idMedicalRecord": 47,
    "idModel": 9,
    "observation": "Modelo principal da ficha de saúde",
    "fields": [
        {
            "idField": 70,
            "value": "Joana Silva"
        },
        {
            "idField": 71,
            "value": "(31)9 9221-4225"
        }
    ]
}

Para adicionar um Campo ao modelo da Ficha Médica, é necessário que primeiro crie um agrupador (seção é uma informação opcional nessa situação), para depois adicionar um campo. Será permitido adicionar, editar e excluir um campo.

Os Itens criados na construção da Ficha Médica e salvos de forma Global para que possam ser utilizados em outro contexto. Os campos irão se ajustar na tela de acordo com o tamanho informado na criação do campo, para serem visualizados no preview.

Somente podem ser excluídos os campos que ainda não foram utilizados com dados dos alunos.

Não será permitido criar campos com mesmo código dentro de um mesmo agrupador e/ou seção.

Um campo poderá ser ativado ou inativado dentro de uma ficha, e também poderá ser marcado como item obrigatório ou não, para ser preenchido na Ficha.

Image Removed

Ao clicar em adicionar um campo, será aberto a janela abaixo. 

Image Removed

Para adicionar um campo novo, clicar em Adicionar novo campo. Os campos Título e Formato do campo são de preenchimento obrigatório.

PAra utilizar um ou mais campos, selecionar os campos e clicar em Adicionar campo(s) selecionados(s).

Expandir
titleOpções Formato do Campo

Caixa de listagem:
Uma caixa de seleção que o usuário poderá selecionar somente uma opção.

Caixa de opções:
Conjunto das opções em formato de bolinhas.

Caixa de opções multiseleção:
Conjunto de opções de caixinhas, bem parecido com a Caixa de opções.

Caixa de listagem multiseleção:
Opção parecida com a Caixa de listagem, porém poderá selecionar mais de uma opção.

Caixa de seleção:
A caixa de seleção é uma opção para ser usada, quando o usuário deverá marcar verdadeiro ou falso.