telemed-support

Filas

Filas de atendimento são utilizadas também como Especialidades médicas. Para facilitar o entendimento, imagine um ambulatório médico. Neste ambulatório podem existir pacientes previamente agendados e pacientes que chegaram para atendimento imediato.

No modo de atendimento imediato os pacientes são enfileirados um atrás do outro e são atendidos de acordo com a ordem de entrada na fila (primeiro a chegar, primeiro a ser atendido).

No modo de atendimento agendado os pacientes são previamente agendados por um médico ou administrador do sistema e podem ou não passar pela triagem.

Triagem de atendimento

Todo atendimento pode estar sujeito ao questionário de triagem. A triagem de um atendimento imediato, por exemplo, pode dispensar o paciente que não se encaixe em alguma pré-condição estabelecida para aquela fila. Por exemplo: em uma triagem de pacientes que desejam orientações sobre COVID-19, podemos dispensar aqueles que não apresentam nenhum sintoma da doença.

Exemplo quesitonário

Listar filas

A listagem poderá ser filtrada por meio de params/query:

Campo/Propriedade Tipagem Padrão/Formato Descrição Obrigatório
offset Integer   offset/início de referência para a busca
limit Integer   limite de resultados, não é possível ser maior que 100
title String   Nome da fila
sorting String “asc” ou “desc” Ordenar resultados por crescente ou decrescente, pela propriedade “title”
specialtyId String   Id da especialidade que pertence à fila
GET /api/queues HTTP/2
Host: telemedicina.example.com
accesskey: sua-chave-de-acesso

Listar fila por id

A listagem poderá ser feita por meio de um id na params/query:

GET /api/queues/:id HTTP/2
Host: telemedicina.example.com
accesskey: sua-chave-de-acesso ## Criação de fila

Para cadastrar:

POST /api/queues HTTP/2
Host: telemedicina.example.com
Content-Type: application/json
accesskey: sua-chave-de-acesso
Campo/Propriedade Tipagem Padrão/Formato Descrição Obrigatório
title String   Título da fila
isDefault Boolean   Boolean que indica se a fila é a padrão para aparecer primeiro na tela do paciente
hiddenForPatient Boolean   Boolean que indica se a fila aparecerá na tela do paciente
disableOnDemand Boolean   Boolean que indica se a fila é utilizada para atendimento sobre demanda(como pronto atendimento)
specialtyId String   Id da especialidade a ser atribuída a fila
questions Object   Dicionário do questionário da fila, no qual a propriedade indicará o id da pergunta(exemplo: pergunta1) e suas propriedades
questions.pergunta1 Object     🟡
questions.pergunta1.order Integer   Número inteiro que indica a ordem/posição da pergunta 🟡
questions.pergunta1.question String   Título da pergunta 🟡
questions.pergunta1.type String “radio”, “check” ou “text” Indica se a pergunta vai ser única resposta(“radio”), múltipla escolha(“check”) ou texto livre(“text”) 🟡
questions.pergunta1.constraints Object   Requisitos e configurações para responder a pergunta 🟡
questions.pergunta1.constraints.minOptions Integer   Funcionalidade somente quando o type é check, indica o mínimo de escolhas necessárias 🟡
questions.pergunta1.constraints.required Boolean   Funcionalidade somente quando o type é radio, indica se é obrigatório responder para prosseguir 🟡
questions.pergunta1.constraints.minLength Integer   Funcionalidade somente quando o type é text, indica o m´ínimo de caractéres necessários para preencher para prosseguir 🟡
questions.pergunta1.responses Array of Objects   Funcionalidade somente quando o type é radio ou check, indica as respostas possíveis da pergunta 🟡
questions.pergunta1.responses[0].score Float   Pontuação que será somada com a resposta selecionada, podendo ser negativa ou positiva 🟡
questions.pergunta1.responses[0].text String   Opção da pergunta, exemplo “sim” ou “não” 🟡
responses Array of Objects   Matriz de objetos que contém as possíveis respostas para o question´ário com base na pontuação total das respostas 🟡
responses[0].maxScore Integer   Pontuação máxima para cancelar o questionário e informar o paciente 🟡
responses[0].minScore Integer   Pontuação mínima para cancelar o questionário e informar o paciente 🟡
responses[0].reponse Object   Objeto que indica a resposta que o paciente irá receber 🟡
responses[0].reponse.body String   Texto informativo ao paciente 🟡
responses[0].reponse.title String   Título do informativo ao paciente 🟡
splitRules Array of Objects   Matriz de objetos que contém a informação necessária para divisão de pagamentos 🟡
splitRules[0].percent Float 55.5 Valor em decimal da porcentagem a ser repassada
splitRules[0].kind String “professional”, “company” ou “attendanceDoctor” Tipo do recebedor do pagamento
splitRules[0].id String   Id dentro do nosso sitema de quem vai receber o pagamento, tem que estar adequado com o kind, pois faremos a consulta e o pagamento com base nisso.

Exemplo de criação de fila com questionário de triagem:

Neste exemplo, estamos criando um questionário de teste com apenas uma pergunta: Teve febre, tosse ou dificuldade de respirar nos últimos dias?. Esta questão é do tipo radio, ou seja, é uma questão de seleção única. O paciente poderá selecionar entre duas alternativas: Sim (com pontuação 500) ou Não (com pontuação 100). Ao final do questionário (neste caso, após responder a única questão), o score das respostas é calculado e confrontado com a chave responses, que possui os resultados que dispensam atendimento médico.

Na chave responses, temos a seguinte configuração: O usuário receberá a resposta com título Sem risco, se apresentar score entre 0 (minScore) e 499 (maxScore). Qualquer score diferente disso, o usuário seguirá para a sala de espera de atendimento médico. Estando dentro do grupo Sem risco, o paciente é dispensado do atendimento e o pedido é encerrado. No caso de dispensa do atendimento, todos os dados do paciente, data, hora, respostas do questionário, score alcançado e orientações recebidas ficam armazenadas em seu prontuário.

{
    "title": "Covid-19",
    "questions": {
        "pergunta1": {
            "order": 1,
            "question": "Teve febre, tosse ou dificuldade de respirar nos últimos dias?",
            "type": "radio",
            "constraints": {
                "required": true
            },
            "responses": [
                {
                    "score": 500,
                    "text": "Sim"
                },
                {
                    "score": 100,
                    "text": "Não"
                }
            ]
        },
        "pergunta2": {
            "order": 2,
            "question": "Escolha dois motivos para ter procurado por atendimento",
            "type": "check",
            "constraints": {
                "minOptions": 2
            },
            "responses": [
                {
                    "score": 0,
                    "text": "Estou me sentindo mal"
                },
                {
                    "score": 0,
                    "text": "Consulta de check-up"
                },
                {
                    "score": 0,
                    "text": "Indicação de Amigos/Familiares"
                },
                {
                    "score": 0,
                    "text": "Outros"
                }
            ]
        },
         "pergunta3": {
            "order": 3,
            "question": "Descreva pelo menos em 50 caracteres o que você está sentindo",
            "type": "text",
            "constraints": {
                "minLength": 50
            }
        }
    },
    "responses": [
        {
            "minScore": 0,
            "maxScore": 499,
            "response": {
                "body": "No momento, você não apresenta risco. Se tiver algum dos sintomas graves, entre em contato novamente.",
                "title": "Sem risco"
            }
        }
    ]
}

Atualização de fila

Para atualizar é só seguir as mesmas especificações da criação, porém informando o id na queryString no método PATCH.

PATCH /api/queues/:id HTTP/2
Accept: application/json
Host: telemedicina.example.com
Content-Type: application/json
accesskey: sua-chave-de-acesso

Deletar de fila

Para deletar, basta informar o id na queryString no método DELETE:

DELETE /api/queues/:id HTTP/2
Host: telemedicina.example.com
Content-Type: application/json
accesskey: sua-chave-de-acesso