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,190 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestCase -- de.oddb.org -- 21.11.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
5
+
6
+ ENV['LD_LIBRARY_PATH'] = '/usr/local/firefox'
7
+
8
+ $log_level = 0
9
+
10
+ if(pid = Kernel.fork)
11
+ at_exit {
12
+ Process.kill('HUP', pid)
13
+ $selenium.stop if($log_level == 0 && $selenium.respond_to?(:stop))
14
+ }
15
+ else
16
+ path = File.expand_path('selenium-server.jar', File.dirname(__FILE__))
17
+ command = $log_level > 0 ? "java -jar #{path}" : "java -jar #{path} &> /dev/null"
18
+ exec(command)
19
+ end
20
+
21
+ require "oddb/config"
22
+ require 'delegate'
23
+ require 'selenium'
24
+
25
+ module ODDB
26
+ module Selenium
27
+ class SeleniumWrapper < SimpleDelegator
28
+ def initialize(host, port, browser, server, port2)
29
+ @server = server
30
+ @selenium = ::Selenium::SeleneseInterpreter.new(host, port, browser,
31
+ server, port2)
32
+ super @selenium
33
+ end
34
+ def open(path)
35
+ @selenium.open(@server + path)
36
+ end
37
+ def type(*args)
38
+ @selenium.type(*args)
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ $selenium = ODDB::Selenium::SeleniumWrapper.new("localhost", 4444,
45
+ "*chrome", ODDB.config.http_server + ":10080", 10000)
46
+
47
+ start = Time.now
48
+ begin
49
+ $selenium.start
50
+ rescue Errno::ECONNREFUSED
51
+ sleep 1
52
+ if((Time.now - start) > 15)
53
+ raise
54
+ else
55
+ retry
56
+ end
57
+ end
58
+
59
+ require "oddb/util/server"
60
+ require 'flexmock'
61
+ require 'logger'
62
+ require 'stub/http_server'
63
+ require "test/unit"
64
+
65
+ module ODDB
66
+ module Selenium
67
+ module TestCase
68
+ include FlexMock::TestCase
69
+ include SeleniumHelper
70
+ def setup
71
+ Drugs::Atc.instances.clear
72
+ Drugs::Product.instances.clear
73
+ Drugs::Sequence.instances.clear
74
+ Drugs::Package.instances.clear
75
+ Business::Company.instances.clear
76
+ ODDB.logger = Logger.new($stdout)
77
+ ODDB.logger.level = Logger::DEBUG
78
+ @auth = flexmock('authenticator')
79
+ ODDB.auth = @auth
80
+ @persistence = flexmock('persistence')
81
+ ODDB.persistence = @persistence
82
+ @server = Util::Server.new(@persistence)
83
+ @server.extend(DRbUndumped)
84
+ drb_url = "druby://localhost:10081"
85
+ @drb = Thread.new {
86
+ @drb_server = DRb.start_service(drb_url, @server)
87
+ }
88
+ @drb.abort_on_exception = true
89
+ @http_server = Stub.http_server(drb_url, $log_level)
90
+ @webrick = Thread.new { @http_server.start }
91
+ @verification_errors = []
92
+ if $selenium
93
+ @selenium = $selenium
94
+ else
95
+ @selenium = SeleniumWrapper.new("localhost", 4444, "*chrome",
96
+ ODDB.config.http_server + ":10080", 10000)
97
+ @selenium.start
98
+ end
99
+ @selenium.set_context("info")
100
+ ODDB::Html::Util::Session.reset_query_limit
101
+ end
102
+ def teardown
103
+ @selenium.stop unless $selenium
104
+ @http_server.shutdown
105
+ @drb_server.stop_service
106
+ assert_equal [], @verification_errors
107
+ super
108
+ end
109
+ def login(email, *permissions)
110
+ user = mock_user email, *permissions
111
+ @auth.should_receive(:login).and_return(user)
112
+ open "/de/drugs/login"
113
+ type "email", email
114
+ type "pass", "test"
115
+ click "//input[@name='login_']"
116
+ wait_for_page_to_load "30000"
117
+ user
118
+ end
119
+ def login_admin
120
+ login "test.admin@oddb.org", ['login', 'org.oddb.de.Admin']
121
+ end
122
+ def mock_user(email, *permissions)
123
+ user = flexmock(email)
124
+ user.should_receive(:allowed?).and_return { |*pair|
125
+ permissions.include?(pair)
126
+ }
127
+ user.should_receive(:name).and_return(email)
128
+ user.should_receive(:get_preference)
129
+ user.should_receive(:find_entity).and_return { |email|
130
+ (@yus_entities ||= {})[email]
131
+ }
132
+ user.should_receive(:last_login)
133
+ user.should_receive(:permissions).and_return(permissions)
134
+ user.should_ignore_missing
135
+ user
136
+ end
137
+ def setup_package(name="Amantadin by Producer", atccode='N04BB01')
138
+ product = Drugs::Product.new
139
+ company = Business::Company.new
140
+ company.name.de = 'Producer AG'
141
+ product.company = company
142
+ company.save
143
+ sequence = Drugs::Sequence.new
144
+ sequence.product = product
145
+ atc = Drugs::Atc.new(atccode)
146
+ atc.name.de = 'Amantadin'
147
+ ddd = Drugs::Ddd.new('O')
148
+ ddd.dose = Drugs::Dose.new(10, 'mg')
149
+ atc.add_ddd(ddd)
150
+ sequence.atc = atc
151
+ composition = Drugs::Composition.new
152
+ galform = Drugs::GalenicForm.new
153
+ galform.description.de = 'Tabletten'
154
+ composition.galenic_form = galform
155
+ grp = Drugs::GalenicGroup.new('Tabletten')
156
+ grp.administration = 'O'
157
+ galform.group = grp
158
+ sequence.add_composition(composition)
159
+ substance = Drugs::Substance.new
160
+ substance.name.de = 'Amantadin'
161
+ dose = Drugs::Dose.new(100, 'mg')
162
+ active_agent = Drugs::ActiveAgent.new(substance, dose)
163
+ composition.add_active_agent(active_agent)
164
+ package = Drugs::Package.new
165
+ code = Util::Code.new(:cid, '12345', 'DE')
166
+ package.add_code(code)
167
+ code = Util::Code.new(:festbetragsstufe, 3, 'DE')
168
+ package.add_code(code)
169
+ code = Util::Code.new(:festbetragsgruppe, 4, 'DE')
170
+ package.add_code(code)
171
+ code = Util::Code.new(:zuzahlungsbefreit, true, 'DE')
172
+ package.add_code(code)
173
+ part = Drugs::Part.new
174
+ part.package = package
175
+ part.size = 5
176
+ part.composition = composition
177
+ unit = Drugs::Unit.new
178
+ unit.name.de = 'Ampullen'
179
+ part.unit = unit
180
+ part.quantity = Drugs::Dose.new(20, 'ml')
181
+ package.name.de = name
182
+ package.sequence = sequence
183
+ package.add_price(Util::Money.new(6, :public, 'DE'))
184
+ package.add_price(Util::Money.new(10, :festbetrag, 'DE'))
185
+ package.save
186
+ package
187
+ end
188
+ end
189
+ end
190
+ end
@@ -0,0 +1,144 @@
1
+ #!/usr/bin/env ruby
2
+ # Stub.http_server -- de.oddb.org -- 21.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'sbsm/request'
5
+ require 'sbsm/trans_handler'
6
+ require 'webrick'
7
+
8
+ class Object
9
+ def meta_class; class << self; self; end; end
10
+ def meta_eval &blk; meta_class.instance_eval &blk; end
11
+ end
12
+
13
+ ## compatibility-brainfuck for integrating Apache-SBSM-Requests with WEBrick
14
+ module ODDB
15
+ module Stub
16
+ class Notes < Hash
17
+ alias :add :store
18
+ end
19
+ class Output < String
20
+ alias :write :<<
21
+ alias :print :<<
22
+ end
23
+ class HTTPServer < WEBrick::HTTPServer
24
+ attr_accessor :document_root, :redirected_output, :attachment
25
+ def method_missing(method, *args, &block)
26
+ @logger.warn "ignoring method: #{method}"
27
+ end
28
+ end
29
+ def Stub.http_server(drburi, log_level=0)
30
+ doc = File.expand_path('../../doc', File.dirname(__FILE__))
31
+ logger = WEBrick::Log.new
32
+ logger.level = log_level
33
+ config = { :Host => 'localhost', :Port => 10080,
34
+ :DocumentRoot => doc, :Logger => logger }
35
+ if(log_level == 0)
36
+ config.store(:AccessLog, [])
37
+ end
38
+ server = HTTPServer.new(config)
39
+ server.document_root = doc
40
+ application = Proc.new { |req, resp|
41
+ if(req.uri == '/favicon.ico')
42
+ resp.body = File.open(File.join(doc, req.uri))
43
+ else
44
+ ARGV.push('')
45
+ req.server = server
46
+ req.uri = CGI.unescape(req.uri)
47
+ SBSM::ZoneTransHandler.instance.translate_uri(req)
48
+ ## not Threadsafe!
49
+ SBSM::Apache.request = req
50
+ output = Output.new
51
+ sbsm = SBSM::Request.new(drburi)
52
+ sbsm.meta_eval { define_method(:handle_exception) { |e| raise e } }
53
+ sbsm.cgi.params.update(req.query)
54
+ sbsm.cgi.env_table['SERVER_NAME'] =
55
+ ODDB.config.http_server.gsub('http://', '') + ':10080'
56
+ sbsm.cgi.env_table['REQUEST_METHOD'] = req.request_method
57
+ sbsm.cgi.cookies['_session_id'] = 'test:preset-session-id'
58
+ sbsm.cgi.output = output
59
+ sbsm.process
60
+ if(/^location: http...localhost/i.match(output))
61
+ resp.status = 303
62
+ elsif(/^location:.*paypal/i.match(output))
63
+ req.server.redirected_output = output
64
+ elsif(!/content-disposition:\s*attachment/i.match(output))
65
+ req.server.attachment = output
66
+ end
67
+ resp.rawdata = true
68
+ resp.body = output
69
+ end
70
+ }
71
+ server.mount_proc('/', &application)
72
+ server.mount_proc('/de', &application)
73
+ server.mount_proc('/de/.*', &application)
74
+ server.mount('/resources', WEBrick::HTTPServlet::FileHandler,
75
+ File.join(doc, 'resources'), {})
76
+ server.mount('/captcha', WEBrick::HTTPServlet::FileHandler,
77
+ File.join(ODDB.config.var, 'captcha'), {})
78
+ server
79
+ end
80
+ end
81
+ end
82
+ module WEBrick
83
+ class HTTPRequest
84
+ attr_accessor :server, :uri, :notes
85
+ alias :__old_initialize__ :initialize
86
+ def initialize(*args)
87
+ __old_initialize__(*args)
88
+ @notes = ODDB::Stub::Notes.new
89
+ end
90
+ def headers_in
91
+ headers = {}
92
+ if(@header)
93
+ @header.each { |key, vals| headers.store(key, vals.join(';')) }
94
+ end
95
+ headers
96
+ end
97
+ def uri
98
+ @uri || unparsed_uri
99
+ end
100
+ end
101
+ class HTTPResponse
102
+ attr_accessor :rawdata
103
+ alias :__old_send_header__ :send_header
104
+ def send_header(socket)
105
+ if(@rawdata)
106
+ _write_data(socket, status_line)
107
+ else
108
+ __old_send_header__(socket)
109
+ end
110
+ end
111
+ alias :__old_setup_header__ :setup_header
112
+ def setup_header()
113
+ unless(@rawdata)
114
+ __old_setup_header__
115
+ end
116
+ end
117
+ end
118
+ end
119
+ module SBSM
120
+ class Request
121
+ def handle_exception(e)
122
+ raise e
123
+ end
124
+ def remote_host(*args)
125
+ "127.0.0.1"
126
+ end
127
+ end
128
+ module Apache
129
+ DECLINED = nil
130
+ def Apache.request=(request)
131
+ @request = request
132
+ end
133
+ def Apache.request
134
+ @request
135
+ end
136
+ end
137
+ end
138
+ class CGI
139
+ attr_accessor :output
140
+ def stdoutput
141
+ output
142
+ end
143
+ public :env_table
144
+ end
@@ -0,0 +1,173 @@
1
+ #!/usr/bin/env ruby
2
+ # Model -- de.oddb.org -- 17.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/drugs'
5
+ require 'oddb/business/company'
6
+ require 'oddb/util/code'
7
+
8
+ class Object
9
+ def metaclass; class << self; self; end; end
10
+ def meta_eval &blk; metaclass.instance_eval &blk; end
11
+ end
12
+ module ODDB
13
+ class Model
14
+ class << self
15
+ def all(&block)
16
+ if(block)
17
+ instances.each(&block)
18
+ else
19
+ instances
20
+ end
21
+ end
22
+ def simulate_database(*names)
23
+ meta_eval {
24
+ define_method(:instances) {
25
+ @instances ||= []
26
+ }
27
+ define_method(:find_by_code) { |criteria|
28
+ thing = instances.find { |instance| instance.codes.any? { |code|
29
+ code == criteria } }
30
+ }
31
+ define_method(:search_by_code) { |criteria|
32
+ thing = instances.select { |instance| instance.codes.any? { |code|
33
+ code == criteria } }
34
+ }
35
+ names.each { |name|
36
+ define_method("find_by_#{name}") { |nme|
37
+ instances.find { |instance| instance.send(name) == nme }
38
+ }
39
+ define_method("search_by_#{name}") { |nme|
40
+ instances.select { |instance|
41
+ if(instance.respond_to?(name))
42
+ /^#{nme}/i.match(instance.send(name).to_s)
43
+ end
44
+ }
45
+ }
46
+ define_method("search_by_exact_#{name}") { |nme|
47
+ instances.select { |instance|
48
+ nme.downcase == instance.send(name).to_s.downcase
49
+ }
50
+ }
51
+ }
52
+ }
53
+ define_method(:save) {
54
+ @saved = true
55
+ self.class.instances.push(self).uniq!
56
+ self
57
+ }
58
+ define_method(:delete) {
59
+ self.class.instances.delete(self)
60
+ self.class.connections.each { |name|
61
+ method = "remove_#{self.class.singular}"
62
+ conn = instance_variable_get(name)
63
+ if conn.respond_to?(method)
64
+ conn.send(method, self)
65
+ end
66
+ }
67
+ checkout
68
+ super
69
+ }
70
+ end
71
+ def find_by_uid(uid)
72
+ ObjectSpace._id2ref(uid.to_i)
73
+ end
74
+ def index_keys(name, *keys)
75
+ meta_eval {
76
+ define_method(name) { keys }
77
+ }
78
+ end
79
+ end
80
+ alias :uid :object_id
81
+ attr_accessor :saved
82
+ def checkout
83
+ end
84
+ def saved?
85
+ @saved
86
+ end
87
+ #unless(instance_methods.include?('__stub_to_yaml_properties__'))
88
+ # alias :__stub_to_yaml_properties__ :to_yaml_properties
89
+ def to_yaml_properties
90
+ super - ['@saved']
91
+ # __stub_to_yaml_properties__ - ['@saved']
92
+ end
93
+ #end
94
+ end
95
+ module Business
96
+ class Company < Model
97
+ simulate_database(:name)
98
+ end
99
+ class Invoice < Model
100
+ simulate_database(:yus_name, :id)
101
+ end
102
+ end
103
+ module Drugs
104
+ class ActiveAgent < Model
105
+ simulate_database
106
+ end
107
+ class Atc < Model
108
+ simulate_database(:name)
109
+ class << self
110
+ def find_by_code(code)
111
+ @instances.find { |inst| inst.code == code }
112
+ end
113
+ def search_by_level_and_code(level, code)
114
+ @instances.select { |inst|
115
+ inst.level == level && inst.code[0,code.length] == code }
116
+ end
117
+ end
118
+ end
119
+ class Composition < Model
120
+ simulate_database
121
+ def checkout
122
+ Sequence.all { |seq| seq.remove_composition self }
123
+ end
124
+ end
125
+ class GalenicForm < Model
126
+ simulate_database(:description)
127
+ end
128
+ class GalenicGroup < Model
129
+ simulate_database(:name)
130
+ end
131
+ class Package < Model
132
+ simulate_database(:name, :atc, :substance, :company, :product)
133
+ def self.count
134
+ instances.size
135
+ end
136
+ end
137
+ class Part < Model
138
+ simulate_database
139
+ def checkout
140
+ Package.all { |pac| pac.remove_part self }
141
+ end
142
+ end
143
+ class Product < Model
144
+ simulate_database(:name)
145
+ index_keys(:name_keys, 'a', '4')
146
+ end
147
+ class Sequence < Model
148
+ simulate_database(:product)
149
+ end
150
+ class Substance < Model
151
+ simulate_database(:name)
152
+ end
153
+ class SubstanceGroup < Model
154
+ simulate_database(:name)
155
+ end
156
+ class Unit < Model
157
+ simulate_database(:name)
158
+ end
159
+ end
160
+ module Util
161
+ class Feedback < Model
162
+ simulate_database
163
+ end
164
+ class M10lDocument < Model
165
+ end
166
+ end
167
+ module Text
168
+ class Document < Model
169
+ simulate_database(:source)
170
+ end
171
+ end
172
+ Currency = Object.new
173
+ end