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.

...

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

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

É importante 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ários 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.

...

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

  • No TOTVS Processo Seletivo

(Este item tem que ser revisto ao cria a o preenchimento da ficha pela central do candidato)

...

  • , é 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á possível 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).

...

Dica

Para ter acesso a estrutura do modelo ativo e que será  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 deseja recuperar, se passar -1 será retornado o modelo que esta ativoestá ativo no contexto.

Url Utilizada: http://localhost:8051/api/educational/v1/medicalrecord/templates/-19?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": []
                        }
                    ]
                }
            ]
        }
    ]
}

...

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

...

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.

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:

Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
    "applicantRegistryCode": "83",
    "selectionProcessCode": "161",
    "idMedicalRecord": 0,
    "idModel": 0,
    "fields": []
}

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": [
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": 7270,
            "value": "MãeJoana Silva"
        },
        {
            "idField": 5671,
            "value": "",(31)9 9221-4225"
            "optionsSelected": [
   },
             {
                    "sequentialidField": 172,
                    "value": "SimMãe"
                }
            ]
        },
        {
            "idField": 6456,
            "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)

    {
            "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}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:42, Cód. Filial: 1, Nível de Ensino:1, Cód. Usuário PS Responsável pela atualização:26

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


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"
                }
            ]
        }
    ]
}

...

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

Nota

GUID: Este é o GUID que representa o identificador único do termo que foi retornado na requisição GET.

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: 83, GUID:d3c4a091-ea4c-474a-900f-f2ecd970520e386, Id. Ficha Médica:48, Cód. Filial: 1, Nível de Ensino:1, Cód. Usuário PS Responsável pelo Aceite/Revogaçãopela atualização:26.

Url Utilizada: http://localhost:8051/api/educational/v1/ApplicantRegistries/1|161|83386/termUseOfImageVoice/d3c4a091-ea4c-474a-900f-f2ecd970520e?BranchCode=1&LevelEducationCode=1&ResponsibleApplicantCode=26medicalRecord/48

Informações
iconfalse
titleExemplo de Entrada
Expandir
titleVer resultado JSON...
Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstruetrue
{  
   "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"
                }
            ]
        }
    ]{
   "ConsentStatus":"A",
   "SourceIP":"192.168.18.1",
   "Token" :"335554"
}
O resultado é basicamente o mesmo resultado da requisição GET acrescido de algumas informações complementares, tais como: data/hora do aceite ou revogação.
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
{
    "guididMedicalRecord": 47,
    "idModel": 9,
    "observation": "d3c4a091-ea4c-474a-900f-f2ecd970520e",
Modelo principal da ficha de saúde",
    "fields": [
        {
            "companyCodeidField": "1"70,
       "branchCode": "1",
    "personCodevalue": "19Joana Silva",
     "levelEducationCode": "1"   },
       "dateTimeRevoked": "2023-08-28T09:22:39.0001701-03:00",
 {
       "dateTimeAccepted": "2023-08-22T11:47:08-03:00",
    "userHasPermissionAcceptedOrRevokedidField": true71,
    "token": "858371",
        "consentStatusvalue": "A",
    "termVersion": 5,
(31)9 9221-4225"
       "term": "", }
    "enableOnlyAccept": "N"
}
Informações
titleNotificação

Ao realizar o aceite / revogação do termo será encaminhado um e-mail de notificação para instituição conforme as parametrizações definidas no TOTVS Educacional. Para maiores informações clique aqui 

Aviso
Se o processo seletivo estiver parametrizado para usar o termo de consentimento de uso de imagem e voz, ao realizar a matricula do candidato no TOTVS Educacional  será obrigatório existir para o mesmo um termo com o status de aceito ou revogado (isto se o sistema estiver parametrizado para permitir que o termo seja revogado).
]
}