de.oddb 2.0.0

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 (431) hide show
  1. data/Guide.txt +3 -0
  2. data/History.txt +5 -0
  3. data/LICENCE.txt +339 -0
  4. data/Manifest.txt +430 -0
  5. data/README +423 -0
  6. data/README.txt +25 -0
  7. data/Rakefile +28 -0
  8. data/bin/admin +71 -0
  9. data/bin/exportd +44 -0
  10. data/bin/oddbd +33 -0
  11. data/data/fulltext/data/dicts/french/fulltext.aff +1057 -0
  12. data/data/fulltext/data/dicts/french/fulltext.dict +91189 -0
  13. data/data/fulltext/data/dicts/french/fulltext.stop +135 -0
  14. data/data/fulltext/data/dicts/german/fulltext.aff +1233 -0
  15. data/data/fulltext/data/dicts/german/fulltext.dict +287574 -0
  16. data/data/fulltext/data/dicts/german/fulltext.stop +133 -0
  17. data/data/fulltext/data/german_compound/README +15 -0
  18. data/data/fulltext/data/german_compound/compound.pl +63 -0
  19. data/data/fulltext/data/german_compound/german.stop +20 -0
  20. data/data/fulltext/data/ispell-german-compound.tar.gz +0 -0
  21. data/data/fulltext/redist/dict_french/Makefile +12 -0
  22. data/data/fulltext/redist/dict_french/README.french +1 -0
  23. data/data/fulltext/redist/dict_french/dict_french.sql.in +7 -0
  24. data/data/fulltext/redist/dict_french/dict_snowball.c +56 -0
  25. data/data/fulltext/redist/dict_french/french_stem.c +1222 -0
  26. data/data/fulltext/redist/dict_french/french_stem.h +16 -0
  27. data/data/fulltext/redist/dict_french/subinclude.h +2 -0
  28. data/data/fulltext/redist/dict_german/Makefile +12 -0
  29. data/data/fulltext/redist/dict_german/README.german +1 -0
  30. data/data/fulltext/redist/dict_german/dict_german.sql.in +7 -0
  31. data/data/fulltext/redist/dict_german/dict_snowball.c +56 -0
  32. data/data/fulltext/redist/dict_german/german_stem.c +527 -0
  33. data/data/fulltext/redist/dict_german/german_stem.h +16 -0
  34. data/data/fulltext/redist/dict_german/subinclude.h +1 -0
  35. data/data/fulltext/redist/french_stem.c +1222 -0
  36. data/data/fulltext/redist/french_stem.h +16 -0
  37. data/data/fulltext/redist/german_stem.c +527 -0
  38. data/data/fulltext/redist/german_stem.h +16 -0
  39. data/jobs/export_chde_xls +20 -0
  40. data/jobs/export_csv +20 -0
  41. data/jobs/export_fachinfo_yaml +20 -0
  42. data/jobs/export_patinfo_yaml +20 -0
  43. data/jobs/export_yaml +20 -0
  44. data/jobs/import_dimdi +15 -0
  45. data/jobs/import_gkv +19 -0
  46. data/jobs/import_pharma24 +15 -0
  47. data/jobs/import_pharmnet +30 -0
  48. data/jobs/import_whocc +18 -0
  49. data/lib/fixes/singular.rb +9 -0
  50. data/lib/fixes/yaml.rb +13 -0
  51. data/lib/oddb.rb +13 -0
  52. data/lib/oddb/business/company.rb +18 -0
  53. data/lib/oddb/business/grant_download.rb +27 -0
  54. data/lib/oddb/business/invoice.rb +75 -0
  55. data/lib/oddb/config.rb +112 -0
  56. data/lib/oddb/currency.rb +6 -0
  57. data/lib/oddb/drugs.rb +16 -0
  58. data/lib/oddb/drugs/active_agent.rb +37 -0
  59. data/lib/oddb/drugs/atc.rb +53 -0
  60. data/lib/oddb/drugs/composition.rb +41 -0
  61. data/lib/oddb/drugs/ddd.rb +24 -0
  62. data/lib/oddb/drugs/dose.rb +107 -0
  63. data/lib/oddb/drugs/galenic_form.rb +21 -0
  64. data/lib/oddb/drugs/galenic_group.rb +17 -0
  65. data/lib/oddb/drugs/package.rb +111 -0
  66. data/lib/oddb/drugs/part.rb +55 -0
  67. data/lib/oddb/drugs/product.rb +25 -0
  68. data/lib/oddb/drugs/sequence.rb +68 -0
  69. data/lib/oddb/drugs/substance.rb +31 -0
  70. data/lib/oddb/drugs/substance_group.rb +13 -0
  71. data/lib/oddb/drugs/unit.rb +12 -0
  72. data/lib/oddb/export.rb +4 -0
  73. data/lib/oddb/export/csv.rb +94 -0
  74. data/lib/oddb/export/l10n_sessions.rb +30 -0
  75. data/lib/oddb/export/rss.rb +44 -0
  76. data/lib/oddb/export/server.rb +137 -0
  77. data/lib/oddb/export/xls.rb +127 -0
  78. data/lib/oddb/export/yaml.rb +212 -0
  79. data/lib/oddb/html/state/download.rb +13 -0
  80. data/lib/oddb/html/state/drugs/admin/package.rb +190 -0
  81. data/lib/oddb/html/state/drugs/admin/product.rb +56 -0
  82. data/lib/oddb/html/state/drugs/admin/sequence.rb +253 -0
  83. data/lib/oddb/html/state/drugs/ajax/explain_ddd_price.rb +19 -0
  84. data/lib/oddb/html/state/drugs/ajax/explain_price.rb +19 -0
  85. data/lib/oddb/html/state/drugs/ajax/global.rb +18 -0
  86. data/lib/oddb/html/state/drugs/ajax/package_infos.rb +19 -0
  87. data/lib/oddb/html/state/drugs/ajax/remote_infos.rb +19 -0
  88. data/lib/oddb/html/state/drugs/atc_browser.rb +39 -0
  89. data/lib/oddb/html/state/drugs/atc_guidelines.rb +21 -0
  90. data/lib/oddb/html/state/drugs/compare.rb +52 -0
  91. data/lib/oddb/html/state/drugs/download_export.rb +18 -0
  92. data/lib/oddb/html/state/drugs/downloads.rb +42 -0
  93. data/lib/oddb/html/state/drugs/fachinfo.rb +21 -0
  94. data/lib/oddb/html/state/drugs/feedback.rb +91 -0
  95. data/lib/oddb/html/state/drugs/global.rb +270 -0
  96. data/lib/oddb/html/state/drugs/init.rb +18 -0
  97. data/lib/oddb/html/state/drugs/login.rb +17 -0
  98. data/lib/oddb/html/state/drugs/package.rb +32 -0
  99. data/lib/oddb/html/state/drugs/patinfo.rb +21 -0
  100. data/lib/oddb/html/state/drugs/products.rb +51 -0
  101. data/lib/oddb/html/state/drugs/result.rb +125 -0
  102. data/lib/oddb/html/state/global.rb +206 -0
  103. data/lib/oddb/html/state/global_predefine.rb +17 -0
  104. data/lib/oddb/html/state/limit.rb +17 -0
  105. data/lib/oddb/html/state/login.rb +56 -0
  106. data/lib/oddb/html/state/paypal/checkout.rb +97 -0
  107. data/lib/oddb/html/state/paypal/collect.rb +19 -0
  108. data/lib/oddb/html/state/paypal/download.rb +61 -0
  109. data/lib/oddb/html/state/paypal/redirect.rb +18 -0
  110. data/lib/oddb/html/state/register_download.rb +24 -0
  111. data/lib/oddb/html/state/register_export.rb +38 -0
  112. data/lib/oddb/html/state/register_poweruser.rb +17 -0
  113. data/lib/oddb/html/state/viral/admin.rb +79 -0
  114. data/lib/oddb/html/state/viral/poweruser.rb +16 -0
  115. data/lib/oddb/html/util/annotated_list.rb +39 -0
  116. data/lib/oddb/html/util/know_it_all.rb +28 -0
  117. data/lib/oddb/html/util/known_user.rb +55 -0
  118. data/lib/oddb/html/util/lookandfeel.rb +698 -0
  119. data/lib/oddb/html/util/need_all_input.rb +29 -0
  120. data/lib/oddb/html/util/session.rb +84 -0
  121. data/lib/oddb/html/util/sort.rb +72 -0
  122. data/lib/oddb/html/util/unsaved_helper.rb +20 -0
  123. data/lib/oddb/html/util/validator.rb +59 -0
  124. data/lib/oddb/html/view/ajax/json.rb +22 -0
  125. data/lib/oddb/html/view/alpha_header.rb +28 -0
  126. data/lib/oddb/html/view/document.rb +117 -0
  127. data/lib/oddb/html/view/download.rb +33 -0
  128. data/lib/oddb/html/view/drugs/admin/package.rb +245 -0
  129. data/lib/oddb/html/view/drugs/admin/product.rb +104 -0
  130. data/lib/oddb/html/view/drugs/admin/sequence.rb +305 -0
  131. data/lib/oddb/html/view/drugs/ajax/explain_ddd_price.rb +87 -0
  132. data/lib/oddb/html/view/drugs/ajax/explain_price.rb +61 -0
  133. data/lib/oddb/html/view/drugs/ajax/package_infos.rb +105 -0
  134. data/lib/oddb/html/view/drugs/ajax/remote_infos.rb +44 -0
  135. data/lib/oddb/html/view/drugs/atc_browser.rb +68 -0
  136. data/lib/oddb/html/view/drugs/atc_guidelines.rb +94 -0
  137. data/lib/oddb/html/view/drugs/compare.rb +95 -0
  138. data/lib/oddb/html/view/drugs/download_export.rb +28 -0
  139. data/lib/oddb/html/view/drugs/downloads.rb +128 -0
  140. data/lib/oddb/html/view/drugs/fachinfo.rb +46 -0
  141. data/lib/oddb/html/view/drugs/feedback.rb +235 -0
  142. data/lib/oddb/html/view/drugs/init.rb +51 -0
  143. data/lib/oddb/html/view/drugs/legend.rb +24 -0
  144. data/lib/oddb/html/view/drugs/package.rb +403 -0
  145. data/lib/oddb/html/view/drugs/patinfo.rb +46 -0
  146. data/lib/oddb/html/view/drugs/products.rb +97 -0
  147. data/lib/oddb/html/view/drugs/result.rb +296 -0
  148. data/lib/oddb/html/view/drugs/search.rb +33 -0
  149. data/lib/oddb/html/view/drugs/template.rb +15 -0
  150. data/lib/oddb/html/view/foot.rb +52 -0
  151. data/lib/oddb/html/view/google.rb +23 -0
  152. data/lib/oddb/html/view/google_ads.rb +40 -0
  153. data/lib/oddb/html/view/head.rb +78 -0
  154. data/lib/oddb/html/view/limit.rb +109 -0
  155. data/lib/oddb/html/view/list.rb +59 -0
  156. data/lib/oddb/html/view/login.rb +38 -0
  157. data/lib/oddb/html/view/navigation.rb +67 -0
  158. data/lib/oddb/html/view/offset_header.rb +35 -0
  159. data/lib/oddb/html/view/paypal/collect.rb +95 -0
  160. data/lib/oddb/html/view/paypal/redirect.rb +51 -0
  161. data/lib/oddb/html/view/paypal/register_form.rb +149 -0
  162. data/lib/oddb/html/view/register_download.rb +29 -0
  163. data/lib/oddb/html/view/register_export.rb +29 -0
  164. data/lib/oddb/html/view/register_poweruser.rb +29 -0
  165. data/lib/oddb/html/view/rss/feedback.rb +64 -0
  166. data/lib/oddb/html/view/rss_preview.rb +61 -0
  167. data/lib/oddb/html/view/search.rb +104 -0
  168. data/lib/oddb/html/view/snapback.rb +24 -0
  169. data/lib/oddb/html/view/template.rb +56 -0
  170. data/lib/oddb/import/dimdi.rb +583 -0
  171. data/lib/oddb/import/excel.rb +45 -0
  172. data/lib/oddb/import/gkv.rb +463 -0
  173. data/lib/oddb/import/importer.rb +36 -0
  174. data/lib/oddb/import/pharma24.rb +211 -0
  175. data/lib/oddb/import/pharmnet.rb +1186 -0
  176. data/lib/oddb/import/rtf.rb +409 -0
  177. data/lib/oddb/import/whocc.rb +148 -0
  178. data/lib/oddb/import/xml.rb +15 -0
  179. data/lib/oddb/model.rb +179 -0
  180. data/lib/oddb/persistence.rb +22 -0
  181. data/lib/oddb/persistence/odba.rb +32 -0
  182. data/lib/oddb/persistence/odba/business/company.rb +13 -0
  183. data/lib/oddb/persistence/odba/business/grant_download.rb +14 -0
  184. data/lib/oddb/persistence/odba/business/invoice.rb +15 -0
  185. data/lib/oddb/persistence/odba/drugs/atc.rb +15 -0
  186. data/lib/oddb/persistence/odba/drugs/galenic_form.rb +18 -0
  187. data/lib/oddb/persistence/odba/drugs/galenic_group.rb +13 -0
  188. data/lib/oddb/persistence/odba/drugs/package.rb +25 -0
  189. data/lib/oddb/persistence/odba/drugs/product.rb +13 -0
  190. data/lib/oddb/persistence/odba/drugs/sequence.rb +21 -0
  191. data/lib/oddb/persistence/odba/drugs/substance.rb +21 -0
  192. data/lib/oddb/persistence/odba/drugs/substance_group.rb +13 -0
  193. data/lib/oddb/persistence/odba/drugs/unit.rb +13 -0
  194. data/lib/oddb/persistence/odba/export.rb +26 -0
  195. data/lib/oddb/persistence/odba/model.rb +68 -0
  196. data/lib/oddb/persistence/odba/text/document.rb +11 -0
  197. data/lib/oddb/persistence/odba/util/code.rb +11 -0
  198. data/lib/oddb/persistence/odba/util/m10l_document.rb +13 -0
  199. data/lib/oddb/persistence/og.rb +16 -0
  200. data/lib/oddb/persistence/og/drugs/composition.rb +14 -0
  201. data/lib/oddb/persistence/og/drugs/product.rb +14 -0
  202. data/lib/oddb/persistence/og/drugs/sequence.rb +15 -0
  203. data/lib/oddb/persistence/og/model.rb +25 -0
  204. data/lib/oddb/persistence/og/util/multilingual.rb +13 -0
  205. data/lib/oddb/redist/rtf_tools/reader.rb +139 -0
  206. data/lib/oddb/remote/business/company.rb +17 -0
  207. data/lib/oddb/remote/drugs/active_agent.rb +27 -0
  208. data/lib/oddb/remote/drugs/atc.rb +31 -0
  209. data/lib/oddb/remote/drugs/dose.rb +8 -0
  210. data/lib/oddb/remote/drugs/galenic_form.rb +24 -0
  211. data/lib/oddb/remote/drugs/package.rb +128 -0
  212. data/lib/oddb/remote/drugs/part.rb +30 -0
  213. data/lib/oddb/remote/drugs/substance.rb +20 -0
  214. data/lib/oddb/remote/drugs/unit.rb +20 -0
  215. data/lib/oddb/remote/object.rb +36 -0
  216. data/lib/oddb/text/chapter.rb +23 -0
  217. data/lib/oddb/text/document.rb +42 -0
  218. data/lib/oddb/text/format.rb +37 -0
  219. data/lib/oddb/text/paragraph.rb +53 -0
  220. data/lib/oddb/text/picture.rb +89 -0
  221. data/lib/oddb/text/table.rb +68 -0
  222. data/lib/oddb/util.rb +9 -0
  223. data/lib/oddb/util/annotated_list.rb +37 -0
  224. data/lib/oddb/util/code.rb +69 -0
  225. data/lib/oddb/util/comparison.rb +36 -0
  226. data/lib/oddb/util/download.rb +17 -0
  227. data/lib/oddb/util/exporter.rb +8 -0
  228. data/lib/oddb/util/feedback.rb +23 -0
  229. data/lib/oddb/util/ipn.rb +53 -0
  230. data/lib/oddb/util/job.rb +23 -0
  231. data/lib/oddb/util/logger.rb +20 -0
  232. data/lib/oddb/util/m10l_document.rb +41 -0
  233. data/lib/oddb/util/mail.rb +87 -0
  234. data/lib/oddb/util/money.rb +64 -0
  235. data/lib/oddb/util/multilingual.rb +70 -0
  236. data/lib/oddb/util/quanty.rb +3 -0
  237. data/lib/oddb/util/quanty/fact.rb +242 -0
  238. data/lib/oddb/util/quanty/main.rb +164 -0
  239. data/lib/oddb/util/quanty/parse.rb +872 -0
  240. data/lib/oddb/util/quanty/units.dump +0 -0
  241. data/lib/oddb/util/server.rb +150 -0
  242. data/lib/oddb/util/smtp_tls.rb +58 -0
  243. data/lib/oddb/util/updater.rb +161 -0
  244. data/lib/oddb/util/ydim.rb +110 -0
  245. data/lib/oddb/util/yus.rb +46 -0
  246. data/test/business/test_company.rb +29 -0
  247. data/test/business/test_grant_download.rb +29 -0
  248. data/test/drugs/test_active_agent.rb +53 -0
  249. data/test/drugs/test_atc.rb +54 -0
  250. data/test/drugs/test_composition.rb +88 -0
  251. data/test/drugs/test_ddd.rb +22 -0
  252. data/test/drugs/test_dose.rb +189 -0
  253. data/test/drugs/test_galenic_form.rb +41 -0
  254. data/test/drugs/test_package.rb +172 -0
  255. data/test/drugs/test_part.rb +32 -0
  256. data/test/drugs/test_product.rb +31 -0
  257. data/test/drugs/test_sequence.rb +140 -0
  258. data/test/drugs/test_substance.rb +51 -0
  259. data/test/drugs/test_substance_group.rb +27 -0
  260. data/test/export/test_rss.rb +86 -0
  261. data/test/export/test_server.rb +163 -0
  262. data/test/export/test_xls.rb +146 -0
  263. data/test/export/test_yaml.rb +120 -0
  264. data/test/import/data/csv/products.csv +11 -0
  265. data/test/import/data/html/dimdi_index.html +400 -0
  266. data/test/import/data/html/gkv/Befreiungsliste_Arzneimittel_Versicherte.gkvnet +508 -0
  267. data/test/import/data/html/pharma24/1337397.html +754 -0
  268. data/test/import/data/html/pharma24/842756.html +570 -0
  269. data/test/import/data/html/pharma24/ac-page-10.html +2999 -0
  270. data/test/import/data/html/pharma24/ac-page-11.html +2999 -0
  271. data/test/import/data/html/pharma24/ac-page-12.html +2999 -0
  272. data/test/import/data/html/pharma24/ac-page-13.html +2999 -0
  273. data/test/import/data/html/pharma24/ac-page-14.html +2999 -0
  274. data/test/import/data/html/pharma24/ac-page-15.html +3011 -0
  275. data/test/import/data/html/pharma24/ac-page-16.html +3050 -0
  276. data/test/import/data/html/pharma24/ac-page-17.html +3285 -0
  277. data/test/import/data/html/pharma24/ac-page-18.html +3109 -0
  278. data/test/import/data/html/pharma24/ac-page-19.html +3126 -0
  279. data/test/import/data/html/pharma24/ac-page-2.html +3005 -0
  280. data/test/import/data/html/pharma24/ac-page-20.html +3007 -0
  281. data/test/import/data/html/pharma24/ac-page-21.html +2999 -0
  282. data/test/import/data/html/pharma24/ac-page-22.html +2999 -0
  283. data/test/import/data/html/pharma24/ac-page-23.html +3055 -0
  284. data/test/import/data/html/pharma24/ac-page-24.html +2999 -0
  285. data/test/import/data/html/pharma24/ac-page-25.html +3004 -0
  286. data/test/import/data/html/pharma24/ac-page-26.html +2999 -0
  287. data/test/import/data/html/pharma24/ac-page-27.html +3167 -0
  288. data/test/import/data/html/pharma24/ac-page-28.html +3236 -0
  289. data/test/import/data/html/pharma24/ac-page-29.html +3110 -0
  290. data/test/import/data/html/pharma24/ac-page-3.html +2999 -0
  291. data/test/import/data/html/pharma24/ac-page-30.html +2999 -0
  292. data/test/import/data/html/pharma24/ac-page-31.html +2999 -0
  293. data/test/import/data/html/pharma24/ac-page-32.html +2999 -0
  294. data/test/import/data/html/pharma24/ac-page-33.html +3001 -0
  295. data/test/import/data/html/pharma24/ac-page-34.html +2999 -0
  296. data/test/import/data/html/pharma24/ac-page-35.html +2999 -0
  297. data/test/import/data/html/pharma24/ac-page-36.html +2999 -0
  298. data/test/import/data/html/pharma24/ac-page-37.html +2999 -0
  299. data/test/import/data/html/pharma24/ac-page-38.html +3003 -0
  300. data/test/import/data/html/pharma24/ac-page-39.html +2999 -0
  301. data/test/import/data/html/pharma24/ac-page-4.html +2999 -0
  302. data/test/import/data/html/pharma24/ac-page-40.html +2999 -0
  303. data/test/import/data/html/pharma24/ac-page-41.html +2999 -0
  304. data/test/import/data/html/pharma24/ac-page-42.html +2999 -0
  305. data/test/import/data/html/pharma24/ac-page-43.html +2999 -0
  306. data/test/import/data/html/pharma24/ac-page-44.html +2999 -0
  307. data/test/import/data/html/pharma24/ac-page-45.html +2999 -0
  308. data/test/import/data/html/pharma24/ac-page-46.html +2999 -0
  309. data/test/import/data/html/pharma24/ac-page-47.html +2999 -0
  310. data/test/import/data/html/pharma24/ac-page-48.html +2999 -0
  311. data/test/import/data/html/pharma24/ac-page-49.html +2999 -0
  312. data/test/import/data/html/pharma24/ac-page-5.html +3168 -0
  313. data/test/import/data/html/pharma24/ac-page-50.html +2999 -0
  314. data/test/import/data/html/pharma24/ac-page-51.html +2999 -0
  315. data/test/import/data/html/pharma24/ac-page-52.html +3003 -0
  316. data/test/import/data/html/pharma24/ac-page-53.html +2999 -0
  317. data/test/import/data/html/pharma24/ac-page-54.html +3095 -0
  318. data/test/import/data/html/pharma24/ac-page-55.html +3041 -0
  319. data/test/import/data/html/pharma24/ac-page-56.html +2999 -0
  320. data/test/import/data/html/pharma24/ac-page-57.html +3001 -0
  321. data/test/import/data/html/pharma24/ac-page-58.html +3001 -0
  322. data/test/import/data/html/pharma24/ac-page-59.html +2999 -0
  323. data/test/import/data/html/pharma24/ac-page-6.html +3072 -0
  324. data/test/import/data/html/pharma24/ac-page-60.html +3001 -0
  325. data/test/import/data/html/pharma24/ac-page-61.html +3005 -0
  326. data/test/import/data/html/pharma24/ac-page-62.html +2999 -0
  327. data/test/import/data/html/pharma24/ac-page-63.html +3007 -0
  328. data/test/import/data/html/pharma24/ac-page-64.html +3007 -0
  329. data/test/import/data/html/pharma24/ac-page-65.html +2999 -0
  330. data/test/import/data/html/pharma24/ac-page-66.html +3011 -0
  331. data/test/import/data/html/pharma24/ac-page-67.html +3026 -0
  332. data/test/import/data/html/pharma24/ac-page-68.html +2999 -0
  333. data/test/import/data/html/pharma24/ac-page-69.html +3010 -0
  334. data/test/import/data/html/pharma24/ac-page-7.html +2999 -0
  335. data/test/import/data/html/pharma24/ac-page-70.html +3192 -0
  336. data/test/import/data/html/pharma24/ac-page-71.html +3133 -0
  337. data/test/import/data/html/pharma24/ac-page-72.html +2999 -0
  338. data/test/import/data/html/pharma24/ac-page-73.html +3227 -0
  339. data/test/import/data/html/pharma24/ac-page-74.html +3241 -0
  340. data/test/import/data/html/pharma24/ac-page-75.html +3227 -0
  341. data/test/import/data/html/pharma24/ac-page-76.html +3244 -0
  342. data/test/import/data/html/pharma24/ac-page-77.html +1164 -0
  343. data/test/import/data/html/pharma24/ac-page-8.html +2999 -0
  344. data/test/import/data/html/pharma24/ac-page-9.html +2999 -0
  345. data/test/import/data/html/pharma24/ac.html +2999 -0
  346. data/test/import/data/html/pharmnet/display.html +662 -0
  347. data/test/import/data/html/pharmnet/display1.html +625 -0
  348. data/test/import/data/html/pharmnet/display2.html +625 -0
  349. data/test/import/data/html/pharmnet/display3.html +625 -0
  350. data/test/import/data/html/pharmnet/display_tramal.html +634 -0
  351. data/test/import/data/html/pharmnet/empty_result.html +395 -0
  352. data/test/import/data/html/pharmnet/gate.html +246 -0
  353. data/test/import/data/html/pharmnet/index.html +258 -0
  354. data/test/import/data/html/pharmnet/paged_result_1.html +401 -0
  355. data/test/import/data/html/pharmnet/paged_result_2.html +401 -0
  356. data/test/import/data/html/pharmnet/result.html +401 -0
  357. data/test/import/data/html/pharmnet/search.html +865 -0
  358. data/test/import/data/html/pharmnet/search_filtered.html +182 -0
  359. data/test/import/data/html/whocc/A.html +56 -0
  360. data/test/import/data/html/whocc/A03.html +48 -0
  361. data/test/import/data/html/whocc/A03AB.html +48 -0
  362. data/test/import/data/html/whocc/A06AA.html +47 -0
  363. data/test/import/data/html/whocc/C03.html +47 -0
  364. data/test/import/data/html/whocc/login.html +77 -0
  365. data/test/import/data/mail/csv.mail +81 -0
  366. data/test/import/data/rtf/pharmnet/aarane.pi.rtf +648 -0
  367. data/test/import/data/rtf/pharmnet/ace_hemmer_ratio.pi.rtf +324 -0
  368. data/test/import/data/rtf/pharmnet/ace_hemmer_ratio.rtf +4816 -0
  369. data/test/import/data/rtf/pharmnet/acemetacin.pi.rtf +388 -0
  370. data/test/import/data/rtf/pharmnet/acemit.pi.rtf +240 -0
  371. data/test/import/data/rtf/pharmnet/acerbon.pi.rtf +1257 -0
  372. data/test/import/data/rtf/pharmnet/acetylcystein.pi.rtf +323 -0
  373. data/test/import/data/rtf/pharmnet/aciclo.pi.rtf +287 -0
  374. data/test/import/data/rtf/pharmnet/aciclovir.pi.rtf +236 -0
  375. data/test/import/data/rtf/pharmnet/actrapid.pi.rtf +322 -0
  376. data/test/import/data/rtf/pharmnet/amlodipin.pi.rtf +452 -0
  377. data/test/import/data/rtf/pharmnet/amlodipin.rtf +473 -0
  378. data/test/import/data/rtf/pharmnet/aspirin.pi.rtf +313 -0
  379. data/test/import/data/rtf/pharmnet/aspirin.rtf +781 -0
  380. data/test/import/data/rtf/pharmnet/baymycard.pi.rtf +447 -0
  381. data/test/import/data/rtf/pharmnet/omeprazol.pi.rtf +510 -0
  382. data/test/import/data/rtf/pharmnet/omeprazol.rtf +9216 -0
  383. data/test/import/data/rtf/pharmnet/paroxetin.pi.rtf +678 -0
  384. data/test/import/data/rtf/pharmnet/selegilin.pi.rtf +312 -0
  385. data/test/import/data/rtf/pharmnet/selegilin.rtf +683 -0
  386. data/test/import/data/rtf/pharmnet/valium.pi.rtf +387 -0
  387. data/test/import/data/txt/gkv/gkv_p1.txt +17 -0
  388. data/test/import/data/xls/darform_010706.xls +0 -0
  389. data/test/import/data/xls/fb010706.xls +0 -0
  390. data/test/import/data/xls/liste_zuzahlungsbefreite_arzneimittel_suchfunktion.xls +0 -0
  391. data/test/import/data/xls/wirkkurz_010406.xls +0 -0
  392. data/test/import/data/xml/ATC_2006.xml +47 -0
  393. data/test/import/data/xml/ATC_2006_ddd.xml +35 -0
  394. data/test/import/test_dimdi.rb +323 -0
  395. data/test/import/test_excel.rb +31 -0
  396. data/test/import/test_gkv.rb +260 -0
  397. data/test/import/test_pharma24.rb +112 -0
  398. data/test/import/test_pharmnet.rb +980 -0
  399. data/test/import/test_rtf.rb +37 -0
  400. data/test/import/test_whocc.rb +314 -0
  401. data/test/remote/drugs/test_active_agent.rb +36 -0
  402. data/test/selenium/selenium-server.jar +0 -0
  403. data/test/selenium/test_atc_browser.rb +121 -0
  404. data/test/selenium/test_atc_guidelines.rb +95 -0
  405. data/test/selenium/test_collect.rb +137 -0
  406. data/test/selenium/test_compare.rb +294 -0
  407. data/test/selenium/test_fachinfo.rb +128 -0
  408. data/test/selenium/test_feedback.rb +192 -0
  409. data/test/selenium/test_init.rb +64 -0
  410. data/test/selenium/test_limit.rb +304 -0
  411. data/test/selenium/test_login.rb +67 -0
  412. data/test/selenium/test_package.rb +516 -0
  413. data/test/selenium/test_patinfo.rb +128 -0
  414. data/test/selenium/test_product.rb +80 -0
  415. data/test/selenium/test_products.rb +141 -0
  416. data/test/selenium/test_search.rb +933 -0
  417. data/test/selenium/test_sequence.rb +513 -0
  418. data/test/selenium/unit.rb +190 -0
  419. data/test/stub/http_server.rb +144 -0
  420. data/test/stub/model.rb +173 -0
  421. data/test/suite.rb +15 -0
  422. data/test/test_model.rb +83 -0
  423. data/test/util/test_code.rb +74 -0
  424. data/test/util/test_ipn.rb +117 -0
  425. data/test/util/test_mail.rb +85 -0
  426. data/test/util/test_multilingual.rb +97 -0
  427. data/test/util/test_server.rb +94 -0
  428. data/test/util/test_updater.rb +130 -0
  429. data/test/util/test_ydim.rb +115 -0
  430. data/test/util/test_yus.rb +79 -0
  431. metadata +568 -0
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::AtcGuidelines -- de.oddb.org -- 09.03.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/drugs/global'
5
+ require 'oddb/html/view/drugs/atc_guidelines'
6
+
7
+ module ODDB
8
+ module Html
9
+ module State
10
+ module Drugs
11
+ class AtcGuidelines < Global
12
+ LIMIT = true
13
+ VIEW = View::Drugs::AtcGuidelines
14
+ def direct_event
15
+ [:ddd, :code, @model.code]
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Comparison -- de.oddb.org -- 14.02.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/util/comparison'
5
+ require 'oddb/html/state/global_predefine'
6
+ require 'oddb/html/util/sort'
7
+ require 'oddb/html/view/drugs/compare'
8
+
9
+ module ODDB
10
+ module Html
11
+ module State
12
+ module Drugs
13
+ class Compare < Global
14
+ include Util::PackageSort
15
+ LIMIT = true
16
+ VIEW = View::Drugs::Compare
17
+ def init
18
+ original = @model.origin
19
+ @model.collect! { |package|
20
+ ODDB::Util::Comparison.new(package, original) }
21
+ sort_by(:product)
22
+ sort_by(:difference)
23
+ sort
24
+ end
25
+ def _compare(code)
26
+ if(code == @model.query)
27
+ sort
28
+ else
29
+ super
30
+ end
31
+ end
32
+ def direct_event
33
+ direct_event = [:compare]
34
+ if(code = @model.query)
35
+ direct_event.push(:query, code)
36
+ end
37
+ direct_event
38
+ end
39
+ end
40
+ class CompareRemote < Compare
41
+ def direct_event
42
+ direct_event = [:compare_remote]
43
+ if((origin = @model.origin) && (uid = origin.uid))
44
+ direct_event.push(:uid, uid)
45
+ end
46
+ direct_event
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::DownloadExport -- de.oddb.org -- 28.07.2008 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/view/drugs/download_export'
6
+
7
+ module ODDB
8
+ module Html
9
+ module State
10
+ module Drugs
11
+ class DownloadExport < Global
12
+ VIEW = View::Drugs::DownloadExport
13
+ VOLATILE = true
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,42 @@
1
+ require 'oddb/html/state/global_predefine'
2
+ require 'oddb/html/view/drugs/downloads'
3
+
4
+ module ODDB
5
+ module Html
6
+ module State
7
+ module Drugs
8
+ class Downloads < Drugs::Global
9
+ class FileInfo
10
+ attr_reader :name
11
+ def initialize name
12
+ @name = name
13
+ end
14
+ def file_path
15
+ File.join ODDB.config.export_dir, @name
16
+ end
17
+ def price times=1
18
+ ODDB.config.prices["org.oddb.de.download.#{times}"][name]
19
+ end
20
+ def size
21
+ File.size uncompressed? ? file_path : file_path + '.gz'
22
+ end
23
+ def uncompressed?
24
+ ODDB.config.download_uncompressed.include? name
25
+ end
26
+ end
27
+ DIRECT_EVENT = :downloads
28
+ VIEW = View::Drugs::Downloads
29
+ def init
30
+ prices = ODDB.config.prices['org.oddb.de.download.1']
31
+ @model = Dir.entries(ODDB.config.export_dir).select do |name|
32
+ prices[name] end.collect do |name| FileInfo.new name end
33
+ super
34
+ end
35
+ def downloads
36
+ self
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Fachinfo -- de.oddb.org -- 30.10.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/view/drugs/fachinfo'
6
+
7
+ module ODDB
8
+ module Html
9
+ module State
10
+ module Drugs
11
+ class Fachinfo < Global
12
+ LIMIT = true
13
+ VIEW = View::Drugs::Fachinfo
14
+ def direct_event
15
+ [:fachinfo, [:uid, @model.uid]]
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Feedback -- de.oddb.org -- 06.12.2007 -- hwyss@ywesee.com
3
+
4
+ require 'delegate'
5
+ require 'oddb/html/state/global_predefine'
6
+ require 'oddb/html/util/need_all_input'
7
+ require 'oddb/html/view/drugs/feedback'
8
+ require 'oddb/util/feedback'
9
+
10
+ module ODDB
11
+ module Html
12
+ module State
13
+ module Drugs
14
+ class Feedback < Global
15
+ include Util::NeedAllInput
16
+ class Feedbackable < SimpleDelegator
17
+ INDEX_STEP = 10
18
+ attr_accessor :index
19
+ attr_reader :current, :item
20
+ def initialize(item)
21
+ @item = item
22
+ @index = 0
23
+ @current = ODDB::Util::Feedback.new
24
+ super
25
+ end
26
+ def created?
27
+ @item.feedbacks.include? @current
28
+ end
29
+ end
30
+ LIMIT = true
31
+ VIEW = View::Drugs::Feedback
32
+ attr_reader :passed_turing_test
33
+ def init
34
+ @model = Feedbackable.new(@model)
35
+ super
36
+ end
37
+ def direct_event
38
+ direct_event = [:feedback]
39
+ if(code = @model.code(:cid, 'DE'))
40
+ direct_event.push([:pzn, code.value])
41
+ end
42
+ direct_event
43
+ end
44
+ def _feedback(code)
45
+ if(@model.code(:cid, 'DE') == code || @model.uid == code)
46
+ self
47
+ else
48
+ super
49
+ end
50
+ end
51
+ def update
52
+ mandatory = [:name, :email, :email_public, :item_good_experience,
53
+ :item_recommended, :item_good_impression, :item_helps]
54
+ unless @passed_turing_test
55
+ mandatory.push :captcha
56
+ end
57
+ keys = mandatory + [:message]
58
+ hash = user_input(keys, mandatory)
59
+ if(@passed_turing_test)
60
+ # do nothing
61
+ elsif((candidates = hash[:captcha]) && candidates.any? { |key, word|
62
+ @session.lookandfeel.captcha.valid_answer? key, word })
63
+ @passed_turing_test = true
64
+ else
65
+ @errors.store(:captcha, create_error('e_failed_turing_test',
66
+ :captcha, nil))
67
+ end
68
+ unless(error?)
69
+ feedback = @model.current
70
+ info_key = (@model.created?) ? :feedback_changed : :feedback_saved
71
+
72
+ hash.each { |key, value|
73
+ writer = "#{key}="
74
+ if(feedback.respond_to? writer)
75
+ feedback.send writer, value
76
+ end
77
+ }
78
+ feedback.time = Time.now
79
+ feedback.item = @model.item
80
+ feedback.save
81
+
82
+ @session.update_feedback_rss_feed
83
+ @infos = [info_key]
84
+ end
85
+ self
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,270 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Drugs::Global -- de.oddb.org -- 27.10.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/business/company'
5
+ require 'oddb/drugs/package'
6
+ require 'oddb/remote/drugs/package'
7
+ require 'oddb/html/state/global'
8
+ require 'oddb/html/state/drugs/ajax/explain_price'
9
+ require 'oddb/html/state/drugs/ajax/explain_ddd_price'
10
+ require 'oddb/html/state/drugs/ajax/package_infos'
11
+ require 'oddb/html/state/drugs/ajax/remote_infos'
12
+ require 'oddb/html/state/drugs/atc_guidelines'
13
+ require 'oddb/html/state/drugs/compare'
14
+ require 'oddb/html/state/drugs/downloads'
15
+ require 'oddb/html/state/drugs/init'
16
+ require 'oddb/html/state/drugs/login'
17
+ require 'oddb/html/state/drugs/fachinfo'
18
+ require 'oddb/html/state/drugs/feedback'
19
+ require 'oddb/html/state/drugs/package'
20
+ require 'oddb/html/state/drugs/patinfo'
21
+ require 'oddb/html/state/drugs/products'
22
+ require 'oddb/html/state/drugs/result'
23
+ require 'oddb/html/util/know_it_all'
24
+ require 'oddb/util/annotated_list'
25
+ require 'ostruct'
26
+
27
+ module ODDB
28
+ module Html
29
+ module State
30
+ module Drugs
31
+ module Events
32
+ def compare_remote
33
+ if((uid = @session.user_input(:uid)) \
34
+ && (package = _remote_package(uid)))
35
+ result = ODDB::Util::AnnotatedList.new(package.comparables)
36
+ result.origin = package
37
+ result.query = uid
38
+ CompareRemote.new(@session, result)
39
+ end
40
+ end
41
+ def _compare(code)
42
+ if(package = _package_by_code(code))
43
+ result = ODDB::Util::AnnotatedList.new(package.comparables)
44
+ if(@session.lookandfeel.enabled?(:remote_databases, false))
45
+ result.concat(_remote_comparables(package))
46
+ end
47
+ result.origin = package
48
+ result.query = code
49
+ Compare.new(@session, result)
50
+ end
51
+ end
52
+ def _complete(result)
53
+ atcs = {}
54
+ result.dup.each { |package|
55
+ if((atc = package.atc) && !atcs[atc])
56
+ atcs.store(atc, true)
57
+ result.concat(atc.packages)
58
+ end
59
+ }
60
+ result.uniq!
61
+ end
62
+ def ddd
63
+ if((code = @session.user_input(:code)) \
64
+ && (atc = ODDB::Drugs::Atc.find_by_code(code)))
65
+ AtcGuidelines.new(@session, atc)
66
+ end
67
+ end
68
+ def _explain_ddd_price(code, idx)
69
+ if((package = _package_by_code(code)) \
70
+ && (ddd = package.ddds.at(idx)))
71
+ Ajax::ExplainDddPrice.new(@session,
72
+ :ddd => ddd, :package => package)
73
+ end
74
+ end
75
+ def _explain_price(code)
76
+ if(package = _package_by_code(code))
77
+ Ajax::ExplainPrice.new(@session, package.price(:public))
78
+ end
79
+ end
80
+ def _fachinfo(uid)
81
+ if(sequence = ODDB::Drugs::Sequence.find_by_uid(uid))
82
+ Fachinfo.new(@session, sequence)
83
+ end
84
+ end
85
+ def _feedback(code)
86
+ if(item = _package_by_code(code) || _sequence_by_code(code))
87
+ Feedback.new(@session, item)
88
+ end
89
+ end
90
+ def limited?(*args)
91
+ super && !@session.allowed?('view', ODDB.config.auth_domain)
92
+ end
93
+ def navigation
94
+ [:products, :atc_browser, :downloads].concat(super)
95
+ end
96
+ def _package(code)
97
+ if(package = _package_by_code(code))
98
+ Package.new(@session, package)
99
+ end
100
+ end
101
+ def _package_by_code(code)
102
+ ODDB::Drugs::Package.find_by_code(:type => 'cid',
103
+ :value => code,
104
+ :country => 'DE')
105
+ end
106
+ def _package_infos(code)
107
+ if(package = _package_by_code(code))
108
+ Ajax::PackageInfos.new(@session, package)
109
+ end
110
+ end
111
+ def _patinfo(uid)
112
+ if(sequence = ODDB::Drugs::Sequence.find_by_uid(uid))
113
+ Patinfo.new(@session, sequence)
114
+ end
115
+ end
116
+ def _products(query)
117
+ result = ODDB::Util::AnnotatedList.new
118
+ result.query = query
119
+ if(query)
120
+ if(query == '0-9')
121
+ alpha, others = partitioned_keys(ODDB::Drugs::Product.name_keys(1))
122
+ others.each { |key|
123
+ result.concat(ODDB::Drugs::Product.search_by_name(key))
124
+ }
125
+ else
126
+ result.concat(ODDB::Drugs::Product.search_by_name(query.downcase))
127
+ end
128
+ end
129
+ Products.new(@session, result)
130
+ end
131
+ def _remote(uri, &block)
132
+ block.call DRbObject.new(nil, uri)
133
+ rescue StandardError => e
134
+ warn e.message
135
+ end
136
+ def _remote_comparables(package)
137
+ if(atc = package.atc)
138
+ _remote_packages { |remote|
139
+ remote.remote_comparables(ODBA::DRbWrapper.new(package))
140
+ }
141
+ end
142
+ end
143
+ def _remote_infos(uid)
144
+ if(pac = _remote_package(uid))
145
+ Ajax::RemoteInfos.new(@session, pac)
146
+ end
147
+ end
148
+ def _remote_package(id)
149
+ source, ref = id.split('.', 2)
150
+ uri = ODDB.config.remote_databases.at(source.to_i)
151
+ if(pac = DRbObject._load(Marshal.dump([uri, ref])))
152
+ rate = _remote(uri) { |remote|
153
+ remote.get_currency_rate("EUR") }
154
+ Remote::Drugs::Package.new(source, pac, rate, _tax_factor)
155
+ end
156
+ end
157
+ def _remote_packages(&block)
158
+ result = []
159
+ ODDB.config.remote_databases.each_with_index { |uri, source|
160
+ _remote(uri) { |remote|
161
+ rate = remote.get_currency_rate("EUR")
162
+ block.call(remote).each { |pac|
163
+ result.push Remote::Drugs::Package.new(source, pac, rate,
164
+ _tax_factor)
165
+ }
166
+ }
167
+ }
168
+ result
169
+ end
170
+ def _tax_factor
171
+ @session.lookandfeel.tax_factor
172
+ end
173
+ def search
174
+ _search(@session.persistent_user_input(:query),
175
+ @session.persistent_user_input(:dstype) || ODDB.config.default_dstype)
176
+ end
177
+ def _search(query, dstype)
178
+ result = _search_local(query, dstype)
179
+ if(@session.lookandfeel.enabled?(:remote_databases, false))
180
+ result.concat(_search_remote(query))
181
+ end
182
+ Result.new(@session, result)
183
+ end
184
+ def _search_append_products(query, result)
185
+ table = {}
186
+ result.each do |package|
187
+ table.store package.product.uid, true
188
+ end
189
+ products = ODDB::Drugs::Product.search_by_name(query)
190
+ products.reject! do |prod| table[prod.uid] end
191
+ products.collect! do |prod|
192
+ Util::KnowItAll.new prod, :active_agents => [], :parts => [], :ddds => []
193
+ end
194
+ result.concat products
195
+ end
196
+ def _search_append_sequences(query, result)
197
+ table = {}
198
+ result.each do |package|
199
+ table.store package.sequence.uid, true
200
+ end
201
+ sequences = ODDB::Drugs::Sequence.search_by_product(query)
202
+ sequences.reject! do |seq| table[seq.uid] end
203
+ sequences.collect! do |seq|
204
+ parts = seq.compositions.collect do |comp|
205
+ Util::KnowItAll.new nil, :unit => comp.galenic_form
206
+ end
207
+ Util::KnowItAll.new seq, :active_agents => [], :parts => parts,
208
+ :ddds => [], :sequence => seq
209
+ end
210
+ result.concat sequences
211
+ end
212
+ def _search_by(key, query, result)
213
+ result.concat ODDB::Drugs::Package.send("search_by_#{key}", query)
214
+ end
215
+ def _search_local(query, dstype)
216
+ result = ODDB::Util::AnnotatedList.new
217
+ result.query = query
218
+ result.dstype = dstype || ODDB.config.default_dstype
219
+ if(query.length < 3)
220
+ result.error = :e_query_short
221
+ else
222
+ case dstype
223
+ when 'company'
224
+ _search_by(:company, query, result)
225
+ when 'substance'
226
+ _search_by(:substance, query, result)
227
+ when 'compare'
228
+ _search_by(:atc, query, result)
229
+ _search_by(:company, query, result) if result.empty?
230
+ _search_by(:substance, query, result) if result.empty?
231
+ _complete(_search_by(:name, query, result)) if result.empty?
232
+ _complete(_search_by(:product, query, result)) if result.empty?
233
+ when 'indication'
234
+ seqs = ODDB::Drugs::Sequence.search_by_fachinfo_indications_de(query)
235
+ seqs.each { |seq| result.concat seq.packages }
236
+ else
237
+ _search_by(:name, query, result)
238
+ _search_by(:product, query, result) if result.empty?
239
+ _search_append_sequences(query, result)
240
+ _search_append_products(query, result)
241
+ end
242
+ end
243
+ result
244
+ end
245
+ def _search_remote(query)
246
+ _remote_packages { |remote| remote.remote_packages(query) }
247
+ end
248
+ def _sequence_by_code(code)
249
+ ODDB::Drugs::Sequence.find_by_uid(code)
250
+ end
251
+ end
252
+ class Global < State::Global
253
+ class << self
254
+ def transparent_login(*events)
255
+ events.each { |event|
256
+ define_method(event) {
257
+ state = trigger(:login)
258
+ state.desired_input = @session.valid_input.dup
259
+ state
260
+ }
261
+ }
262
+ end
263
+ end
264
+ include Events
265
+ transparent_login :_product, :_sequence
266
+ end
267
+ end
268
+ end
269
+ end
270
+ end