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,14 @@
1
+ #!/usr/bin/env ruby
2
+ # Regulatory::Authority -- ch.oddb.org -- 23.07.2009 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+
6
+ module ODDB
7
+ module Regulatory
8
+ class Authority < Model
9
+ attr_accessor :url
10
+ multilingual :name
11
+ has_many :registrations
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # Regulatory::Registration -- ch.oddb.org -- 23.07.2009 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+
6
+ module ODDB
7
+ module Regulatory
8
+ class Registration < Model
9
+ attr_accessor :code, :registration_date, :revision_date, :expiration_date,
10
+ :deactivation_date
11
+ belongs_to :authority
12
+ has_many :sequences
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+ # Remote::Business::Company -- de.oddb.org -- 16.02.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/remote/object'
5
+ require 'oddb/remote/drugs/product'
6
+ require 'oddb/util/multilingual'
7
+
8
+ module ODDB
9
+ module Remote
10
+ module Business
11
+ class Company < Remote::Object
12
+ def name
13
+ @name ||= ODDB::Util::Multilingual.new(:de => @remote.name)
14
+ end
15
+ def products
16
+ @products ||= @remote.registrations.collect do |reg|
17
+ Remote::Drugs::Product.new(@source, reg)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # Remote::Drugs::ActiveAgent -- de.oddb.org -- 16.02.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/remote/object'
5
+ require 'oddb/remote/drugs/substance'
6
+
7
+ module ODDB
8
+ module Remote
9
+ module Drugs
10
+ class ActiveAgent < Remote::Object
11
+ def dose
12
+ @dose ||= @remote.dose
13
+ end
14
+ def substance
15
+ @substance ||= Remote::Drugs::Substance.new(@source, @remote.substance)
16
+ end
17
+ def <=>(other)
18
+ if(dose.nil?)
19
+ substance <=> other.substance
20
+ else
21
+ [substance, dose] <=> [other.substance, other.dose]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+ # Remote::Drugs::Atc -- 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 Atc < Remote::Object
11
+ delegate :code, :parent_code, :descriptions, :synonyms, :guidelines,
12
+ :ddd_guidelines
13
+ def initialize *args
14
+ super
15
+ @ddds = {}
16
+ end
17
+ def name
18
+ @name ||= Util::Multilingual.new(:de => @remote.name)
19
+ end
20
+ def ddds(administration)
21
+ @ddds[administration] ||= @remote.ddds.inject([]) { |memo, (roa, ddd)|
22
+ memo.push ddd if roa == administration
23
+ memo
24
+ }
25
+ end
26
+ def interesting?
27
+ false
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -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,25 @@
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
+ delegate :all_descriptions
13
+ def description
14
+ @description ||= ODDB::Util::Multilingual.new(:de => @remote.de)
15
+ end
16
+ def group
17
+ @group ||= ODDB::Drugs::GalenicGroup.find_by_name(groupname)
18
+ end
19
+ def groupname
20
+ @groupname ||= @remote && @remote.galenic_group.de
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,126 @@
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, :prices, :feedbacks, :ikskey, :pharmacode
20
+ def initialize(source, remote, currency_rate=1.0, 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 ||= Remote::Drugs::Atc.new(@source, @remote.atc_class)
33
+ end
34
+ def code(type, country='CH')
35
+ case type
36
+ when :ean
37
+ @ean ||= ODDB::Util::Code.new(:ean, @remote.barcode, 'CH')
38
+ end
39
+ end
40
+ def company
41
+ @company ||= Remote::Business::Company.new(@source, @remote.company)
42
+ end
43
+ def comparables
44
+ local_comparables.concat @remote.comparables.collect { |pac|
45
+ Package.new(@source, pac, @currency_rate, @tax_factor)
46
+ }
47
+ end
48
+ def comparable_size
49
+ @comparable_size ||= @remote.comparable_size
50
+ end
51
+ def ddds
52
+ @ddds ||= galenic_forms.inject([]) { |memo, form|
53
+ if(group = form.group)
54
+ memo.concat atc.ddds(group.administration)
55
+ end
56
+ memo
57
+ }
58
+ end
59
+ def dose_price(dose)
60
+ if(price = price(:public))
61
+ pdose = doses.first.want(dose.unit)
62
+ ODDB::Util::Money.new((dose / pdose).to_f * (price.to_f / size))
63
+ end
64
+ rescue StandardError
65
+ end
66
+ def galenic_forms
67
+ @galenic_forms ||= @remote.galenic_forms.collect { |form|
68
+ Remote::Drugs::GalenicForm.new(@source, form)
69
+ }
70
+ end
71
+ def local_comparables
72
+ comparables = []
73
+ doses = active_agents.collect { |act| act.dose }
74
+ if(doses.size == 1 \
75
+ && (atc = ODDB::Drugs::Atc.find_by_code(self.atc.code)))
76
+ descriptions = galenic_forms.collect { |form| form.description.de }
77
+ groupnames = galenic_forms.collect { |form| form.groupname }
78
+ range = (size*0.75)..(size*1.25)
79
+ atc.products.each { |prod|
80
+ prod.sequences.each { |seq|
81
+ if(seq.doses == doses)
82
+ descs = []
83
+ names = []
84
+ seq.galenic_forms.each { |form|
85
+ descs.push form.description
86
+ if grp = form.group
87
+ names.push grp.name
88
+ end
89
+ }
90
+ if(descs == descriptions || groupnames.all? { |name|
91
+ names.any? { |other| other == name } })
92
+ comparables.concat seq.packages.select { |pac|
93
+ range.include?(pac.size)
94
+ }
95
+ end
96
+ end
97
+ }
98
+ }
99
+ end
100
+ comparables
101
+ end
102
+ def name
103
+ @name ||= ODDB::Util::Multilingual.new(:de => @remote.name_base)
104
+ end
105
+ def parts
106
+ @parts ||= @remote.parts.collect { |part|
107
+ Remote::Drugs::Part.new(@source, part)
108
+ }
109
+ end
110
+ def price(type)
111
+ case type
112
+ when :public, :exfactory
113
+ @cache.fetch(type) { @cache.store(type, remote_price(type)) }
114
+ end
115
+ end
116
+ def remote_price(key)
117
+ pr = @remote.send("price_#{key}").to_f * @currency_rate / @tax_factor
118
+ ODDB::Util::Money.new(pr.to_f) if(pr > 0)
119
+ end
120
+ def size
121
+ @size ||= comparable_size.qty
122
+ end
123
+ end
124
+ end
125
+ end
126
+ 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, :measure
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,19 @@
1
+ # Remote::Drugs::Product -- ch.oddb.org -- 22.07.2009 -- hwyss@ywesee.com
2
+
3
+ require 'oddb/remote/drugs/sequence'
4
+
5
+ module ODDB
6
+ module Remote
7
+ module Drugs
8
+ class Product < Remote::Object
9
+ delegate :iksnr, :registration_date, :revision_date, :expiration_date,
10
+ :inactive_date
11
+ def sequences
12
+ @sequences ||= @remote.sequences.collect do |seqnr, seq|
13
+ Remote::Drugs::Sequence.new @source, seq
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,46 @@
1
+ # Remote::Drugs::Sequence -- ch.oddb.org -- 22.07.2009 -- hwyss@ywesee.com
2
+
3
+ require 'oddb/remote/drugs/atc'
4
+ require 'oddb/remote/drugs/package'
5
+ require 'oddb/remote/util/m10l_document'
6
+
7
+ module ODDB
8
+ module Remote
9
+ module Drugs
10
+ class Sequence < Remote::Object
11
+ delegate :name_base, :compositions
12
+ def atc
13
+ @atc or begin
14
+ if atc = @remote.atc_class
15
+ @atc = Remote::Drugs::Atc.new @source, atc
16
+ end
17
+ end
18
+ end
19
+ def fachinfo
20
+ @fachinfo or begin
21
+ if fi = @remote.fachinfo
22
+ Remote::Util::M10lDocument.new @source, fi
23
+ end
24
+ end
25
+ end
26
+ def packages
27
+ @remote.packages.collect do |ikscd, pac|
28
+ Remote::Drugs::Package.new @source, pac
29
+ end
30
+ end
31
+ def patinfo
32
+ @patinfo or begin
33
+ if pi = @remote.patinfo
34
+ pi.descriptions.each do |key, doc|
35
+ if doc.respond_to?(:__drbref=)
36
+ doc.__drbref = @remote.__drbref + "@patinfo:#{key}"
37
+ end
38
+ end
39
+ Remote::Util::M10lDocument.new @source, pi
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ 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 ||= ODDB::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,19 @@
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
@@ -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, :remote
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("%s#%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