npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

prescriber-tisaudev2

v1.0.30

Published

![Prescritor Ti Saúde](https://img.shields.io/badge/v1.0.11-Prescritor%20Ti.Sa%C3%BAde-8A2BE2)

Downloads

365

Readme

1. Prescritor Ti.Saúde

Prescritor Ti Saúde

2. Índice de Conteúdos

3. Sobre a integração

O objetivo desse SDK é disponibilizar uma API para permitir a integração do Receituário digital da Ti.Saúde em outros softwares médicos que desejem incorporar o receituário.

A integração é feita atráves de um sdk construído em Typescript, que pode ser instalado em qualquer front-end atráves de cdn ou adicionando o pacote via yarn/npm.

Para conseguir se integrar é necessário obter um keyId de acesso a funcionalidade e o JWT do usuário que vai utilizar o prescritor, que pode ser obtida através de API.

Proteja sua keyId, armazene em uma local seguro.

Para obter o keyId entre contato com o nosso suporte clicando aqui.

4. Compatibilidade

O sdk é compatível com os seguintes navegadores:

  • Chrome >=87
  • Firefox >=78
  • Safari >=14
  • Edge >=88

5. Ambientes

  • API DEV: https://api.dev.cloud.tisaude.com/
  • API PROD: https://api.tisaude.com/
  • SDK CDN: https://prescriber-sdk.s3.amazonaws.com/{VERSION}/prescriber-tisaudev2.umd.js
  • SDK package yarn/npm: *https://www.npmjs.com/package/prescriber-tisaudev2

6. Instalação do pacote

6.1. Yarn

yarn add prescriber-tisaudev2

6.2. NPM

npm install prescriber-tisaudev2

6.3. CDN

<script src="https://prescriber-sdk.s3.amazonaws.com/{VERSION}/prescriber-tisaudev2.umd.js"></script>

6.4. Como obter a versão mais recente:

  • Acesse a página do pacote Prescriber Ti.Saúde no npm.

  • No topo da página, você verá o número da versão mais recente publicada.

  • Substitua {VERSION} pelo número da versão, por exemplo, 1.0.11:

7. Buildando o pacote

Para realizar a build do SDK localmente, você executar um dos comandos a seguir:

7.1. CDN

yarn build:cdn

7.2. NPM ou Yarn

yarn build:pkg

Após o build, o prescritor precisa ser reinstalado apontando para os arquivos locais. Recomendamos excluir sua pasta node_modules e na sequência executar o comando a seguir.

yarn add prescriber-tisaudev2@file:/home/{SEU-USUARIO-AQUI}/prescriptor-tisaudev2

8. Obtendo JWT

Você precisa se autenticar em nosso endpoint de login, utilizando suas credenciais de acesso. Um exemplo de requisição seria:

curl --request POST \
  --url https://api.dev.cloud.tisaude.com/api/login \
  --header 'Content-Type: application/json' \
  --data '{
	"login": "meuusuario",
	"senha": "usuarioSenha123#"
}' | jq .access_token

deverá retornar algo semelhante a este token:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvYXBpLmRldi5jbG91ZC50aXNhdWRlLmNvbSIsImlhdCI6MTY5NTczNzI5NiwiZXhwIjoxNjk4MzI5Mjk2LCJuYmYiOjE2OTU3MzcyOTYsImp0aSI6IldZdGxCWktxcjJGZVd6REEiLCJzdWIiOjc5NTAsInBydiI6IjU4NzA4NjNkNGE2MmQ3OTE0NDNmYWY5MzZmYzM2ODAzMWQxMTBjNGYifQ.GqGNAsdtksCDgYMxZmVZ_5CAyGjuFoWTRlLnMJCNleM

9. Configurando o pacote

9.1. Via CDN

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta  charset="UTF-8">
		<meta  name="viewport"  content="width=device-width, initial-scale=1.0">
		<title>Prescritor cdn</title>
	</head>
<body>
	<div  id="prescriptor"  class="col-12"></div>
	<script  src="https://prescriber-sdk.s3.amazonaws.com/{VERSION}/prescriber-tisaudev2.umd.js">
	</script>
	<script>
    const { EVENTS, FEATURES, VIEWS, Prescriber } = window['prescriptor-tisaudev2'];

		this.prescriptor  =  new  Prescriber.Prescriber({
					element: "prescriptor",
					height: "70vh",
					keyId: ${keyId},
					token: ${access_token}
				});

		this.prescriptor.loadPrescriber().handlerEvents();

		const  APP  =  this;

		this.prescriptor.on(Prescriber.EVENTS.EVENT_PRESCRIBER_LOADED, () => {
				APP.prescriptor.auth().setColor({
					primary: 'red'
				});

        APP.prescriptor.setViewData(VIEWS.VIEW_MEDICATION_PRESCRIPTION);
		});

    this.prescriptor.on(EVENTS.EVENT_PRESCRIBER_FORM_LOADED, () => {
      APP.prescriptor.setPatient({
        cellphone: 81911111111,
        email: [email protected],
        name: teste ,
        id: null,
        idExternal: null,

        // Informações do Paciente (campos opcionais)
        cpf: null,                            // string | CPF do paciente (opcional)
        address: null,                        // string | Endereço do paciente (opcional)
        apartment: null,                      // string | Apartamento do paciente (opcional)
        number: null,                         // string | Número da residência (opcional)
        neighborhood: null,                   // string | Bairro do paciente (opcional)
        city: null,                           // string | Cidade do paciente (opcional)
        state: null,                          // string | Estado do paciente (opcional)
        zip: null,                            // string | CEP do paciente (opcional)
        country: null,                        // string | País do paciente (opcional)

        // Informações do Convênio de Saúde (campos opcionais)
        idHealthInsurance: null,              // number | ID do convênio de saúde (opcional)
        healthInsurancePlan: null,            // string | Nome do plano de saúde (opcional)
        healthInsurancePlanCardNumber: null,  // string | Número do cartão do plano de saúde (opcional)
        healthInsurancePlanCardNumberExpiry: null, // string | Data de expiração do cartão (opcional)

        // Informações do Segundo Convênio de Saúde (campos opcionais)
        idHealthInsurance2: null,             // number | ID do segundo convênio de saúde (opcional)
        healthInsurancePlan2: null,           // string | Nome do segundo plano de saúde (opcional)
        healthInsurancePlanCardNumber2: null, // string | Número do cartão do segundo plano de saúde (opcional)
        healthInsurancePlanCardNumberExpiry2: null // string | Data de expiração do segundo cartão (opcional)

      });
    });

    this.prescriptor.on(EVENTS.EVENT_ACTIVATE_NOTIFY, (data) => {
      const messages = {
        ehr_already_signed: 'Falha ao assinar Prontuário. Prontuário já está assinado.',
        ehr_not_found: 'Falha ao assinar Prontuário. Prontuário não encontrado.',
        certificate_sign_automatic_error: 'Este documento não pode ser assinado automaticamente.',
        certificate_sign_error: 'Falha ao assinar o documento.',
        certificate_cpf_error: 'CPF no usuário não corresponde ao CPF do certificado. Certificado: Eval',
        exams_emit_success: 'Exames emitido com sucesso.',
        medical_emit_success: 'Medicamento emitido com sucesso.',
        certificate_emit_success: 'Atestado emitido com sucesso.',
        declaration_emit_success: 'Declaração emitida com sucesso.',
        share_emit_success: 'Compartilhado com sucesso',
        required_location: 'Selecionar o local de atendimento'
      };

      const message = (data && data.message) ? messages[data.message] : 'Mensagem não reconhecida';

      if (data && data.notifyOptions) {

        alert(message);

      }
    });

	</script>
</body>
</html>

9.2. Utilizando bibliotecas Javascript

No código abaixo, você pode conferir como se dá a implementação do Prescritor utilizando Vue.

<template>
	<div class="row">
		<div id="prescriptor" class="col-12"></div>
	</div>
</template>
<script>
import { EVENTS, FEATURES, VIEWS, Prescriber } from "prescriber-tisaudev2";
import { mapState } from  "vuex";
import { Notify } from "quasar";

export  default {
	name: "Prescritor",
	data() {
		return {
			prescriptor: null
		};
	},
  computed: {
    ...mapState("ehr", ["patient"])
  },
	mounted() {
		this.prescriptor = new Prescriber({
					element: "prescriptor",
					height: "70vh", // altura do iframe do prescritor em sua aplicação
					keyId: ${keyId}, // é recomendável armazenar esta variável em seu arquivo .env
					token: ${access_token} // é recomendável armazenar esta variável em seu arquivo .env
				});

		this.prescriptor.loadPrescriber().handlerEvents();

		const APP = this;

		this.prescriptor.on(EVENTS.EVENT_PRESCRIBER_LOADED, () => {
				APP.prescriptor.auth().setColor({
					primary: 'red' // esta cor é a cor primária da sua aplicação
				});

        APP.prescriptor.setViewData(VIEWS.VIEW_MEDICATION_PRESCRIPTION);
		});

    this.prescriptor.on(EVENTS.EVENT_PRESCRIBER_FORM_LOADED, () => {
      APP.prescriptor.setPatient({
        cellphone: APP.patient.cellphone,
        email: APP.patient.email,
        name: APP.patient.name,
        id: APP.patient.id,
        idExternal: null,

        // Informações do Paciente (campos opcionais)
        cpf: null,                            // string | CPF do paciente (opcional)
        address: null,                        // string | Endereço do paciente (opcional)
        apartment: null,                      // string | Apartamento do paciente (opcional)
        number: null,                         // string | Número da residência (opcional)
        neighborhood: null,                   // string | Bairro do paciente (opcional)
        city: null,                           // string | Cidade do paciente (opcional)
        state: null,                          // string | Estado do paciente (opcional)
        zip: null,                            // string | CEP do paciente (opcional)
        country: null,                        // string | País do paciente (opcional)

        // Informações do Convênio de Saúde (campos opcionais)
        idHealthInsurance: null,              // number | ID do convênio de saúde (opcional)
        healthInsurancePlan: null,            // string | Nome do plano de saúde (opcional)
        healthInsurancePlanCardNumber: null,  // string | Número do cartão do plano de saúde (opcional)
        healthInsurancePlanCardNumberExpiry: null, // string | Data de expiração do cartão (opcional)

        // Informações do Segundo Convênio de Saúde (campos opcionais)
        idHealthInsurance2: null,             // number | ID do segundo convênio de saúde (opcional)
        healthInsurancePlan2: null,           // string | Nome do segundo plano de saúde (opcional)
        healthInsurancePlanCardNumber2: null, // string | Número do cartão do segundo plano de saúde (opcional)
        healthInsurancePlanCardNumberExpiry2: null // string | Data de expiração do segundo cartão (opcional)

      });
    });

    this.prescriptor.on(EVENTS.EVENT_ACTIVATE_NOTIFY, (data) => {
      const messages = {
        ehr_already_signed: 'Falha ao assinar Prontuário. Prontuário já está assinado.',
        ehr_not_found: 'Falha ao assinar Prontuário. Prontuário não encontrado.',
        certificate_sign_automatic_error: 'Este documento não pode ser assinado automaticamente.',
        certificate_sign_error: 'Falha ao assinar o documento.',
        certificate_cpf_error: 'CPF no usuário não corresponde ao CPF do certificado. Certificado: Eval',
        exams_emit_success: 'Exames emitido com sucesso.',
        medical_emit_success: 'Medicamento emitido com sucesso.',
        certificate_emit_success: 'Atestado emitido com sucesso.',
        declaration_emit_success: 'Declaração emitida com sucesso.',
        share_emit_success: 'Compartilhado com sucesso',
        required_location: 'Selecionar o local de atendimento'
      };

      const message = (data && data.message) ? messages[data.message] : 'Mensagem não reconhecida';

      if (data && data.notifyOptions) {
        // quasar Notify.create
        Notify.create({
          message: message,
          type: data.notifyOptions.type,
          color: data.notifyOptions.color,
          closeBtn: true,
          position: "top",
          timeout: 3500,
          progress: data.notifyOptions.progress || false
        });

      }
    });

	}

};
</script>

9.3. Campos Opcionais em setPatient:

Os campos indicados como opcionais (opcional) significam que esses valores não são obrigatórios e podem ser null ou não informados no momento da configuração do paciente.

Observação: Para que o paciente possa acessar o PDF da guia TISS, é necessário que ele possua um convênio de saúde ativo.

9.4. função Opcionais setViewData:

Por padrão, a visão inicial do prescritor é configurada para VIEWS.VIEW_MEDICATION_PRESCRIPTION, ou seja, o módulo de prescrição de medicamentos. No entanto, se você desejar iniciar o front-end do prescritor em outras áreas, como exames ou atestados, é possível utilizar a função setViewData e definir o modo desejado.

Os tipos que podem ser adicionados são:

  • VIEWS.VIEW_MEDICATION_PRESCRIPTION → medication.prescription (Prescrição de Medicamentos)
  • VIEWS.VIEW_MEDICAL_CERTIFICATE_PRESCRIPTION → (Prescrição de Atestado Médico)
  • VIEWS.VIEW_MEDICAL_ATTENDANCE_PRESCRIPTION → (Prescrição de Declaração Médica)
  • VIEWS.VIEW_EXAMS_PRESCRIPTION → (Prescrição de Exames)

Esses modos permitem iniciar o front-end do prescritor já na seção desejada, facilitando o fluxo de trabalho conforme a necessidade do usuário.

10. APIs DO SDK

10.1. Interfaces

Interfaces disponíveis para interação com a nossa SDK.

Prescriber

{
	element: string;
	height: string | null;
	token?: string;
	keyId?: string;
};

Patient

{
  id: string | null;
  idExternal?: string | null;
  name: string;
  documentId?: string;
  email: string;
  cellphone: string;

  // Informações do Paciente (campos opcionais)
  cpf?: string | null;                            // CPF do paciente (opcional)
  address?: string | null;                        // Endereço do paciente (opcional)
  apartment?: string | null;                      // Apartamento do paciente (opcional)
  number?: string | null;                         // Número da residência (opcional)
  neighborhood?: string | null;                   // Bairro do paciente (opcional)
  city?: string | null;                           // Cidade do paciente (opcional)
  state?: string | null;                          // Estado do paciente (opcional)
  zip?: string | null;                            // CEP do paciente (opcional)
  country?: string | null;                        // País do paciente (opcional)

  // Informações do Convênio de Saúde (campos opcionais)
  idHealthInsurance?: number | null;              // ID do convênio de saúde (opcional)
  healthInsurancePlan?: string | null;            // Nome do plano de saúde (opcional)
  healthInsurancePlanCardNumber?: string | null;  // Número do cartão do plano de saúde (opcional)
  healthInsurancePlanCardNumberExpiry?: string | null; // Data de expiração do cartão (opcional)

  // Informações do Segundo Convênio de Saúde (campos opcionais)
  idHealthInsurance2?: number | null;             // ID do segundo convênio de saúde (opcional)
  healthInsurancePlan2?: string | null;           // Nome do segundo plano de saúde (opcional)
  healthInsurancePlanCardNumber2?: string | null; // Número do cartão do segundo plano de saúde (opcional)
  healthInsurancePlanCardNumberExpiry2?: string | null; // Data de expiração do segundo cartão (opcional)
};

MedicationInterface

 {
    id: string | null, 
    receiptId: null | string, 
    medicationId: string, 
    medication: string, 
    amount: string,
    use: number | null, 
    useOther: string, 
    via: number | null,
    viaOther: string,
    dosage: string,
    recurrence: number | null,
    recurrenceOther: string,
    duration: number | null,
    time: number | null,
    timeOther: string,
    observation: string,
    editing?: boolean
}

PrescriptionMedicalCertificate

 {
    id: string | null,
    patientId: null | string,
    date: string, 
    duration?: number | null,
    time?: string | null,
    cid?: string,
    observation?: string,
}

PrescriptionAttendance

 {
    id?: string | null,
    patientId: null | string,
    date?: string,
    attendance?: 'paciente' | 'acompanhante',
    exit?: string | null,
    periodBegin?: string,
    periodEnd?: string,
    cid?: string,
    companion?: string,
    kinship?: string,
    isPatient?: boolean
}

PrescriberExamsType

 {
    id?: string | null;
    patientId: string | null;
    healthInsuranceId: string | null;
    healthInsuranceflat: string | null;
    healthInsuranceWallet: string | null;
    healthInsuranceValidity: string | null;
    cid: string | null;
    observation: string | null;
    simplesOuTiss: string | null;
    arrayProcedure: ExamsParametersInterface[];
}

ExamsParametersInterface

 {
    id: string | null;
    procedure: string | null,
    observation: string | null,
    tuss: string | null,
    editing: boolean | null
}

IColor

{
    primary?: string;
    secondary?: string;
    accent?: string;
    dark?: string;
    positive?: string;
    negative?: string;
    info?: string;
    warning?: string;
}

EventCallback

{
  handler: string;
  callback: (data?: unknown) => void;
};

10.2. Métodos

As funções abaixo modificam a forma como o componente Prescritor interage com o seu sistema.

| Função | Argumento | Retorno | Descrição | | ----------- | ----------- | ----------- | ----------- | | loadPrescriber() | void | Prescriber | Esta função carrega o iframe do prescritor com os parâmetros estabelecidos | | setPatient() | setPatient(data: Patient) | void | Define o paciente na máquina de estados do prescritor | | setTools() | setTools(tools: Array) | Prescriber | Define as funcionalidades que serão carregadas junto com o prescritor | | auth() | void | void | Realiza a autenticação utilizando os parâmetros estabelecidos | | setColor() | setColor(colors: IColor) | Prescriber | Define as cores que serão utilizadas dentro do prescritor | | removePatient() | void | Prescriber | Remove o paciente da máquina de estados do prescritor | | handlerEvents() | void | Prescriber | Escuta e gerencia os eventos do prescritor | | on() | on(handler: string, callback: (data?: unknown) => void) | Prescriber | Sentinela e disparador de eventos do prescritor |

10.3. Eventos

Dentro do prescritor, nós temos eventos para as ações principais dentro do sistema. Desta forma, você pode ter um retorno para realizar as integrações necessárias.

| Evento | Quando o evento é disparado? | Retorno | | ----------- | ----------- | ----------- | | EVENT_PATIENT_FORM | Ao definir as informações do paciente mediante o método setPatient() | sem retorno | | EVENT_PATIENT_FORM_REMOVE | Ao remover o paciente da máquina de estado mediante o método removePatient() | sem retorno | | EVENT_PATIENT_SAVED | Ao salvar informações do paciente | Patient | | EVENT_THEME_COLOR | Ao definir as cores na variável de tema do prescritor | sem retorno | | EVENT_PRESCRIBER_LOADED | Ao carregar o prescritor | sem retorno | | EVENT_PRESCRIBER_FORM_LOADED | Ao carregar o formulário do prescritor | sem retorno | | EVENT_AUTH_LOAD | Ao realizar a autenticação | sem retorno | | EVENT_CORE_TOOLS | Ao carregar o prescritor | sem retorno | | EVENT_CORE_LOADING | Ao carregar o prescritor | sem retorno | | EVENT_MEDICATION_PRESCRIPTION_GET | Ao carregar uma prescrição de medicamentos | Prescription | | EVENT_MEDICATION_PRESCRIPTION_SAVED | Ao criar uma prescrição de medicamentos | MedicationInterface | | EVENT_MEDICATION_PRESCRIPTION_EMITED | Ao emitir uma prescrição de medicamentos | Prescription | | EVENT_GENERATED_SIGNED_PDF_MEDICATION_PRESCRIPTION | Ao assinar digitalmente uma prescrição de medicamentos | PrescriptionSigned | | EVENT_MEDICATION_PRESCRIPTION_DELETED | Ao excluir/cancelar/inativar uma prescrição de medicamentos | sem retorno | | EVENT_MEDICATION_PRESCRIPTION_MEDICATION_DELETED | Ao excluir um medicamento em uma prescrição de medicamentos | sem retorno | | EVENT_MEDICAL_CERTIFICATE_GET | Ao carregar um atestado de afastamento | Prescription | | EVENT_MEDICAL_CERTIFICATE_SAVED | Ao criar um atestado de afastamento | PrescriptionMedicalCertificate | | EVENT_MEDICAL_CERTIFICATE_EDIT | Ao editar um atestado de afastamento | PrescriptionMedicalCertificate | | EVENT_MEDICAL_CERTIFICATE_DELETED | Ao excluir/cancelar/inativar um atestado de afastamento | sem retorno | | EVENT_MEDICAL_CERTIFICATE_EMITED | Ao emitir um atestado de afastamento | Prescription | | EVENT_MEDICAL_CERTIFICATE_SIGNED | Ao assinar digitalmente um atestado de afastamento | PrescriptionSigned | | EVENT_MEDICAL_ATTENDANCE_GET | Ao carregar uma declaração de comparecimento | Prescription | | EVENT_MEDICAL_ATTENDANCE_SAVED | Ao criar uma declaração de comparecimento | PrescriptionAttendance | | EVENT_MEDICAL_ATTENDANCE_EDIT | Ao editar uma declaração de comparecimento | PrescriptionAttendance | | EVENT_MEDICAL_ATTENDANCE_DELETED | Ao excluir/cancelar/inativar uma declaração de comparecimento | sem retorno | | EVENT_MEDICAL_ATTENDANCE_EMITED | Ao emitir uma declaração de comparecimento | Prescription | | EVENT_MEDICAL_ATTENDANCE_SIGNED | Ao assinar digitalmente uma declaração de comparecimento | PrescriptionSigned | | EVENT_NAVIGATE_TO_EHR | Ao retornar para o prontuário do paciente | sem retorno | | EVENT_NAVIGATE_TO_OPTIONS | Ao abrir uma prescrição (medicamentos/atestado/declaração) vindo do histórico | sem retorno | | EVENT_EXAMS_PRESCRIPTION_DELETED | Ao excluir/cancelar/inativar uma prescrição de exames | { id, reason } | | EVENT_EXAMS_PRESCRIPTION_SAVED | Ao criar uma prescrição de exames | PrescriberExamsType | | EVENT_EXAMS_PARAMETERS_PRESCRIPTION_DELETED | Ao excluir um parâmetro da prescrição de exames | id | | EVENT_EXAMS_PRESCRIPTION_EMITED | Ao emitir uma prescrição de exames | Prescription | | EVENT_MEDICATION_PRESCRIPTION_GET | Ao carregar uma prescrição de exames | PrescriberExamsType |

10.4. Funcionalidades

Ativação/desativação de componentes/funcionalidades do prescritor

| Constante | Descrição | | ----------- | ----------- | | FUNC_PRESCRIBER_MEDICATION | Prescrição de medicamentos | | FUNC_PRESCRIBER_EXAMS | Prescrição de exames | | FUNC_PRESCRIBER_MEDICAL_CERTIFICATE | Prescrição de atestados e declarações | | FUNC_PRESCRIPTION_HISTORIC | Mostra o histórico de prescrição | | FUNC_PRESCRIPTION_MODEL | Salva e exibe modelos de prescrição | | FUNC_IMPUT_OUTLINED | Formulários de prescrições do tipo outlined |

11. Documentação para Eventos e Notificações do Prescritor

Esta documentação descreve como configurar e utilizar os eventos de notificação no componente Prescritor. Essas instruções ajudarão você a entender como lidar com eventos específicos e notificar o usuário adequadamente.

11.1. Eventos de Notificação

O Prescritor dispara eventos de notificação que podem ser capturados para fornecer feedback ao usuário. O evento principal que você precisa escutar é EVENTS.EVENT_ACTIVATE_NOTIFY.

11.1.1. Estrutura do Evento

O evento EVENTS.EVENT_ACTIVATE_NOTIFY envia um objeto data contendo as seguintes propriedades:

  • message: Uma string que identifica o tipo de evento ocorrido. Este valor é mapeado para mensagens descritivas.

  • notifyOptions: Um objeto contendo as opções para a notificação, incluindo:

  • notificationTypeKey: Tipo da chave (success, error, info).

  • type: Tipo da notificação (positive, negative, info).

  • color: Cor da notificação.

  • progress (opcional): Booleano que indica se a barra de progresso deve ser exibida.

11.1.2. Código de Exemplo no javaScript

Aqui está um exemplo de como escutar e manipular o evento EVENTS.EVENT_ACTIVATE_NOTIFY:

this.prescriptor.on(EVENTS.EVENT_ACTIVATE_NOTIFY, (data) => {
  const messages = {
    ehr_already_signed: 'Falha ao assinar Prontuário. Prontuário já está assinado.',
    ehr_not_found: 'Falha ao assinar Prontuário. Prontuário não encontrado.',
    certificate_sign_automatic_error: 'Este documento não pode ser assinado automaticamente.',
    certificate_sign_error: 'Falha ao assinar o documento.',
    certificate_cpf_error: 'CPF no usuário não corresponde ao CPF do certificado. Certificado: Eval',
    exams_emit_success: 'Exames emitido com sucesso.',
    medical_emit_success: 'Medicamento emitido com sucesso.',
    certificate_emit_success: 'Atestado emitido com sucesso.',
    declaration_emit_success: 'Declaração emitida com sucesso.'
  };

  const message = messages[data.message] || 'Mensagem não reconhecida';

  if (data.notifyOptions) {

    alert(message);

  }

});

11.1.3. Código de Exemplo no Vue

Aqui está um exemplo de como escutar e manipular o evento EVENTS.EVENT_ACTIVATE_NOTIFY:

this.prescriptor.on(EVENTS.EVENT_ACTIVATE_NOTIFY, (data) => {
  const messages = {
    ehr_already_signed: 'Falha ao assinar Prontuário. Prontuário já está assinado.',
    ehr_not_found: 'Falha ao assinar Prontuário. Prontuário não encontrado.',
    certificate_sign_automatic_error: 'Este documento não pode ser assinado automaticamente.',
    certificate_sign_error: 'Falha ao assinar o documento.',
    certificate_cpf_error: 'CPF no usuário não corresponde ao CPF do certificado. Certificado: Eval',
    exams_emit_success: 'Exames emitido com sucesso.',
    medical_emit_success: 'Medicamento emitido com sucesso.',
    certificate_emit_success: 'Atestado emitido com sucesso.',
    declaration_emit_success: 'Declaração emitida com sucesso.'
  };

  const message = messages[data.message] || 'Mensagem não reconhecida';

  if (data.notifyOptions) {

     Notify.create({
          message: message,
          type: data.notifyOptions.type,
          color: data.notifyOptions.color,
          closeBtn: true,
          position: "top",
          timeout: 3500,
          progress: data.notifyOptions.progress || false
        });

  }

});

11.1.4. Mapeamento de Mensagens

O objeto messages mapeia códigos de mensagem para as mensagens descritivas correspondentes. Aqui estão os códigos de mensagem disponíveis e suas descrições:

  • ehr_already_signed: Falha ao assinar Prontuário. Prontuário já está assinado.
  • ehr_not_found: Falha ao assinar Prontuário. Prontuário não encontrado.
  • certificate_sign_automatic_error: Este documento não pode ser assinado automaticamente.
  • certificate_sign_error: Falha ao assinar o documento.
  • certificate_cpf_error: CPF no usuário não corresponde ao CPF do certificado. Certificado: Eval
  • exams_emit_success: Exames emitido com sucesso.
  • medical_emit_success: Medicamento emitido com sucesso.
  • certificate_emit_success: Atestado emitido com sucesso.
  • declaration_emit_success: Declaração emitida com sucesso.
  • share_emit_success: 'Compartilhado com sucesso'

11.1.5. Exemplo de Uso

Quando o evento EVENTS.EVENT_ACTIVATE_NOTIFY é disparado, a notificação apropriada é criada usando o Quasar Notify API:

Notify.create({
  message: message,
  type: data.notifyOptions.type,
  color: data.notifyOptions.color,
  closeBtn: true,
  position: "top",
  timeout: 3500,
  progress: data.notifyOptions.progress || false
});

Esta abordagem centraliza a lógica de notificação, permitindo a adição de novos tipos de mensagem ou configurações de notificação conforme necessário.

11.1.6. Conclusão

Esta documentação fornece uma visão geral de como os eventos de notificação são tratados no Prescritor. Seguindo esses exemplos, você poderá gerenciar notificações de maneira eficaz, proporcionando uma melhor experiência ao usuário. Se precisar adicionar novos tipos de mensagens ou notificações, basta atualizar o objeto messages com os códigos e descrições apropriados.