ramaze.ch.oddb.org 1.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 (286) hide show
  1. data/History.txt +6 -0
  2. data/LICENSE +339 -0
  3. data/Manifest.txt +285 -0
  4. data/README.txt +45 -0
  5. data/Rakefile +28 -0
  6. data/bin/admin +69 -0
  7. data/bin/exportd +63 -0
  8. data/bin/migrate +461 -0
  9. data/bin/oddbd +62 -0
  10. data/data/fulltext/data/dicts/french/fulltext.aff +1057 -0
  11. data/data/fulltext/data/dicts/french/fulltext.dict +91189 -0
  12. data/data/fulltext/data/dicts/french/fulltext.stop +135 -0
  13. data/data/fulltext/data/dicts/german/fulltext.aff +1233 -0
  14. data/data/fulltext/data/dicts/german/fulltext.dict +287574 -0
  15. data/data/fulltext/data/dicts/german/fulltext.stop +133 -0
  16. data/data/fulltext/data/german_compound/README +15 -0
  17. data/data/fulltext/data/german_compound/compound.pl +63 -0
  18. data/data/fulltext/data/german_compound/german.stop +20 -0
  19. data/data/fulltext/data/ispell-german-compound.tar.gz +0 -0
  20. data/data/fulltext/redist/dict_french/Makefile +12 -0
  21. data/data/fulltext/redist/dict_french/README.french +1 -0
  22. data/data/fulltext/redist/dict_french/dict_french.sql.in +7 -0
  23. data/data/fulltext/redist/dict_french/dict_snowball.c +56 -0
  24. data/data/fulltext/redist/dict_french/french_stem.c +1222 -0
  25. data/data/fulltext/redist/dict_french/french_stem.h +16 -0
  26. data/data/fulltext/redist/dict_french/subinclude.h +2 -0
  27. data/data/fulltext/redist/dict_german/Makefile +12 -0
  28. data/data/fulltext/redist/dict_german/README.german +1 -0
  29. data/data/fulltext/redist/dict_german/dict_german.sql.in +7 -0
  30. data/data/fulltext/redist/dict_german/dict_snowball.c +56 -0
  31. data/data/fulltext/redist/dict_german/german_stem.c +527 -0
  32. data/data/fulltext/redist/dict_german/german_stem.h +16 -0
  33. data/data/fulltext/redist/dict_german/subinclude.h +1 -0
  34. data/data/fulltext/redist/french_stem.c +1222 -0
  35. data/data/fulltext/redist/french_stem.h +16 -0
  36. data/data/fulltext/redist/german_stem.c +527 -0
  37. data/data/fulltext/redist/german_stem.h +16 -0
  38. data/lib/fixes/ruby19.rb +21 -0
  39. data/lib/fixes/selenium.rb +20 -0
  40. data/lib/fixes/singular.rb +8 -0
  41. data/lib/fixes/yaml.rb +13 -0
  42. data/lib/oddb.rb +11 -0
  43. data/lib/oddb/business/company.rb +18 -0
  44. data/lib/oddb/business/invoice.rb +75 -0
  45. data/lib/oddb/business/price.rb +60 -0
  46. data/lib/oddb/config.rb +73 -0
  47. data/lib/oddb/drugs.rb +16 -0
  48. data/lib/oddb/drugs/active_agent.rb +37 -0
  49. data/lib/oddb/drugs/atc.rb +53 -0
  50. data/lib/oddb/drugs/composition.rb +41 -0
  51. data/lib/oddb/drugs/ddd.rb +24 -0
  52. data/lib/oddb/drugs/dose.rb +107 -0
  53. data/lib/oddb/drugs/galenic_form.rb +21 -0
  54. data/lib/oddb/drugs/galenic_group.rb +17 -0
  55. data/lib/oddb/drugs/package.rb +87 -0
  56. data/lib/oddb/drugs/part.rb +56 -0
  57. data/lib/oddb/drugs/product.rb +25 -0
  58. data/lib/oddb/drugs/sequence.rb +61 -0
  59. data/lib/oddb/drugs/substance.rb +31 -0
  60. data/lib/oddb/drugs/substance_group.rb +13 -0
  61. data/lib/oddb/drugs/unit.rb +12 -0
  62. data/lib/oddb/export.rb +4 -0
  63. data/lib/oddb/export/csv.rb +89 -0
  64. data/lib/oddb/export/l10n_sessions.rb +30 -0
  65. data/lib/oddb/export/rss.rb +44 -0
  66. data/lib/oddb/export/server.rb +58 -0
  67. data/lib/oddb/export/xls.rb +119 -0
  68. data/lib/oddb/export/yaml.rb +123 -0
  69. data/lib/oddb/html/state/drugs/admin/package.rb +189 -0
  70. data/lib/oddb/html/state/drugs/admin/product.rb +56 -0
  71. data/lib/oddb/html/state/drugs/admin/sequence.rb +259 -0
  72. data/lib/oddb/html/state/drugs/ajax/explain_ddd_price.rb +19 -0
  73. data/lib/oddb/html/state/drugs/ajax/explain_price.rb +19 -0
  74. data/lib/oddb/html/state/drugs/ajax/global.rb +18 -0
  75. data/lib/oddb/html/state/drugs/ajax/package_infos.rb +19 -0
  76. data/lib/oddb/html/state/drugs/ajax/remote_infos.rb +19 -0
  77. data/lib/oddb/html/state/drugs/atc_browser.rb +39 -0
  78. data/lib/oddb/html/state/drugs/atc_guidelines.rb +21 -0
  79. data/lib/oddb/html/state/drugs/compare.rb +52 -0
  80. data/lib/oddb/html/state/drugs/download_export.rb +18 -0
  81. data/lib/oddb/html/state/drugs/fachinfo.rb +21 -0
  82. data/lib/oddb/html/state/drugs/feedback.rb +94 -0
  83. data/lib/oddb/html/state/drugs/global.rb +266 -0
  84. data/lib/oddb/html/state/drugs/init.rb +18 -0
  85. data/lib/oddb/html/state/drugs/login.rb +17 -0
  86. data/lib/oddb/html/state/drugs/package.rb +32 -0
  87. data/lib/oddb/html/state/drugs/patinfo.rb +21 -0
  88. data/lib/oddb/html/state/drugs/products.rb +51 -0
  89. data/lib/oddb/html/state/drugs/result.rb +125 -0
  90. data/lib/oddb/html/state/global.rb +165 -0
  91. data/lib/oddb/html/state/global_predefine.rb +17 -0
  92. data/lib/oddb/html/state/limit.rb +17 -0
  93. data/lib/oddb/html/state/login.rb +56 -0
  94. data/lib/oddb/html/state/paypal/checkout.rb +130 -0
  95. data/lib/oddb/html/state/paypal/collect.rb +46 -0
  96. data/lib/oddb/html/state/paypal/redirect.rb +18 -0
  97. data/lib/oddb/html/state/register_export.rb +38 -0
  98. data/lib/oddb/html/state/register_poweruser.rb +17 -0
  99. data/lib/oddb/html/state/viral/admin.rb +76 -0
  100. data/lib/oddb/html/state/viral/poweruser.rb +16 -0
  101. data/lib/oddb/html/util/annotated_list.rb +39 -0
  102. data/lib/oddb/html/util/know_it_all.rb +28 -0
  103. data/lib/oddb/html/util/known_user.rb +55 -0
  104. data/lib/oddb/html/util/lookandfeel.rb +554 -0
  105. data/lib/oddb/html/util/need_all_input.rb +29 -0
  106. data/lib/oddb/html/util/session.rb +88 -0
  107. data/lib/oddb/html/util/sort.rb +72 -0
  108. data/lib/oddb/html/util/unsaved_helper.rb +20 -0
  109. data/lib/oddb/html/util/validator.rb +54 -0
  110. data/lib/oddb/html/view/ajax/json.rb +22 -0
  111. data/lib/oddb/html/view/alpha_header.rb +28 -0
  112. data/lib/oddb/html/view/document.rb +126 -0
  113. data/lib/oddb/html/view/drugs/admin/package.rb +237 -0
  114. data/lib/oddb/html/view/drugs/admin/product.rb +104 -0
  115. data/lib/oddb/html/view/drugs/admin/sequence.rb +312 -0
  116. data/lib/oddb/html/view/drugs/ajax/explain_ddd_price.rb +87 -0
  117. data/lib/oddb/html/view/drugs/ajax/explain_price.rb +61 -0
  118. data/lib/oddb/html/view/drugs/ajax/package_infos.rb +105 -0
  119. data/lib/oddb/html/view/drugs/ajax/remote_infos.rb +44 -0
  120. data/lib/oddb/html/view/drugs/atc_browser.rb +68 -0
  121. data/lib/oddb/html/view/drugs/atc_guidelines.rb +94 -0
  122. data/lib/oddb/html/view/drugs/compare.rb +95 -0
  123. data/lib/oddb/html/view/drugs/download_export.rb +28 -0
  124. data/lib/oddb/html/view/drugs/fachinfo.rb +46 -0
  125. data/lib/oddb/html/view/drugs/feedback.rb +231 -0
  126. data/lib/oddb/html/view/drugs/init.rb +51 -0
  127. data/lib/oddb/html/view/drugs/legend.rb +24 -0
  128. data/lib/oddb/html/view/drugs/package.rb +398 -0
  129. data/lib/oddb/html/view/drugs/patinfo.rb +46 -0
  130. data/lib/oddb/html/view/drugs/products.rb +97 -0
  131. data/lib/oddb/html/view/drugs/result.rb +296 -0
  132. data/lib/oddb/html/view/drugs/search.rb +33 -0
  133. data/lib/oddb/html/view/drugs/template.rb +15 -0
  134. data/lib/oddb/html/view/foot.rb +52 -0
  135. data/lib/oddb/html/view/google.rb +23 -0
  136. data/lib/oddb/html/view/google_ads.rb +40 -0
  137. data/lib/oddb/html/view/head.rb +78 -0
  138. data/lib/oddb/html/view/limit.rb +109 -0
  139. data/lib/oddb/html/view/list.rb +59 -0
  140. data/lib/oddb/html/view/login.rb +38 -0
  141. data/lib/oddb/html/view/navigation.rb +67 -0
  142. data/lib/oddb/html/view/offset_header.rb +35 -0
  143. data/lib/oddb/html/view/paypal/collect.rb +84 -0
  144. data/lib/oddb/html/view/paypal/redirect.rb +51 -0
  145. data/lib/oddb/html/view/paypal/register_form.rb +106 -0
  146. data/lib/oddb/html/view/register_export.rb +29 -0
  147. data/lib/oddb/html/view/register_poweruser.rb +29 -0
  148. data/lib/oddb/html/view/rss/feedback.rb +64 -0
  149. data/lib/oddb/html/view/rss_preview.rb +54 -0
  150. data/lib/oddb/html/view/search.rb +104 -0
  151. data/lib/oddb/html/view/snapback.rb +24 -0
  152. data/lib/oddb/html/view/template.rb +56 -0
  153. data/lib/oddb/import/excel.rb +45 -0
  154. data/lib/oddb/import/import.rb +39 -0
  155. data/lib/oddb/import/rtf.rb +410 -0
  156. data/lib/oddb/import/whocc.rb +173 -0
  157. data/lib/oddb/import/xml.rb +15 -0
  158. data/lib/oddb/model.rb +179 -0
  159. data/lib/oddb/persistence/odba.rb +33 -0
  160. data/lib/oddb/persistence/odba/business/company.rb +13 -0
  161. data/lib/oddb/persistence/odba/business/invoice.rb +15 -0
  162. data/lib/oddb/persistence/odba/drugs/atc.rb +15 -0
  163. data/lib/oddb/persistence/odba/drugs/galenic_form.rb +18 -0
  164. data/lib/oddb/persistence/odba/drugs/galenic_group.rb +13 -0
  165. data/lib/oddb/persistence/odba/drugs/package.rb +25 -0
  166. data/lib/oddb/persistence/odba/drugs/product.rb +13 -0
  167. data/lib/oddb/persistence/odba/drugs/sequence.rb +21 -0
  168. data/lib/oddb/persistence/odba/drugs/substance.rb +21 -0
  169. data/lib/oddb/persistence/odba/drugs/substance_group.rb +13 -0
  170. data/lib/oddb/persistence/odba/drugs/unit.rb +13 -0
  171. data/lib/oddb/persistence/odba/export.rb +26 -0
  172. data/lib/oddb/persistence/odba/model.rb +68 -0
  173. data/lib/oddb/persistence/odba/regulatory/authority.rb +13 -0
  174. data/lib/oddb/persistence/odba/regulatory/registration.rb +13 -0
  175. data/lib/oddb/persistence/odba/text/document.rb +11 -0
  176. data/lib/oddb/persistence/odba/util/code.rb +11 -0
  177. data/lib/oddb/persistence/odba/util/m10l_document.rb +13 -0
  178. data/lib/oddb/persistence/og.rb +16 -0
  179. data/lib/oddb/persistence/og/drugs/composition.rb +14 -0
  180. data/lib/oddb/persistence/og/drugs/product.rb +14 -0
  181. data/lib/oddb/persistence/og/drugs/sequence.rb +15 -0
  182. data/lib/oddb/persistence/og/model.rb +25 -0
  183. data/lib/oddb/persistence/og/util/multilingual.rb +13 -0
  184. data/lib/oddb/redist/rtf_tools/reader.rb +139 -0
  185. data/lib/oddb/regulatory/authority.rb +14 -0
  186. data/lib/oddb/regulatory/registration.rb +15 -0
  187. data/lib/oddb/remote/business/company.rb +23 -0
  188. data/lib/oddb/remote/drugs/active_agent.rb +27 -0
  189. data/lib/oddb/remote/drugs/atc.rb +32 -0
  190. data/lib/oddb/remote/drugs/dose.rb +8 -0
  191. data/lib/oddb/remote/drugs/galenic_form.rb +25 -0
  192. data/lib/oddb/remote/drugs/package.rb +126 -0
  193. data/lib/oddb/remote/drugs/part.rb +30 -0
  194. data/lib/oddb/remote/drugs/product.rb +19 -0
  195. data/lib/oddb/remote/drugs/sequence.rb +46 -0
  196. data/lib/oddb/remote/drugs/substance.rb +20 -0
  197. data/lib/oddb/remote/drugs/unit.rb +19 -0
  198. data/lib/oddb/remote/object.rb +36 -0
  199. data/lib/oddb/remote/text/document.rb +20 -0
  200. data/lib/oddb/remote/util/m10l_document.rb +22 -0
  201. data/lib/oddb/text/chapter.rb +27 -0
  202. data/lib/oddb/text/document.rb +43 -0
  203. data/lib/oddb/text/format.rb +37 -0
  204. data/lib/oddb/text/paragraph.rb +58 -0
  205. data/lib/oddb/text/picture.rb +93 -0
  206. data/lib/oddb/text/table.rb +68 -0
  207. data/lib/oddb/util.rb +8 -0
  208. data/lib/oddb/util/annotated_list.rb +37 -0
  209. data/lib/oddb/util/code.rb +69 -0
  210. data/lib/oddb/util/comparison.rb +36 -0
  211. data/lib/oddb/util/exporter.rb +8 -0
  212. data/lib/oddb/util/feedback.rb +23 -0
  213. data/lib/oddb/util/ipn.rb +48 -0
  214. data/lib/oddb/util/m10l_document.rb +38 -0
  215. data/lib/oddb/util/mail.rb +73 -0
  216. data/lib/oddb/util/money.rb +60 -0
  217. data/lib/oddb/util/multilingual.rb +70 -0
  218. data/lib/oddb/util/quanty.rb +4 -0
  219. data/lib/oddb/util/quanty/fact.rb +229 -0
  220. data/lib/oddb/util/quanty/main.rb +160 -0
  221. data/lib/oddb/util/quanty/parse.rb +853 -0
  222. data/lib/oddb/util/quanty/units.dump +0 -0
  223. data/lib/oddb/util/server.rb +117 -0
  224. data/lib/oddb/util/updater.rb +41 -0
  225. data/lib/oddb/util/ydim.rb +110 -0
  226. data/lib/oddb/util/yus.rb +46 -0
  227. data/test/business/test_company.rb +29 -0
  228. data/test/business/test_price.rb +46 -0
  229. data/test/drugs/test_active_agent.rb +53 -0
  230. data/test/drugs/test_atc.rb +54 -0
  231. data/test/drugs/test_composition.rb +88 -0
  232. data/test/drugs/test_ddd.rb +22 -0
  233. data/test/drugs/test_dose.rb +190 -0
  234. data/test/drugs/test_galenic_form.rb +41 -0
  235. data/test/drugs/test_package.rb +173 -0
  236. data/test/drugs/test_part.rb +32 -0
  237. data/test/drugs/test_product.rb +31 -0
  238. data/test/drugs/test_sequence.rb +140 -0
  239. data/test/drugs/test_substance.rb +51 -0
  240. data/test/drugs/test_substance_group.rb +27 -0
  241. data/test/export/test_rss.rb +94 -0
  242. data/test/export/test_server.rb +117 -0
  243. data/test/export/test_xls.rb +152 -0
  244. data/test/export/test_yaml.rb +120 -0
  245. data/test/import/data/html/whocc/A.html +56 -0
  246. data/test/import/data/html/whocc/A03.html +48 -0
  247. data/test/import/data/html/whocc/A03AB.html +48 -0
  248. data/test/import/data/html/whocc/A06AA.html +47 -0
  249. data/test/import/data/html/whocc/C03.html +47 -0
  250. data/test/import/data/html/whocc/login.html +77 -0
  251. data/test/import/data/xml/ATC_2006.xml +47 -0
  252. data/test/import/data/xml/ATC_2006_ddd.xml +35 -0
  253. data/test/import/test_excel.rb +34 -0
  254. data/test/import/test_rtf.rb +40 -0
  255. data/test/import/test_whocc.rb +315 -0
  256. data/test/remote/drugs/test_active_agent.rb +36 -0
  257. data/test/selenium/selenium-server.jar +0 -0
  258. data/test/selenium/test_atc_browser.rb +122 -0
  259. data/test/selenium/test_atc_guidelines.rb +96 -0
  260. data/test/selenium/test_collect.rb +138 -0
  261. data/test/selenium/test_compare.rb +206 -0
  262. data/test/selenium/test_fachinfo.rb +130 -0
  263. data/test/selenium/test_feedback.rb +196 -0
  264. data/test/selenium/test_init.rb +52 -0
  265. data/test/selenium/test_limit.rb +305 -0
  266. data/test/selenium/test_login.rb +67 -0
  267. data/test/selenium/test_package.rb +512 -0
  268. data/test/selenium/test_patinfo.rb +131 -0
  269. data/test/selenium/test_product.rb +80 -0
  270. data/test/selenium/test_products.rb +142 -0
  271. data/test/selenium/test_search.rb +715 -0
  272. data/test/selenium/test_sequence.rb +543 -0
  273. data/test/selenium/unit.rb +185 -0
  274. data/test/stub/http_server.rb +169 -0
  275. data/test/stub/model.rb +173 -0
  276. data/test/suite.rb +15 -0
  277. data/test/test_model.rb +83 -0
  278. data/test/util/test_code.rb +74 -0
  279. data/test/util/test_ipn.rb +117 -0
  280. data/test/util/test_mail.rb +86 -0
  281. data/test/util/test_multilingual.rb +97 -0
  282. data/test/util/test_server.rb +48 -0
  283. data/test/util/test_updater.rb +353 -0
  284. data/test/util/test_ydim.rb +115 -0
  285. data/test/util/test_yus.rb +79 -0
  286. metadata +418 -0
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Drugs::Legend -- de.oddb.org -- 21.02.2007 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/composite'
5
+
6
+ module ODDB
7
+ module Html
8
+ module View
9
+ module Drugs
10
+ class Legend < HtmlGrid::Composite
11
+ COMPONENTS = {}
12
+ LEGACY_INTERFACE = false
13
+ def init
14
+ @components = @lookandfeel.legend_components.dup
15
+ @components.each { |pos, key|
16
+ css_map.store(pos, key.to_s.gsub(/^explain_/, ""))
17
+ }
18
+ super
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,398 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # Html::View::Drugs::Package -- de.oddb.org -- 11.12.2006 -- hwyss@ywesee.com
4
+
5
+ require 'oddb/html/view/drugs/template'
6
+ require 'oddb/html/view/google'
7
+ require 'oddb/html/view/list'
8
+ require 'oddb/html/view/search'
9
+ require 'oddb/html/view/snapback'
10
+
11
+ module ODDB
12
+ module Html
13
+ module View
14
+ module Drugs
15
+ module PackageMethods
16
+ def active_agents(model)
17
+ link = HtmlGrid::Link.new(:no_active_agents, model, @session, self)
18
+ if(code = model.code(:cid, ODDB.config.country))
19
+ link.href = @lookandfeel._event_url(:package, [:cid, code.value])
20
+ elsif model.is_a?(ODDB::Drugs::Sequence)
21
+ link.href = @lookandfeel._event_url(:sequence, [:uid, model.uid])
22
+ elsif model.is_a?(ODDB::Drugs::Product)
23
+ link.href = @lookandfeel._event_url(:product, [:uid, model.uid])
24
+ else
25
+ link = HtmlGrid::Value.new(:no_active_agents, model, @session ,self)
26
+ end
27
+ agents = model.active_agents.collect { |agent|
28
+ [
29
+ agent.substance.name.send(@session.language), ' ',
30
+ agent.dose, "\n",
31
+ ]
32
+ }
33
+ size = agents.size
34
+ if(size == 1)
35
+ link.value = agents.first
36
+ elsif size > 1
37
+ link.value = @lookandfeel.lookup(:active_agents, size)
38
+ link.css_id = "sub_#{model.atc}_#@list_index"
39
+ link.dojo_title = agents
40
+ end
41
+ link
42
+ end
43
+ def adjust_price(money)
44
+ money * @lookandfeel.price_factor if(money)
45
+ end
46
+ def code_boolean(model, key)
47
+ if code = model.code(key)
48
+ if code.value
49
+ @lookandfeel.lookup(:yes)
50
+ else
51
+ @lookandfeel.lookup(:no)
52
+ end
53
+ end
54
+ end
55
+ def code_festbetragsgruppe(model)
56
+ model.code(:festbetragsgruppe, ODDB.config.country)
57
+ end
58
+ def code_festbetragsstufe(model)
59
+ model.code(:festbetragsstufe)
60
+ end
61
+ def code_prescription(model)
62
+ code_boolean(model, :prescription)
63
+ end
64
+ def code_registration(model)
65
+ model.registration
66
+ end
67
+ def code_zuzahlungsbefreit(model)
68
+ code_boolean(model, :zuzahlungsbefreit)
69
+ end
70
+ def ddd_prices(model)
71
+ ddds = []
72
+ model.ddds.each_with_index { |ddd, idx|
73
+ if(price = adjust_price model.dose_price(ddd.dose))
74
+ span = HtmlGrid::Span.new(model, @session, self)
75
+ span.value = price
76
+ code = model.code(:cid)
77
+ span.css_id = "ddd_price_#{code}.#{idx}"
78
+ args = [:cid, code, :offset, idx]
79
+ span.dojo_tooltip = @lookandfeel._event_url(:explain_ddd_price,
80
+ args)
81
+
82
+ ddds.push span
83
+ end
84
+ }
85
+ val = HtmlGrid::Value.new(:ddd_prices, model, @session, self)
86
+ val.value = ddds.zip(Array.new([ddds.size - 1, 0].max, ' / '))
87
+ val
88
+ end
89
+ def fachinfo_link(model)
90
+ url = if model.respond_to?(:fachinfo) \
91
+ && model.fachinfo.send(@session.language)
92
+ @lookandfeel._event_url(:fachinfo, [:uid, model.sequence.uid])
93
+ elsif model.respond_to?(:fachinfo_url)
94
+ model.fachinfo_url
95
+ end
96
+ if url
97
+ link = HtmlGrid::Link.new(:square_fachinfo, model, @session, self)
98
+ link.css_class = 'square fachinfo'
99
+ link.href = url
100
+ link
101
+ end
102
+ end
103
+ def feedback(model)
104
+ if(@lookandfeel.enabled?(:feedback) && (code = model.code(:cid, ODDB.config.country)))
105
+ link = HtmlGrid::Link.new(:feedback_short, model, @session, self)
106
+ link.href = @lookandfeel._event_url(:feedback, [:cid, code.value])
107
+ link.css_class = 'feedback square'
108
+ link.set_attribute('title', @lookandfeel.lookup(:feedback_alt,
109
+ model.name))
110
+ link
111
+ end
112
+ end
113
+ def patinfo_link(model)
114
+ url = if model.respond_to?(:patinfo) && model.patinfo.send(@session.language)
115
+ @lookandfeel._event_url(:patinfo, [:uid, model.sequence.uid])
116
+ elsif model.respond_to?(:patinfo_url)
117
+ model.patinfo_url
118
+ end
119
+ if url
120
+ link = HtmlGrid::Link.new(:square_patinfo, model, @session, self)
121
+ link.css_class = 'square patinfo'
122
+ link.href = url
123
+ link
124
+ end
125
+ end
126
+ def price_festbetrag(model)
127
+ @price_id ||= 0
128
+ @price_id += 1
129
+ span = HtmlGrid::Span.new(model, @session, self)
130
+ span.css_id = "price_festbetrag#{@price_id}"
131
+ span.value = adjust_price model.price(:festbetrag)
132
+ span.dojo_title = sprintf("%s: %s",
133
+ @lookandfeel.lookup(:price_difference), price_difference(model))
134
+ span.label = true
135
+ span
136
+ end
137
+ def price_difference(model)
138
+ if((pf = model.price(:festbetrag)) && (pp = model.price(:public)))
139
+ sprintf("%+1.2f", adjust_price(pp - pf))
140
+ end
141
+ end
142
+ def price_exfactory(model)
143
+ adjust_price model.price(:exfactory)
144
+ end
145
+ def price_public(model)
146
+ price = adjust_price model.price(:public)
147
+ if(!@lookandfeel.enabled?(:explain_price, false) \
148
+ || model.is_a?(Remote::Drugs::Package))
149
+ price
150
+ elsif(price && (code = model.code(:cid)))
151
+ span = HtmlGrid::Span.new(model, @session, self)
152
+ span.value = price
153
+ span.css_id = "explain_price#{code}"
154
+ span.dojo_tooltip = @lookandfeel._event_url(:explain_price,
155
+ [:cid, code])
156
+ span.label = true
157
+ span
158
+ end
159
+ end
160
+ def price_zuzahlung(model)
161
+ adjust_price model.price(:zuzahlung)
162
+ end
163
+ def product(model)
164
+ if(model.is_a?(Remote::Drugs::Package))
165
+ product_remote(model)
166
+ else
167
+ product_local(model)
168
+ end
169
+ end
170
+ def product_local(model)
171
+ link = nil
172
+ if(model.atc && (code = model.code(:cid, ODDB.config.country)))
173
+ link = HtmlGrid::Link.new(:compare, model, @session, self)
174
+ link.href = @lookandfeel._event_url(:compare, [:cid, code.value])
175
+ else
176
+ link = HtmlGrid::Span.new(model, @session, self)
177
+ end
178
+ link.value = model.name.send(@session.language) \
179
+ || ((prod = model.product) && prod.name.send(@session.language))
180
+ link.css_id = "cid_#{model.atc}_#@list_index"
181
+ link.dojo_title = @lookandfeel.lookup(:cid, model.code(:cid, ODDB.config.country))
182
+ link
183
+ end
184
+ def product_remote(model)
185
+ link = nil
186
+ atc = model.atc
187
+ if(atc && (model.active_agents.size == 1))
188
+ link = HtmlGrid::Link.new(:compare, model, @session, self)
189
+ link.href = @lookandfeel._event_url(:compare_remote,
190
+ [:uid, model.uid])
191
+ else
192
+ link = HtmlGrid::Span.new(model, @session, self)
193
+ end
194
+ link.value = model.name.send(@session.language)
195
+ code = atc && atc.code
196
+ link.css_id = "cid_#{code}_#@list_index"#"cid_#@list_index"
197
+ link.dojo_title = @lookandfeel.lookup(:ean, model.code(:ean))
198
+ link
199
+ end
200
+ def row_css(model, bg_flag)
201
+ css = super
202
+ if(model.is_a?(Remote::Drugs::Package))
203
+ css = ['remote', css].compact.join(' ')
204
+ elsif((code = model.code(:zuzahlungsbefreit)) && code.value)
205
+ css = ['zuzahlungsbefreit', css].compact.join(' ')
206
+ end
207
+ css
208
+ end
209
+ def size(model)
210
+ model.parts.collect { |part|
211
+ parts = []
212
+ multi = part.multi.to_i
213
+ if(multi > 1)
214
+ parts.push multi, 'x'
215
+ end
216
+ size = part.size.to_i
217
+ if(size > 1)
218
+ parts.push(size)
219
+ end
220
+ if(unit = part.unit)
221
+ parts.push(unit.name.send(@session.language))
222
+ end
223
+ if(quantity = part.quantity)
224
+ parts.push 'à', quantity
225
+ end
226
+ parts.join(' ')
227
+ }.join(' + ')
228
+ end
229
+ end
230
+ class Parts < View::List
231
+ COMPONENTS = {
232
+ [0,0] => :size,
233
+ [1,0] => :active_agents,
234
+ }
235
+ CSS_MAP = { [0,0,2] => 'top' }
236
+ OMIT_HEADER = true
237
+ SORT_DEFAULT = nil
238
+ def active_agents(model)
239
+ if(comp = model.composition)
240
+ comp.active_agents.collect { |act|
241
+ [ (sub = act.substance) && sub.name.send(@session.language),
242
+ act.dose ].join(' ')
243
+ }.join("<BR>")
244
+ end
245
+ end
246
+ def size(model)
247
+ part = []
248
+ if(multi = model.multi)
249
+ part.push multi, 'x'
250
+ end
251
+ part.push model.size.to_i, model.unit
252
+ if(quantity = model.quantity)
253
+ part.push 'à', quantity
254
+ end
255
+ part.join(' ')
256
+ end
257
+ end
258
+ class PackageInnerComposite < HtmlGrid::Composite
259
+ include PackageMethods
260
+ include View::Google
261
+ COMPONENTS = {
262
+ [0,0] => :name,
263
+ ## google's third parameter ensures that its link is written before
264
+ # the name - this allows a float: right in css to work correctly
265
+ [1,0,0] => :google,
266
+ [2,0] => :code_cid,
267
+ [0,1] => :company,
268
+ [2,1] => :atc,
269
+ [0,2] => :code_registration,
270
+ [0,3] => :price_public,
271
+ [2,3] => :price_festbetrag,
272
+ [0,4] => :code_festbetragsstufe,
273
+ [2,4] => :code_festbetragsgruppe,
274
+ [0,5] => :code_zuzahlungsbefreit,
275
+ [2,5] => :price_zuzahlung,
276
+ [0,6] => :code_prescription,
277
+ [2,6] => :equivalence_factor,
278
+ [1,7,0] => :fachinfo_link,
279
+ [1,7,1] => :patinfo_link,
280
+ }
281
+ CSS_MAP = {
282
+ [1,0] => 'google',
283
+ }
284
+ LABELS = true
285
+ LEGACY_INTERFACE = false
286
+ DEFAULT_CLASS = HtmlGrid::Value
287
+ def atc(model)
288
+ if(atc = model.atc)
289
+ span = HtmlGrid::Span.new(model, @session, self)
290
+ span.value = [atc.code]
291
+ if(name = atc.name)
292
+ span.value.push('(', name, ')')
293
+ end
294
+ ddds = atc.ddds
295
+ unless(ddds.empty?)
296
+ span.css_id = "atc"
297
+ span.dojo_title = ddds.join("\n")
298
+ end
299
+ span.label = true
300
+ span
301
+ end
302
+ end
303
+ def code_festbetragsstufe(model)
304
+ if(code = super)
305
+ span = HtmlGrid::Span.new(model, @session, self)
306
+ span.value = code
307
+ link = HtmlGrid::Link.new(:festbetragsstufe,
308
+ model, @session, self)
309
+ link.href = @lookandfeel.lookup(:festbetragsstufe_url)
310
+ span.dojo_title = [
311
+ @lookandfeel.lookup("festbetragsstufe_#{code}"),
312
+ link,
313
+ ]
314
+ span.css_id = "fb_#@list_index"
315
+ span.label = true
316
+ span
317
+ end
318
+ end
319
+ def code_cid(model)
320
+ model.code(:cid, ODDB.config.country)
321
+ end
322
+ def company(model)
323
+ if(company = model.company)
324
+ company.name
325
+ end
326
+ end
327
+ def equivalence_factor(model)
328
+ factors = model.parts.collect { |part|
329
+ (comp = part.composition) && comp.equivalence_factor
330
+ }.compact
331
+ unless(factors.empty?)
332
+ link = HtmlGrid::Link.new(:equivalence_factor, model,
333
+ @session, self)
334
+ link.href = "http://www.gesetze-im-internet.de/fgnv/anlage_5.html"
335
+ link.value = factors
336
+ link.label = true
337
+ link
338
+ end
339
+ end
340
+ private
341
+ def label(component, key=nil)
342
+ if(component.respond_to?(:label?))
343
+ super
344
+ else
345
+ lablable = HtmlGrid::Value.new(key, component, @session, self)
346
+ lablable.value = component
347
+ super(lablable, key)
348
+ end
349
+ end
350
+ end
351
+ class PackageComposite < HtmlGrid::DivComposite
352
+ include Snapback
353
+ COMPONENTS = {
354
+ [0,0] => :snapback,
355
+ [0,1] => InlineSearch,
356
+ [0,2] => :name,
357
+ [0,3] => PackageInnerComposite,
358
+ [0,4] => :parts_heading,
359
+ [0,5] => :parts,
360
+ }
361
+ CSS_ID_MAP = [ 'snapback', 'result-search', 'title' ]
362
+ CSS_MAP = { 0 => 'before-searchbar', 4 => 'divider' }
363
+ def breadcrumbs(model)
364
+ [ @lookandfeel.lookup(:package_details_for,
365
+ model.name.send(@session.language)) ]
366
+ end
367
+ def name(model)
368
+ name = [model.name]
369
+ if(company = model.company)
370
+ name.push(' - ', company.name)
371
+ end
372
+ name
373
+ end
374
+ def parts(model)
375
+ Parts.new(model.parts, @session, self)
376
+ end
377
+ def parts_heading(model)
378
+ key = model.parts.size > 1 ? :parts : :package_and_substances
379
+ @lookandfeel.lookup(key)
380
+ end
381
+ def snapback(model)
382
+ [ super, @lookandfeel.lookup(:breadcrumb_divider) ].concat breadcrumbs(model)
383
+ end
384
+ end
385
+ class Package < Template
386
+ CONTENT = PackageComposite
387
+ def _title
388
+ if @model.saved?
389
+ super[0..-2].push(@model.name.send(@session.language))
390
+ else
391
+ super.push(@lookandfeel.lookup(:new_package))
392
+ end
393
+ end
394
+ end
395
+ end
396
+ end
397
+ end
398
+ end
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::View::Drugs::Patinfo -- de.oddb.org -- 30.10.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/view/document'
5
+ require 'oddb/html/view/drugs/template'
6
+
7
+ module ODDB
8
+ module Html
9
+ module View
10
+ module Drugs
11
+ class PatinfoComposite < HtmlGrid::DivComposite
12
+ include Snapback
13
+ COMPONENTS = {
14
+ [0,0] => :snapback,
15
+ [0,1] => InlineSearch,
16
+ [0,2] => :name,
17
+ [0,3] => :chapters,
18
+ [0,4] => :document,
19
+ }
20
+ CSS_ID_MAP = [ 'snapback', 'result-search', 'title', 'chapters' ]
21
+ CSS_MAP = { 0 => 'before-searchbar' }
22
+ def document(model)
23
+ if((fi = model.patinfo) && (doc = fi.send(@session.language)))
24
+ Document.new(doc, @session, self)
25
+ end
26
+ end
27
+ def chapters(model)
28
+ if((fi = model.patinfo) && (doc = fi.send(@session.language)))
29
+ ChapterNames.new(:patinfo, doc, @session, self)
30
+ end
31
+ end
32
+ end
33
+ class Patinfo < Template
34
+ CONTENT = PatinfoComposite
35
+ def _title
36
+ name = @model.name.send(@session.language)
37
+ if name.nil? && @model.respond_to?(:product)
38
+ name = @model.product.name.send(@session.language)
39
+ end
40
+ super.push name
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end