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,25 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::Product -- de.oddb.org -- 09.08.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+
6
+ module ODDB
7
+ module Drugs
8
+ class Product < Model
9
+ belongs_to :company
10
+ has_many :sequences, on_delete(:cascade), delegates(:substances, :packages)
11
+ multilingual :name
12
+ def initialize
13
+ @sequences = []
14
+ end
15
+ def atcs
16
+ sequences.collect { |sequence| sequence.atc }.compact.uniq
17
+ end
18
+ def packages
19
+ sequences.inject([]) { |memo, seq|
20
+ memo.concat(seq.packages)
21
+ }
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::Sequence -- de.oddb.org -- 31.08.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+
6
+ module ODDB
7
+ module Drugs
8
+ class Sequence < Model
9
+ attr_accessor :marketable, :fachinfo_url, :patinfo_url
10
+ belongs_to :atc, delegates(:ddds)
11
+ belongs_to :product, delegates(:company)
12
+ has_many :compositions,
13
+ delegates(:active_agents, :doses, :substances),
14
+ on_delete(:cascade)
15
+ has_many :feedbacks, on_delete(:cascade)
16
+ has_many :packages, on_delete(:cascade), on_save(:cascade)
17
+ is_coded
18
+ multilingual :name
19
+ m10l_document :fachinfo
20
+ m10l_document :patinfo
21
+ def cascading_name(language)
22
+ str = name.send language
23
+ if str.to_s.empty? && product
24
+ str = product.name.send language
25
+ end
26
+ str
27
+ end
28
+ def comparable?(other)
29
+ other.is_a?(Sequence) && compositions == other.compositions
30
+ end
31
+ def comparables
32
+ atc.sequences.select { |sequence|
33
+ comparable?(sequence)
34
+ }
35
+ end
36
+ def ddds # ddds depend on the sequence's Route of Administration
37
+ forms = galenic_forms
38
+ if(forms.size == 1 && (atc_class = atc) \
39
+ && (group = forms.first.group) \
40
+ && (roa = group.administration))
41
+ atc_class.ddds.select { |ddd|
42
+ ddd.administration == roa }
43
+ else
44
+ []
45
+ end
46
+ end
47
+ def galenic_forms
48
+ compositions.collect { |comp| comp.galenic_form }.compact.uniq
49
+ end
50
+ def identical?(other)
51
+ comparable?(other) && other.product == product \
52
+ && compositions.each_with_index { |comp, idx|
53
+ unless(comp.galenic_form.eql?(other.compositions.at(idx).galenic_form))
54
+ return false
55
+ end
56
+ } && true
57
+ end
58
+ def include?(substance, dose=nil, unit=nil)
59
+ compositions.any? { |comp|
60
+ comp.include?(substance, dose, unit)
61
+ }
62
+ end
63
+ def registration
64
+ code(:registration, 'EU')
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::Substance -- de.oddb.org -- 12.09.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+
6
+ module ODDB
7
+ module Drugs
8
+ class Substance < Model
9
+ include Comparable
10
+ belongs_to :group
11
+ has_many :active_agents, delegates(:packages)
12
+ is_coded
13
+ multilingual :name
14
+ def merge(other)
15
+ name.merge other.name
16
+ other.active_agents.dup.each { |agent|
17
+ agent.substance = self
18
+ agent.save
19
+ }
20
+ other.delete
21
+ save
22
+ end
23
+ def ==(other)
24
+ super || name == other
25
+ end
26
+ def <=>(other)
27
+ name <=> other.name
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::SubstanceGroup -- de.oddb.org -- 13.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+
6
+ module ODDB
7
+ module Drugs
8
+ class SubstanceGroup < Model
9
+ multilingual :name
10
+ has_many :substances
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::Unit -- de.oddb.org -- 14.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+
6
+ module ODDB
7
+ module Drugs
8
+ class Unit < Model
9
+ multilingual :name
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ # Export -- de.oddb.org -- 10.10.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/export/server'
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env ruby
2
+ # Export::Csv -- de.oddb.org -- 22.07.2008 -- hwyss@ywesee.com
3
+
4
+ require 'fastercsv'
5
+
6
+ module ODDB
7
+ module Export
8
+ module Csv
9
+ class Packages
10
+ def export(packages, components, language = :de, io=nil)
11
+ atcs = partition packages
12
+ str = FasterCSV.generate { |csv|
13
+ atcs.each { |list|
14
+ csv << atc_line(list.atc, language)
15
+ list.each { |pac|
16
+ csv << package_line(pac, components, language)
17
+ }
18
+ }
19
+ }
20
+ if io
21
+ io << str
22
+ else
23
+ str
24
+ end
25
+ end
26
+ def atc_line(atc, language)
27
+ if atc
28
+ result = [atc.code]
29
+ if name = atc.name
30
+ result.push name.send(language)
31
+ end
32
+ result
33
+ else
34
+ ['ATC-Code nicht bekannt']
35
+ end
36
+ end
37
+ def active_agents(package, lang)
38
+ package.active_agents.join('|')
39
+ end
40
+ def ddd_prices(package, language)
41
+ ddds = []
42
+ package.ddds.each_with_index { |ddd, idx|
43
+ ddds.push sprintf("%s (%s)", package.dose_price(ddd.dose),
44
+ ddd.administration)
45
+ }
46
+ ddds.join '|'
47
+ end
48
+ def package_line(package, components, language)
49
+ components.collect { |key|
50
+ value = if respond_to?(key)
51
+ self.send key, package, language
52
+ elsif package.respond_to?(key)
53
+ package.send key
54
+ end
55
+ case value
56
+ when Util::Multilingual
57
+ value.send language
58
+ else
59
+ value
60
+ end
61
+ }
62
+ end
63
+ def partition(packages)
64
+ atcs = {}
65
+ packages.each { |package|
66
+ code = (atc = package.atc) ? atc.code : 'X'
67
+ (atcs[code] ||= Util::AnnotatedList.new(:atc => atc)).push(package)
68
+ }
69
+ atcs.sort.collect { |code, packages|
70
+ packages
71
+ }
72
+ end
73
+ def price_exfactory(package, lang)
74
+ package.price(:exfactory)
75
+ end
76
+ def price_festbetrag(package, lang)
77
+ package.price(:festbetrag)
78
+ end
79
+ def price_public(package, lang)
80
+ package.price(:public)
81
+ end
82
+ def product(package, language)
83
+ (product = package.product) && product.name
84
+ end
85
+ def pzn(package, lang)
86
+ package.code(:cid)
87
+ end
88
+ def size(package, language)
89
+ package.parts.collect { |part| part.to_s(language) }.join('+')
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+ # Export::SessionStub -- de.oddb.org -- 11.12.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/util/lookandfeel'
5
+ require 'oddb/html/util/session'
6
+
7
+ module ODDB
8
+ module Export
9
+ class SessionStub
10
+ attr_reader :flavor, :http_protocol, :default_language, :server_name
11
+ attr_accessor :language, :lookandfeel
12
+ def initialize
13
+ @flavor = Html::Util::Session::DEFAULT_FLAVOR
14
+ @http_protocol = 'http'
15
+ @default_language = 'de'
16
+ @server_name = ODDB.config.server_name
17
+ end
18
+ def method_missing(*args)
19
+ end
20
+ end
21
+ def Export.l10n_sessions(&block)
22
+ stub = SessionStub.new
23
+ Html::Util::Lookandfeel::DICTIONARIES.each_key { |lang|
24
+ stub.language = lang
25
+ stub.lookandfeel = Html::Util::Lookandfeel.new(stub)
26
+ block.call(stub)
27
+ }
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+ # Export::Rss -- de.oddb.org -- 10.12.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/util/feedback'
5
+ require 'oddb/export/l10n_sessions'
6
+
7
+ module ODDB
8
+ module Export
9
+ module Rss
10
+ class Exporter
11
+ def initialize
12
+ @rss_dir = File.join(ODDB.config.var, 'rss')
13
+ @name = self.class.name[/[^:]+$/]
14
+ @filename = @name.downcase + ".rss"
15
+ end
16
+ def export
17
+ items = sorted_items
18
+ return if(items.empty?)
19
+ Export.l10n_sessions { |session|
20
+ dir = File.join(@rss_dir, session.language)
21
+ FileUtils.mkdir_p(dir)
22
+ path = File.join(dir, @filename)
23
+ tmp = File.join(dir, '.' << @filename)
24
+ File.open(tmp, 'w') { |io|
25
+ io.puts rss(items, session)
26
+ }
27
+ File.rename(tmp, path)
28
+ }
29
+ end
30
+ def rss items, session
31
+ require "oddb/html/view/rss/#{@name.downcase}"
32
+ klass = Html::View::Rss.const_get @name
33
+ view = klass.new(items, session, nil)
34
+ view.to_html(CGI.new('html4'))
35
+ end
36
+ end
37
+ class Feedback < Exporter
38
+ def sorted_items
39
+ Util::Feedback.newest(:all)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,137 @@
1
+ #!/usr/bin/env ruby
2
+ # Export::Server -- de.oddb.org -- 10.10.2007 -- hwyss@ywesee.com
3
+
4
+ require 'date'
5
+ require 'drb'
6
+ require 'oddb/config'
7
+ require File.join('oddb', 'persistence', ODDB.config.persistence, 'export')
8
+ require 'oddb/export/csv'
9
+ require 'oddb/export/xls'
10
+ require 'oddb/export/yaml'
11
+ require 'oddb/util/mail'
12
+ require 'zip/zip'
13
+
14
+ module ODDB
15
+ module Export
16
+ module Server
17
+ def Server.export_csv
18
+ pacs = Drugs::Package.all
19
+ components = [ :pzn, :product, :active_agents, :size, :price_exfactory,
20
+ :price_public, :price_festbetrag, :ddd_prices, :company ]
21
+ safe_export Csv::Packages, 'de.oddb.csv', pacs, components, :de
22
+ end
23
+ def Server.export_chde_xls
24
+ if uri = ODDB.config.remote_databases.first
25
+ safe_export Export::Xls::ComparisonDeCh, 'chde.xls', uri
26
+ end
27
+ end
28
+ def Server.export_yaml
29
+ safe_export Export::Yaml::Drugs, 'de.oddb.yaml'
30
+ end
31
+ def Server.export_fachinfo_yaml
32
+ safe_export Export::Yaml::Fachinfos, "fachinfos.de.oddb.yaml"
33
+ end
34
+ def Server.export_patinfo_yaml
35
+ safe_export Export::Yaml::Patinfos, "patinfos.de.oddb.yaml"
36
+ end
37
+ def Server.report_download
38
+ # Note: if the day is in new month from the last week,
39
+ # it may not include all the log information.
40
+ subject = sprintf("de.ODDB.org Report - Download-Statistics - %s",
41
+ Time.now.strftime('%m/%Y'))
42
+ time = Time.now
43
+ log_dir = File.join(ODDB.config.download_log_dir, time.year.to_s)
44
+ log_file = File.join(log_dir, time.month.to_s + '.log')
45
+ begin
46
+ lines = File.readlines(log_file)
47
+ rescue StandardError => e
48
+ lines = [
49
+ "Nothing to Report.",
50
+ nil,
51
+ e.class,
52
+ e.message
53
+ ] + e.backtrace
54
+ end
55
+ Util::Mail.notify_admins(subject, lines)
56
+ end
57
+ def Server.run(today = Date.today)
58
+ on_monthday(1, today) {
59
+ export_chde_xls
60
+ }
61
+ on_monthday(2, today) do
62
+ export_info_yaml :fachinfo
63
+ export_info_yaml :patinfo
64
+ end
65
+ on_weekday(0, today) do
66
+ report_download
67
+ end
68
+ end
69
+ def Server.on_monthday(day, today = Date.today, &block)
70
+ if(today.day == day)
71
+ block.call
72
+ end
73
+ end
74
+ def Server.on_weekday(wday, today = Date.today, &block)
75
+ # 0-6, 0:Sunday
76
+ if(today.wday == wday)
77
+ block.call
78
+ end
79
+ end
80
+ def Server.safe_export(exporter_class, name, *args, &block)
81
+ dir = ODDB.config.export_dir or raise "Please configure 'export_dir'"
82
+ FileUtils.mkdir_p(dir)
83
+ Tempfile.open(name, dir) { |fh|
84
+ exporter = exporter_class.new
85
+ args.push fh
86
+ exporter.export *args
87
+ fh.close
88
+ newpath = File.join(dir, name)
89
+ FileUtils.mv(fh.path, newpath)
90
+ FileUtils.chmod(0644, newpath)
91
+ compress(dir, name)
92
+ # This is a temporary solution for a NoMethodError bug
93
+ # See the bug http://dev.ywesee.com/wiki.php/Masa/20101020-debug-importChdeXls#DebugChde
94
+ if(exporter_class == Export::Xls::ComparisonDeCh)
95
+ unless(exporter.error_data.empty?)
96
+ message = "\nThe chde.xls file was generated successfully.\n\n"
97
+ message += "The following data was not able to be compared due to a NoMethodError:\n"
98
+ backtrace_info = "The original backtrace information:\n" + exporter.backtrace_info.join("\n").to_s + "\n"
99
+ raise NoMethodError, message + exporter.error_data.join("\n").to_s + "\n\n" + backtrace_info
100
+ end
101
+ end
102
+ }
103
+ name
104
+ rescue StandardError => err
105
+ subject = sprintf("%s: %s",
106
+ Time.now.strftime('%c'), exporter_class)
107
+ lines = [
108
+ sprintf("%s: %s#export",
109
+ Time.now.strftime('%c'), exporter_class)
110
+ ]
111
+ lines.push(err.class, err.message, *err.backtrace)
112
+ Util::Mail.notify_admins(subject, lines)
113
+ end
114
+ def Server.compress(dir, name)
115
+ FileUtils.mkdir_p(dir)
116
+ Dir.chdir(dir)
117
+ tmp_name = name + '.tmp'
118
+ gz_name = tmp_name + '.gz'
119
+ zip_name = tmp_name + '.zip'
120
+ gzwriter = Zlib::GzipWriter.open(gz_name)
121
+ zipwriter = Zip::ZipOutputStream.open(zip_name)
122
+ zipwriter.put_next_entry(name)
123
+ File.open(name, "r") { |fh|
124
+ fh.each { |line|
125
+ gzwriter << line
126
+ zipwriter.puts(line)
127
+ }
128
+ }
129
+ gzwriter.close if(gzwriter)
130
+ zipwriter.close if(zipwriter)
131
+ FileUtils.mv(gz_name, name + '.gz')
132
+ FileUtils.mv(zip_name, name + '.zip')
133
+ name
134
+ end
135
+ end
136
+ end
137
+ end