@tekkare/romulus 0.1.251 → 0.1.253

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/utils/projects.d.ts +8 -0
  3. package/dist/runtime/utils/projects.js +8 -5
  4. package/layer/app/app.config.ts +6 -0
  5. package/layer/app/components/OipPubmedSummary.vue +223 -0
  6. package/layer/app/components/OipResourceDrawer.vue +331 -0
  7. package/layer/app/components/OipResourceDrawerLink.vue +40 -0
  8. package/layer/app/components/OipResourceField.vue +41 -0
  9. package/layer/app/components/OipResourceGenericCard.vue +54 -0
  10. package/layer/app/components/OipResourceSource.vue +50 -0
  11. package/layer/app/components/OipResourceTags.vue +65 -0
  12. package/layer/app/components/OipResourceView.vue +107 -0
  13. package/layer/app/components/oip-drugs/fiches/AssociationFiche.vue +775 -0
  14. package/layer/app/components/oip-drugs/fiches/BrandFiche.vue +1111 -0
  15. package/layer/app/components/oip-drugs/fiches/IndicationFiche.vue +182 -0
  16. package/layer/app/components/oip-drugs/fiches/JoFiche.vue +101 -0
  17. package/layer/app/components/oip-drugs/fiches/PndsFiche.vue +279 -0
  18. package/layer/app/components/oip-drugs/heart/JoCard.vue +314 -0
  19. package/layer/app/components/oip-drugs/heart/TextHighlight.vue +326 -0
  20. package/layer/app/components/oip-drugs/heart/ansm/BrandCard.vue +187 -0
  21. package/layer/app/components/oip-drugs/heart/ansm/CisDetail.vue +363 -0
  22. package/layer/app/components/oip-drugs/heart/ansm/CisTable.vue +167 -0
  23. package/layer/app/components/oip-drugs/heart/associations/NationalAssemblyCard.vue +373 -0
  24. package/layer/app/components/oip-drugs/heart/associations/NationalAssemblyFiche.vue +372 -0
  25. package/layer/app/components/oip-drugs/heart/associations/TranscriptionCard.vue +55 -0
  26. package/layer/app/components/oip-drugs/heart/elastic/SourceContainerElastic.vue +103 -0
  27. package/layer/app/components/oip-drugs/heart/france/BrandGroupCard.vue +450 -0
  28. package/layer/app/components/oip-drugs/heart/mitm/Card.vue +199 -0
  29. package/layer/app/components/oip-drugs/heart/mitm/Source.vue +23 -0
  30. package/layer/app/components/oip-drugs/heart/mitm/details/Overview.vue +381 -0
  31. package/layer/app/components/oip-drugs/heart/put/Card.vue +212 -0
  32. package/layer/app/components/oip-drugs/heart/results/AccesCard.vue +696 -0
  33. package/layer/app/components/oip-drugs/heart/results/AlertCard.vue +342 -0
  34. package/layer/app/components/oip-drugs/heart/results/AsmrCursor.vue +229 -0
  35. package/layer/app/components/oip-drugs/heart/results/EvalCard.vue +370 -0
  36. package/layer/app/components/oip-drugs/heart/results/IndicCard.vue +743 -0
  37. package/layer/app/components/oip-drugs/heart/results/MatchExplain.vue +243 -0
  38. package/layer/app/components/oip-drugs/heart/results/PrefRows.vue +105 -0
  39. package/layer/app/components/oip-drugs/heart/results/details/HasHistory.vue +487 -0
  40. package/layer/app/components/oip-drugs/heart/results/details/InternationalCountryCard.vue +461 -0
  41. package/layer/app/components/oip-drugs/heart/results/details/InternationalOverview.vue +200 -0
  42. package/layer/app/components/oip-drugs/heart/results/details/InternationalPriceDrawer.vue +647 -0
  43. package/layer/app/components/oip-drugs/heart/results/details/Monograph.vue +128 -0
  44. package/layer/app/components/oip-drugs/heart/results/details/OpinionDrawer.vue +535 -0
  45. package/layer/app/components/oip-drugs/heart/results/details/PresentationDrawer.vue +738 -0
  46. package/layer/app/components/oip-drugs/heart/results/details/Price.vue +227 -0
  47. package/layer/app/components/oip-drugs/heart/results/details/PriceOverview.vue +1261 -0
  48. package/layer/app/components/oip-drugs/heart/results/details/RecordDrawer.vue +494 -0
  49. package/layer/app/components/oip-drugs/heart/results/details/RecordList.vue +426 -0
  50. package/layer/app/components/oip-drugs/heart/results/les/Card.vue +340 -0
  51. package/layer/app/components/oip-drugs/heart/results/les/Drawer.vue +67 -0
  52. package/layer/app/components/oip-drugs/heart/results/les/IndicationDetail.vue +149 -0
  53. package/layer/app/components/oip-drugs/heart/results/les/Source.vue +20 -0
  54. package/layer/app/components/oip-drugs/heart/results/les/SourceTag.vue +39 -0
  55. package/layer/app/components/oip-drugs/heart/searchPage/DynamicSource.vue +29 -0
  56. package/layer/app/components/oip-drugs/medicam/market/Chart.vue +121 -0
  57. package/layer/app/components/oip-drugs/outpatient/ProductEvolution.vue +236 -0
  58. package/layer/app/components/oip-drugs/resources/Ansm.vue +75 -0
  59. package/layer/app/components/oip-drugs/resources/Association.vue +30 -0
  60. package/layer/app/components/oip-drugs/resources/Brand.vue +65 -0
  61. package/layer/app/components/oip-drugs/resources/Contribution.vue +216 -0
  62. package/layer/app/components/oip-drugs/resources/Hospital.vue +151 -0
  63. package/layer/app/components/oip-drugs/resources/Indication.vue +54 -0
  64. package/layer/app/components/oip-drugs/resources/Jo.vue +57 -0
  65. package/layer/app/components/oip-drugs/resources/Medicam.vue +140 -0
  66. package/layer/app/components/oip-drugs/resources/Mitm.vue +84 -0
  67. package/layer/app/components/oip-drugs/resources/NationalAssembly.vue +93 -0
  68. package/layer/app/components/oip-drugs/resources/Outpatient.vue +97 -0
  69. package/layer/app/components/oip-drugs/resources/Pnds.vue +24 -0
  70. package/layer/app/components/oip-drugs/resources/Price.vue +106 -0
  71. package/layer/app/components/oip-drugs/resources/Put.vue +143 -0
  72. package/layer/app/components/oip-science/appel-a-projet/Cards.vue +162 -0
  73. package/layer/app/components/oip-science/clinical-trials/Cards.vue +382 -0
  74. package/layer/app/components/oip-science/clinical-trials/CardsGlobal.vue +273 -0
  75. package/layer/app/components/oip-science/clinical-trials/LinkedList.vue +366 -0
  76. package/layer/app/components/oip-science/clinical-trials/PairBadge.vue +25 -0
  77. package/layer/app/components/oip-science/clinical-trials/PairBody.vue +182 -0
  78. package/layer/app/components/oip-science/clinical-trials/SitesDrawer.vue +95 -0
  79. package/layer/app/components/oip-science/common/Form.vue +73 -0
  80. package/layer/app/components/oip-science/common/MatchAvgTag.vue +283 -0
  81. package/layer/app/components/oip-science/common/NoData.vue +16 -0
  82. package/layer/app/components/oip-science/common/ScoreBadge.vue +35 -0
  83. package/layer/app/components/oip-science/common/Source.vue +31 -0
  84. package/layer/app/components/oip-science/common/TableTags.vue +279 -0
  85. package/layer/app/components/oip-science/common/Timeline.vue +104 -0
  86. package/layer/app/components/oip-science/common/ToolTips.vue +89 -0
  87. package/layer/app/components/oip-science/cross/publicationPubmed.vue +484 -0
  88. package/layer/app/components/oip-science/crossData/CrossDataLocations.vue +71 -0
  89. package/layer/app/components/oip-science/ctgov/Investigators.vue +148 -0
  90. package/layer/app/components/oip-science/ctgov/Locations.vue +102 -0
  91. package/layer/app/components/oip-science/ctgov/Publications.vue +52 -0
  92. package/layer/app/components/oip-science/ctgov/Sponsors.vue +66 -0
  93. package/layer/app/components/oip-science/ctgov/StudyDescription.vue +1136 -0
  94. package/layer/app/components/oip-science/ctgov-centers/ClinicalTrials.vue +40 -0
  95. package/layer/app/components/oip-science/ctgov-centers/Publications.vue +50 -0
  96. package/layer/app/components/oip-science/ctgov-investigators/ClinicalTrials.vue +43 -0
  97. package/layer/app/components/oip-science/ctgov-investigators/Informations.vue +171 -0
  98. package/layer/app/components/oip-science/ctgov-investigators/Publications.vue +44 -0
  99. package/layer/app/components/oip-science/elastic/DateRangeFilter.vue +209 -0
  100. package/layer/app/components/oip-science/elastic/Filter.vue +719 -0
  101. package/layer/app/components/oip-science/elastic/MatchExplain.vue +152 -0
  102. package/layer/app/components/oip-science/establishments/Cards.vue +183 -0
  103. package/layer/app/components/oip-science/establishments/ClinicalTrials.vue +62 -0
  104. package/layer/app/components/oip-science/establishments/Hcps.vue +227 -0
  105. package/layer/app/components/oip-science/establishments/Informations.vue +263 -0
  106. package/layer/app/components/oip-science/establishments/LinkedList.vue +153 -0
  107. package/layer/app/components/oip-science/establishments/MatchedLabels.vue +194 -0
  108. package/layer/app/components/oip-science/establishments/PublicFinance.vue +62 -0
  109. package/layer/app/components/oip-science/euct/Investigators.vue +125 -0
  110. package/layer/app/components/oip-science/euct/Locations.vue +102 -0
  111. package/layer/app/components/oip-science/euct/Products.vue +101 -0
  112. package/layer/app/components/oip-science/euct/Publications.vue +89 -0
  113. package/layer/app/components/oip-science/euct/Sponsors.vue +86 -0
  114. package/layer/app/components/oip-science/euct/StudyDescription.vue +1075 -0
  115. package/layer/app/components/oip-science/euct-centers/ClinicalTrials.vue +40 -0
  116. package/layer/app/components/oip-science/euct-centers/Publications.vue +55 -0
  117. package/layer/app/components/oip-science/euct-investigators/ClinicalTrials.vue +41 -0
  118. package/layer/app/components/oip-science/euct-investigators/Informations.vue +171 -0
  119. package/layer/app/components/oip-science/euct-investigators/Publications.vue +51 -0
  120. package/layer/app/components/oip-science/hcps/AppelsAProjet.vue +62 -0
  121. package/layer/app/components/oip-science/hcps/Cards.vue +237 -0
  122. package/layer/app/components/oip-science/hcps/ClinicalTrials.vue +78 -0
  123. package/layer/app/components/oip-science/hcps/Informations.vue +296 -0
  124. package/layer/app/components/oip-science/hcps/LinkedList.vue +153 -0
  125. package/layer/app/components/oip-science/hcps/MatchedLabels.vue +207 -0
  126. package/layer/app/components/oip-science/hcps/Pubmed.vue +128 -0
  127. package/layer/app/components/oip-science/local/SliderTabs.vue +99 -0
  128. package/layer/app/components/oip-science/local/SliderTabsFull.vue +135 -0
  129. package/layer/app/components/oip-science/pubmed/Authors.vue +128 -0
  130. package/layer/app/components/oip-science/pubmed/Cards.vue +417 -0
  131. package/layer/app/components/oip-science/pubmed/ClinicalTrials.vue +71 -0
  132. package/layer/app/components/oip-science/resources/Phrc.vue +39 -0
  133. package/layer/app/composables/useOipChapterScroll.ts +43 -0
  134. package/layer/app/composables/useOipResourceHooks.ts +27 -0
  135. package/layer/app/composables/useOipResourceNav.ts +66 -0
  136. package/layer/app/composables/useOipResourceViews.ts +117 -0
  137. package/layer/app/composables/useOipResources.ts +83 -0
  138. package/layer/app/oip-drugs/PORTING.md +120 -0
  139. package/layer/app/oip-drugs/composables/useAssociationDetail.ts +220 -0
  140. package/layer/app/oip-drugs/composables/useAssociationExport.ts +63 -0
  141. package/layer/app/oip-drugs/composables/useAssociationLookup.ts +105 -0
  142. package/layer/app/oip-drugs/composables/useCardPrefOptions.ts +201 -0
  143. package/layer/app/oip-drugs/composables/useCurrency.ts +121 -0
  144. package/layer/app/oip-drugs/composables/useDirectusSources.ts +224 -0
  145. package/layer/app/oip-drugs/composables/useHeartBrandMatches.ts +112 -0
  146. package/layer/app/oip-drugs/composables/useHeartDetailSearches.ts +479 -0
  147. package/layer/app/oip-drugs/composables/useHeartIntlApprovals.ts +661 -0
  148. package/layer/app/oip-drugs/composables/useHeartLesIndication.ts +168 -0
  149. package/layer/app/oip-drugs/composables/useHeartMatchExplain.ts +231 -0
  150. package/layer/app/oip-drugs/composables/useHeartReports.ts +239 -0
  151. package/layer/app/oip-drugs/composables/useHeartSearchFields.ts +233 -0
  152. package/layer/app/oip-drugs/composables/useMergeByKey.ts +23 -0
  153. package/layer/app/oip-drugs/composables/useOipDrugsElastic.ts +621 -0
  154. package/layer/app/oip-drugs/composables/usePageEmpty.ts +58 -0
  155. package/layer/app/oip-drugs/composables/v-useSalesSource.ts +64 -0
  156. package/layer/app/oip-drugs/drugs.css +500 -0
  157. package/layer/app/oip-drugs/esIndices.ts +322 -0
  158. package/layer/app/oip-drugs/kinds.ts +264 -0
  159. package/layer/app/oip-drugs/locales/en.json +1571 -0
  160. package/layer/app/oip-drugs/locales/fr.json +1571 -0
  161. package/layer/app/oip-drugs/monographs/blincyto-has.vue +289 -0
  162. package/layer/app/oip-drugs/monographs/darzalex-has.vue +276 -0
  163. package/layer/app/oip-drugs/monographs/dupixent-has.vue +216 -0
  164. package/layer/app/oip-drugs/monographs/enhertu-has.vue +280 -0
  165. package/layer/app/oip-drugs/monographs/has-sein-2023.vue +1649 -0
  166. package/layer/app/oip-drugs/monographs/ibrance-has.vue +277 -0
  167. package/layer/app/oip-drugs/monographs/imfinzi-has.vue +293 -0
  168. package/layer/app/oip-drugs/monographs/keytruda-has.vue +334 -0
  169. package/layer/app/oip-drugs/monographs/kisqali-has.vue +201 -0
  170. package/layer/app/oip-drugs/monographs/opdivo-has.vue +231 -0
  171. package/layer/app/oip-drugs/monographs/ozempic-has.vue +186 -0
  172. package/layer/app/oip-drugs/monographs/tecentriq-has.vue +312 -0
  173. package/layer/app/oip-drugs/monographs/yescarta-has.vue +272 -0
  174. package/layer/app/oip-drugs/types/elastic.ts +113 -0
  175. package/layer/app/oip-drugs/types/es/agencies.ts +152 -0
  176. package/layer/app/oip-drugs/types/es/directory.ts +54 -0
  177. package/layer/app/oip-drugs/types/es/docByIndex.ts +151 -0
  178. package/layer/app/oip-drugs/types/es/openmedic.ts +67 -0
  179. package/layer/app/oip-drugs/types/es/outpatient.ts +71 -0
  180. package/layer/app/oip-drugs/types/es/portal.ts +130 -0
  181. package/layer/app/oip-drugs/types/es/retail.ts +107 -0
  182. package/layer/app/oip-drugs/types/es/statistics.ts +29 -0
  183. package/layer/app/oip-drugs/types/heart/CurrencyRate.ts +16 -0
  184. package/layer/app/oip-drugs/types/heart/ansm.ts +106 -0
  185. package/layer/app/oip-drugs/types/heart/tag.ts +29 -0
  186. package/layer/app/oip-drugs/utils/associationFields.ts +118 -0
  187. package/layer/app/oip-drugs/utils/contributions.ts +36 -0
  188. package/layer/app/oip-drugs/utils/countryMapping.ts +387 -0
  189. package/layer/app/oip-drugs/utils/esHighlight.ts +21 -0
  190. package/layer/app/oip-drugs/utils/exportSheets.ts +57 -0
  191. package/layer/app/oip-drugs/utils/heartIntlPrice.ts +228 -0
  192. package/layer/app/oip-drugs/utils/heartStyleAndFormat.ts +262 -0
  193. package/layer/app/oip-drugs/utils/heartStyleAnsm.ts +71 -0
  194. package/layer/app/oip-drugs/utils/latestDate.ts +31 -0
  195. package/layer/app/oip-drugs/utils/p-heartCardTags.ts +53 -0
  196. package/layer/app/oip-drugs/utils/priceExport.ts +269 -0
  197. package/layer/app/oip-drugs/utils/q-hasRatings.ts +43 -0
  198. package/layer/app/oip-drugs/utils/s-openCard.ts +20 -0
  199. package/layer/app/oip-drugs/utils/sourceUuids.ts +155 -0
  200. package/layer/app/oip-drugs/utils/styleAndFormat.ts +40 -0
  201. package/layer/app/oip-drugs/utils/v-salesSeries.ts +156 -0
  202. package/layer/app/oip-drugs/utils/v-scopeTags.ts +23 -0
  203. package/layer/app/oip-science/PORTING.md +93 -0
  204. package/layer/app/oip-science/assets/smartSelection.json +428 -0
  205. package/layer/app/oip-science/composables/useAuthorMatching.ts +342 -0
  206. package/layer/app/oip-science/composables/useCTCenter.ts +107 -0
  207. package/layer/app/oip-science/composables/useCTInvestigators.ts +107 -0
  208. package/layer/app/oip-science/composables/useEstablishmentCrossData.ts +139 -0
  209. package/layer/app/oip-science/composables/useEstablishmentMatching.ts +176 -0
  210. package/layer/app/oip-science/composables/useEuct.ts +418 -0
  211. package/layer/app/oip-science/composables/useEuctCenter.ts +107 -0
  212. package/layer/app/oip-science/composables/useEuctInvestigators.ts +107 -0
  213. package/layer/app/oip-science/composables/useGlobalClinicalTrials.ts +624 -0
  214. package/layer/app/oip-science/composables/useLinkedTrials.ts +83 -0
  215. package/layer/app/oip-science/composables/useOipElastic.ts +658 -0
  216. package/layer/app/oip-science/composables/useOipSearchExplain.ts +166 -0
  217. package/layer/app/oip-science/composables/usePubmed.ts +487 -0
  218. package/layer/app/oip-science/composables/useSearchFields.ts +153 -0
  219. package/layer/app/oip-science/indexConfig.json +794 -0
  220. package/layer/app/oip-science/locales/en.json +483 -0
  221. package/layer/app/oip-science/locales/fr.json +483 -0
  222. package/layer/app/oip-science/science.css +1182 -0
  223. package/layer/app/oip-science/utils/a-openCard.ts +23 -0
  224. package/layer/app/oip-science/utils/b-openCard.ts +35 -0
  225. package/layer/app/oip-science/utils/c-filterContext.ts +81 -0
  226. package/layer/app/oip-science/utils/f-types.ts +241 -0
  227. package/layer/app/oip-science/utils/frDiseaseTerms.ts +269 -0
  228. package/layer/app/oip-science/utils/matchMethod.ts +53 -0
  229. package/layer/app/oip-science/utils/sliderTabs.ts +13 -0
  230. package/layer/app/oip-science/utils/sources.ts +15 -0
  231. package/layer/app/oip-science/utils/styleAndFormat.ts +608 -0
  232. package/layer/app/oip-science/utils/toPresets.ts +7 -0
  233. package/layer/app/oip-science/utils/valueTable.ts +126 -0
  234. package/layer/app/plugins/oip-science-i18n.ts +17 -0
  235. package/layer/app/utils/oipFicheRoutes.ts +118 -0
  236. package/layer/app/utils/oipResources.ts +440 -0
  237. package/layer/nuxt.config.ts +22 -2
  238. package/layer/public/reports/blincyto-has.html +292 -0
  239. package/layer/public/reports/blincyto-has.pdf +0 -0
  240. package/layer/public/reports/darzalex-has.html +279 -0
  241. package/layer/public/reports/darzalex-has.pdf +0 -0
  242. package/layer/public/reports/dupixent-has.html +217 -0
  243. package/layer/public/reports/dupixent-has.pdf +0 -0
  244. package/layer/public/reports/enhertu-has.html +283 -0
  245. package/layer/public/reports/enhertu-has.pdf +0 -0
  246. package/layer/public/reports/has-sein-2023.html +1639 -0
  247. package/layer/public/reports/ibrance-has.html +280 -0
  248. package/layer/public/reports/ibrance-has.pdf +0 -0
  249. package/layer/public/reports/imfinzi-has.html +297 -0
  250. package/layer/public/reports/imfinzi-has.pdf +0 -0
  251. package/layer/public/reports/keytruda-has.html +337 -0
  252. package/layer/public/reports/keytruda-has.pdf +0 -0
  253. package/layer/public/reports/kisqali-has.html +202 -0
  254. package/layer/public/reports/kisqali-has.pdf +0 -0
  255. package/layer/public/reports/opdivo-has.html +232 -0
  256. package/layer/public/reports/opdivo-has.pdf +0 -0
  257. package/layer/public/reports/ozempic-has.html +188 -0
  258. package/layer/public/reports/ozempic-has.pdf +0 -0
  259. package/layer/public/reports/tecentriq-has.html +315 -0
  260. package/layer/public/reports/tecentriq-has.pdf +0 -0
  261. package/layer/public/reports/yescarta-has.html +275 -0
  262. package/layer/public/reports/yescarta-has.pdf +0 -0
  263. package/layer/server/api/oip/es.post.ts +99 -0
  264. package/layer/server/api/oip/pdf.get.ts +70 -0
  265. package/layer/server/api/oip/reports.get.ts +98 -0
  266. package/layer/server/api/oip/resource-types.get.ts +22 -0
  267. package/package.json +1 -1
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Source et date de verification d'une carte de ventes (RmChartCard les veut
3
+ * en texte), lues dans Directus par /api/oip/sources. Remplace les champs
4
+ * `xxxSource` / `xxxUpdateDate` des stores de fr_drugs_app, que
5
+ * useSourceStoreSync y recopiait depuis Directus : meme libelle
6
+ * « Producteur (jeu) », et le libelle ecrit a la main du store tant que
7
+ * Directus n'a pas repondu.
8
+ */
9
+
10
+ /** Les jeux Directus des pages de ventes de fr_drugs_app (cf. useDrugsstatsSourceUuids). */
11
+ export const SALES_SOURCE_UUIDS = {
12
+ MEDICAM: "71949060-2e0f-4493-beab-6c8200dbec21",
13
+ OUTPATIENT: "7184cd9a-9f31-4f4b-99de-0d284f04d974",
14
+ SUS: "cf928a21-47a3-4722-923a-0d8642dc900c",
15
+ RETROCESSION: "ba08baa4-d29b-44c3-bd8a-dff04737f525",
16
+ } as const;
17
+
18
+ /** Les libelles des stores de fr_drugs_app, en attendant Directus. */
19
+ export const SALES_SOURCE_FALLBACKS = {
20
+ MEDICAM: "Assurance Maladie (Medic'AM)",
21
+ OUTPATIENT: "Assurance Maladie - Base PHMEV",
22
+ SUS: "ATIH - Scan Santé",
23
+ RETROCESSION: "Assurance Maladie (Retroced'AM)",
24
+ } as const;
25
+
26
+ function pickTranslation(rows: any[] | null | undefined, field: string, lang: string): string {
27
+ const list = rows ?? [];
28
+ const wanted = lang === "fr" ? "fr-FR" : "en-US";
29
+ const hit = list.find((t) => t?.languages_code === wanted) ?? list.find((t) => t?.languages_code === "en-US") ?? list[0];
30
+ const value = hit?.[field];
31
+ return typeof value === "string" ? value.trim() : "";
32
+ }
33
+
34
+ /** « Producteur (jeu) », comme useDirectusSources de fr_drugs_app. */
35
+ function buildName(source: any, lang: string): string {
36
+ const dataset = pickTranslation(source?.translations, "source_name", lang) || String(source?.Nickname ?? "").trim();
37
+ const provider = pickTranslation(source?.provider?.translations, "provider_name", lang);
38
+ if (!provider) return dataset;
39
+ if (!dataset) return provider;
40
+ if (dataset.includes("(")) return `${provider}, ${dataset}`;
41
+ return `${provider} (${dataset})`;
42
+ }
43
+
44
+ export function useSalesSource(key: keyof typeof SALES_SOURCE_UUIDS, lang: () => "fr" | "en") {
45
+ const record = ref<any>(null);
46
+
47
+ onMounted(async () => {
48
+ try {
49
+ const response = await $fetch<{ sources: any[] }>("/api/oip/sources", {
50
+ method: "POST",
51
+ body: { uuids: [SALES_SOURCE_UUIDS[key]] },
52
+ });
53
+ record.value = response?.sources?.[0] ?? null;
54
+ } catch {
55
+ record.value = null;
56
+ }
57
+ });
58
+
59
+ return {
60
+ source: computed(() => (record.value ? buildName(record.value, lang()) : "") || SALES_SOURCE_FALLBACKS[key]),
61
+ // RmChartCard met en forme une date ISO lui-meme.
62
+ verified: computed(() => String(record.value?.latest_download_date || "/")),
63
+ };
64
+ }
@@ -0,0 +1,500 @@
1
+ /*
2
+ Les classes globales de fr_drugs_app (main.css et heart/css/scoped.css),
3
+ portees par les fiches medicament du layer (components/oip-drugs) et
4
+ limitees a leur conteneur `.oip-drugs` : une app qui les monte (France
5
+ Augmented Science) garde ses propres styles. Specificite inchangee (:where).
6
+ Generee depuis fr_drugs_app ; a reduire a mesure que les fiches passent sur
7
+ les composants Romulus.
8
+ */
9
+ :where(.oip-drugs) .full_width {
10
+ width: calc(100% - 32px);
11
+ }
12
+ :where(.oip-drugs) .full_flex {
13
+ flex-basis: 100%
14
+ }
15
+ :where(.oip-drugs) .mt-16 {
16
+ margin-top: 16px;
17
+ }
18
+ :where(.oip-drugs) .cursor-pointer {
19
+ cursor: pointer !important;
20
+ }
21
+ :where(.oip-drugs) .justify-between {
22
+ justify-content: space-between;
23
+ }
24
+ :where(.oip-drugs) .gap-24 {
25
+ gap: 24px !important;
26
+ }
27
+ :where(.oip-drugs) .stretch, :where(.oip-drugs) .full {
28
+ align-self: stretch;
29
+ }
30
+ :where(.oip-drugs) .mt-24 {
31
+ margin-top: 24px;
32
+ }
33
+ :where(.oip-drugs) .highlight {
34
+ color: var(--primary)
35
+ }
36
+ :where(.oip-drugs) .nowrap {
37
+ white-space: nowrap;
38
+ }
39
+ :where(.oip-drugs) .mb-24 {
40
+ margin-bottom: 24px;;
41
+ }
42
+ :where(.oip-drugs) .oip_table_card {
43
+ align-self: stretch !important;
44
+ }
45
+ :where(.oip-drugs) .full {
46
+ width: 100%;
47
+ }
48
+ :where(.oip-drugs) .oip_row {
49
+ display: flex;
50
+ flex-direction: row;
51
+ }
52
+ :where(.oip-drugs) .oip_list {
53
+ display: flex;
54
+ flex-direction: column;
55
+ }
56
+ :where(.oip-drugs) .oip_row.wrap, :where(.oip-drugs) .oip_list.wrap {
57
+ flex-wrap: wrap;
58
+ }
59
+ :where(.oip-drugs) .oip_row.centered, :where(.oip-drugs) .oip_list.centered {
60
+ justify-content: center;
61
+ }
62
+ :where(.oip-drugs) .oip_row.space-between, :where(.oip-drugs) .oip_list.space-between {
63
+ justify-content: space-between;
64
+ }
65
+ :where(.oip-drugs) .oip_row.v-start, :where(.oip-drugs) .oip_list.v-start {
66
+ align-items: flex-start;
67
+ }
68
+ :where(.oip-drugs) .oip_row.v-center, :where(.oip-drugs) .oip_list.v-center {
69
+ align-items: center;
70
+ }
71
+ :where(.oip-drugs) .oip_row.gap-4, :where(.oip-drugs) .oip_list.gap-4 {
72
+ gap: 4px;
73
+ }
74
+ :where(.oip-drugs) .oip_row.gap-8, :where(.oip-drugs) .oip_list.gap-8 {
75
+ gap: 8px;
76
+ }
77
+ :where(.oip-drugs) .oip_row.gap-12, :where(.oip-drugs) .oip_list.gap-12 {
78
+ gap: 12px;
79
+ }
80
+ :where(.oip-drugs) .oip_row.gap-16, :where(.oip-drugs) .oip_list.gap-16 {
81
+ gap: 16px;
82
+ }
83
+ :where(.oip-drugs) .oip_row.gap-24, :where(.oip-drugs) .oip_list.gap-24 {
84
+ gap: 24px;
85
+ }
86
+ :where(.oip-drugs) .oip_row.gap-32, :where(.oip-drugs) .oip_list.gap-32 {
87
+ gap: 32px;
88
+ }
89
+ :where(.oip-drugs) .oip_row.gap-48, :where(.oip-drugs) .oip_list.gap-48 {
90
+ gap: 48px;
91
+ }
92
+ :where(.oip-drugs) .arg_page_content {
93
+ display: flex;
94
+ flex-direction: column;
95
+ align-items: center;
96
+ gap: 8px;
97
+ align-self: stretch;
98
+ padding: 0 24px;
99
+ }
100
+ :where(.oip-drugs) .arg_page_content > * {
101
+ margin-top: 0;
102
+ margin-bottom: 0;
103
+ }
104
+ :where(.oip-drugs) .oip_title {
105
+ color: var(--text-primary);
106
+ font-size: 24px;
107
+ font-weight: 700;
108
+ line-height: 28px;
109
+ }
110
+ :where(.oip-drugs) .oip_subtitle {
111
+ color: var(--text-primary);
112
+ font-size: 16px;
113
+ font-weight: 700;
114
+ line-height: 19px;
115
+ }
116
+ :where(.oip-drugs) .oip_body {
117
+ color: var(--text-primary);
118
+ font-size: 14px;
119
+ font-weight: 400;
120
+ line-height: 160%;
121
+ }
122
+ :where(.oip-drugs) .oip_label {
123
+ color: var(--text-secondary);
124
+ font-size: 12px;
125
+ font-weight: 700;
126
+ line-height: 14px;
127
+ }
128
+ :where(.oip-drugs) .oip_filter_label {
129
+ color: var(--text-secondary);
130
+ font-size: 12px;
131
+ font-weight: 400;
132
+ line-height: 14px;
133
+ }
134
+ :where(.oip-drugs) .oip_caption {
135
+ color: var(--text-secondary);
136
+ font-size: 12px;
137
+ font-weight: 500;
138
+ line-height: 14px;
139
+ }
140
+ :where(.oip-drugs) .oip_underline {
141
+ color: var(--text-primary);
142
+ font-size: 12px;
143
+ font-weight: 400;
144
+ line-height: 14px;
145
+ }
146
+ :where(.oip-drugs) .oip_card {
147
+ padding: 24px;
148
+ border: 1px solid var(--border-default);
149
+ border-radius: 12px;
150
+ background: var(--bg-surface);
151
+ box-shadow: var(--shadow-sm);
152
+ }
153
+ :where(.oip-drugs) .oip_card.action:hover, :where(.oip-drugs) .oip_table_card.action:hover {
154
+ border-color: var(--color-primary);
155
+ box-shadow: var(--shadow-lg);
156
+ }
157
+ :where(.oip-drugs) .toolbar_tab_container {
158
+ display: flex;
159
+ flex-direction: column;
160
+ align-items: flex-start;
161
+ gap: 24px;
162
+ }
163
+ :where(.oip-drugs) .rm-shell .rm-page-header {
164
+ position: sticky;
165
+ top: 0;
166
+ left: auto;
167
+ width: 100%;
168
+ }
169
+ :where(.oip-drugs) .rm-shell .oip_container {
170
+ max-width: none;
171
+ padding-right: 0;
172
+ }
173
+ :where(.oip-drugs) .rm-shell {
174
+ --oip-content-max: 1232px;
175
+ }
176
+ :where(.oip-drugs) .rm-shell .main_container {
177
+ flex-direction: column;
178
+ align-items: center;
179
+ padding-bottom: 32px;
180
+ }
181
+ :where(.oip-drugs) .rm-shell .main_container > * {
182
+ box-sizing: border-box;
183
+ width: 100%;
184
+ max-width: var(--oip-content-max);
185
+
186
+ margin-inline: auto;
187
+ }
188
+ :where(.oip-drugs) .rm-shell .main_container > .rm-page-header {
189
+ max-width: none;
190
+ padding-inline: max(32px, (100% - var(--oip-content-max)) / 2 + 32px);
191
+ }
192
+ :where(.oip-drugs) .rm-shell .main_container > .mono-bleed {
193
+ max-width: none;
194
+ }
195
+ :where(.oip-drugs) .rm-shell .rm-page-header__title, :where(.oip-drugs) .rm-shell .rm-page-header__title .oip_heading, :where(.oip-drugs) .rm-shell .rm-page-header__title .oip_section_title {
196
+ font-family: var(--font-serif) !important;
197
+ font-size: 32px;
198
+ font-weight: 700;
199
+ line-height: 1.1;
200
+ letter-spacing: -0.02em;
201
+ }
202
+ :where(.oip-drugs) .rm-shell .main_container {
203
+ gap: 0;
204
+ }
205
+ :where(.oip-drugs) .rm-shell .main_container > * + * {
206
+ margin-top: 32px;
207
+ }
208
+ :where(.oip-drugs) .rm-shell #rm_filter_bar {
209
+ box-sizing: border-box;
210
+ max-width: none;
211
+ }
212
+ :where(.oip-drugs) .rm-shell #rm_filter_bar .rm-fbar__row, :where(.oip-drugs) .rm-shell #rm_filter_bar .rm-fbar__rail-row {
213
+ min-width: min(100%, var(--oip-content-max) - 64px);
214
+ max-width: min(100%, var(--oip-content-max) - 64px);
215
+ }
216
+ :where(.oip-drugs) .rm-shell .main_container > #rm_filter_bar, :where(.oip-drugs) .rm-shell .main_container > *:has(> #rm_filter_bar) {
217
+ margin-top: 0;
218
+ }
219
+ :where(.oip-drugs) .rm-shell #rm_filter_bar + * {
220
+ margin-top: 8px;
221
+ }
222
+ :where(.oip-drugs) body.is-monograph-fullbleed .rm-shell .main_container > * + * {
223
+ margin-top: 0;
224
+ }
225
+ :where(.oip-drugs) .rm-shell .bg_card .rcd-pagination, :where(.oip-drugs) .rm-shell .oip_table_card .rcd-pagination, :where(.oip-drugs) .rm-shell .rcard .rcd-pagination {
226
+ padding: 4px 9px;
227
+ font-size: 12px;
228
+ }
229
+ :where(.oip-drugs) .rm-shell .bg_card .rcd-pagination-navigate svg, :where(.oip-drugs) .rm-shell .oip_table_card .rcd-pagination-navigate svg, :where(.oip-drugs) .rm-shell .rcard .rcd-pagination-navigate svg {
230
+ width: 16px;
231
+ height: 16px;
232
+ }
233
+ :where(.oip-drugs) .rm-shell .rcard {
234
+ cursor: pointer;
235
+ transition: border-color 0.15s linear, box-shadow 0.15s linear;
236
+
237
+ width: 100%;
238
+ }
239
+ :where(.oip-drugs) .rm-shell .rcard:hover {
240
+ border-color: color-mix(in srgb, var(--primary) 35%, var(--light));
241
+ box-shadow: var(--medium-shadow);
242
+ }
243
+ :where(.oip-drugs) .rm-shell .rcard .card_content {
244
+ flex-wrap: wrap;
245
+ }
246
+ :where(.oip-drugs) .rm-shell .rcard_footer {
247
+ box-sizing: border-box;
248
+ flex: 0 0 100%;
249
+ width: auto;
250
+ margin: 16px -24px -24px;
251
+ padding: 12px 24px;
252
+ border-top: 1px solid var(--light);
253
+ border-radius: 0 0 var(--radius-xl, 12px) var(--radius-xl, 12px);
254
+ background: var(--demi-fond);
255
+ color: var(--medium);
256
+ font-size: 13px;
257
+ }
258
+ :where(.oip-drugs) body.chatwoot-hidden .woot--bubble-holder, :where(.oip-drugs) body.chatwoot-hidden .woot-widget-bubble, :where(.oip-drugs) body.chatwoot-hidden .woot-widget-holder {
259
+ display: none !important;
260
+ }
261
+ :where(.oip-drugs) .rm-shell .search_suggestions {
262
+ background: var(--white);
263
+
264
+ border: none !important;
265
+ border-radius: 12px;
266
+ padding: 6px;
267
+ max-height: 320px;
268
+ }
269
+ :where(.oip-drugs) .rm-shell .sugg_container p:not(.loading, :where(.oip-drugs) .not-found) {
270
+ align-items: center;
271
+ gap: 12px;
272
+ padding: 8px 10px;
273
+ border-radius: 8px;
274
+ font-size: 14px;
275
+ }
276
+ :where(.oip-drugs) .rm-shell .sugg_container p > svg {
277
+ box-sizing: content-box;
278
+ flex: 0 0 auto;
279
+ width: 16px;
280
+ height: 16px;
281
+ padding: 8px;
282
+ border-radius: 8px;
283
+ background: var(--lightest);
284
+ color: var(--primary) !important;
285
+ }
286
+ :where(.oip-drugs) .sugg_container p > span:has(.sugg_type) {
287
+ display: flex;
288
+ flex-direction: column;
289
+ align-items: flex-start;
290
+ gap: 2px;
291
+ flex: 1;
292
+ min-width: 0;
293
+ }
294
+ :where(.oip-drugs) .rm-shell .sugg_container p:first-child > svg {
295
+ padding: 0;
296
+ background: none;
297
+ color: var(--medium) !important;
298
+ }
299
+ :where(.oip-drugs) .rm-shell .sugg_container p:first-child {
300
+ gap: 8px;
301
+ color: var(--medium);
302
+ }
303
+ :where(.oip-drugs) .rm-shell .sugg_container p.selected, :where(.oip-drugs) .rm-shell .sugg_container p:not(.not-found, :where(.oip-drugs) .loading, :where(.oip-drugs) .no_hover):hover {
304
+ background: color-mix(in srgb, var(--primary) 6%, transparent);
305
+ }
306
+ :where(.oip-drugs) .rm-shell .sugg_container p:last-of-type {
307
+ border-radius: 8px;
308
+ }
309
+ :where(.oip-drugs) h1, :where(.oip-drugs) h2, :where(.oip-drugs) h3, :where(.oip-drugs) h4, :where(.oip-drugs) h5, :where(.oip-drugs) h6, :where(.oip-drugs) p {
310
+ margin: 0;
311
+ }
312
+ :where(.oip-drugs) mark {
313
+ background: #ffaeff;
314
+ color: #1e293b;
315
+ }
316
+ :where(.oip-drugs) {
317
+
318
+ --primary: var(--color-primary);
319
+ --primary-hover: var(--color-primary-hover);
320
+ --accent: var(--color-primary);
321
+
322
+
323
+ --white: var(--bg-surface);
324
+ --base-white: var(--bg-surface);
325
+ --bg: var(--bg-app);
326
+ --demi-fond: var(--bg-surface-2);
327
+ --lightest: var(--bg-surface-3);
328
+ --very-light-grey: var(--bg-surface-3);
329
+
330
+
331
+ --light: var(--border-default);
332
+ --light-grey: var(--border-soft);
333
+ --Main-Light: var(--border-default);
334
+
335
+
336
+ --medium: var(--text-muted);
337
+ --dark: var(--text-secondary);
338
+ --darkest: var(--text-primary);
339
+ --Main-Dark: var(--text-secondary);
340
+ --Main-Darkest: var(--text-primary);
341
+ --independence: #3e3f5e;
342
+
343
+
344
+ --system-alert: var(--color-danger);
345
+ --system-alert-hover: #d21616;
346
+ --system-success: var(--color-success);
347
+ --system-success-hover: #138e40;
348
+ --pink: #f55a8d;
349
+
350
+
351
+ --small-shadow: 0 1px 2px 0 rgba(30, 41, 59, 0.1);
352
+ --medium-shadow: 0 2px 4px 0 rgba(30, 41, 59, 0.1);
353
+ --overlay-shadow: 0 0 40px rgba(94, 92, 154, 0.12);
354
+ }
355
+ :where(body.night) :where(.oip-drugs) {
356
+
357
+ --primary: var(--color-primary);
358
+ --primary-hover: var(--color-accent-soft);
359
+ --accent: var(--color-primary);
360
+
361
+
362
+ --white: var(--bg-surface);
363
+ --base-white: var(--bg-surface);
364
+ --demi-fond: var(--bg-surface-2);
365
+ --lightest: var(--bg-surface-3);
366
+ --very-light-grey: var(--bg-surface-3);
367
+ --bg: var(--bg-app);
368
+
369
+
370
+ --light: var(--border-default);
371
+ --light-grey: var(--border-soft);
372
+ --Main-Light: var(--border-default);
373
+
374
+
375
+ --medium: var(--text-muted);
376
+ --dark: var(--text-secondary);
377
+ --darkest: var(--text-primary);
378
+ --Main-Dark: var(--text-secondary);
379
+ --Main-Darkest: var(--text-primary);
380
+ }
381
+ :where(body.night) :where(.oip-drugs) [class*="-fill_button"], :where(body.night) :where(.oip-drugs) [class*="-fill_icon_button"], :where(body.night) :where(.oip-drugs) .b-refus, :where(body.night) :where(.oip-drugs) .cis-chip.active, :where(body.night) :where(.oip-drugs) .pv_tip, :where(body.night) :where(.oip-drugs) .hh_link::after, :where(body.night) :where(.oip-drugs) .rl_link::after {
382
+ color: #FFFFFF;
383
+ }
384
+ :where(body.night) :where(.oip-drugs) .search_suggestions, :where(body.night) :where(.oip-drugs) .tooltip {
385
+ background: var(--bg-surface);
386
+ }
387
+ :where(body.night) :where(.oip-drugs) :where(input, :where(.oip-drugs) textarea, :where(.oip-drugs) select) {
388
+ background-color: var(--bg-surface);
389
+ color: var(--text-primary);
390
+ }
391
+ :where(.oip-drugs) .unavailable {
392
+ color: var(--medium);
393
+ font-size: 14px;
394
+ font-weight: 400;
395
+ line-height: 16px;
396
+ }
397
+ :where(.oip-drugs) .unavailable.white {
398
+ color: var(--white) !important;
399
+ }
400
+ :where(.oip-drugs) .has_fav_access {
401
+ color: var(--system-success);
402
+ font-weight: 600;
403
+ }
404
+ :where(.oip-drugs) .has_defav_access {
405
+ color: var(--system-alert);
406
+ font-weight: 600;
407
+ }
408
+ :where(.oip-drugs) .width_100 {
409
+ width: 100%;
410
+ }
411
+ :where(.oip-drugs) .white {
412
+ color: var(--white) !important;
413
+ }
414
+ :where(.oip-drugs) .italic {
415
+ font-style: italic;
416
+ }
417
+ :where(.oip-drugs) .grey {
418
+ color: var(--medium) !important;
419
+ }
420
+ :where(.oip-drugs) .italic {
421
+ font-style: italic !important;
422
+ }
423
+ :where(.oip-drugs) .right {
424
+ justify-content: flex-end !important;
425
+ }
426
+ :where(.oip-drugs) .mb-8 {
427
+ margin-bottom: 8px;
428
+ }
429
+ :where(.oip-drugs) .atc_code {
430
+ color: var(--dark);
431
+ font-weight: 600;
432
+ }
433
+ :where(.oip-drugs) .link {
434
+ font-weight: 500 !important;
435
+ line-height: normal;
436
+ text-decoration-line: underline;
437
+ cursor: pointer;
438
+ color: var(--primary) !important;
439
+ }
440
+ :where(.oip-drugs) .link:hover {
441
+ color: var(--primary-hover) !important;
442
+ }
443
+ :where(.oip-drugs) .card_header {
444
+ display: flex;
445
+ flex-direction: column;
446
+ align-items: flex-start;
447
+ gap: 4px;
448
+ }
449
+ :where(.oip-drugs) .has_product_title {
450
+ font-size: 20px;
451
+ font-weight: 900;
452
+ color: var(--darkest);
453
+ }
454
+ :where(.oip-drugs) .card_tag {
455
+ border-radius: 7px;
456
+ border: 1px solid var(--Main-Light, #dbdef0);
457
+ display: flex;
458
+ padding: 4px 8px;
459
+ align-items: center;
460
+ gap: 8px;
461
+ width: fit-content;
462
+ }
463
+ :where(.oip-drugs) .card_display {
464
+ display: flex;
465
+ flex-direction: column;
466
+ gap: 20px;
467
+ align-self: stretch;
468
+ width: 100%;
469
+ }
470
+ :where(.oip-drugs) .primary {
471
+ color: var(--primary) !important;
472
+ }
473
+ :where(.oip-drugs) .link.primary:hover {
474
+ color: var(--primary-hover) !important;
475
+ }
476
+ :where(.oip-drugs) .medium {
477
+ color: var(--Main-Dark, #525670);
478
+ font-size: 12px;
479
+ font-weight: 400;
480
+ }
481
+ :where(.oip-drugs) .sep {
482
+ background: var(--medium);
483
+ width: 1px;
484
+ align-self: stretch;
485
+ }
486
+ :where(.oip-drugs) .card_head_text {
487
+ color: var(--dark);
488
+ font-size: 12px;
489
+ }
490
+ :where(.oip-drugs) .card_top {
491
+ display: flex;
492
+ flex-direction: column;
493
+ gap: 0px;
494
+ }
495
+ :where(.oip-drugs) .hide {
496
+ visibility: hidden;
497
+ max-height: 0px;
498
+ max-width: 0px;
499
+ overflow: hidden;
500
+ }