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,16 @@
1
+
2
+ /* This file was generated automatically by the Snowball to ANSI C compiler */
3
+
4
+ #ifdef __cplusplus
5
+ extern "C" {
6
+ #endif
7
+
8
+ extern struct SN_env * german_create_env(void);
9
+ extern void german_close_env(struct SN_env * z);
10
+
11
+ extern int german_stem(struct SN_env * z);
12
+
13
+ #ifdef __cplusplus
14
+ }
15
+ #endif
16
+
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ # Fixes::Ruby19 -- de.oddb.org -- 19.06.2009 -- hwyss@ywesee.com
3
+
4
+ begin
5
+ require 'encoding/character/utf-8'
6
+ rescue LoadError
7
+ begin
8
+ class Encoding
9
+ class Character
10
+ class UTF8 < String
11
+ module Methods
12
+ end
13
+ end
14
+ end
15
+ end
16
+ def u str
17
+ str
18
+ end
19
+ rescue TypeError # Ruby 1.8
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'selenium/client'
4
+
5
+ module Selenium
6
+ module Client
7
+ module Protocol
8
+ def remote_control_command(verb, args=[])
9
+ timeout(@default_timeout_in_seconds) do
10
+ status, response = http_post(http_request_for(verb, args))
11
+ if response && encoding = Encoding.default_external
12
+ response.force_encoding encoding
13
+ end
14
+ raise Selenium::CommandError, response unless status == "OK"
15
+ response
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # Fix for String#singular -- de.oddb.org -- 20.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'facet/string/singular'
5
+
6
+ class String
7
+ inflection_rule '', 'e', 'es'
8
+ end
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+ # Fix for Yaml -- de.oddb.org -- 01.11.2007 -- hwyss@ywesee.com
3
+
4
+ require 'yaml'
5
+
6
+ ## FIXME: the following works around Character::Encoding::UTF8 hanging when
7
+ # yaml's String#is_binary_data? calls self.count("\x00")
8
+ class String
9
+ def is_binary_data?
10
+ ( self.count( "^ -~", "^\r\n" ) / self.size > 0.3 \
11
+ || self.include?( "\x00" ) ) unless empty?
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # ODDB -- de.oddb.org -- 27.10.2006 -- hwyss@ywesee.com
3
+
4
+ module ODDB
5
+ VERSION = '1.0.0'
6
+ # File.read(File.expand_path('../.git/refs/heads/master',
7
+ # File.dirname(__FILE__)))
8
+ class << self
9
+ attr_accessor :auth, :config, :logger, :persistence, :server, :exporter
10
+ end
11
+ end
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # ODDB::Business::Company -- de.oddb.org -- 22.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+
6
+ module ODDB
7
+ module Business
8
+ class Company < Model
9
+ has_many :products, delegates(:packages)
10
+ multilingual :name
11
+ def packages
12
+ products.inject([]) { |memo, prod|
13
+ memo.concat(prod.packages)
14
+ }
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env ruby
2
+ # Util::Invoice -- de.oddb.org -- 21.01.2008 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+
6
+ module ODDB
7
+ module Business
8
+ class Invoice < Model
9
+ has_many :items
10
+ attr_accessor :yus_name, :ydim_id, :status, :ipn, :currency
11
+ attr_reader :time
12
+ class Item
13
+ attr_reader :type, :text, :quantity, :price, :vat, :time
14
+ attr_accessor :expiry_time
15
+ def initialize(type, text, quantity, unit, price)
16
+ @type, @text, @quantity, @unit, @price \
17
+ = type, text, quantity.to_i, unit.to_s, price.to_f
18
+ @time = Time.now
19
+ end
20
+ def expired?
21
+ @expiry_time && @expiry_time < Time.now
22
+ end
23
+ def total_brutto
24
+ total_netto + vat
25
+ end
26
+ def total_netto
27
+ @price * @quantity
28
+ end
29
+ def vat
30
+ total_netto * ODDB.config.vat / 100
31
+ end
32
+ def ydim_data
33
+ {
34
+ :expiry_time => @expiry_time,
35
+ :price => @price,
36
+ :quantity => @quantity,
37
+ :text => @text,
38
+ :time => @time,
39
+ :unit => @unit,
40
+ }
41
+ end
42
+ end
43
+ def initialize
44
+ @items = []
45
+ @salt = generate_salt
46
+ @time = Time.now
47
+ @yus_name = ''
48
+ @currency = 'EUR'
49
+ end
50
+ def add(*args)
51
+ add_item Item.new(*args)
52
+ end
53
+ def id
54
+ @id ||= Digest::MD5.hexdigest @time.strftime("%c") << @salt << @yus_name
55
+ end
56
+ def paid_for?(text)
57
+ @status == 'completed' && @items.any? { |item| item.text == text }
58
+ end
59
+ def total_brutto
60
+ @items.inject(Util::Money.new(0)) { |memo, item|
61
+ memo + item.total_brutto
62
+ }
63
+ end
64
+ def types
65
+ @items.collect { |item| item.type }.compact.uniq
66
+ end
67
+ private
68
+ def generate_salt
69
+ salt = ''
70
+ 8.times { salt << rand(255).chr }
71
+ salt
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env ruby
2
+ # Business::Price -- ch.oddb.org -- 24.07.2009 -- hwyss@ywesee.com
3
+
4
+ module ODDB
5
+ module Business
6
+ class Price
7
+ include Comparable
8
+ attr_reader :country, :type, :values
9
+ def initialize type=nil, country=nil, amount=nil
10
+ @country = country.to_s.upcase
11
+ @type = type.to_s.downcase
12
+ @values = []
13
+ self.value = amount if amount
14
+ end
15
+ def at time=Time.now
16
+ @values.find do |price| price.valid_from <= time end
17
+ end
18
+ def country=(country)
19
+ @country = country.to_s.upcase
20
+ end
21
+ def current
22
+ at Time.now
23
+ end
24
+ def is_for? type, country
25
+ @type == type.to_s.downcase && @country == country.to_s.upcase
26
+ end
27
+ def method_missing *args, &block
28
+ current.send *args, &block
29
+ end
30
+ def to_f
31
+ current.to_f
32
+ end
33
+ def to_s
34
+ current.to_s
35
+ end
36
+ def type=(type)
37
+ @type = type.to_s.downcase
38
+ end
39
+ def value=(args)
40
+ money, valid_from, _ = args
41
+ if money.is_a?(Numeric)
42
+ money = Util::Money.new money.to_f
43
+ if valid_from.is_a?(Time)
44
+ money.valid_from = valid_from
45
+ end
46
+ elsif !money.is_a?(Util::Money)
47
+ raise ArgumentError,
48
+ "Cannot set the value of a Price to '#{money}'. Only Numeric or Money are allowed"
49
+ end
50
+ cur = at(money.valid_from)
51
+ return cur if cur == money
52
+ @values = @values.push(money).sort_by(&:valid_from).reverse
53
+ money
54
+ end
55
+ def <=>(other)
56
+ current <=> other
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env ruby
2
+ # @config -- de.oddb.org -- 08.09.2006 -- hwyss@ywesee.com
3
+
4
+ require 'rclconf'
5
+ require 'oddb'
6
+
7
+ module ODDB
8
+ oddb_dir = File.expand_path('..', ENV['DOCUMENT_ROOT'] || './doc')
9
+ default_dir = File.expand_path('etc', oddb_dir)
10
+ default_config_files = [
11
+ File.join(default_dir, 'oddb.yml'),
12
+ '/etc/oddb/oddb.yml',
13
+ ]
14
+ defaults = {
15
+ 'admins' => [],
16
+ 'auth_domain' => 'org.oddb.de',
17
+ 'auth_server' => 'drbssl://localhost:9997',
18
+ 'config' => default_config_files,
19
+ 'country' => 'CH',
20
+ 'credentials' => {},
21
+ 'currency_rates' => 'druby://localhost:10999',
22
+ 'data_dir' => File.expand_path('data', oddb_dir),
23
+ 'db_name' => 'oddb',
24
+ 'db_user' => 'oddb',
25
+ 'db_auth' => 'oddb',
26
+ 'db_backend' => :psql,
27
+ 'debug_recipients' => [],
28
+ 'dojo_debug' => false,
29
+ 'default_dstype' => 'compare',
30
+ 'export_hour' => 4,
31
+ 'invoice_server' => 'druby://localhost:12375',
32
+ 'pharmacy_percentage' => 3,
33
+ 'pharmacy_premium' => 8.1,
34
+ 'http_server' => 'http://localhost',
35
+ 'log_file' => STDERR,
36
+ 'log_file_export' => STDERR,
37
+ 'log_level' => 'INFO',
38
+ 'log_level_export' => 'INFO',
39
+ 'mail_charset' => 'utf8',
40
+ 'mail_from' => 'update@oddb.org',
41
+ 'mail_invoice_from' => 'ch.ODDB.org" ipn@oddb.org',
42
+ 'mail_invoice_smtp' => 'ipn@oddb.org',
43
+ 'oddb_dir' => oddb_dir,
44
+ 'query_limit' => 5,
45
+ 'query_limit_phase' => 24 * 60 * 60,
46
+ 'payment_period' => 30,
47
+ 'paypal_server' => 'www.paypal.com',
48
+ 'paypal_receiver' => nil,
49
+ 'persistence' => 'odba',
50
+ 'prices' => {
51
+ 'org.oddb.de.export.cvs' => 0.16,
52
+ 'org.oddb.de.view.365' => 400,
53
+ 'org.oddb.de.view.30' => 50,
54
+ 'org.oddb.de.view.1' => 5,
55
+ },
56
+ 'remote_databases' => [],
57
+ 'run_exporter' => true,
58
+ 'run_updater' => true,
59
+ 'server_name' => 'ch.oddb.org',
60
+ 'server_url' => 'druby://localhost:11000',
61
+ 'server_url_export' => 'druby://localhost:11001',
62
+ 'session_timeout' => 3600,
63
+ 'smtp_from' => 'update@oddb.org',
64
+ 'smtp_server' => 'localhost',
65
+ 'update_hour' => 2,
66
+ 'var' => File.expand_path('var', oddb_dir),
67
+ 'vat' => 19,
68
+ }
69
+
70
+ config = RCLConf::RCLConf.new(ARGV, defaults)
71
+ config.load(config.config)
72
+ @config = config
73
+ end
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs -- de.oddb.org -- 21.11.2006 -- hwyss@ywesee.com
3
+
4
+ require "oddb/drugs/active_agent"
5
+ require "oddb/drugs/atc"
6
+ require "oddb/drugs/composition"
7
+ require "oddb/drugs/ddd"
8
+ require "oddb/drugs/dose"
9
+ require "oddb/drugs/galenic_form"
10
+ require "oddb/drugs/package"
11
+ require "oddb/drugs/part"
12
+ require "oddb/drugs/product"
13
+ require "oddb/drugs/sequence"
14
+ require "oddb/drugs/substance"
15
+ require "oddb/drugs/substance_group"
16
+ require "oddb/drugs/unit"
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::ActiveAgent -- de.oddb.org -- 07.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+ require 'oddb/drugs/dose'
6
+
7
+ module ODDB
8
+ module Drugs
9
+ class ActiveAgent < Model
10
+ include Comparable
11
+ belongs_to :substance
12
+ belongs_to :composition, delegates(:packages)
13
+ attr_accessor :dose, :chemical_equivalence
14
+ def initialize(substance, dose, unit="mg")
15
+ @substance = substance
16
+ if(dose.is_a?(Dose))
17
+ @dose = dose
18
+ else
19
+ @dose = Dose.new(dose, unit)
20
+ end
21
+ end
22
+ def to_s(language=:de)
23
+ [@substance.name.send(language), @dose].join(' ')
24
+ end
25
+ def <=>(other)
26
+ [@substance, @dose] <=> [other.substance, other.dose]
27
+ end
28
+ def ==(other)
29
+ other.is_a?(ActiveAgent) \
30
+ && ([@substance, @dose] == [other.substance, other.dose] \
31
+ || @chemical_equivalence == other \
32
+ || ((other = other.chemical_equivalence) && self == other)) \
33
+ || false
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::Atc -- de.oddb.org -- 17.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+
6
+ module ODDB
7
+ module Drugs
8
+ class Atc < Model
9
+ has_many :ddds, on_delete(:cascade)
10
+ has_many :sequences, delegates(:packages)
11
+ attr_reader :code
12
+ multilingual :name
13
+ multilingual :guidelines
14
+ multilingual :ddd_guidelines
15
+ def initialize(code)
16
+ @code = code
17
+ end
18
+ def interesting?
19
+ !(ddds.empty? && guidelines.empty? && ddd_guidelines.empty?)
20
+ end
21
+ def level
22
+ case len = @code.length
23
+ when 7
24
+ 5
25
+ when 1
26
+ len
27
+ else
28
+ len - 1
29
+ end
30
+ end
31
+ def parent
32
+ Atc.find_by_code(parent_code)
33
+ end
34
+ def parent_code
35
+ case level
36
+ when 2
37
+ @code[0,1]
38
+ when 3..5
39
+ @code[0,level]
40
+ end
41
+ end
42
+ def products
43
+ sequences.collect { |sequence| sequence.product }.uniq
44
+ end
45
+ def to_s
46
+ @code.to_s
47
+ end
48
+ def <=>(other)
49
+ @code <=> other.code
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::Composition -- de.oddb.org -- 01.09.2006 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/model'
5
+ require 'oddb/drugs/dose'
6
+
7
+ module ODDB
8
+ module Drugs
9
+ class Composition < Model
10
+ attr_accessor :galenic_form, :equivalence_factor
11
+ belongs_to :sequence, delegates(:packages)
12
+ has_many :active_agents, on_delete(:cascade)
13
+ has_many :parts
14
+ def active_agent(substance)
15
+ active_agents.find { |agent| agent.substance == substance }
16
+ end
17
+ def doses
18
+ active_agents.collect { |agent| agent.dose }
19
+ end
20
+ def include?(substance, dose, unit=nil)
21
+ unless(dose.is_a?(Drugs::Dose))
22
+ dose = Drugs::Dose.new(dose, unit)
23
+ end
24
+ active_agents.any? { |act|
25
+ act.substance == substance && act.dose == dose
26
+ }
27
+ end
28
+ def substances
29
+ active_agents.collect { |agent| agent.substance }
30
+ end
31
+ def to_s(language=:de)
32
+ active_agents.collect { |agent| agent.to_s(language) }.join(', ')
33
+ end
34
+ def ==(other)
35
+ other.is_a?(Composition) \
36
+ && @galenic_form == other.galenic_form \
37
+ && active_agents.sort == other.active_agents.sort
38
+ end
39
+ end
40
+ end
41
+ end