Introduction
Cette API permet d’accéder à l’entretien pharmaceutique pour un patient au travers d’un appel contextuel.
La logique est la suivante:
- Création de l’utilisateur s’il n’existe pas
- Redirection vers la fiche de l’entretien pharmaceutique en cours
Attention : si l’utilisateur n’existe pas et que celui-ci est créé à la volée, il est nécessaire que le code identifiant pharmacie soit bien celui en charge de l’accompagnement du patient pour ne pas avoir une erreur d’autorisation à la consultation.
Point d’entrée
URL de l’appel contextuel
L’url de base est https://partner-connect.{env}.posos.co où {env} est
l’environnement suivant : preprod pour la validation, production pour le
live.
post/api/partners/:facilitySlug/bpm/medication-review-infos
Avec facilitySlug le facilitySlug unique pour votre intégration et qui sera le même pour l’ensemble des pharmacies
En-têtes HTTP
| Nom | Valeur |
|---|---|
Content-Type | application/json |
Authorization | Bearer <token> |
Authentification
Une authentification est nécessaire pour l’appel à cet endpoint. Il y a deux types de jetons d’authentification qui peuvent être utilisés
Jeton par certificat (x5c)
Le jeton peut être signé avec la clé publique fournie dans un certificat dans le x5c du jeton. L’autorité de certification correspondante doit nous être fournie au préalable pour que nous la rajoutions dans les autorités de confiance.
Généralement ce mode opératoire vous permet de générer un jeton par pharmacie ou opérateur (intervenant de santé). Dans ce cas le jeton d’authentification doit contenir les claims suivants.
| Attribut | Type | Description |
|---|---|---|
email | string | Email de l’intervenant de santé Requis |
posos_id | string | Identifiant unique de l’intervenant de santé Requis |
cip | string | Identifiant unique de la pharmacie Requis |
given_name | string | Prénom de l’intervenant de santé Requis |
family_name | string | Nom de l’intervenant de santé Requis |
Note : les champs posos_id et email doivent être uniques pour l’opérateur parmi toutes les pharmacies (pas uniquement pour sa pharmacie).
Jeton d’accès à nos APIs
Le jeton peut également être le jeton standard d’accès à nos APIs et appels contextuels dont la génération est décrite dans la page Authentification.
Cette méthode doit uniquement être utilisée dans le cas d’un accès serveur à serveur, et ne doit pas émaner de la pharmacie pour des raisons de sécurité (il est possible de faire des requêtes pour n’importe quelle pharmacie de l’éditeur).
Dans ce scénario il sera obligatoire de fournir dans le corps de la requête le champ operator.
Corps de la requête
| Nom | type | Description |
|---|---|---|
patientIpp | string | IPP (identifiant) du patient dans le logiciel Posos Requis |
operator | object | Détails de l’intervenant de santé qui réalise l’entretien. Le format est identique à celui attendu pour le jeton par certificat (x5c). Requis sauf dans l’authentification x5c |
{
"patientIpp": "ABCDEFG01"
}Format de la réponse
Le résultat obtenu est du JSON de la forme suivante:
Output
{
"medicationReview": { ... }
}Le champ medicationReview contient les informations de l’accompagnement en cours pour le patient.
Medication Review
| Nom | type | Description |
|---|---|---|
id | string | Identifiant unique de l’accompagnement |
steps | object | Objet décrivant les différentes étapes de l’accompagnement avec les données à proprement parler Steps |
Steps
| Nom | type | Description |
|---|---|---|
current | enum | Etape en cours de l’accompagnement (signifie que les étapes précédentes sont validées) |
preparation | object | Objet décrivant les données relatives à l’étape de préparation Preparation |
interview | object | Objet décrivant les données relatives à l’étape de premier entretien Interview |
report | object | Objet décrivant les données relatives à l’étape de compte-rendu Report |
counselingInterview | object | Objet décrivant les données relatives à l’étape d’entretien conseil Counseling Interview |
observance | object | Objet décrivant les données relatives à l’étape d’observance Observance |
Preparation
| Nom | type | Description |
|---|---|---|
importedPrescriptions | object[] | Ordonnances importées lors de la création de l’accompagnement Imported Prescription |
patientTreatments | object[] | Traitements patient reseignés lors de l’étape de préparation. Cette liste est figée lorsque l’étape est validée Treatment |
validationDate | number | Date de validation de l’étape |
Imported Orescription
| Nom | type | Description |
|---|---|---|
id | string | Identifiant de la prescription |
creationDate | string | Date d’import |
treatments | object[] | Traitements détectés dans l’ordonnance Treatment |
jobStatus | enum | Etat du job d’import |
Le jobStatus peut être :
PENDINGIN_PROGRESSERRORSUCCESS
Interview
| Nom | type | Description |
|---|---|---|
questions | object | Questions posées lors de l’entretien avec leurs réponses Interview Question |
patientTreatmentEvolutions | object[] | Liste d’évolution de traitements par le patient renseignées lors de cette étape Treatment Evolution |
validationDate | number | Date de validation de l’étape |
Interview Question
| Nom | type | Description |
|---|---|---|
lifestyle | {questions: object[]} | Questions relatives au style de vie Question |
physiologicalState | {questions: object[]} | Questions relatives à l’état physiologique Question |
treatments | {questions: object[]} | Questions relatives aux traitements Question |
modifications | {questions: object[]} | Questions relatives aux modifications des traitements par le patient Question |
observance | {questions: object[]} | Questions relatives à l’observance Question |
conclusion | {questions: object[]} | Questions complémentaires Question |
Question
| Nom | type | Description |
|---|---|---|
slug | string | Identifiant de la question |
answer | object | Réponse à la question answer |
Les slugs utilisés sont les suivants :
Answer
| Nom | type | Description |
|---|---|---|
numericalValue | number | Réponse numérique |
textValue | string | Réponse texte |
booleanValue | boolean | Réponse vrai / faux |
conditions | object[] | Liste de conditions physiologiques significatives affectant le patient et répondant à la question Condition |
comment | string | Commentaire |
Report
| Nom | type | Description |
|---|---|---|
patientTreatments | object[] | Liste des traitements issus des premières étapes de préparation et d’entretien Treatment |
patientTreatmentEvolutions | object[] | Liste d’évolutions de traitements proposées par le pharmacien Treatment Evolution |
comment | string | Commentaire du pharmacien sur l’étape de compte rendu |
validationDate | number | Date de validation de l’étape (timestamp unix) |
Counseling Interview
| Nom | type | Description |
|---|---|---|
date | number | Date de l’entretien conseil (timestamp unix) |
patientTreatments | object[] | Liste des traitements issus des premières étapes de préparation, d’entretien et de compte rendu Treatment |
patientTreatmentEvolutions | object[] | Liste d’évolutions de traitements Treatment Evolution |
validationDate | number | Date de validation de l’étape (timestamp unix) |
Observance
| Nom | type | Description |
|---|---|---|
date | number | Date de l’entretien conseil (timestamp unix) |
patientTreatments | object[] | Liste des traitements issus de l’accompagnement Treatment |
validationDate | number | Date de validation de l’étape (timestamp unix) |
Conditions
| Attribut | Type | Description |
|---|---|---|
designation | string | Libellé de la condition |
codings | object[] | Liste de codings pour la condition Coding avec les systemes snomed, cim10 ou meddra |
modifiers | string[] | Modificateurs utilisés pour préciser la description de la condition (Légère, Sévère, etc) |
Coding
| Attribut | Type | Description |
|---|---|---|
code | string | Code du coding |
display | string | Label du coding |
system | string | Systeme du coding |
Treatment
| Attribut | Type | Description |
|---|---|---|
id | string | Identifiant unique du traitement du patient |
alerts | object[] | Alertes relatives à ce traitement Treatment Alert |
brandedDrug | object | Informations sur le traitement Branded Drug |
comment | string | Commentaire |
indication | object | Motif de prescription |
isSelfMedication | boolean | Indique si le patient prend son traitement en auto-médication |
posology | object | Posologie Posology |
Branded Drug
| Attribut | Type | Description |
|---|---|---|
codings | object[] | Codes relatifs au branded drug avec le systeme cis Coding |
brandName | {designation: string} | Nom de marque ou INN du médicament |
inn | string | INN du médicament |
clinicalDrug | object | Médicament virtuel associé Clinical Drug |
Clinical Drug
| Attribut | Type | Description |
|---|---|---|
codings | object[] | Codes relatifs au branded drug avec le systeme posos Coding |
form | string | Forme du médicament |
labelledStrength | string | Dose des substances actives |
Posology
| Attribut | Type | Description |
|---|---|---|
text | string | Texte brut de la posologie |
structuredPosology | string[] | Posologie structurée au format FHIR (JSON) |
Treatment Alert
| Attribut | Type | Description |
|---|---|---|
type | enum | Type d’alert CONTRAINDICATION ou ADVERSE_EFFECT ou INTERACTION |
level | number | Niveau de gravité de 0 à 4 |
Treatment Evolution
| Attribut | Type | Description |
|---|---|---|
id | string | Identifiant unique de l’évolution |
type | enum | Type d’évolution |
kind | enum | Nature d’évolution |
pharmaceuticalInterventionDetails | object | Détails de l’intervention pharmaceutique pharmaceutical-intervention-details |
old | object | Traitement supprimé ou ancienne version d’un traitement modifié Treatment |
new | object | Traitement ajouté ou nouvelle version d’un traitement modifié Treatment |
replaces | object | Evolution replacée par l’évolution actuelle Treatment Evolution |
comment | string | Commentaire au sujet de l’évolution de traitement |
Le type peut être :
CREATEUPDATEDELETE
Le kind peut être :
PHARMACEUTICAL_INTERVENTION: intervention proposée par le pharmacienPATIENT_INTERVENTION: modification opérée par le patientMEDICAL_INTERVENTION: intervention proposée par le médecin
Pharmaceutical Intervention Details
| Attribut | Type | Description |
|---|---|---|
problem | enum | Code du problème du traitement |
problemDescription | string | Texte explicatif du problème du traitement |
status | enum | Status d’acceptation de l’intervention pharmaceutique |
rejectComment | string | Commentaire en cas de refus de l’intervention pharmaceutique |
Le problem peut être :
NON_COMPLIANCE_WITH_GUIDELINESUNTREATED_INDICATIONUNDERDOSINGOVERDOSINGDRUG_NOT_INDICATEDINTERACTION_TO_ACKNOWLEDGEINTERACTION_PRECAUTIONSINTERACTION_DISCOURAGED_ASSOCIATIONINTERACTION_PUBLISHED_CONTRAINDICATIONADVERSE_EFFECTINAPPROPRIATE_PATHWAYTREATMENT_NOT_RECEIVEDNOT_DEFINEDONGOING_MONITORING
Le status peut être :
ACCEPTEDREJECTEDNOT_SPECIFIED
Medication review current steps
Peut prendre une de ces valeurs:
PREPARATION: préparationINTERVIEW: premier entretienREPORT: compte-renduCOUNSELING_INTERVIEW: entretien conseilOBSERVANCE: observanceFINISHED: accompagnement terminé
Exemple de réponse
Output
{
"medicationReview": {
"id": "58ea6fc6-ba29-4a88-bbd1-75b604438ee3",
"adverseEffects": [],
"archived": false,
"billing": {
"reference": {
"content": {
"code": {
"amount": 0,
"label": "BMI"
},
"status": "MISSING_STEPS"
},
"versionedObjectId": "c182daed-1e55-480f-a12c-83b71983ad6e"
}
},
"comment": null,
"documents": [],
"nextReviewDate": null,
"eligibilityCriteria": false,
"isAdhesionCollected": true,
"medicationCount": null,
"prescriptions": [],
"reviewerParty": {
"reference": {
"partyId": "bc94c4e4-4bd7-4751-8f23-4a6e53b0e0b3",
"originTenantSlug": null,
"content": {
"name": "demo",
"kind": "OFFICINE",
"contacts": null
}
}
},
"validatorParty": null,
"steps": {
"current": "PREPARATION",
"counselingInterview": {
"validationDate": null,
"date": null,
"patientTreatments": [],
"patientTreatmentEvolutions": []
},
"interview": {
"validationDate": null,
"questions": null,
"patientTreatmentEvolutions": []
},
"preparation": {
"validationDate": null,
"importedPrescriptions": [],
"patientTreatments": []
},
"report": {
"validationDate": null,
"comment": null,
"patientTreatments": [],
"patientTreatmentEvolutions": []
},
"reportValidation": null,
"observance": {
"validationDate": null,
"questions": null,
"patientTreatments": []
}
}
}
}Codes de réponse
| Code | Description |
|---|---|
201 | |
400 | Un des paramètres passés dans la requête est invalide |
401 | Le token passé est invalide |
404 | Aucun accompagnement n’existe pour ce patient |