@primocaredentgroup/prescriptions-component
v0.1.19
Published
Convex component + React widget for prescriptions workflow integration.
Maintainers
Keywords
Readme
Prescriptions Component (Convex Component + React Widget)
Pacchetto npm embeddabile in PrimoCore con:
- Convex component (
src/component) - client wrapper tipizzato (
src/client) - React widget embeddabile (
src/react) - host di esempio locale (
example, solo sviluppo)
Installazione
npm install @primocore/prescriptions-componentEntry disponibili dal pacchetto
@primocore/prescriptions-component-> client typed@primocore/prescriptions-component/react-> widget React@primocore/prescriptions-component/component-> Convex component@primocore/prescriptions-component/component/convex.config-> config registrazione Convex component@primocore/prescriptions-component/styles.css-> stile opzionale widget
Registrazione Convex Component
Nel progetto host Convex, registra il componente puntando a:
@primocore/prescriptions-component/component@primocore/prescriptions-component/component/convex.config
Gli endpoint dev-only (seed/migrazioni) non sono esportati dal surface pubblico del pacchetto.
Autorizzazione Embedded
In modalita embedded, il componente richiede solo un'identita valida (token) e non usa piula tabella internausers` come gate RBAC business.
- RBAC e policy di accesso applicative sono demandate all'host (PrimoCore).
- Il componente continua a registrare audit events con actor derivato dall'identita` host.
- Se il token e
assente o invalido, ritornaUNAUTHORIZED`.
Uso React Widget con Auth0 (getAccessToken)
import { PrescriptionsWidget } from "@primocore/prescriptions-component/react";
import type { ExternalContext } from "@primocore/prescriptions-component";
import { useAuth0 } from "@auth0/auth0-react";
function EmbeddedPrescriptions() {
const { getAccessTokenSilently } = useAuth0();
const externalContext: ExternalContext = {
clinicId: "CLINIC-001",
patientId: "PAT-001",
doctorId: "DOC-001",
pdcItemId: "PDC-001",
};
return (
<PrescriptionsWidget
convexUrl={import.meta.env.VITE_CONVEX_URL}
getAccessToken={() =>
getAccessTokenSilently({
authorizationParams: {
audience: "https://api.primocore.local",
},
})
}
externalContext={externalContext}
mode="create"
/>
);
}Se vuoi importare esplicitamente lo stile:
import "@primocore/prescriptions-component/styles.css";Build e pubblicazione
# build package (output in dist/)
npm run build
# verifica contenuto pacchetto pubblicabile
npm pack
# pubblicazione npm public (scope @primocore)
npm publish --access publicprepublishOnly esegue automaticamente npm run build e blocca la publish in caso di errore.
Test manuali embedded (checklist)
- Host autenticato (token valido) senza record nella tabella
users:createDraftdeve completare con successo. - Token mancante/invalido: le mutation business devono fallire con
UNAUTHORIZED. - Invarianti dominio invariati:
- idempotenza
createFromCalendarsuidempotencyKey(seconda chiamata non crea duplicato), - vincolo "una sola prescrizione attiva per
pdcItemId" ancora attivo.
- idempotenza
