DOCUMENTATION PUBLIQUE · VERSION 1
Un calcul commun pour les clients et leurs agents.
Le comparateur de Swiss Premium Insurance compare l’assurance de base LAMal 2027 pour les personnes domiciliées en Suisse. Son interface JavaScript renvoie des résultats JSON avec le même moteur et les mêmes tarifs que le questionnaire.
La comparaison est 100 % gratuite et sans engagement. Aucun frais n’est facturé au client. Les informations ci-dessous décrivent un accès technique en lecture seule, sans demande d’offre ni souscription automatique.
Ressources disponibles
- Manifeste JSON : capacités, sources et empreintes SHA-256
- Schéma JSON des critères acceptés
- Module JavaScript autonome
- Catalogue public OFSP 2027 au format JSON
- Index textuel des ressources
Le site est hébergé sous forme statique. Cette version propose une API JavaScript locale, pas un endpoint HTTP de calcul : une requête POST sur ces fichiers ne lance pas de comparaison. Les fichiers peuvent être lus sans JavaScript ; le calcul nécessite le module ou un navigateur.
Utiliser un navigateur
Ouvrez le comparateur et attendez que window.SPIComparator soit disponible. Les champs et boutons du questionnaire disposent aussi de libellés utilisables par un agent navigateur. L’interface ci-dessous ne lit ni ne modifie les profils mémorisés.
const request = {
year: 2027,
members: [{
birthYear: 1988,
postcode: "1003",
franchise: 2500,
accident: "OHN",
careType: "any"
}]
};
const result = window.SPIComparator.compare(request);
// Exemple fictif. Choisir les critères avec la personne concernée.
// result.ok indique si les critères permettent un calcul.
Utiliser le module sans questionnaire
Dans les exemples suivants, request désigne les critères de l’exemple ci-dessus. Depuis un navigateur sur ce site, le module peut être importé directement. Le catalogue est chargé une fois, puis les calculs sont locaux.
const { loadComparator } = await import("/api/lamal/v1/comparator.mjs");
const comparator = await loadComparator();
const result = comparator.compare(request);
Avec Node.js 20 ou une version plus récente, téléchargez le module et le catalogue dans le même dossier. Le calcul peut ensuite fonctionner hors ligne :
import { readFile } from "node:fs/promises";
import { createComparator } from "./comparator.mjs";
const catalogue = JSON.parse(await readFile("./catalogue.json", "utf8"));
const comparator = createComparator(catalogue);
const result = comparator.compare(request);
console.log(JSON.stringify(result));
Le catalogue et le module doivent provenir du même déploiement ; leurs empreintes figurent dans le manifeste. Seule l’année tarifaire 2027 est acceptée par cette version.
Recueillir les bons critères
Chaque personne doit avoir une année de naissance entière, un NPA suisse à quatre chiffres, une franchise, une couverture accident et un modèle de soins explicitement choisis. Il n’y a pas de franchise ou de couverture accident implicite dans cette interface.
accident: "MIT"inclut l’accident ;"OHN"l’exclut.careTypeaccepteany,BASE(libre choix),PRAXIS(cabinet/réseau),FLEX,TEL_DIG(télémédecine) ouPHARM(pharmacie).- De une à douze personnes sont acceptées. Les noms, e-mails, téléphones, genres et informations médicales ne sont pas demandés et ne font pas partie du schéma.
- Si un NPA correspond à plusieurs communes, demandez le choix de la personne. La méthode
places("1003")renvoie les communes possibles. Reportez l’identifiant OFS dansbfs, sous forme de texte. - Une référence est facultative.
searchReferences(member, "Sanitas")recherche les modèles disponibles, même hors du modèle de soins souhaité pour les offres. La clé choisie peut être placée danscurrentProduct. currentPremium: "450.50"indique une prime mensuelle actuelle de base, après redistribution et avant subsides. Elle remplace la référence calculée si les deux sont présentes."0"est un montant déclaré valide ; une référence absente ne vaut pas zéro.
Une entrée incorrecte produit ok: false et une liste errors avec le champ concerné. Les NPA ambigus donnent aussi les choix de communes. Aucun prix n’est calculé tant que ces erreurs ne sont pas corrigées.
Lire les résultats
Tous les montants sont des centimes de CHF entiers. Par exemple, monthlyCents: 42225 signifie CHF 422.25 par mois. Les montants annuels correspondent à douze primes mensuelles. Un montant d’économie négatif indique un surcoût ; null signifie qu’il manque une référence.
Les offres sont classées par total mensuel croissant. Chaque offre regroupe toutes les personnes chez un même assureur et retient, pour chacune, le modèle le moins cher respectant ses critères. Jusqu’à dix assureurs distincts sont renvoyés. Chaque personne porte un memberIndex, à partir de zéro, correspondant à sa position dans la demande.
Le catalogue contient 32 assureurs et 152 modèles. Le nombre compatible dépend des profils. Les restrictions officielles par commune sont prises en compte. Les produits soumis à une condition de sexe sont exclus ; les rabais conditionnels pour fratrie et les subsides ne sont pas déduits.
La redistribution de CHF 4.75 par personne et par mois est déjà déduite des montants nets. Ne la soustrayez pas une deuxième fois. Les résultats comprennent les sources, l’année tarifaire, les modèles, les primes brutes et nettes par personne, et les écarts par rapport aux références.
La comparaison ne confirme ni la participation d’un médecin, ni toutes les conditions d’un modèle. Ce sont des vérifications à effectuer avant toute souscription. Aucun envoi, engagement ou contrat n’est déclenché par cette API.
Sources et confidentialité
Le module réutilise le moteur du site, sans calcul parallèle ni interpolation des primes. Le catalogue reprend les fichiers publics OFSP et leurs empreintes. Le module autonome et l’interface navigateur ne stockent pas les demandes et ne transmettent pas les critères à SPI. L’hébergement peut traiter les informations de connexion nécessaires à la consultation des fichiers publics.
Primes OFSP / Priminfo ↗ · Méthode du comparateur · Données du questionnaire