oddb2xml 2.7.4 → 2.7.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af1cbeb37bf057e98955776c87dd5092fc5706af18d00ba818efccd2c52a076e
4
- data.tar.gz: 1f4faf8f73b2cffa14bd3dda23dad4e401b524587c0f95d80e0cc9cbd4ba5d2b
3
+ metadata.gz: 2b92ef261a1ad3ea6a8e2ce6d60302b0acf4c50efe1897ec9379633d31c5cced
4
+ data.tar.gz: ebaca1d2e02274a59b416e407a1049662564b48abb474f28de50b00f5b250147
5
5
  SHA512:
6
- metadata.gz: ace048c855b3711fd6b75692373318fe992a5c6529d322c13b516a7bd09390e36efec3f14edaa91ddeb223438d74c97c15ba4691077e9c77ce5063a10bdcc423
7
- data.tar.gz: 9dcf787039edc02a56b7301f6849e76259628ac55da598a2878e4a08c63fd3c3aaef35bfea6bda8184c6e3552314fba7bb028962d81151ca98bf76f830c3303f
6
+ metadata.gz: db2fe198ad3ace938014038ab1260c2351113c93b67bceed5148352aac9e8c5c4596fd7beb310869913e2dafcecb93da1abc1836b2296a8bab514e5937a47fce
7
+ data.tar.gz: 3a41d7685173bc57d9dfd0618f179ac0405140d203b50b2e750a97ebe438d2a285858972e081724d1ab525f4f106b22b7b673d2fa5511790b87287eac8e5609b
@@ -22,8 +22,7 @@ jobs:
22
22
  fail-fast: false
23
23
  matrix:
24
24
  os: [ ubuntu]
25
- ruby: [2.5, 2.6, 2.7, 3.0, head]
26
- continue-on-error: ${{ endsWith(matrix.ruby, 'head') }}
25
+ ruby: [2.6, 2.7, "3.0", 3.1]
27
26
  steps:
28
27
  - uses: actions/checkout@v2
29
28
  - uses: ruby/setup-ruby@v1
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ === 2.7.5 / 1.02.2022
2
+ * Specify old versions of savon and rdoc to avoid importing psych
3
+ * Added ruby 3.1 to tested ruby versions
4
+ * Removed ruby 2.5 from supported versions
5
+ * Force psych to < 4.0 to avoid the error Psych::DisallowedClass: Tried to load unspecified class: Struct::GalenicGroup
6
+ * Therefor rdoc < 6.4
7
+
1
8
  === 2.7.4 / 30.03.2021
2
9
  * Update needed Ruby-Version to 2.5.0 in gemspec
3
10
  * Ensure downloads directory is created at first run
@@ -213,7 +213,6 @@ class CompositionParser < Parslet::Parser
213
213
  str("et ") |
214
214
  str("excipiens") |
215
215
  str("partes") |
216
- str("pro capsula") |
217
216
  str("pro dosi") |
218
217
  str("pro vitroe") |
219
218
  str("q.s. ad ") |
@@ -259,6 +258,9 @@ class CompositionParser < Parslet::Parser
259
258
 
260
259
  rule(:pro_identifiers) {
261
260
  str("ut aqua ad iniectabilia q.s. ad emulsionem pro ") |
261
+ str("aqua ").maybe >> str("ad iniectabile q.s. ad suspensionem pro ") |
262
+ str("aqua ").maybe >> str("ad iniectabile q.s. ad solutionem pro ") |
263
+ str("aqua ").maybe >> str("ad iniectabile ad solutionem pro ") |
262
264
  str("aqua ").maybe >> str("ad iniectabilia q.s. ad solutionem pro ") |
263
265
  str("aqua ").maybe >> str("ad solutionem pro ") |
264
266
  str("aqua ").maybe >> str("q.s. ad emulsionem pro ") |
@@ -270,6 +272,7 @@ class CompositionParser < Parslet::Parser
270
272
  str("excipiens ad pulverem pro ") |
271
273
  str("excipiens ad solutionem pro ") |
272
274
  str("pro vase ") |
275
+ str("pro capsula ") |
273
276
  str("q.s. ad pulverem pro ")
274
277
  }
275
278
  rule(:excipiens_dose) {
@@ -243,7 +243,7 @@ module Oddb2xml
243
243
  class RefdataDownloader < Downloader
244
244
  def initialize(options = {}, type = :pharma)
245
245
  @type = (type == :pharma ? "Pharma" : "NonPharma")
246
- url = "http://refdatabase.refdata.ch/Service/Article.asmx?WSDL"
246
+ url = "https://refdatabase.refdata.ch/Service/Article.asmx?WSDL"
247
247
  super(options, url)
248
248
  end
249
249
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  require "parslet"
8
8
  require "parslet/convenience"
9
- require "oddb2xml/compositions_syntax"
9
+ require_relative "compositions_syntax"
10
10
  VERBOSE_MESSAGES ||= false
11
11
 
12
12
  module ParseUtil
@@ -101,6 +101,7 @@ module ParseUtil
101
101
  rescue => error
102
102
  puts "error #{error}"
103
103
  # binding.pry
104
+ raise error
104
105
  end
105
106
  end
106
107
 
@@ -373,6 +374,7 @@ class ParseComposition
373
374
  ERRORS_TO_FIX = {
374
375
  /(\d+)\s+-\s*(\d+)/ => '\1-\2',
375
376
  "o.1" => "0.1",
377
+ /polymerisat(i|um) \d:\d/ => "polymerisatum",
376
378
  /\s+(mg|g) DER:/ => ' \1, DER:',
377
379
  " mind. " => " min. ",
378
380
  " streptococci pyogen. " => " streptococci pyogen ",
@@ -384,7 +386,7 @@ class ParseComposition
384
386
  / U\.: (excipiens) / => ' U. \1 ',
385
387
  / U\.: (alnus|betula|betula|betulae) / => ' U., \1 ',
386
388
  /^(acari allergeni extractum (\(acarus siro\)|).+\s+U\.:)/ => 'A): \1',
387
- "Solvens: alprostadilum" => "alprostadilum"
389
+ "Solvens: alprostadilum" => "alprostadilum",
388
390
  }
389
391
  @@error_handler = ParseUtil::HandleSwissmedicErrors.new(ERRORS_TO_FIX)
390
392
 
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "2.7.4"
2
+ VERSION = "2.7.5"
3
3
  end
data/oddb2xml.gemspec CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_dependency "minitar" # , '~> 0.5.2'
25
25
  spec.add_dependency "mechanize" # , '~> 2.5.1'
26
26
  spec.add_dependency "nokogiri", ">= 1.8.2"
27
- spec.add_dependency "savon" # , '~> 2.11.0'
27
+ spec.add_dependency "savon" , '~> 2.12.0'
28
28
  spec.add_dependency "spreadsheet" # , '~> 1.0.0'
29
29
  spec.add_dependency "rubyXL", "~> 3.4.0"
30
30
  spec.add_dependency "sax-machine" # , '~> 0.1.0'
@@ -44,8 +44,9 @@ Gem::Specification.new do |spec|
44
44
  spec.add_development_dependency "rake"
45
45
  spec.add_development_dependency "rspec"
46
46
  spec.add_development_dependency "webmock"
47
- spec.add_development_dependency "rdoc"
47
+ spec.add_development_dependency "rdoc", "~> 6.3.3" # rdoc 6.4 depends on psych 4.0 which breaks savon!
48
48
  spec.add_development_dependency "vcr"
49
49
  spec.add_development_dependency "timecop"
50
50
  spec.add_development_dependency "flexmock"
51
+ spec.add_development_dependency "psych", "< 4.0.0"
51
52
  end
data/shell.nix ADDED
@@ -0,0 +1,17 @@
1
+ # See https://nixos.wiki/wiki/Packaging/Ruby
2
+ # A small helper script to get a development version for oddb2xml under NixOS
3
+ with import <nixpkgs> {};
4
+ stdenv.mkDerivation {
5
+ name = "env";
6
+ buildInputs = [
7
+ ruby_3_0.devEnv
8
+ git
9
+ python
10
+ libpcap
11
+ libxml2
12
+ libxslt
13
+ pkg-config
14
+ bundix
15
+ gnumake
16
+ ];
17
+ }
data/spec/builder_spec.rb CHANGED
@@ -546,7 +546,8 @@ describe Oddb2xml::Builder do
546
546
  it "should flag fridge drugs correctly" do
547
547
  doc = REXML::Document.new IO.read(checkAndGetArticleXmlName)
548
548
  checkAndGetArticleWithGTIN(doc, Oddb2xml::FRIDGE_GTIN)
549
- expect(REXML::XPath.match(doc, "//COOL='1']").size).to eq 1
549
+ expect(REXML::XPath.match(doc, "//COOL=").size).to eq 1
550
+ expect(REXML::XPath.match(doc, "//COOL").first.text).to eq "1"
550
551
  end
551
552
 
552
553
  ean_with_drug_index = 7680555610041
@@ -19,7 +19,7 @@
19
19
  ]
20
20
  },
21
21
  "method": "get",
22
- "uri": "http://refdatabase.refdata.ch/Service/Article.asmx?WSDL"
22
+ "uri": "https://refdatabase.refdata.ch/Service/Article.asmx?WSDL"
23
23
  },
24
24
  "response": {
25
25
  "body": {
data/spec/parslet_spec.rb CHANGED
@@ -1,8 +1,13 @@
1
- require "pp"
2
1
  VERBOSE_MESSAGES = false
3
- require "spec_helper"
4
- require "#{Dir.pwd}/lib/oddb2xml/parslet_compositions"
2
+ if File.exists?("#{Dir.pwd}/lib/oddb2xml/parslet_compositions.rb")
3
+ require_relative "../lib/oddb2xml/parslet_compositions"
4
+ else
5
+ puts :ParseFailed
6
+ require_relative "../src/plugin/parslet_compositions"
7
+ end
8
+
5
9
  require "parslet/rig/rspec"
10
+ require "socket"
6
11
 
7
12
  hostname = Socket.gethostbyname(Socket.gethostname).first
8
13
  RUN_ALL_COMPOSITION_TESTS = false # /travis|localhost/i.match(hostname) != nil # takes about five minutes to run!
@@ -15,7 +20,6 @@ describe ParseComposition do
15
20
  string = "conserv.: E 216, E 218, excipiens pro suppositorio."
16
21
  composition = ParseComposition.from_string(string)
17
22
  # active_agent = ["hynic-[d-phe(1)", "tyr(3)-octeotridum]trifluoroacetum", "acidum ethylendiamini-n,n'-diaceticum"]
18
-
19
23
  active_substance = "HYNIC-[D-Phe(1)"
20
24
  composition_text = "II) Durchstechflasche 2: acidum ethylendiamini-N,N'-diaceticum 10 mg, dinatrii phosphas dodecahydricus, natrii hydroxidum, pro vitro."
21
25
  composition = ParseUtil.parse_compositions(composition_text, active_substance).first
@@ -1290,6 +1294,63 @@ describe ParseComposition do
1290
1294
  specify { expect(substance.unit).to eq nil }
1291
1295
  end
1292
1296
 
1297
+ context "should handle 41174" do
1298
+ string = "triamcinoloni acetonidum 10 mg, carmellosum natricum, natrii chloridum, polysorbatum 80, conserv.: alcohol benzylicus 9.9 mg, aqua ad iniectabile q.s. ad suspensionem pro 1 ml."
1299
+ composition = ParseComposition.from_string(string)
1300
+ specify { expect(composition.source).to eq string }
1301
+ specify { expect(composition.label).to eq nil }
1302
+ specify { expect(composition.substances.size).to be > 1 }
1303
+ specify { expect(composition.substances.first.name).to eq "Triamcinoloni Acetonidum" }
1304
+ specify { expect(composition.substances.last.name).to eq "Alcohol Benzylicus" }
1305
+ end
1306
+
1307
+ context "should handle 67023" do
1308
+ string = "noradrenalinum 0.06 mg ut noradrenalini tartras, natrii chloridum, acidum hydrochloridum, aqua ad iniectabile q.s. ad solutionem pro 1 ml corresp. natrium 3.308 mg."
1309
+ composition = ParseComposition.from_string(string)
1310
+ specify { expect(composition.source).to eq string }
1311
+ specify { expect(composition.label).to eq nil }
1312
+ specify { expect(composition.substances.size).to be > 1 }
1313
+ specify { expect(composition.substances.first.name).to eq "Noradrenalinum" }
1314
+ specify { expect(composition.substances.last.name).to eq "Acidum Hydrochloridum" }
1315
+ end
1316
+
1317
+ context "should handle 67023" do
1318
+ string = "noradrenalinum 0.06 mg ut noradrenalini tartras, natrii chloridum, acidum hydrochloridum, aqua ad iniectabile q.s. ad solutionem pro 1 ml corresp. natrium 3.308 mg."
1319
+ composition = ParseComposition.from_string(string)
1320
+ specify { expect(composition.source).to eq string }
1321
+ specify { expect(composition.label).to eq nil }
1322
+ specify { expect(composition.substances.size).to be > 0 }
1323
+ specify { expect(composition.substances.first.name).to eq "Noradrenalinum" }
1324
+ specify { expect(composition.substances.last.name).to eq "Acidum Hydrochloridum" }
1325
+ end
1326
+
1327
+ context "should handle 67689" do
1328
+ string = "daratumumabum 1800 mg, hyaluronidasum humanum ADNr, histidinum, histidini hydrochloridum monohydricum, sorbitolum 735.1 mg, methioninum, polysorbatum 20, aqua ad iniectabile ad solutionem pro 15 ml"
1329
+ composition = ParseComposition.from_string(string)
1330
+ specify { expect(composition.source).to eq string }
1331
+ specify { expect(composition.label).to eq nil }
1332
+ specify { expect(composition.substances.size).to be > 0 }
1333
+ specify { expect(composition.substances.first.name).to eq "Daratumumabum" }
1334
+ specify { expect(composition.substances.last.name).to eq "Polysorbatum 20" }
1335
+ end
1336
+
1337
+ context "should handle 66097" do
1338
+ string = "acidum acetylsalicylicum 100 mg, cellulosum microcristallinum, maydis amylum, silica colloidalis anhydrica, acidum stearicum, Überzug: acidi methacrylici et ethylis acrylatis polymerisatum 1:1, polysorbatum 80, natrii laurilsulfas corresp. natrium 2 µg, triethylis citras, talcum pro compresso obducto" # fails
1339
+ composition = ParseComposition.from_string(string)
1340
+ specify { expect(composition.source).to eq string }
1341
+ specify { expect(composition.label).to eq nil }
1342
+ specify { expect(composition.substances.first.name).to eq "Acidum Acetylsalicylicum" }
1343
+ specify { expect(composition.substances.last.name).to eq "Talcum pro compresso Obducto" }
1344
+ end
1345
+ context "should handle 65828" do
1346
+ string = " esomeprazolum 20 mg ut esomeprazolum magnesicum dihydricum, acidi methacrylici et ethylis acrylatis polymerisati 1:1 dispersio 30 per centum, natrii laurilsulfas, talcum, triethylis citras, hypromellosum, sacchari sphaerae corresp. saccharum 4.73 mg et maydis amylum, magnesii stearas, hydroxypropylcellulosum, glyceroli monostearas 40-55, polysorbatum 80, cellulosum microcristallinum, povidonum K 29-32, macrogolum 6000, crospovidonum, natrii stearylis fumaras, Überzug: hypromellosum, E 171, macrogolum 400, E 172 (rubrum), E 172 (flavum), pro compresso obducto corresp. natrium 0.01 mg."
1347
+ composition = ParseComposition.from_string(string)
1348
+ specify { expect(composition.source).to eq string }
1349
+ specify { expect(composition.label).to eq nil }
1350
+ specify { expect(composition.substances.first.name).to eq "Esomeprazolum" }
1351
+ specify { expect(composition.substances.last.name).to eq "pro compresso Obducto" }
1352
+ end
1353
+
1293
1354
  context "should return correct composition for 'minoxidilum excipiens'" do
1294
1355
  string = "minoxidilum 2.5 mg, excipiens pro compresso."
1295
1356
  composition = ParseComposition.from_string(string)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oddb2xml
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.4
4
+ version: 2.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yasuhiro Asaka, Zeno R.R. Davatz, Niklaus Giger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-30 00:00:00.000000000 Z
11
+ date: 2022-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: savon
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 2.12.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 2.12.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: spreadsheet
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -336,16 +336,16 @@ dependencies:
336
336
  name: rdoc
337
337
  requirement: !ruby/object:Gem::Requirement
338
338
  requirements:
339
- - - ">="
339
+ - - "~>"
340
340
  - !ruby/object:Gem::Version
341
- version: '0'
341
+ version: 6.3.3
342
342
  type: :development
343
343
  prerelease: false
344
344
  version_requirements: !ruby/object:Gem::Requirement
345
345
  requirements:
346
- - - ">="
346
+ - - "~>"
347
347
  - !ruby/object:Gem::Version
348
- version: '0'
348
+ version: 6.3.3
349
349
  - !ruby/object:Gem::Dependency
350
350
  name: vcr
351
351
  requirement: !ruby/object:Gem::Requirement
@@ -388,6 +388,20 @@ dependencies:
388
388
  - - ">="
389
389
  - !ruby/object:Gem::Version
390
390
  version: '0'
391
+ - !ruby/object:Gem::Dependency
392
+ name: psych
393
+ requirement: !ruby/object:Gem::Requirement
394
+ requirements:
395
+ - - "<"
396
+ - !ruby/object:Gem::Version
397
+ version: 4.0.0
398
+ type: :development
399
+ prerelease: false
400
+ version_requirements: !ruby/object:Gem::Requirement
401
+ requirements:
402
+ - - "<"
403
+ - !ruby/object:Gem::Version
404
+ version: 4.0.0
391
405
  description: oddb2xml creates xml files using swissINDEX, BAG-XML and Swissmedic.
392
406
  email: yasaka@ywesee.com, zdavatz@ywesee.com, ngiger@ywesee.com
393
407
  executables:
@@ -439,6 +453,7 @@ files:
439
453
  - oddb2xml.gemspec
440
454
  - oddb2xml.xsd
441
455
  - oddb_calc.xsd
456
+ - shell.nix
442
457
  - spec/artikelstamm_spec.rb
443
458
  - spec/builder_spec.rb
444
459
  - spec/calc_spec.rb
@@ -529,8 +544,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
529
544
  - !ruby/object:Gem::Version
530
545
  version: '0'
531
546
  requirements: []
532
- rubyforge_project:
533
- rubygems_version: 2.7.6.2
547
+ rubygems_version: 3.3.3
534
548
  signing_key:
535
549
  specification_version: 4
536
550
  summary: oddb2xml creates xml files.