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 🙏

© 2026 – Pkg Stats / Ryan Hefner

predoc-sdk

v0.0.42

Published

SDK para integración de chat médico pre-consulta

Readme

Predoc SDK 🏥

Un SDK de React para integrar un chat médico pre-consulta en tu aplicación

Chatbot para pacientes pre consulta Modo Pantalla Completa

✨ Características

  • 💬 Chat interactivo para pre-consultas médicas
  • 🎨 Totalmente personalizable
  • 📱 Diseño responsive
  • 🔄 Integración seamless con React
  • 🎯 Dos variantes: burbuja flotante o pantalla completa
  • 🖼️ Soporte para envío de imágenes
  • 📋 Resumen de consulta para profesionales médicos
  • 📝 Generación de recetas médicas

🚀 Instalación

npm install predoc-sdk
# o
yarn add predoc-sdk

📖 Uso Básico

1. Importa los componentes

import { ChatBot, Predoc } from 'predoc-sdk';
import 'predoc-sdk/dist/index.css';

2. Implementa el chat

function App() {
  const userData = {
    name: "Juan Pérez",
    uid: "user123",
    // opcional
    uniqueId: "unique123",
    img: "https://example.com/avatar.jpg",
    link: "https://ejemplo.com/perfil"
  };

  return (
    <ChatBot
      userData={userData}
      companyName="Mi Clínica"
      primaryColor="#3562FF"
      variant="bubble"
    />
  );
}

🎨 Personalización

ChatBot Props

| Prop | Tipo | Default | Descripción | |------|------|---------|-------------| | companyName | string | - | Nombre de la empresa que se mostrará en el chat | | userData | UserData | - | Datos del usuario (ver interfaz abajo) | | apiKey | string | "" | Clave API opcional para autenticación | | apiUrl | string | "" | URL de la API para el servicio de chat | | primaryColor | string | "#091c1a" | Color principal para el tema del chat | | position | string | "bottom-right" | Posición de la burbuja ("bottom-right", "bottom-left", "top-right", "top-left") | | placeholder | string | "Escribe un mensaje" | Texto placeholder del input | | variant | string | "bubble" | Variante del chat ("bubble" o "fullscreen") | | onError | function | console.error | Callback para manejar errores | | onFinish | function | undefined | Callback que se ejecuta cuando finaliza la consulta |

Interfaz UserData

interface UserData {
  uid: string;           // ID único del usuario (requerido)
  uniqueId?: string;     // ID único alternativo (opcional)
  name?: string;         // Nombre del usuario
  img?: string;         // URL de la imagen de perfil
  link?: string;        // Link al perfil del usuario
  reason?: string;      // Motivo de la consulta
}

Interfaz MessageContent

interface MessageContent {
  message: string;      // Texto del mensaje
  time?: string;        // Hora del mensaje
  image?: string;       // URL de la imagen adjunta
  file?: File;          // Archivo adjunto
}

📋 Componente de Resumen

El componente Predoc proporciona un resumen de la consulta para profesionales médicos:

<Predoc
  companyName="Mi Clínica"
  userData={userData}
  position="top-right"
  animation="scale"
  apiUrl="https://api.miservicio.com"
  onGeneratePrescription={(data) => {
    // Lógica para generar receta médica
    console.log("Generando receta...", data);
  }}
/>

Predoc Props

| Prop | Tipo | Default | Descripción | |------|------|---------|-------------| | companyName | string | - | Nombre de la empresa | | userData | UserData | - | Datos del usuario | | apiUrl | string | - | URL de la API para obtener los datos del resumen | | position | string | "bottom-right" | Posición del botón de resumen ("bottom-right", "bottom-left", "top-right", "top-left", "custom") | | customPosition | string | undefined | Clase CSS personalizada para posicionamiento cuando position es "custom" | | animation | string | "pulse" | Tipo de animación ("none", "pulse", "bounce", "spin", "scale") | | modal | boolean | false | Si es true, el resumen se muestra como un modal | | onGeneratePrescription | function | undefined | Función que se ejecuta al hacer clic en "Generar receta" (recibe los datos del resumen) | | isLoadingPrescription | boolean | false | Indica si la receta se está generando actualmente | | prescriptionError | boolean | false | Indica si ha ocurrido un error durante la generación de la receta | | prescriptionGenerated | boolean | false | Indica si la receta ha sido generada exitosamente | | isOpen | boolean | true | Controla si el modal está abierto o cerrado | | renderAsModal | boolean | false | Si es true, renderiza el componente como un modal; si es false, lo renderiza como un componente normal |

🌈 Ejemplos

Chat con Tema Personalizado

<ChatBot
  userData={userData}
  companyName="Mi Clínica"
  primaryColor="#FF5733"
  position="bottom-left"
  placeholder="Chatea con nuestro asistente médico..."
/>

Chat en Pantalla Completa

<ChatBot
  userData={userData}
  companyName="Mi Clínica"
  variant="fullscreen"
  primaryColor="#3562FF"
/>

Implementación con Generación de Receta

import React, { useState } from 'react';
import { ChatBot, Predoc } from 'predoc-sdk';
import 'predoc-sdk/dist/index.css';

function App() {
  const userData = {
    name: "Juan Pérez",
    uid: "user123",
    uniqueId: "unique123"
  };
  
  const [isPrescriptionGenerated, setIsPrescriptionGenerated] = useState(false);
  const [isLoadingPrescription, setIsLoadingPrescription] = useState(false);
  const [prescriptionError, setPrescriptionError] = useState(false);

  const handleGeneratePrescription = (summaryData) => {
    // Implementar lógica para generar receta con los datos del resumen
    setIsLoadingPrescription(true);
    console.log("Generando receta con datos:", summaryData);
    
    // Simular una llamada API
    setTimeout(() => {
      // API call u otras operaciones
      setIsLoadingPrescription(false);
      setIsPrescriptionGenerated(true);
      
      // En caso de error:
      // setPrescriptionError(true);
    }, 2000);
  };

  return (
    <>
      <Predoc
        animation="scale"
        position="top-right"
        userData={userData}
        companyName="Mi Clínica"
        apiUrl="https://api.miservicio.com"
        modal={true}
        onGeneratePrescription={handleGeneratePrescription}
        isLoadingPrescription={isLoadingPrescription}
        prescriptionError={prescriptionError}
        prescriptionGenerated={isPrescriptionGenerated}
      />
      
      <ChatBot
        userData={userData}
        companyName="Mi Clínica"
        primaryColor="#3562FF"
        variant="bubble"
        position="bottom-right"
        placeholder="Escribe tu consulta..."
        onError={(error) => console.error('Chat error:', error)}
        apiUrl="https://api.miservicio.com"
        onFinish={() => console.log("Consulta finalizada")}
      />
      
      {isPrescriptionGenerated && (
        <div className="notification">
          ¡Receta generada con éxito!
        </div>
      )}
    </>
  );
}

export default App;

🚨 Manejo de Mensajes y Archivos

El SDK permite el envío de mensajes de texto e imágenes:

// Estructura de mensaje utilizada internamente
const message = {
  message: "Texto del mensaje",
  time: "12:30",
  image: "https://example.com/image.jpg", // URL de imagen
  file: fileObject // Objeto File de JavaScript
};

🔧 Manejo de Errores

El componente incluye un manejador de errores que puede ser personalizado a través de la prop onError:

<ChatBot
  userData={userData}
  companyName="Mi Clínica"
  onError={(error) => {
    console.error('Error en el chat:', error);
    // Tu lógica de manejo de errores
  }}
/>

📱 Responsive Design

El SDK está diseñado para ser completamente responsive:

  • En móviles, la burbuja se adapta automáticamente
  • El modo fullscreen utiliza todo el espacio disponible
  • Los mensajes y elementos se ajustan al tamaño de la pantalla

🤝 Contribución

Las contribuciones son bienvenidas. Por favor, abre un issue primero para discutir los cambios que te gustaría hacer.

  1. Fork el repositorio
  2. Crea tu rama de feature (git checkout -b feature/amazing-feature)
  3. Commit tus cambios (git commit -m 'Add: amazing feature')
  4. Push a la rama (git push origin feature/amazing-feature)
  5. Abre un Pull Request

📝 License

ISC © ÜMA Salud

🙋‍♂️ Soporte

¿Tienes preguntas? ¿Necesitas ayuda? No dudes en: