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,8 @@
1
+ #!/usr/bin/env ruby
2
+ # Dose -- de.oddb.org -- 16.02.2007 -- hwyss@ywesee.com
3
+
4
+ ## in remote, Dose is in a different namespace
5
+ require 'oddb/drugs/dose'
6
+ module ODDB
7
+ Dose = Drugs::Dose
8
+ end
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby
2
+ # Remote::Drugs::GalenicForm -- de.oddb.org -- 16.02.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/util/multilingual'
5
+ require 'oddb/remote/object'
6
+ require 'oddb/drugs/galenic_group'
7
+
8
+ module ODDB
9
+ module Remote
10
+ module Drugs
11
+ class GalenicForm < Remote::Object
12
+ def description
13
+ @description ||= Util::Multilingual.new(:de => @remote.de)
14
+ end
15
+ def group
16
+ @group ||= ODDB::Drugs::GalenicGroup.find_by_name(groupname)
17
+ end
18
+ def groupname
19
+ @groupname ||= @remote && @remote.galenic_group.de
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,128 @@
1
+ #!/usr/bin/env ruby
2
+ # Remote::Drugs::Package -- de.oddb.org -- 16.02.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/util/money'
5
+ require 'oddb/util/multilingual'
6
+ require 'oddb/remote/object'
7
+ require 'oddb/remote/business/company'
8
+ require 'oddb/remote/drugs/active_agent'
9
+ require 'oddb/remote/drugs/atc'
10
+ require 'oddb/remote/drugs/dose'
11
+ require 'oddb/remote/drugs/galenic_form'
12
+ require 'oddb/remote/drugs/part'
13
+ require 'oddb/remote/drugs/unit'
14
+
15
+ module ODDB
16
+ module Remote
17
+ module Drugs
18
+ class Package < Remote::Object
19
+ delegate :ddds, :ikscat, :sl_entry
20
+ def initialize(source, remote, currency_rate, tax_factor=1.0)
21
+ @tax_factor = tax_factor.to_f
22
+ @currency_rate = currency_rate.to_f
23
+ @cache = {}
24
+ super(source, remote)
25
+ end
26
+ def active_agents
27
+ @active_agents ||= @remote.active_agents.collect { |act|
28
+ Remote::Drugs::ActiveAgent.new(@source, act)
29
+ }
30
+ end
31
+ def atc
32
+ @atc ||= if atc = @remote.atc_class
33
+ Remote::Drugs::Atc.new(@source, atc)
34
+ end
35
+ end
36
+ def code(type, country='CH')
37
+ case type
38
+ when :ean
39
+ @ean ||= Util::Code.new(:ean, @remote.barcode, 'CH')
40
+ end
41
+ end
42
+ def company
43
+ @company ||= Remote::Business::Company.new(@source, @remote.company)
44
+ end
45
+ def comparables
46
+ local_comparables.concat @remote.comparables.collect { |pac|
47
+ Package.new(@source, pac, @currency_rate, @tax_factor)
48
+ }
49
+ end
50
+ def comparable_size
51
+ @comparable_size ||= @remote.comparable_size
52
+ end
53
+ def ddds
54
+ @ddds ||= galenic_forms.inject([]) { |memo, form|
55
+ if(group = form.group)
56
+ memo.concat atc.ddds(group.administration)
57
+ end
58
+ memo
59
+ }
60
+ end
61
+ def dose_price(dose)
62
+ if(price = price(:public))
63
+ pdose = doses.first.want(dose.unit)
64
+ Util::Money.new((dose / pdose).to_f * (price.to_f / size))
65
+ end
66
+ rescue StandardError
67
+ end
68
+ def galenic_forms
69
+ @galenic_forms ||= @remote.galenic_forms.collect { |form|
70
+ Remote::Drugs::GalenicForm.new(@source, form)
71
+ }
72
+ end
73
+ def local_comparables
74
+ comparables = []
75
+ doses = active_agents.collect { |act| act.dose }
76
+ if(doses.size == 1 \
77
+ && (atc = self.atc && ODDB::Drugs::Atc.find_by_code(self.atc.code)))
78
+ descriptions = galenic_forms.collect { |form| form.description.de }
79
+ groupnames = galenic_forms.collect { |form| form.groupname }
80
+ range = (size*0.75)..(size*1.25)
81
+ atc.products.each { |prod|
82
+ prod.sequences.each { |seq|
83
+ if(seq.doses == doses)
84
+ descs = []
85
+ names = []
86
+ seq.galenic_forms.each { |form|
87
+ descs.push form.description
88
+ if grp = form.group
89
+ names.push grp.name
90
+ end
91
+ }
92
+ if(descs == descriptions || groupnames.all? { |name|
93
+ names.any? { |other| other == name } })
94
+ comparables.concat seq.packages.select { |pac|
95
+ range.include?(pac.size)
96
+ }
97
+ end
98
+ end
99
+ }
100
+ }
101
+ end
102
+ comparables
103
+ end
104
+ def name
105
+ @name ||= Util::Multilingual.new(:de => @remote.name_base)
106
+ end
107
+ def parts
108
+ @parts ||= @remote.parts.collect { |part|
109
+ Remote::Drugs::Part.new(@source, part)
110
+ }
111
+ end
112
+ def price(type)
113
+ case type
114
+ when :public, :exfactory
115
+ @cache.fetch(type) { @cache.store(type, remote_price(type)) }
116
+ end
117
+ end
118
+ def remote_price(key)
119
+ pr = @remote.send("price_#{key}").to_f * @currency_rate / @tax_factor
120
+ Util::Money.new(pr.to_f) if(pr > 0)
121
+ end
122
+ def size
123
+ @size ||= comparable_size.qty
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+ # Remote::Drugs::Part -- de.oddb.org -- 16.05.2008 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/remote/object'
5
+
6
+ module ODDB
7
+ module Remote
8
+ module Drugs
9
+ class Part < Remote::Object
10
+ delegate :multi, :size
11
+ def comparable_size
12
+ @comparable_size ||= @remote.comparable_size
13
+ end
14
+ def quantity
15
+ nil
16
+ end
17
+ def unit
18
+ @unit ||= begin
19
+ cstr = if comform = @remote.commercial_form
20
+ comform.de
21
+ else
22
+ comparable_size.unit
23
+ end
24
+ @unit = Remote::Drugs::Unit.new(@source, cstr)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+ # Remote::Drugs::Substance -- de.oddb.org -- 16.02.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/remote/object'
5
+ require 'oddb/util/multilingual'
6
+
7
+ module ODDB
8
+ module Remote
9
+ module Drugs
10
+ class Substance < Remote::Object
11
+ def name
12
+ @name ||= Util::Multilingual.new(:de => @remote.de)
13
+ end
14
+ def <=>(other)
15
+ name <=> other.name
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+ # Remote::Drugs::Unit -- de.oddb.org -- 16.02.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/remote/object'
5
+ require 'oddb/util/multilingual'
6
+
7
+ module ODDB
8
+ module Remote
9
+ module Drugs
10
+ class Unit < Remote::Object
11
+ attr_reader :name
12
+ def initialize(source, name)
13
+ @name = Util::Multilingual.new(:de => name)
14
+ super
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ # Remote::Object -- de.oddb.org -- 16.02.2007 -- hwyss@ywesee.com
3
+
4
+ module ODDB
5
+ module Remote
6
+ class Object
7
+ attr_reader :source
8
+ def initialize(source, remote)
9
+ @source = source
10
+ @remote = remote
11
+ @cache = {}
12
+ end
13
+ =begin
14
+ def method_missing(*args, &block)
15
+ @cache[args] ||= @remote.send(*args, &block)
16
+ rescue
17
+ "remote: #{self.class}##{args.join(', ')}"
18
+ end
19
+ =end
20
+ def uid
21
+ sprintf("%i.%s", @source, @remote.__drbref)
22
+ end
23
+ class << self
24
+ def delegate(*args)
25
+ args.each { |arg|
26
+ define_method(arg) {
27
+ var = "@#{arg}"
28
+ instance_variable_get(var) \
29
+ || instance_variable_set(var, @remote.send(arg))
30
+ }
31
+ }
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+ # Text::Chapter -- de.oddb.org -- 24.10.2007 -- hwyss@ywesee.com
3
+
4
+ module ODDB
5
+ module Text
6
+ class Chapter
7
+ attr_reader :name, :paragraphs
8
+ def initialize(name)
9
+ @name = name
10
+ @paragraphs = []
11
+ end
12
+ def add_paragraph(paragraph)
13
+ @paragraphs.push paragraph unless paragraph.empty?
14
+ end
15
+ def append(chapter)
16
+ @paragraphs.concat chapter.paragraphs
17
+ end
18
+ def to_s
19
+ @paragraphs.join("\n")
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby
2
+ # Text::Document -- de.oddb.org -- 26.10.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+
6
+ module ODDB
7
+ module Text
8
+ ## to migrate Document to be a subclass of Model:
9
+ # Drugs::Sequence.all { |seq| need = false; [:fachinfo, :patinfo].each { |key| if(ml = seq.instance_variable_get("@#{key}")); need = true; seq.instance_variable_set("@#{key}", nil); if(doc = ml.de); info = seq.send(key); if(prev = doc.instance_variable_get('@previous_sources')); info.previous_sources[:de] = prev; doc.instance_eval { remove_instance_variable('@previous_sources') }; end; if((source = doc.source) && (saved = Text::Document.find_by_source(source))); doc = saved; end; info.de = doc; info.save; info.de.save; end; end }; seq.save if need }
10
+ class Document < Model
11
+ attr_accessor :source, :date, :title
12
+ attr_reader :chapters
13
+ def initialize
14
+ @chapters = []
15
+ end
16
+ def add_chapter(chapter)
17
+ @chapters.push chapter
18
+ end
19
+ def chapter(idx_or_name)
20
+ case idx_or_name
21
+ when Integer
22
+ @chapters[idx_or_name]
23
+ else
24
+ @chapters.find { |ch| ch.name == idx_or_name }
25
+ end
26
+ end
27
+ def chapter_names
28
+ @chapters.select { |chapter|
29
+ chapter.paragraphs.size > 1
30
+ }.collect { |chapter|
31
+ chapter.name
32
+ }
33
+ end
34
+ def remove_chapter(chapter)
35
+ @chapters.delete(chapter)
36
+ end
37
+ def to_s
38
+ @chapters.join("\n")
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+ # Text::Format -- de.oddb.org -- 19.10.2007 -- hwyss@ywesee.com
3
+
4
+ module ODDB
5
+ module Text
6
+ class Format
7
+ attr_accessor :start, :end, :values
8
+ VALID_FORMATS = %w{b i sub sup u}
9
+ def initialize(*args)
10
+ @values = []
11
+ augment *args
12
+ @start = 0
13
+ @end = -1
14
+ end
15
+ def augment(*args)
16
+ @values.concat(args & VALID_FORMATS)
17
+ @values.sort!
18
+ @values.uniq!
19
+ @values
20
+ end
21
+ def range
22
+ @start..@end
23
+ end
24
+ def ==(other)
25
+ case other
26
+ when Format
27
+ @values == other.values
28
+ when Array
29
+ @values == (other & VALID_FORMATS).sort
30
+ else
31
+ false
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env ruby
2
+ # Text::Paragraph -- de.oddb.org -- 19.10.2007 -- hwyss@ywesee.com
3
+
4
+ require 'delegate'
5
+ require 'encoding/character/utf-8'
6
+ require 'oddb/text/format'
7
+
8
+ module ODDB
9
+ module Text
10
+ class Paragraph < DelegateClass(String)
11
+ attr_reader :text, :formats
12
+ attr_accessor :align
13
+ def initialize(str='')
14
+ @formats = []
15
+ @text = u(str.dup)
16
+ set_format()
17
+ super(@text)
18
+ end
19
+ def set_format(*args)
20
+ if(fmt = @formats.last)
21
+ return if(fmt == args)
22
+ if(fmt.start == @text.length)
23
+ @formats.pop
24
+ fmt = @formats.last
25
+ if(fmt == args)
26
+ fmt.end = -1
27
+ return
28
+ end
29
+ else
30
+ fmt.end = (@text.length - 1)
31
+ end
32
+ end
33
+ fmt = Text::Format.new(*args)
34
+ fmt.start = (@text.length)
35
+ @formats.push(fmt)
36
+ fmt
37
+ end
38
+ def <<(str)
39
+ if(str.is_a? Paragraph)
40
+ @align = str.align
41
+ txt = str.text
42
+ str.formats.each { |fmt|
43
+ set_format(*fmt.values)
44
+ @text << txt[fmt.range]
45
+ }
46
+ else
47
+ @text << str
48
+ end
49
+ self
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env ruby
2
+ # Text::Picture -- de.oddb.org -- 24.10.2007 -- hwyss@ywesee.com
3
+
4
+ module ODDB
5
+ module Text
6
+ class Picture < DelegateClass(String)
7
+ attr_accessor :height, :width, :xscale, :yscale, :height_goal, :width_goal
8
+ TWIP = 20 ## see http://en.wikipedia.org/wiki/Twip
9
+ PCNT = 100
10
+ BDNS = 180 ## base density
11
+ DMAX = 360 ## maximum density
12
+ def initialize
13
+ super('')
14
+ end
15
+ def blob
16
+ [self].pack('H*')
17
+ end
18
+ def digest
19
+ @digest ||= Digest::MD5.hexdigest(self)
20
+ end
21
+ def empty?
22
+ super #|| !image
23
+ rescue StandardError => err
24
+ ODDB.logger.error("Text::Picture") {
25
+ sprintf "%s: %s", err.class, err.message
26
+ }
27
+ true
28
+ end
29
+ def finalize!
30
+ wmf = File.join ODDB.config.var, path("%s.wmf" % digest)
31
+ FileUtils.mkdir_p File.dirname(wmf)
32
+ File.open(wmf, 'w') { |fh| fh.puts blob }
33
+
34
+ twidth = @width ? @width * _xscale / PCNT : @width_goal
35
+ theight = @height ? @height * _yscale / PCNT : @height_goal
36
+
37
+ geom = sprintf("%ix%i!", twidth / TWIP, theight / TWIP)
38
+ path = File.join ODDB.config.var, path("%s.png" % digest)
39
+
40
+ # let imagemagick take care of file-conversion externally
41
+ out = %x{convert -resize #{geom} #{wmf} #{path}}
42
+ if $? != 0
43
+ raise out
44
+ end
45
+
46
+ png = File.read path
47
+ replace png.unpack('H*').first
48
+ end
49
+ def filename
50
+ @filename ||= "%s.png" % digest
51
+ end
52
+ def formats
53
+ []
54
+ end
55
+ def image
56
+ Magick::Image.from_blob(blob).first
57
+ end
58
+ def path(fn = filename)
59
+ File.join('/images', fn[0,2], fn)
60
+ end
61
+ def set_format(*ignore)
62
+ end
63
+ def to_png
64
+ blob
65
+ end
66
+ def to_s
67
+ image.inspect
68
+ end
69
+ def _xscale
70
+ if @xscale
71
+ @xscale
72
+ elsif @width && @width_goal
73
+ PCNT * @width_goal / @width
74
+ else
75
+ PCNT
76
+ end
77
+ end
78
+ def _yscale
79
+ if @yscale
80
+ @yscale
81
+ elsif @height && @height_goal
82
+ PCNT * @height_goal / @height
83
+ else
84
+ PCNT
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end