BASE=https://drugs.locusmedical.frH=(-H "X-Locus-Editeur: $CLE" -H "X-Locus-Abonne: rpps:10001234567")# Identité et éditioncurl -s "${H[@]}" "$BASE/v1/meta" | jq .edition# Recherche, tri par prix unitaire, sans les produits à l'aspartamcurl -s "${H[@]}" "$BASE/v1/produits/recherche?q=paracetamol%201%20g&tri=prix_ucd&exclure_excipients=E951"# Une fiche, puis ses posologies de référencecurl -s "${H[@]}" "$BASE/v1/specialites/61234567" | jq '.composition, .statuts'curl -s "${H[@]}" "$BASE/v1/specialites/61234567/posologies" | jq '.posologies[] | {population: .population.libelle, max24h: .quantite_max_par_24h}'# Ce qui a changé depuis l'édition que le LGC a en cachecurl -s "${H[@]}" "$BASE/v1/changements?depuis=2026.09.1"
uv sync# Sur le jeu de données de référence (démonstration, essai de type) :LOCUS_DRUGS_JEU=reference uv run locus-drugs-api# Sur la base Postgres :DRUGS_DATABASE_URL=postgresql://... LOCUS_DRUGS_CLES="almapro:une-cle" uv run locus-drugs-api
HOST et PORT (par défaut 127.0.0.1:8080). Sans LOCUS_DRUGS_CLES, l’API démarre ouverte et le dit sur la sortie d’erreur ; une instance en ligne ne l’est jamais.
creer_app(referentiel) (drugs/api/app.py) accepte n’importe quelle implémentation du protocole Referentiel. MemoireReferentiel sert un jeu en mémoire : un éditeur peut écrire les tests d’intégration de son LAP sans base.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Locus Drugs","description":"Base médicamenteuse (BdM) et logiciel d'aide à la prescription (LAP), AI-native. API LAP v1.","colors":{"primary":"#2F6B68","light":"#8DB3AB","dark":"#1D4644"},"logo":{"light":"https://mintcdn.com/locusdrugs/aCJF2JcniYLYAUQJ/logo/light.svg?fit=max\u0026auto=format\u0026n=aCJF2JcniYLYAUQJ\u0026q=85\u0026s=c8cd0de4f24bf3826c5cc5ccad004a1d","dark":"https://mintcdn.com/locusdrugs/aCJF2JcniYLYAUQJ/logo/dark.svg?fit=max\u0026auto=format\u0026n=aCJF2JcniYLYAUQJ\u0026q=85\u0026s=ebc8d174cb26bc189893ce20120dcc6d","href":"https://locusmedical.fr"},"favicon":"https://mintcdn.com/locusdrugs/ijECtZtu24_wiwlt/favicon.svg?fit=max\u0026auto=format\u0026n=ijECtZtu24_wiwlt\u0026q=85\u0026s=c3a54ae34afce4659e86d3bdf8e1ec7f","api":{"playground":{"display":"interactive"}},"background":{"color":{"light":"#F3EFE8","dark":"#141B1A"}},"footer":{"socials":{"website":"https://locusmedical.fr"}},"fonts":{"family":"DM Sans"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"locusdrugs","hasAudioNarration":false,"actualSubdomain":"locusdrugs","customDomains":["docs.drugs.locusmedical.fr"],"gitSource":{"type":"github","owner":"v4ndr","repo":"locus-drugs","deployBranch":"main","contentDirectory":"docs-api","isPrivate":true,"mountPath":"","label":"","_id":"6ae7590de026cb42f70418b7"},"chroma":{"latestBuiltDeploymentHistoryId":"6ae7608762ef36be8863fb86","collectionId":"12c86a1c-803e-4f4a-bab8-02c0b8e110df","liveDeploymentHistoryId":"6ae7608762ef36be8863fb86","schemaVersion":"v3"},"entitlements":{},"buildId":"6ae764482083372bfa54ab84","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Référence de l'API","count":27},{"language":"default","tag":"A. Référentiel","count":24},{"language":"default","tag":"Guides","count":8},{"language":"default","tag":"Concepts","count":4},{"language":"default","tag":"Premiers pas","count":3},{"language":"default","tag":"B. Contrôles (dispositif médical)","count":3},{"language":"default","tag":"Engagements","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"guides/demarrage","slug":"/guides/demarrage","pageMetadata":{"title":"Démarrer","description":"Un premier appel à l'API, avec une clé d'éditeur.","href":"/guides/demarrage"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Un premier appel à l’API, avec une clé d’éditeur.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`prérequis`,children:`Prérequis`}),`\n`,_jsxs(_components.p,{children:[`Une clé d’éditeur de LGC, remise par Locus à la signature du contrat, et l’identifiant de l’abonné (le médecin) chez l’éditeur. Voir `,_jsx(_components.a,{href:`/guides/authentification`,children:`Authentification`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`premiers-appels`,children:`Premiers appels`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`15`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`BASE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://drugs.locusmedical.fr`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`H`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`-H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-Locus-Editeur: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$CLE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-Locus-Abonne: rpps:10001234567\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Identité et édition`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -s`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' \"${'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`]}\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$BASE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/v1/meta\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` jq`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` .edition`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Recherche, tri par prix unitaire, sans les produits à l'aspartam`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -s`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' \"${'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`]}\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$BASE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/v1/produits/recherche?q=paracetamol%201%20g\u0026tri=prix_ucd\u0026exclure_excipients=E951\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Une fiche, puis ses posologies de référence`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -s`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' \"${'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`]}\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$BASE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/v1/specialites/61234567\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` jq`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '.composition, .statuts'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -s`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' \"${'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`]}\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$BASE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/v1/specialites/61234567/posologies\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` jq`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '.posologies[] | {population: .population.libelle, max24h: .quantite_max_par_24h}'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Ce qui a changé depuis l'édition que le LGC a en cache`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -s`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' \"${'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`]}\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$BASE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/v1/changements?depuis=2026.09.1\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`analyser-une-ordonnance`,children:`Analyser une ordonnance`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -s`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' \"${'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`]}\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$BASE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/v1/analyse\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"patient\": {\"date_naissance\": \"1958-04-12\", \"sexe\": \"F\", \"poids\": {\"kg\": 68}},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"traitement_en_cours\": [],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"prescription\": [{`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"ligne\": 1,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"produits\": [{\"dc\": \"dc:amoxicilline-1-g-comprime-dispersible\"}],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"posologie\": {\"sequences\": [{\"duree\": 7, \"unite_duree\": \"j\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"prises\": [{\"quantite\": 1, \"unite\": \"{comprime}\", \"moments\": [\"matin\", \"soir\"]}]}]},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"duree_jours\": 7`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }]`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`}'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` jq`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '.resultats[] | {niveau, controle, message}'`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`faire-tourner-l’api-en-local`,children:`Faire tourner l’API en local`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`uv`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` sync`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Sur le jeu de données de référence (démonstration, essai de type) :`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`LOCUS_DRUGS_JEU`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`reference`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` uv`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` locus-drugs-api`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Sur la base Postgres :`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`DRUGS_DATABASE_URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`postgresql://...`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` LOCUS_DRUGS_CLES`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"almapro:une-cle\"`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` uv`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` locus-drugs-api`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`HOST`}),` et `,_jsx(_components.code,{children:`PORT`}),` (par défaut `,_jsx(_components.code,{children:`127.0.0.1:8080`}),`). Sans `,_jsx(_components.code,{children:`LOCUS_DRUGS_CLES`}),`, l’API démarre ouverte et le dit sur la sortie d’erreur ; une instance en ligne ne l’est jamais.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`creer_app(referentiel)`}),` (`,_jsx(_components.code,{children:`drugs/api/app.py`}),`) accepte n’importe quelle implémentation du protocole `,_jsx(_components.code,{children:`Referentiel`}),`. `,_jsx(_components.code,{children:`MemoireReferentiel`}),` sert un jeu en mémoire : un éditeur peut écrire les tests d’intégration de son LAP sans base.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Démarrer","description":"Un premier appel à l'API, avec une clé d'éditeur.","href":"/guides/demarrage"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prérequis","slug":"prérequis","depth":2,"children":[]},{"title":"Premiers appels","slug":"premiers-appels","depth":2,"children":[]},{"title":"Analyser une ordonnance","slug":"analyser-une-ordonnance","depth":2,"children":[]},{"title":"Faire tourner l’API en local","slug":"faire-tourner-l’api-en-local","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"locusdrugs","siteName":"Locus Drugs","title":"Démarrer - Locus Drugs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-01T15:52:10.683Z","originalFileLocation":"guides/demarrage.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Un premier appel à l\u0026#x27;API, avec une clé d\u0026#x27;éditeur.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Locus Drugs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/locusdrugs/2-D0uwNVImUjsHpL/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/locusdrugs/2-D0uwNVImUjsHpL/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/locusdrugs/2-D0uwNVImUjsHpL/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/locusdrugs/2-D0uwNVImUjsHpL/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/locusdrugs/2-D0uwNVImUjsHpL/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/locusdrugs/2-D0uwNVImUjsHpL/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/locusdrugs/2-D0uwNVImUjsHpL/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/locusdrugs/2-D0uwNVImUjsHpL/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/locusdrugs/2-D0uwNVImUjsHpL/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Démarrer - Locus Drugs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Un premier appel à l\u0026#x27;API, avec une clé d\u0026#x27;éditeur.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Locus Drugs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.drugs.locusmedical.fr/guides/demarrage\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://locusdrugs.mintlify.app/_mintlify/api/og/v2?division=Premiers+pas\u0026amp;title=D%C3%A9marrer\u0026amp;description=Un+premier+appel+%C3%A0+l%27API%2C+avec+une+cl%C3%A9+d%27%C3%A9diteur.\u0026amp;theme=319eb3f72d618193b1d76925\u0026amp;signature=6c381cd65ca9762e6bfaf28045f4f400ce74f17f0713c6352afe9f2dd55d8a88\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Démarrer - Locus Drugs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Un premier appel à l\u0026#x27;API, avec une clé d\u0026#x27;éditeur.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://locusdrugs.mintlify.app/_mintlify/api/og/v2?division=Premiers+pas\u0026amp;title=D%C3%A9marrer\u0026amp;description=Un+premier+appel+%C3%A0+l%27API%2C+avec+une+cl%C3%A9+d%27%C3%A9diteur.\u0026amp;theme=319eb3f72d618193b1d76925\u0026amp;signature=6c381cd65ca9762e6bfaf28045f4f400ce74f17f0713c6352afe9f2dd55d8a88\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/locusdrugs/2-D0uwNVImUjsHpL/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Locus Drugs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2F6B68\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.drugs.locusmedical.fr/guides/demarrage\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/demarrage.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.drugs.locusmedical.fr/#organization\",\"name\":\"Locus Drugs\",\"url\":\"https://docs.drugs.locusmedical.fr\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/locusdrugs/aCJF2JcniYLYAUQJ/logo/light.svg?fit=max\u0026auto=format\u0026n=aCJF2JcniYLYAUQJ\u0026q=85\u0026s=c8cd0de4f24bf3826c5cc5ccad004a1d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.drugs.locusmedical.fr#website\",\"name\":\"Locus Drugs\",\"url\":\"https://docs.drugs.locusmedical.fr\",\"publisher\":{\"@id\":\"https://docs.drugs.locusmedical.fr/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.drugs.locusmedical.fr/guides/demarrage#webpage\",\"url\":\"https://docs.drugs.locusmedical.fr/guides/demarrage\",\"name\":\"Démarrer\",\"description\":\"Un premier appel à l'API, avec une clé d'éditeur.\",\"dateModified\":\"2026-11-01T15:52:10.683Z\",\"isPartOf\":{\"@id\":\"https://docs.drugs.locusmedical.fr#website\"},\"breadcrumb\":{\"@id\":\"https://docs.drugs.locusmedical.fr/guides/demarrage#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.drugs.locusmedical.fr/guides/demarrage#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Premiers pas\",\"item\":\"https://docs.drugs.locusmedical.fr/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Démarrer\",\"item\":\"https://docs.drugs.locusmedical.fr/guides/demarrage\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.drugs.locusmedical.fr/guides/demarrage#article\",\"headline\":\"Démarrer\",\"name\":\"Démarrer\",\"description\":\"Un premier appel à l'API, avec une clé d'éditeur.\",\"url\":\"https://docs.drugs.locusmedical.fr/guides/demarrage\",\"mainEntityOfPage\":{\"@id\":\"https://docs.drugs.locusmedical.fr/guides/demarrage#webpage\"},\"dateModified\":\"2026-11-01T15:52:10.683Z\",\"publisher\":{\"@id\":\"https://docs.drugs.locusmedical.fr/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.drugs.locusmedical.fr#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Locus Drugs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Locus Drugs","nav":{"global":null,"tabs":[{"tab":"Guides","groups":[{"group":"Premiers pas","pages":[{"title":"Locus Drugs","description":"La base médicamenteuse (BdM) et le logiciel d'aide à la prescription (LAP) de Locus, servis par une seule API.","href":""},{"title":"Démarrer","href":"/guides/demarrage"},{"title":"Authentification","description":"Deux en-têtes sur chaque requête : la clé d'éditeur et l'abonné.","href":"/guides/authentification"}]},{"group":"Concepts","pages":[{"title":"Surfaces A et B","href":"/guides/surfaces"},{"title":"Éditions et rejeu","href":"/guides/editions"},{"title":"Conventions","href":"/guides/conventions"},{"title":"Contrôles de prescription","href":"/guides/controles"}]},{"group":"Engagements","pages":[{"title":"Engagements","href":"/guides/engagements"}]}]},{"tab":"Référence de l'API","pages":[{"title":"Référence de l'API","href":"/api-reference/a-référentiel/a1-identité-de-la-base-et-état-de-labonnement"}]}]},"basePath":"","title":"Démarrer - Locus Drugs","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}