oddb2xml 1.8.3 → 1.8.4

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oddb2xml (1.8.3)
4
+ oddb2xml (1.8.4)
5
5
  archive-tar-minitar (~> 0.5.2)
6
6
  mechanize (~> 2.5.1)
7
7
  nokogiri (~> 1.5.10)
@@ -1,3 +1,18 @@
1
+ === 1.8.4 / 21.05.2014
2
+
3
+ * Don't emit "ad us vet" or marked in Packungen.xls as "Tierarzneimittel"
4
+
5
+ === 1.8.3 / 07.05.2014
6
+
7
+ * Fixed build under windows
8
+
9
+ === 1.8.2 / 06.05.2014
10
+
11
+ * Add oddb2xml.xsd (commented XSD schema for all generated oddb*.xml files)
12
+ * Fix building limitations
13
+ * Reworked download. Leaves always files under downloads
14
+ * Adapt to new location of epha interaction.csv
15
+
1
16
  === 1.8.1 / 30.04.2014
2
17
 
3
18
  * Fix building NONPHARMA
data/README.md CHANGED
@@ -43,7 +43,7 @@ The following additional data is in the files:
43
43
  see `--help`.
44
44
 
45
45
  ```
46
- /usr/local/bin/oddb2xml ver.1.8.2
46
+ /usr/local/bin/oddb2xml ver.1.8.4
47
47
  Usage:
48
48
  oddb2xml [option]
49
49
  produced files are found under data
@@ -100,14 +100,17 @@ See also http://bugs.ruby-lang.org/projects/ruby/wiki/ReleaseEngineering
100
100
 
101
101
 
102
102
  ## XSD files
103
- If you need the XSD files, generate them yourself using the javabeans tool:
103
+
104
+ The file oddb2xml.xsd was manually created by merging the output of the xmlbeans tools inst2xsd and trang
104
105
 
105
106
  * http://xmlbeans.apache.org/docs/2.0.0/guide/tools.html#inst2xsd
107
+ * http://www.thaiopensource.com/relaxng/trang.html
108
+
109
+ Running rake spec will validated the XML-files generated during the tests using the Nokogiri validator.
106
110
 
107
- this will generate you a valid XSD file that can be used to validate against the XML file.
111
+ Manually you can also validate (assuming that you have installed the xmlbeans tools) all generated XML-files using
108
112
 
109
- i.e.:
110
- * /home/zeno/.software/xmlbeans-2.6.0/bin/inst2xsd oddb_article.xml -outPrefix oddb_article
113
+ * xsdvalidate oddb2xml.xsd *.xml
111
114
 
112
115
  ## XML files
113
116
 
@@ -15,12 +15,21 @@ module Nokogiri
15
15
  end
16
16
 
17
17
  module Oddb2xml
18
+ XML_OPTIONS = {
19
+ 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
20
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
21
+ 'xmlns' => 'http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration',
22
+ 'CREATION_DATETIME' => Time.new.strftime('%FT%T%z'),
23
+ 'PROD_DATE' => Time.new.strftime('%FT%T%z'),
24
+ 'VALID_DATE' => Time.new.strftime('%FT%T%z')
25
+ }
18
26
  class Builder
19
27
  attr_accessor :subject, :index, :items, :flags, :lppvs,
20
28
  :actions, :migel, :orphans, :fridges,
21
29
  :infos, :packs, :prices,
22
30
  :ean14, :tag_suffix,
23
- :companies, :people
31
+ :companies, :people,
32
+ :xsd
24
33
  def initialize(args = {})
25
34
  @options = args
26
35
  @subject = nil
@@ -265,12 +274,7 @@ module Oddb2xml
265
274
  xml.doc.tag_suffix = @tag_suffix
266
275
  datetime = Time.new.strftime('%FT%T%z')
267
276
  xml.SUBSTANCE(
268
- 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
269
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
270
- 'xmlns' => 'http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration',
271
- 'CREATION_DATETIME' => datetime,
272
- 'PROD_DATE' => datetime,
273
- 'VALID_DATE' => datetime
277
+ XML_OPTIONS
274
278
  ) {
275
279
  Oddb2xml.log "build_substance #{@substances.size} substances"
276
280
  exit 2 if @options[:extended] and @substances.size == 0
@@ -299,14 +303,7 @@ module Oddb2xml
299
303
  _builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
300
304
  xml.doc.tag_suffix = @tag_suffix
301
305
  datetime = Time.new.strftime('%FT%T%z')
302
- xml.LIMITATION(
303
- 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
304
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
305
- 'xmlns' => 'http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration',
306
- 'CREATION_DATETIME' => datetime,
307
- 'PROD_DATE' => datetime,
308
- 'VALID_DATE' => datetime
309
- ) {
306
+ xml.LIMITATION(XML_OPTIONS) {
310
307
  @limitations.each do |lim|
311
308
  xml.LIM('DT' => '') {
312
309
  case lim[:key]
@@ -340,20 +337,16 @@ module Oddb2xml
340
337
  end
341
338
  _builder.to_xml
342
339
  end
340
+ def xml_and_comment(xml, *args, &block)
341
+ $stderr.puts "xml_and_comment #{args[0]}"
342
+ end
343
343
  def build_interaction
344
344
  prepare_interactions
345
345
  prepare_codes
346
346
  _builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
347
347
  xml.doc.tag_suffix = @tag_suffix
348
348
  datetime = Time.new.strftime('%FT%T%z')
349
- xml.INTERACTION(
350
- 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
351
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
352
- 'xmlns' => 'http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration',
353
- 'CREATION_DATETIME' => datetime,
354
- 'PROD_DATE' => datetime,
355
- 'VALID_DATE' => datetime
356
- ) {
349
+ xml.INTERACTION(XML_OPTIONS) {
357
350
  Oddb2xml.log "build_interaction #{@interactions.size} interactions"
358
351
  @interactions.sort_by{|ix| ix[:ixno] }.each do |ix|
359
352
  xml.IX('DT' => '') {
@@ -411,14 +404,7 @@ module Oddb2xml
411
404
  _builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
412
405
  xml.doc.tag_suffix = @tag_suffix
413
406
  datetime = Time.new.strftime('%FT%T%z')
414
- xml.CODE(
415
- 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
416
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
417
- 'xmlns' => 'http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration',
418
- 'CREATION_DATETIME' => datetime,
419
- 'PROD_DATE' => datetime,
420
- 'VALID_DATE' => datetime
421
- ) {
407
+ xml.CODE(XML_OPTIONS) {
422
408
  @codes.each_pair do |val, definition|
423
409
  xml.CD('DT' => '') {
424
410
  xml.CDTYP definition[:int]
@@ -451,20 +437,13 @@ module Oddb2xml
451
437
  _builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
452
438
  xml.doc.tag_suffix = @tag_suffix
453
439
  datetime = Time.new.strftime('%FT%T%z')
454
- xml.PRODUCT(
455
- 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
456
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
457
- 'xmlns' => 'http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration',
458
- 'CREATION_DATETIME' => datetime,
459
- 'PROD_DATE' => datetime,
460
- 'VALID_DATE' => datetime
461
- ) {
440
+ xml.PRODUCT(XML_OPTIONS) {
462
441
  list = []
463
442
  length = 0
464
443
  @products.each do |obj|
465
444
  seq = obj[:seq]
466
445
  length += 1
467
- xml.PRD('DT' => '') {
446
+ xml.PRD('DT' => '') {
468
447
  ean = obj[:ean].to_s
469
448
  xml.GTIN ean
470
449
  ppac = ((_ppac = @packs[ean[4..11].intern] and !_ppac[:is_tier]) ? _ppac : {})
@@ -600,25 +579,22 @@ module Oddb2xml
600
579
  def build_article
601
580
  prepare_limitations
602
581
  prepare_articles
582
+
603
583
  idx = 0
604
584
  Oddb2xml.log "build_article #{idx} of #{@articles.size} articles"
605
585
  _builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
606
586
  xml.doc.tag_suffix = @tag_suffix
607
587
  datetime = Time.new.strftime('%FT%T%z')
608
- xml.ARTICLE(
609
- 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
610
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
611
- 'xmlns' => 'http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration',
612
- 'CREATION_DATETIME' => datetime,
613
- 'PROD_DATE' => datetime,
614
- 'VALID_DATE' => datetime
615
- ) {
588
+ xml.ARTICLE(XML_OPTIONS) {
616
589
  @articles.each do |obj|
617
590
  idx += 1
618
591
  Oddb2xml.log "build_article #{idx} of #{@articles.size} articles" if idx % 500 == 0
619
592
  obj[:de].each_with_index do |de_idx, i|
620
593
  fr_idx = obj[:fr][i] # swissindex FR
621
594
  pac,no8 = nil,de_idx[:ean][4..11] # BAG-XML(SL/LS)
595
+ pack_info = nil
596
+ pack_info = @packs[no8.intern] if no8 # info from Packungen.xlsx from swissmedic_info
597
+ next if pack_info and pack_info[:list_code].match(/Tierarzneimittel/) if no8 and no8.match(/47066/)
622
598
  ppac = nil # Packungen
623
599
  ean = de_idx[:ean]
624
600
  pharma_code = de_idx[:pharmacode]
@@ -630,15 +606,15 @@ module Oddb2xml
630
606
  pac = @items[ean][:packages][ean] if @items and ean and @items[ean] and @items[ean][:packages]
631
607
  end
632
608
  if no8
633
- ppac = ((_ppac = @packs[no8.intern] and !_ppac[:is_tier]) ? _ppac : nil)
609
+ ppac = ((_ppac = pack_info and !_ppac[:is_tier]) ? _ppac : nil)
634
610
  end
635
611
  price = nil
636
612
  if !@prices.empty? && ean && @prices[ean]
637
613
  price = @prices[ean] # zurrose
638
614
  end
639
- xml.ART('DT' => '') {
640
- xml.PHAR de_idx[:pharmacode] unless de_idx[:pharmacode].empty?
641
- #xml.GRPCD
615
+ xml.ART('DT' => '') {
616
+ xml.PHAR de_idx[:pharmacode] unless de_idx[:pharmacode].empty?
617
+ #xml.GRPCD
642
618
  #xml.CDS01
643
619
  #xml.CDS02
644
620
  if ppac
@@ -660,7 +636,7 @@ module Oddb2xml
660
636
  end
661
637
 
662
638
  if de_idx
663
- xml.SALECD(de_idx[:status].empty? ? 'N' : de_idx[:status])
639
+ xml.SALECD(de_idx[:status].empty? ? 'N' : de_idx[:status]) # XML_OPTIONS
664
640
  end
665
641
  if pac and pac[:limitation_points]
666
642
  #xml.INSLIM
@@ -735,10 +711,10 @@ module Oddb2xml
735
711
  }
736
712
  xml.ARTBAR {
737
713
  xml.CDTYP 'E13'
738
- xml.BC ean if ean and not ean.empty?
714
+ xml.BC ean
739
715
  xml.BCSTAT 'A' # P is alternative
740
716
  #xml.PHAR2
741
- }
717
+ } if ean and not ean.empty?
742
718
  #xml.ARTCH {
743
719
  #xml.PHAR2
744
720
  #xml.CHTYPE
@@ -804,14 +780,7 @@ module Oddb2xml
804
780
  _builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
805
781
  xml.doc.tag_suffix = @tag_suffix
806
782
  datetime = Time.new.strftime('%FT%T%z')
807
- xml.KOMPENDIUM(
808
- 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
809
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
810
- 'xmlns' => 'http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration',
811
- 'CREATION_DATETIME' => datetime,
812
- 'PROD_DATE' => datetime,
813
- 'VALID_DATE' => datetime
814
- ) {
783
+ xml.KOMPENDIUM(XML_OPTIONS) {
815
784
  length = 0
816
785
  %w[de fr].each do |lang|
817
786
  infos = @infos[lang].uniq {|i| i[:monid] }
@@ -848,14 +817,7 @@ module Oddb2xml
848
817
  _builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
849
818
  xml.doc.tag_suffix = @tag_suffix
850
819
  datetime = Time.new.strftime('%FT%T%z')
851
- xml.KOMPENDIUM_PRODUCT(
852
- 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
853
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
854
- 'xmlns' => 'http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration',
855
- 'CREATION_DATETIME' => datetime,
856
- 'PROD_DATE' => datetime,
857
- 'VALID_DATE' => datetime
858
- ) {
820
+ xml.KOMPENDIUM_PRODUCT(XML_OPTIONS) {
859
821
  length = 0
860
822
  info_index = {}
861
823
  %w[de fr].each do |lang|
@@ -893,13 +855,7 @@ module Oddb2xml
893
855
  _builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
894
856
  xml.doc.tag_suffix = @tag_suffix
895
857
  datetime = Time.new.strftime('%FT%T%z')
896
- xml.Betriebe(
897
- 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
898
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
899
- 'xmlns' => 'http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration',
900
- 'CREATION_DATETIME' => datetime,
901
- 'VALID_DATE' => datetime
902
- ) {
858
+ xml.Betriebe(XML_OPTIONS) {
903
859
  @companies.each do |c|
904
860
  xml.Betrieb('DT' => '') {
905
861
  xml.GLN_Betrieb c[:gln] unless c[:gln].empty?
@@ -930,13 +886,7 @@ module Oddb2xml
930
886
  _builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
931
887
  xml.doc.tag_suffix = @tag_suffix
932
888
  datetime = Time.new.strftime('%FT%T%z')
933
- xml.Personen(
934
- 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
935
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
936
- 'xmlns' => 'http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration',
937
- 'CREATION_DATETIME' => datetime,
938
- 'VALID_DATE' => datetime
939
- ) {
889
+ xml.Personen(XML_OPTIONS) {
940
890
  @people.each do |p|
941
891
  xml.Person('DT' => '') {
942
892
  xml.GLN_Person p[:gln] unless p[:gln].empty?
@@ -1046,6 +996,7 @@ module Oddb2xml
1046
996
  next if ((ean.to_s.length != 13) and !ean14)
1047
997
  next if idx[:type] == :nonpharma
1048
998
  row = ''
999
+ pack_info = nil
1049
1000
  # Oddb2tdat.parse
1050
1001
  if idx[:status] =~ /A|I/
1051
1002
  pac,no8 = nil,nil
@@ -1058,9 +1009,10 @@ module Oddb2xml
1058
1009
  # :swissmedic_numbers
1059
1010
  if pac
1060
1011
  no8 = pac[:swissmedic_number8].intern
1012
+ pack_info = @packs[no8.intern] if no8
1061
1013
  end
1062
1014
  if pac and pac[:prices] == nil and no8
1063
- ppac = ((ppac = @packs[no8.intern] and ppac[:is_tier]) ? ppac : nil)
1015
+ ppac = ((ppac = pack_info and ppac[:is_tier]) ? ppac : nil)
1064
1016
  pac = ppac if ppac
1065
1017
  end
1066
1018
  row << "%#{DAT_LEN[:RECA]}s" % '11'
@@ -1097,13 +1049,13 @@ module Oddb2xml
1097
1049
  else
1098
1050
  '0'
1099
1051
  end
1100
- row << "%#{DAT_LEN[:CIKS]}s" % if (no8 && @packs[no8] && !@packs[no8][:is_tier]) # Packungen.xls
1101
- @packs[no8][:swissmedic_category]
1052
+ row << "%#{DAT_LEN[:CIKS]}s" % if (no8 && pack_info && !pack_info[:is_tier]) # Packungen.xls
1053
+ pack_info[:swissmedic_category]
1102
1054
  else
1103
1055
  '0'
1104
1056
  end.gsub(/(\+|\s)/, '')
1105
- row << "%0#{DAT_LEN[:ITHE]}d" % if (no8 && @packs[no8] && !@packs[no8][:is_tier])
1106
- format_date(@packs[no8][:ith_swissmedic])
1057
+ row << "%0#{DAT_LEN[:ITHE]}d" % if (no8 && pack_info && !pack_info[:is_tier])
1058
+ format_date(pack_info[:ith_swissmedic])
1107
1059
  else
1108
1060
  ('0' * DAT_LEN[:ITHE])
1109
1061
  end.to_i
@@ -255,10 +255,28 @@ module Oddb2xml
255
255
  cat = 13 # :swissmedic_category
256
256
  ith = 4 # :ith_swissmedic IT-Code (swissmedic-diff)
257
257
  atc = 5 # :atc_code
258
+ list_code = 6 # Heilmittelcode, possible values are
259
+ # Allergene
260
+ # Anthroposophika
261
+ # ayurvedische Arzneimittel
262
+ # Bakterien- und Hefepräparate
263
+ # Biotechnologika
264
+ # Blutprodukte
265
+ # Generator
266
+ # Heilmittelcode
267
+ # Homöopathika
268
+ # Impfstoffe
269
+ # Phytotherapeutika
270
+ # Radiopharmazeutika
271
+ # Synthetika human
272
+ # tibetische Arzneimittel
273
+ # Tierarzneimittel
274
+ # Transplantat: Gewebeprodukt
258
275
  siz = 11 # :package_size
259
276
  eht = 12 # :einheit_swissmedic
260
277
  sub = 14 # :substance_swissmedic
261
278
  @sheet.each_with_index do |row, i|
279
+
262
280
  next if (i <= 1)
263
281
  next unless row[i_5] and row[i_3]
264
282
  no8 = sprintf('%05d',row[i_5].value.to_i) + sprintf('%03d',row[i_3].value.to_i)
@@ -272,6 +290,7 @@ module Oddb2xml
272
290
  :ith_swissmedic => row[ith] ? row[ith].value.to_s : '',
273
291
  :swissmedic_category => row[cat].value.to_s,
274
292
  :atc_code => row[atc] ? row[atc].value.to_s : '',
293
+ :list_code => row[list_code] ? row[list_code].value.to_s : '',
275
294
  :package_size => row[siz] ? row[siz].value.to_s : '',
276
295
  :einheit_swissmedic => row[eht] ? row[eht].value.to_s : '',
277
296
  :substance_swissmedic => row[sub] ? row[sub].value.to_s : '',
@@ -450,6 +469,7 @@ module Oddb2xml
450
469
  data = {}
451
470
  while line = @io.gets
452
471
  line = line.chomp
472
+ next if line =~ /(ad us\.* vet)|(\(vet\))/i
453
473
  if @@extended
454
474
  next unless line =~ /(\d{13})(\d{1})$/
455
475
  else
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "1.8.3"
2
+ VERSION = "1.8.4"
3
3
  end
@@ -0,0 +1,1087 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
3
+ targetNamespace="http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration"
4
+ xmlns:ns1="http://wiki.oddb.org/wiki.php?pagename=Swissmedic.Datendeklaration"
5
+ >
6
+ <xs:annotation>
7
+ <xs:documentation xml:lang="en">
8
+ oddb2xml is a ruby gem developed and maintained by yweese GmbH.
9
+ The source code is available under https://github.com/zdavatz/oddb2xml.
10
+ It might be installed (Ruby >= 1.9 required) via "gem install oddb2xml".
11
+ Under http://dev.ywesee.com/Main/Oddb2xml you find more information on how the data is generated.
12
+
13
+ In this XSD file we refer to the following sources:
14
+ # swissINDEX
15
+ ## Pharma: https://index.ws.e-mediat.net/Swissindex/Pharma/ws_Pharma_V101.asmx?WSDL"
16
+ ## NonPharma https://index.ws.e-mediat.net/Swissindex/NonPharma/ws_NonPharma_V101.asmx?WSDL"
17
+ # Preparations.xml
18
+ ## Extracted from http://bag.e-mediat.net/SL2007.Web.External/File.axd?file=XMLPublications.zip
19
+ # Packungen.xls https://www.swissmedic.ch/arzneimittel/00156/00221/00222/00230/index.html?lang=de
20
+ # Prices (ZurRose) http://zurrose.com/fileadmin/main/lib/download.php?file=/fileadmin/user_upload/downloads/ProduktUpdate/IGM11_mit_MwSt/Vollstamm/transfer.dat
21
+ # https://raw.github.com/zdavatz/oddb2xml_files/master/BM_Update.txt
22
+ see Anhang 1, 4, 5 und 6 zur AMZV; SR 821.212.22. http://www.admin.ch/opc/de/classified-compilation/20011693/
23
+ # LPPV: https://raw.github.com/zdavatz/oddb2xml_files/master/LPPV.txt
24
+ # https://www.medregbm.admin.ch/Publikation/CreateExcelListBetriebs
25
+ # https://www.medregbm.admin.ch/Publikation/CreateExcelListMedizinalPersons
26
+ # (epha-)interactions https://download.epha.ch/cleaned/matrix.csv
27
+
28
+ For historical reasons the generated *.XML have not a common layout and some fields have different meanings in differen files.
29
+
30
+ The two files oddb_article and oddb_product are not normalized. There if for one swissmedic IKSNR several
31
+ packages are available you will find an entry inside oddb_article and oddb_product for each of them.
32
+ The GTIN (Global Trade Item Number, aka EAN13) is emitted as field GTIN in oddb_product.xml. Inside
33
+ oddb_article you find it as element BC inside ARTBAR (Article barcode).
34
+
35
+ Some comments for invidual fields:
36
+ NINCD: possible values are 10 => BAG-XML (SL/LS), 13 -> MiGel, 20 => (LPPV) Limitation, empty => NonPharma)
37
+ GENCD: possible values are 'O' for original and 'G' for generic, 'K' for Komplementärmedizin.
38
+ We don't have a list of possible generics for a given original.
39
+ It is however possible find generics via ch.oddb.org where a sophisticated algorithm searches for similar medicaments
40
+ taking into account all ATC-codes and galenic information.
41
+ PHAR Pharmacode: Taken from swissINDEX or ZurRose characters 3..9
42
+ PEXF Price Ex-Factory (exkl. VAT): Taken from the ZurRose.dat characters 60..65
43
+ PPUB Public Price (inkl. VAT): Taken from the ZurRose.dat characters 66..71
44
+ SLOPLUS Selbsbehalt/deductilbe, where 1 => 20%, 2 => 10%, '' => not known
45
+
46
+ FIRST import all data from swissINDEX
47
+ * GTIN
48
+ * PHAR
49
+ * Status
50
+ * Since STDATE
51
+ * Bezeichnung (DE / FR)
52
+ * QTY Quantity, e.g. 3 Flaschen 5 ml. The EAN13 specified that this package contains 3 bottles. Think of it as
53
+ as description of volume/size of the content.
54
+ * ATC
55
+ * company_name (only for migel)
56
+ * GLN company_ean, field COMPNO in oddb_article
57
+
58
+ then you add the following flags via Preparations.xml
59
+ * Ex-Factory Price
60
+ * Public Price
61
+ * SL Price valid from
62
+ * decuctible/SLOPLUS
63
+ * Original / Generic
64
+ * all Limitations (go into oddb_limitations.xml)
65
+ * narcotics (FlagNarcosis) emitted as element BG with value 'Y' or 'N'
66
+
67
+ then you add the following flags via Packungen.xls
68
+ * Abgabekategorie (column 'N') as field SMCAT with the possible value
69
+ see also https://www.swissmedic.ch/arzneimittel/00156/00221/00222/00230/index.html?lang=de
70
+ A Einmalige Abgabe auf ärztliche oder tierärztliche Verschreibung
71
+ B Abgabe auf ärztliche oder tierärztliche Verschreibung
72
+ C Abgabe nach Fachberatung durch Medizinalpersonen
73
+ D Abgabe nach Fachberatung
74
+ E Abgabe ohne Fachberatung
75
+ * ATC (if missing from swissINDEX) -> Field SubstanceSwissmedic in oddb_article.xml
76
+ * Wirkstoff (column 'O') -> Field SubstanceSwissmedic in oddb_article.xml
77
+ * Packungsgrösse (column 'L') -> Field PackGrSwissmedic in oddb_article.xml
78
+ * Packungseinheit(column 'L') -> Field EinheitSwissmedic in oddb_article.xml
79
+
80
+ </xs:documentation>
81
+ </xs:annotation>
82
+
83
+ <xs:element name="ARTICLE">
84
+ <xs:complexType>
85
+ <xs:sequence>
86
+ <xs:element maxOccurs="unbounded" ref="ns1:ART"/>
87
+ <xs:element ref="ns1:RESULT"/>
88
+ </xs:sequence>
89
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
90
+ <xs:attribute name="PROD_DATE" use="required"/>
91
+ <xs:attribute name="VALID_DATE" use="required"/>
92
+ </xs:complexType>
93
+ </xs:element>
94
+ <xs:element name="ART">
95
+ <xs:complexType>
96
+ <xs:sequence>
97
+ <xs:element ref="ns1:PHAR"/>
98
+ <xs:element minOccurs="0" ref="ns1:SMCAT"/>
99
+ <xs:element minOccurs="0" ref="ns1:SMNO"/>
100
+ <xs:element minOccurs="0" ref="ns1:PRODNO"/>
101
+ <xs:element minOccurs="0" ref="ns1:VAT"/>
102
+ <xs:element ref="ns1:SALECD"/>
103
+ <xs:choice minOccurs="0">
104
+ <xs:element ref="ns1:COOL"/>
105
+ <xs:element ref="ns1:LIMPTS" />
106
+ </xs:choice>
107
+ <xs:sequence minOccurs="0">
108
+ <xs:element ref="ns1:CDBG"/>
109
+ <xs:element ref="ns1:BG"/>
110
+ </xs:sequence>
111
+ <xs:element minOccurs="0" ref="ns1:QTY"/>
112
+ <xs:element ref="ns1:DSCRD"/>
113
+ <xs:element ref="ns1:DSCRF"/>
114
+ <xs:element ref="ns1:SORTD"/>
115
+ <xs:element ref="ns1:SORTF"/>
116
+ <xs:sequence minOccurs="0">
117
+ <xs:element ref="ns1:SYN1D"/>
118
+ <xs:element ref="ns1:SYN1F"/>
119
+ <xs:element ref="ns1:SLOPLUS"/>
120
+ </xs:sequence>
121
+ <xs:element ref="ns1:ARTCOMP"/>
122
+ <xs:element ref="ns1:ARTBAR"/>
123
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ns1:ARTPRI"/>
124
+ <xs:element minOccurs="0" ref="ns1:ARTINS"/>
125
+ </xs:sequence>
126
+ <xs:attribute name="DT" use="required"/>
127
+ </xs:complexType>
128
+ </xs:element>
129
+ <xs:element name="PHAR" type="xs:integer"/>
130
+ <xs:element name="SMCAT">
131
+ <xs:simpleType>
132
+ <xs:restriction base="xs:string">
133
+ <xs:enumeration value="B"/>
134
+ <xs:enumeration value="C" />
135
+ <xs:enumeration value="D" />
136
+ <xs:enumeration value="A" />
137
+ <xs:enumeration value="E" />
138
+ </xs:restriction>
139
+ </xs:simpleType>
140
+ </xs:element>
141
+ <xs:element name="SMNO" type="xs:integer"/>
142
+ <xs:element name="VAT">
143
+ <xs:simpleType>
144
+ <xs:restriction base="xs:byte">
145
+ <xs:enumeration value="2" />
146
+ <xs:enumeration value="1" />
147
+ </xs:restriction>
148
+ </xs:simpleType>
149
+ </xs:element>
150
+ <xs:element name="SALECD">
151
+ <xs:simpleType>
152
+ <xs:restriction base="xs:string">
153
+ <xs:enumeration value="A" />
154
+ <xs:enumeration value="I" />
155
+ </xs:restriction>
156
+ </xs:simpleType>
157
+ </xs:element>
158
+ <xs:element name="LIMPTS">
159
+ <xs:simpleType>
160
+ <xs:restriction base="xs:byte">
161
+ <xs:enumeration value="20" />
162
+ <xs:enumeration value="30" />
163
+ <xs:enumeration value="60" />
164
+ <xs:enumeration value="10" />
165
+ <xs:enumeration value="40" />
166
+ <xs:enumeration value="50" />
167
+ <xs:enumeration value="80" />
168
+ <xs:enumeration value="100" />
169
+ </xs:restriction>
170
+ </xs:simpleType>
171
+ </xs:element>
172
+ <xs:element name="COOL" type="xs:integer"/>
173
+ <xs:element name="CDBG">
174
+ <xs:simpleType>
175
+ <xs:restriction base="xs:string">
176
+ <xs:enumeration value="N" />
177
+ <xs:enumeration value="Y" />
178
+ </xs:restriction>
179
+ </xs:simpleType>
180
+ </xs:element>
181
+ <xs:element name="BG">
182
+ <xs:simpleType>
183
+ <xs:restriction base="xs:string">
184
+ <xs:enumeration value="N" />
185
+ <xs:enumeration value="Y" />
186
+ </xs:restriction>
187
+ </xs:simpleType>
188
+ </xs:element>
189
+ <xs:element name="SORTD" type="xs:string"/>
190
+ <xs:element name="SORTF" type="xs:string"/>
191
+ <xs:element name="SYN1D" type="xs:string"/>
192
+ <xs:element name="SYN1F" type="xs:string"/>
193
+ <xs:element name="SLOPLUS">
194
+ <xs:simpleType>
195
+ <xs:restriction base="xs:byte">
196
+ <xs:enumeration value="2" />
197
+ <xs:enumeration value="1" />
198
+ </xs:restriction>
199
+ </xs:simpleType>
200
+ </xs:element>
201
+ <xs:element name="ARTCOMP">
202
+ <xs:complexType>
203
+ <xs:sequence>
204
+ <xs:element minOccurs="0" ref="ns1:COMPNO"/>
205
+ </xs:sequence>
206
+ </xs:complexType>
207
+ </xs:element>
208
+ <xs:element name="COMPNO" type="xs:integer"/>
209
+ <xs:element name="ARTBAR">
210
+ <xs:complexType>
211
+ <xs:sequence>
212
+ <xs:element name="CDTYP" type="xs:string"/>
213
+ <xs:element minOccurs="0" ref="ns1:BC"/>
214
+ <xs:element ref="ns1:BCSTAT"/>
215
+ </xs:sequence>
216
+ </xs:complexType>
217
+ </xs:element>
218
+ <xs:element name="BC" type="xs:integer"/>
219
+ <xs:element name="BCSTAT" type="xs:NCName"/>
220
+ <xs:element name="ARTPRI">
221
+ <xs:complexType>
222
+ <xs:sequence>
223
+ <xs:sequence minOccurs="0">
224
+ <xs:element ref="ns1:VDAT"/>
225
+ <xs:element ref="ns1:PTYP"/>
226
+ </xs:sequence>
227
+ <xs:element minOccurs="0" ref="ns1:PRICE"/>
228
+ </xs:sequence>
229
+ </xs:complexType>
230
+ </xs:element>
231
+ <xs:element name="PTYP">
232
+ <xs:simpleType>
233
+ <xs:restriction base="xs:string">
234
+ <xs:enumeration value="PEXF" />
235
+ <xs:enumeration value="PPUB" />
236
+ <xs:enumeration value="ZURROSE" />
237
+ <xs:enumeration value="ZURROSEPUB" />
238
+ </xs:restriction>
239
+ </xs:simpleType>
240
+ </xs:element>
241
+ <xs:element name="PRICE" type="xs:decimal"/>
242
+ <xs:element name="ARTINS">
243
+ <xs:complexType>
244
+ <xs:sequence>
245
+ <xs:element ref="ns1:NINCD"/>
246
+ </xs:sequence>
247
+ </xs:complexType>
248
+ </xs:element>
249
+ <xs:element name="NINCD">
250
+ <xs:simpleType>
251
+ <xs:restriction base="xs:byte">
252
+ <xs:enumeration value="10" />
253
+ <xs:enumeration value="20" />
254
+ <xs:enumeration value="13" />
255
+ </xs:restriction>
256
+ </xs:simpleType>
257
+ </xs:element>
258
+ <xs:element name="ARTICLEMD">
259
+ <xs:complexType>
260
+ <xs:sequence>
261
+ <xs:element maxOccurs="unbounded" ref="ns1:ARTMD"/>
262
+ <xs:element ref="ns1:RESULTMD"/>
263
+ </xs:sequence>
264
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
265
+ <xs:attribute name="PROD_DATE" use="required"/>
266
+ <xs:attribute name="VALID_DATE" use="required"/>
267
+ </xs:complexType>
268
+ </xs:element>
269
+ <xs:element name="ARTMD">
270
+ <xs:complexType>
271
+ <xs:sequence>
272
+ <xs:element ref="ns1:PHARMD"/>
273
+ <xs:element minOccurs="0" ref="ns1:SMCATMD"/>
274
+ <xs:element minOccurs="0" ref="ns1:SMNOMD"/>
275
+ <xs:element minOccurs="0" ref="ns1:PRODNOMD"/>
276
+ <xs:element ref="ns1:SALECDMD"/>
277
+ <xs:choice minOccurs="0">
278
+ <xs:element ref="ns1:COOLMD"/>
279
+ <xs:element ref="ns1:LIMPTSMD"/>
280
+ </xs:choice>
281
+ <xs:element ref="ns1:CDBGMD"/>
282
+ <xs:element ref="ns1:BGMD"/>
283
+ <xs:element ref="ns1:QTYMD"/>
284
+ <xs:element ref="ns1:DSCRDMD"/>
285
+ <xs:element ref="ns1:DSCRFMD"/>
286
+ <xs:element ref="ns1:SORTDMD"/>
287
+ <xs:element ref="ns1:SORTFMD"/>
288
+ <xs:sequence minOccurs="0">
289
+ <xs:element ref="ns1:SYN1DMD"/>
290
+ <xs:element ref="ns1:SYN1FMD"/>
291
+ <xs:element ref="ns1:SLOPLUSMD"/>
292
+ </xs:sequence>
293
+ <xs:element ref="ns1:ARTCOMPMD"/>
294
+ <xs:element ref="ns1:ARTBARMD"/>
295
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ns1:ARTPRIMD"/>
296
+ <xs:element minOccurs="0" ref="ns1:ARTINSMD"/>
297
+ </xs:sequence>
298
+ <xs:attribute name="DT" use="required"/>
299
+ </xs:complexType>
300
+ </xs:element>
301
+ <xs:element name="PHARMD" type="xs:integer"/>
302
+ <xs:element name="SMCATMD">
303
+ <xs:simpleType>
304
+ <xs:restriction base="xs:string">
305
+ <xs:enumeration value="B" />
306
+ <xs:enumeration value="C" />
307
+ <xs:enumeration value="D" />
308
+ <xs:enumeration value="A" />
309
+ <xs:enumeration value="E" />
310
+ </xs:restriction>
311
+ </xs:simpleType>
312
+ </xs:element>
313
+ <xs:element name="SMNOMD" type="xs:integer"/>
314
+ <xs:element name="SALECDMD" type="xs:NCName"/>
315
+ <xs:element name="COOLMD" type="xs:integer"/>
316
+ <xs:element name="LIMPTSMD">
317
+ <xs:simpleType>
318
+ <xs:restriction base="xs:integer"/>
319
+ </xs:simpleType>
320
+ </xs:element>
321
+ <xs:element name="CDBGMD">
322
+ <xs:simpleType>
323
+ <xs:restriction base="xs:string">
324
+ <xs:enumeration value="N" />
325
+ <xs:enumeration value="Y" />
326
+ </xs:restriction>
327
+ </xs:simpleType>
328
+ </xs:element>
329
+ <xs:element name="BGMD">
330
+ <xs:simpleType>
331
+ <xs:restriction base="xs:string">
332
+ <xs:enumeration value="N" />
333
+ <xs:enumeration value="Y" />
334
+ </xs:restriction>
335
+ </xs:simpleType>
336
+ </xs:element>
337
+ <xs:element name="SORTDMD" type="xs:string"/>
338
+ <xs:element name="SORTFMD" type="xs:string"/>
339
+ <xs:element name="SYN1DMD" type="xs:string"/>
340
+ <xs:element name="SYN1FMD" type="xs:string"/>
341
+ <xs:element name="SLOPLUSMD">
342
+ <xs:simpleType>
343
+ <xs:restriction base="xs:byte">
344
+ <xs:enumeration value="2" />
345
+ <xs:enumeration value="1" />
346
+ </xs:restriction>
347
+ </xs:simpleType>
348
+ </xs:element>
349
+ <xs:element name="ARTCOMPMD">
350
+ <xs:complexType>
351
+ <xs:sequence>
352
+ <xs:element minOccurs="0" ref="ns1:COMPNOMD"/>
353
+ </xs:sequence>
354
+ </xs:complexType>
355
+ </xs:element>
356
+ <xs:element name="COMPNOMD" type="xs:integer"/>
357
+ <xs:element name="ARTBARMD">
358
+ <xs:complexType>
359
+ <xs:sequence>
360
+ <xs:element name="CDTYPMD">
361
+ <xs:simpleType>
362
+ <xs:restriction base="xs:string">
363
+ <xs:enumeration value="E13" />
364
+ </xs:restriction>
365
+ </xs:simpleType>
366
+ </xs:element>
367
+ <xs:element ref="ns1:BCMD"/>
368
+ <xs:element ref="ns1:BCSTATMD"/>
369
+ </xs:sequence>
370
+ </xs:complexType>
371
+ </xs:element>
372
+ <xs:element name="BCMD" type="xs:integer"/>
373
+ <xs:element name="BCSTATMD" type="xs:NCName"/>
374
+ <xs:element name="ARTPRIMD">
375
+ <xs:complexType>
376
+ <xs:sequence>
377
+ <xs:sequence minOccurs="0">
378
+ <xs:element ref="ns1:VDATMD"/>
379
+ <xs:element ref="ns1:PTYPMD"/>
380
+ </xs:sequence>
381
+ <xs:element minOccurs="0" ref="ns1:PRICEMD"/>
382
+ </xs:sequence>
383
+ </xs:complexType>
384
+ </xs:element>
385
+ <xs:element name="PTYPMD">
386
+ <xs:simpleType>
387
+ <xs:restriction base="xs:string">
388
+ <xs:enumeration value="PEXF" />
389
+ <xs:enumeration value="PPUB" />
390
+ </xs:restriction>
391
+ </xs:simpleType>
392
+ </xs:element>
393
+ <xs:element name="PRICEMD" type="xs:decimal"/>
394
+ <xs:element name="ARTINSMD">
395
+ <xs:complexType>
396
+ <xs:sequence>
397
+ <xs:element ref="ns1:NINCDMD"/>
398
+ </xs:sequence>
399
+ </xs:complexType>
400
+ </xs:element>
401
+ <xs:element name="NINCDMD">
402
+ <xs:simpleType>
403
+ <xs:restriction base="xs:byte">
404
+ <xs:enumeration value="10" />
405
+ <xs:enumeration value="20" />
406
+ </xs:restriction>
407
+ </xs:simpleType>
408
+ </xs:element>
409
+ <xs:element name="Betriebe">
410
+ <xs:complexType>
411
+ <xs:sequence>
412
+ <xs:element maxOccurs="unbounded" ref="ns1:Betrieb"/>
413
+ <xs:element ref="ns1:RESULT"/>
414
+ </xs:sequence>
415
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
416
+ <xs:attribute name="VALID_DATE" use="required"/>
417
+ </xs:complexType>
418
+ </xs:element>
419
+ <xs:element name="Betrieb">
420
+ <xs:complexType>
421
+ <xs:sequence>
422
+ <xs:element minOccurs="0" ref="ns1:GLN_Betrieb"/>
423
+ <xs:element ref="ns1:Betriebsname_1"/>
424
+ <xs:element minOccurs="0" ref="ns1:Betriebsname_2"/>
425
+ <xs:element minOccurs="0" ref="ns1:Strasse"/>
426
+ <xs:element minOccurs="0" ref="ns1:Nummer"/>
427
+ <xs:element ref="ns1:PLZ"/>
428
+ <xs:element ref="ns1:Ort"/>
429
+ <xs:element ref="ns1:Bewilligungskanton"/>
430
+ <xs:element ref="ns1:Land"/>
431
+ <xs:element ref="ns1:Betriebstyp"/>
432
+ <xs:element ref="ns1:BTM_Berechtigung"/>
433
+ </xs:sequence>
434
+ <xs:attribute name="DT" use="required"/>
435
+ </xs:complexType>
436
+ </xs:element>
437
+ <xs:element name="GLN_Betrieb" type="xs:integer"/>
438
+ <xs:element name="Betriebsname_1" type="xs:string"/>
439
+ <xs:element name="Betriebsname_2" type="xs:string"/>
440
+ <xs:element name="Strasse" type="xs:string"/>
441
+ <xs:element name="Nummer" type="xs:string"/>
442
+ <xs:element name="Betriebstyp">
443
+ <xs:simpleType>
444
+ <xs:restriction base="xs:string">
445
+ <xs:enumeration value="Spitalapotheke, Andere" />
446
+ <xs:enumeration value="öffentliche Apotheke" />
447
+ <xs:enumeration value="wissenschaftliches Institut" />
448
+ <xs:enumeration value="kantonale Behörde" />
449
+ </xs:restriction>
450
+ </xs:simpleType>
451
+ </xs:element>
452
+ <xs:element name="BTM_Berechtigung">
453
+ <xs:simpleType>
454
+ <xs:restriction base="xs:string">
455
+ <xs:enumeration value="6011 Verzeichnis a/b/c BetmVV-EDI" />
456
+ <xs:enumeration value="6026 Verzeichnis a/b/c/f BetmVV-EDI" />
457
+ <xs:enumeration value="6001 Verzeichnis a BetmVV-EDI" />
458
+ <xs:enumeration value="6008 Verzeichnis b/c BetmVV-EDI" />
459
+ <xs:enumeration value="6020 Verzeichnis f BetmVV-EDI" />
460
+ </xs:restriction>
461
+ </xs:simpleType>
462
+ </xs:element>
463
+ <xs:element name="CODE">
464
+ <xs:complexType>
465
+ <xs:sequence>
466
+ <xs:element maxOccurs="unbounded" ref="ns1:CD"/>
467
+ <xs:element ref="ns1:RESULT"/>
468
+ </xs:sequence>
469
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
470
+ <xs:attribute name="PROD_DATE" use="required"/>
471
+ <xs:attribute name="VALID_DATE" use="required"/>
472
+ </xs:complexType>
473
+ </xs:element>
474
+ <xs:element name="CD">
475
+ <xs:complexType>
476
+ <xs:sequence>
477
+ <xs:element ref="ns1:CDTYP"/>
478
+ <xs:element ref="ns1:CDVAL"/>
479
+ <xs:element ref="ns1:DSCRSD"/>
480
+ <xs:element ref="ns1:DEL"/>
481
+ </xs:sequence>
482
+ <xs:attribute name="DT" use="required"/>
483
+ </xs:complexType>
484
+ </xs:element>
485
+ <xs:element name="CODEMD">
486
+ <xs:complexType>
487
+ <xs:sequence>
488
+ <xs:element maxOccurs="unbounded" ref="ns1:CDMD"/>
489
+ <xs:element ref="ns1:RESULTMD"/>
490
+ </xs:sequence>
491
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
492
+ <xs:attribute name="PROD_DATE" use="required"/>
493
+ <xs:attribute name="VALID_DATE" use="required"/>
494
+ </xs:complexType>
495
+ </xs:element>
496
+ <xs:element name="CDMD">
497
+ <xs:complexType>
498
+ <xs:sequence>
499
+ <xs:element ref="ns1:CDTYPMD"/>
500
+ <xs:element ref="ns1:CDVALMD"/>
501
+ <xs:element ref="ns1:DSCRSDMD"/>
502
+ <xs:element ref="ns1:DELMD"/>
503
+ </xs:sequence>
504
+ <xs:attribute name="DT" use="required"/>
505
+ </xs:complexType>
506
+ </xs:element>
507
+ <xs:element name="DSCRSDMD" type="xs:string"/>
508
+ <xs:element name="INTERACTION">
509
+ <xs:complexType>
510
+ <xs:sequence>
511
+ <xs:element maxOccurs="unbounded" ref="ns1:IX"/>
512
+ <xs:element ref="ns1:RESULT"/>
513
+ </xs:sequence>
514
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
515
+ <xs:attribute name="PROD_DATE" use="required"/>
516
+ <xs:attribute name="VALID_DATE" use="required"/>
517
+ </xs:complexType>
518
+ </xs:element>
519
+ <xs:element name="IX">
520
+ <xs:complexType>
521
+ <xs:sequence>
522
+ <xs:element ref="ns1:IXNO"/>
523
+ <xs:element ref="ns1:TITD"/>
524
+ <xs:element ref="ns1:GRP1D"/>
525
+ <xs:element ref="ns1:GRP2D"/>
526
+ <xs:element ref="ns1:EFFD"/>
527
+ <xs:sequence minOccurs="0">
528
+ <xs:element ref="ns1:RLV"/>
529
+ <xs:element ref="ns1:RLVD"/>
530
+ </xs:sequence>
531
+ <xs:element ref="ns1:MECHD"/>
532
+ <xs:element ref="ns1:MEASD"/>
533
+ <xs:element ref="ns1:DEL"/>
534
+ </xs:sequence>
535
+ <xs:attribute name="DT" use="required"/>
536
+ </xs:complexType>
537
+ </xs:element>
538
+ <xs:element name="IXNO" type="xs:integer"/>
539
+ <xs:element name="TITD" type="xs:string"/>
540
+ <xs:element name="GRP1D" type="xs:NCName"/>
541
+ <xs:element name="GRP2D" type="xs:string"/>
542
+ <xs:element name="EFFD" type="xs:string"/>
543
+ <xs:element name="RLV">
544
+ <xs:simpleType>
545
+ <xs:restriction base="xs:byte">
546
+ <xs:enumeration value="16" />
547
+ <xs:enumeration value="13" />
548
+ <xs:enumeration value="11" />
549
+ <xs:enumeration value="14" />
550
+ <xs:enumeration value="15" />
551
+ </xs:restriction>
552
+ </xs:simpleType>
553
+ </xs:element>
554
+ <xs:element name="RLVD">
555
+ <xs:simpleType>
556
+ <xs:restriction base="xs:string">
557
+ <xs:enumeration value="keine Massnahmen" />
558
+ <xs:enumeration value="Kombination meiden" />
559
+ <xs:enumeration value="Kontraindiziert" />
560
+ <xs:enumeration value="Monitorisieren" />
561
+ <xs:enumeration value="Vorsichtsmassnahmen" />
562
+ </xs:restriction>
563
+ </xs:simpleType>
564
+ </xs:element>
565
+ <xs:element name="MECHD" type="xs:string"/>
566
+ <xs:element name="MEASD" type="xs:string"/>
567
+ <xs:element name="INTERACTIONMD">
568
+ <xs:complexType>
569
+ <xs:sequence>
570
+ <xs:element maxOccurs="unbounded" ref="ns1:IXMD"/>
571
+ <xs:element ref="ns1:RESULTMD"/>
572
+ </xs:sequence>
573
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
574
+ <xs:attribute name="PROD_DATE" use="required"/>
575
+ <xs:attribute name="VALID_DATE" use="required"/>
576
+ </xs:complexType>
577
+ </xs:element>
578
+ <xs:element name="IXMD">
579
+ <xs:complexType>
580
+ <xs:sequence>
581
+ <xs:element ref="ns1:IXNOMD"/>
582
+ <xs:element ref="ns1:TITDMD"/>
583
+ <xs:element ref="ns1:GRP1DMD"/>
584
+ <xs:element ref="ns1:GRP2DMD"/>
585
+ <xs:element ref="ns1:EFFDMD"/>
586
+ <xs:sequence minOccurs="0">
587
+ <xs:element ref="ns1:RLVMD"/>
588
+ <xs:element ref="ns1:RLVDMD"/>
589
+ </xs:sequence>
590
+ <xs:element ref="ns1:MECHDMD"/>
591
+ <xs:element ref="ns1:MEASDMD"/>
592
+ <xs:element ref="ns1:DELMD"/>
593
+ </xs:sequence>
594
+ <xs:attribute name="DT" use="required"/>
595
+ </xs:complexType>
596
+ </xs:element>
597
+ <xs:element name="IXNOMD" type="xs:integer"/>
598
+ <xs:element name="TITDMD" type="xs:string"/>
599
+ <xs:element name="GRP1DMD" type="xs:NCName"/>
600
+ <xs:element name="GRP2DMD" type="xs:string"/>
601
+ <xs:element name="EFFDMD" type="xs:string"/>
602
+ <xs:element name="RLVMD">
603
+ <xs:simpleType>
604
+ <xs:restriction base="xs:byte">
605
+ <xs:enumeration value="16" />
606
+ <xs:enumeration value="13" />
607
+ <xs:enumeration value="11" />
608
+ <xs:enumeration value="14" />
609
+ <xs:enumeration value="15" />
610
+ </xs:restriction>
611
+ </xs:simpleType>
612
+ </xs:element>
613
+ <xs:element name="RLVDMD">
614
+ <xs:simpleType>
615
+ <xs:restriction base="xs:string">
616
+ <xs:enumeration value="keine Massnahmen" />
617
+ <xs:enumeration value="Kombination meiden" />
618
+ <xs:enumeration value="Kontraindiziert" />
619
+ <xs:enumeration value="Monitorisieren" />
620
+ <xs:enumeration value="Vorsichtsmassnahmen" />
621
+ </xs:restriction>
622
+ </xs:simpleType>
623
+ </xs:element>
624
+ <xs:element name="MECHDMD" type="xs:string"/>
625
+ <xs:element name="MEASDMD" type="xs:string"/>
626
+ <xs:element name="LIMITATION">
627
+ <xs:complexType>
628
+ <xs:sequence>
629
+ <xs:element maxOccurs="unbounded" ref="ns1:LIM"/>
630
+ <xs:element ref="ns1:RESULT"/>
631
+ </xs:sequence>
632
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
633
+ <xs:attribute name="PROD_DATE" use="required"/>
634
+ <xs:attribute name="VALID_DATE" use="required"/>
635
+ </xs:complexType>
636
+ </xs:element>
637
+ <xs:element name="LIM">
638
+ <xs:complexType>
639
+ <xs:sequence>
640
+ <xs:choice>
641
+ <xs:element ref="ns1:Pharmacode"/>
642
+ <xs:element ref="ns1:SwissmedicNo5"/>
643
+ <xs:element ref="ns1:SwissmedicNo8"/>
644
+ </xs:choice>
645
+ <xs:element ref="ns1:IT"/>
646
+ <xs:element ref="ns1:LIMTYP"/>
647
+ <xs:element ref="ns1:LIMVAL"/>
648
+ <xs:element ref="ns1:LIMNAMEBAG"/>
649
+ <xs:element ref="ns1:LIMNIV"/>
650
+ <xs:element ref="ns1:DSCRD"/>
651
+ <xs:element ref="ns1:DSCRF"/>
652
+ <xs:element ref="ns1:VDAT"/>
653
+ </xs:sequence>
654
+ <xs:attribute name="DT" use="required"/>
655
+ </xs:complexType>
656
+ </xs:element>
657
+ <xs:element name="Pharmacode" type="xs:integer"/>
658
+ <xs:element name="SwissmedicNo5" type="xs:integer"/>
659
+ <xs:element name="SwissmedicNo8" type="xs:integer"/>
660
+ <xs:element name="LIMTYP">
661
+ <xs:simpleType>
662
+ <xs:restriction base="xs:string">
663
+ <xs:enumeration value="DIA" />
664
+ <xs:enumeration value="KOM" />
665
+ <xs:enumeration value="PKT" />
666
+ <xs:enumeration value="AUD" />
667
+ <xs:enumeration value="ZEI" />
668
+ </xs:restriction>
669
+ </xs:simpleType>
670
+ </xs:element>
671
+ <xs:element name="LIMVAL" type="xs:string"/>
672
+ <xs:element name="LIMNAMEBAG" type="xs:string"/>
673
+ <xs:element name="LIMNIV">
674
+ <xs:simpleType>
675
+ <xs:restriction base="xs:string">
676
+ <xs:enumeration value="IP" />
677
+ <xs:enumeration value="I" />
678
+ <xs:enumeration value="P" />
679
+ </xs:restriction>
680
+ </xs:simpleType>
681
+ </xs:element>
682
+ <xs:element name="LIMITATIONMD">
683
+ <xs:complexType>
684
+ <xs:sequence>
685
+ <xs:element maxOccurs="unbounded" ref="ns1:LIMMD"/>
686
+ <xs:element ref="ns1:RESULTMD"/>
687
+ </xs:sequence>
688
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
689
+ <xs:attribute name="PROD_DATE" use="required"/>
690
+ <xs:attribute name="VALID_DATE" use="required"/>
691
+ </xs:complexType>
692
+ </xs:element>
693
+ <xs:element name="LIMMD">
694
+ <xs:complexType>
695
+ <xs:sequence>
696
+ <xs:choice>
697
+ <xs:element ref="ns1:PharmacodeMD"/>
698
+ <xs:element ref="ns1:SwissmedicNo5MD"/>
699
+ <xs:element ref="ns1:SwissmedicNo8MD"/>
700
+ </xs:choice>
701
+ <xs:element ref="ns1:ITMD"/>
702
+ <xs:element ref="ns1:LIMTYPMD"/>
703
+ <xs:element ref="ns1:LIMVALMD"/>
704
+ <xs:element ref="ns1:LIMNAMEBAGMD"/>
705
+ <xs:element ref="ns1:LIMNIVMD"/>
706
+ <xs:element ref="ns1:DSCRDMD"/>
707
+ <xs:element ref="ns1:DSCRFMD"/>
708
+ <xs:element ref="ns1:VDATMD"/>
709
+ </xs:sequence>
710
+ <xs:attribute name="DT" use="required"/>
711
+ </xs:complexType>
712
+ </xs:element>
713
+ <xs:element name="PharmacodeMD" type="xs:integer"/>
714
+ <xs:element name="SwissmedicNo5MD" type="xs:integer"/>
715
+ <xs:element name="SwissmedicNo8MD" type="xs:integer"/>
716
+ <xs:element name="LIMTYPMD">
717
+ <xs:simpleType>
718
+ <xs:restriction base="xs:string">
719
+ <xs:enumeration value="DIA" />
720
+ <xs:enumeration value="KOM" />
721
+ <xs:enumeration value="PKT" />
722
+ <xs:enumeration value="AUD" />
723
+ <xs:enumeration value="ZEI" />
724
+ </xs:restriction>
725
+ </xs:simpleType>
726
+ </xs:element>
727
+ <xs:element name="LIMVALMD">
728
+ <xs:simpleType>
729
+ <xs:union>
730
+ <xs:simpleType>
731
+ <xs:restriction base="xs:positiveInteger">
732
+ </xs:restriction>
733
+ </xs:simpleType>
734
+ <xs:simpleType>
735
+ <xs:restriction base="xs:string">
736
+ <xs:enumeration value=""/>
737
+ </xs:restriction>
738
+ </xs:simpleType>
739
+ </xs:union>
740
+ </xs:simpleType>
741
+ </xs:element>
742
+ <xs:element type="xs:string" name="LIMNAMEBAGMD"/>
743
+ <xs:element name="LIMNIVMD">
744
+ <xs:simpleType>
745
+ <xs:restriction base="xs:string">
746
+ <xs:enumeration value="IP" />
747
+ <xs:enumeration value="I" />
748
+ <xs:enumeration value="P" />
749
+ </xs:restriction>
750
+ </xs:simpleType>
751
+ </xs:element>
752
+ <xs:element name="PRODUCT">
753
+ <xs:complexType>
754
+ <xs:sequence>
755
+ <xs:element maxOccurs="unbounded" ref="ns1:PRD"/>
756
+ <xs:element ref="ns1:RESULT"/>
757
+ </xs:sequence>
758
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
759
+ <xs:attribute name="PROD_DATE" use="required"/>
760
+ <xs:attribute name="VALID_DATE" use="required"/>
761
+ </xs:complexType>
762
+ </xs:element>
763
+ <xs:element name="PRD">
764
+ <xs:complexType>
765
+ <xs:sequence>
766
+ <xs:element ref="ns1:GTIN"/>
767
+ <xs:element minOccurs="0" ref="ns1:PRODNO"/>
768
+ <xs:sequence minOccurs="0">
769
+ <xs:element ref="ns1:DSCRD"/>
770
+ <xs:element ref="ns1:DSCRF"/>
771
+ </xs:sequence>
772
+ <xs:element minOccurs="0" ref="ns1:ADINFD"/>
773
+ <xs:element minOccurs="0" ref="ns1:ADINFF"/>
774
+ <xs:element minOccurs="0" ref="ns1:GENCD"/>
775
+ <xs:element minOccurs="0" ref="ns1:ATC"/>
776
+ <xs:element minOccurs="0" ref="ns1:IT"/>
777
+ <xs:element minOccurs="0" ref="ns1:ORPH"/>
778
+ <xs:element ref="ns1:CPT"/>
779
+ <xs:element minOccurs="0" ref="ns1:PackGrSwissmedic"/>
780
+ <xs:element minOccurs="0" ref="ns1:EinheitSwissmedic"/>
781
+ <xs:element minOccurs="0" ref="ns1:SubstanceSwissmedic"/>
782
+ </xs:sequence>
783
+ <xs:attribute name="DT" use="required"/>
784
+ </xs:complexType>
785
+ </xs:element>
786
+ <xs:element name="GTIN" type="xs:integer"/>
787
+ <xs:element name="ADINFD" type="xs:string"/>
788
+ <xs:element name="ADINFF" type="xs:string"/>
789
+ <xs:element name="GENCD">
790
+ <xs:simpleType>
791
+ <xs:restriction base="xs:string">
792
+ <xs:enumeration value="O" />
793
+ <xs:enumeration value="K" />
794
+ <xs:enumeration value="G" />
795
+ </xs:restriction>
796
+ </xs:simpleType>
797
+ </xs:element>
798
+ <xs:element name="ATC" type="xs:NCName"/>
799
+ <xs:element name="ORPH" type="xs:boolean"/>
800
+ <xs:element name="CPT">
801
+ <xs:complexType>
802
+ <xs:sequence>
803
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ns1:CPTCMP"/>
804
+ </xs:sequence>
805
+ </xs:complexType>
806
+ </xs:element>
807
+ <xs:element name="CPTCMP">
808
+ <xs:complexType>
809
+ <xs:sequence>
810
+ <xs:element ref="ns1:LINE"/>
811
+ <xs:element ref="ns1:SUBNO"/>
812
+ <xs:element minOccurs="0" ref="ns1:QTY"/>
813
+ <xs:element minOccurs="0" ref="ns1:QTYU"/>
814
+ </xs:sequence>
815
+ </xs:complexType>
816
+ </xs:element>
817
+ <xs:element name="LINE" type="xs:integer"/>
818
+ <xs:element name="QTYU" type="xs:string"/>
819
+ <xs:element name="PackGrSwissmedic" type="xs:string"/>
820
+ <xs:element name="EinheitSwissmedic" type="xs:string"/>
821
+ <xs:element name="SubstanceSwissmedic" type="xs:string"/>
822
+ <xs:element name="PRODUCTMD">
823
+ <xs:complexType>
824
+ <xs:sequence>
825
+ <xs:element maxOccurs="unbounded" ref="ns1:PRDMD"/>
826
+ <xs:element ref="ns1:RESULTMD"/>
827
+ </xs:sequence>
828
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
829
+ <xs:attribute name="PROD_DATE" use="required"/>
830
+ <xs:attribute name="VALID_DATE" use="required"/>
831
+ </xs:complexType>
832
+ </xs:element>
833
+ <xs:element name="PRDMD">
834
+ <xs:complexType>
835
+ <xs:sequence>
836
+ <xs:element ref="ns1:GTINMD"/>
837
+ <xs:element minOccurs="0" ref="ns1:PRODNOMD"/>
838
+ <xs:sequence minOccurs="0">
839
+ <xs:element ref="ns1:DSCRDMD"/>
840
+ <xs:element ref="ns1:DSCRFMD"/>
841
+ </xs:sequence>
842
+ <xs:element minOccurs="0" ref="ns1:ADINFDMD"/>
843
+ <xs:element minOccurs="0" ref="ns1:ADINFFMD"/>
844
+ <xs:element minOccurs="0" ref="ns1:GENCDMD"/>
845
+ <xs:element minOccurs="0" ref="ns1:ATCMD"/>
846
+ <xs:element minOccurs="0" ref="ns1:ITMD"/>
847
+ <xs:element minOccurs="0" ref="ns1:ORPHMD"/>
848
+ <xs:element ref="ns1:CPTMD"/>
849
+ <xs:element minOccurs="0" ref="ns1:PackGrSwissmedicMD"/>
850
+ <xs:element minOccurs="0" ref="ns1:EinheitSwissmedicMD"/>
851
+ <xs:element minOccurs="0" ref="ns1:SubstanceSwissmedicMD"/>
852
+ </xs:sequence>
853
+ <xs:attribute name="DT" use="required"/>
854
+ </xs:complexType>
855
+ </xs:element>
856
+ <xs:element name="GTINMD" type="xs:integer"/>
857
+ <xs:element name="ADINFDMD" type="xs:string"/>
858
+ <xs:element name="ADINFFMD" type="xs:string"/>
859
+ <xs:element name="GENCDMD" type="xs:NCName"/>
860
+ <xs:element name="ATCMD" type="xs:NCName"/>
861
+ <xs:element name="ORPHMD" type="xs:boolean"/>
862
+ <xs:element name="CPTMD">
863
+ <xs:complexType>
864
+ <xs:sequence>
865
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ns1:CPTCMPMD"/>
866
+ </xs:sequence>
867
+ </xs:complexType>
868
+ </xs:element>
869
+ <xs:element name="CPTCMPMD">
870
+ <xs:complexType>
871
+ <xs:sequence>
872
+ <xs:element ref="ns1:LINEMD"/>
873
+ <xs:element ref="ns1:SUBNOMD"/>
874
+ <xs:element minOccurs="0" ref="ns1:QTYMD"/>
875
+ <xs:element minOccurs="0" ref="ns1:QTYUMD"/>
876
+ </xs:sequence>
877
+ </xs:complexType>
878
+ </xs:element>
879
+ <xs:element name="LINEMD" type="xs:integer"/>
880
+ <xs:element name="QTYUMD" type="xs:string"/>
881
+ <xs:element name="PackGrSwissmedicMD" type="xs:string"/>
882
+ <xs:element name="EinheitSwissmedicMD" type="xs:string"/>
883
+ <xs:element name="SubstanceSwissmedicMD" type="xs:string"/>
884
+ <xs:element name="Personen">
885
+ <xs:complexType>
886
+ <xs:sequence>
887
+ <xs:element maxOccurs="unbounded" ref="ns1:Person"/>
888
+ <xs:element ref="ns1:RESULT"/>
889
+ </xs:sequence>
890
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
891
+ <xs:attribute name="VALID_DATE" use="required"/>
892
+ </xs:complexType>
893
+ </xs:element>
894
+ <xs:element name="Person">
895
+ <xs:complexType>
896
+ <xs:sequence>
897
+ <xs:element ref="ns1:GLN_Person"/>
898
+ <xs:element ref="ns1:Name"/>
899
+ <xs:element ref="ns1:Vorname"/>
900
+ <xs:element minOccurs="0" ref="ns1:PLZ"/>
901
+ <xs:element ref="ns1:Ort"/>
902
+ <xs:element ref="ns1:Bewilligungskanton"/>
903
+ <xs:element ref="ns1:Land"/>
904
+ <xs:element ref="ns1:Bewilligung_Selbstdispensation"/>
905
+ <xs:element ref="ns1:Diplom"/>
906
+ <xs:element name="BTM_Berechtigung">
907
+ <xs:simpleType>
908
+ <xs:restriction base="xs:string">
909
+ <xs:enumeration value="Ja" />
910
+ </xs:restriction>
911
+ </xs:simpleType>
912
+ </xs:element>
913
+ </xs:sequence>
914
+ <xs:attribute name="DT" use="required"/>
915
+ </xs:complexType>
916
+ </xs:element>
917
+ <xs:element name="GLN_Person" type="xs:integer"/>
918
+ <xs:element name="Name" type="xs:string"/>
919
+ <xs:element name="Vorname" type="xs:string"/>
920
+ <xs:element name="Bewilligung_Selbstdispensation">
921
+ <xs:simpleType>
922
+ <xs:restriction base="xs:string">
923
+ <xs:enumeration value="Nein" />
924
+ <xs:enumeration value="Ja" />
925
+ <xs:enumeration value="Unbekannt" />
926
+ </xs:restriction>
927
+ </xs:simpleType>
928
+ </xs:element>
929
+ <xs:element name="Diplom" type="xs:string"/>
930
+ <xs:element name="SUBSTANCE">
931
+ <xs:complexType>
932
+ <xs:sequence>
933
+ <xs:element maxOccurs="unbounded" ref="ns1:SB"/>
934
+ <xs:element ref="ns1:RESULT"/>
935
+ </xs:sequence>
936
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
937
+ <xs:attribute name="PROD_DATE" use="required"/>
938
+ <xs:attribute name="VALID_DATE" use="required"/>
939
+ </xs:complexType>
940
+ </xs:element>
941
+ <xs:element name="SB">
942
+ <xs:complexType>
943
+ <xs:sequence>
944
+ <xs:element ref="ns1:SUBNO"/>
945
+ <xs:element ref="ns1:NAML"/>
946
+ </xs:sequence>
947
+ <xs:attribute name="DT" use="required"/>
948
+ </xs:complexType>
949
+ </xs:element>
950
+ <xs:element name="NAML" type="xs:string"/>
951
+ <xs:element name="SUBSTANCEMD">
952
+ <xs:complexType>
953
+ <xs:sequence>
954
+ <xs:element maxOccurs="unbounded" ref="ns1:SBMD"/>
955
+ <xs:element ref="ns1:RESULTMD"/>
956
+ </xs:sequence>
957
+ <xs:attribute name="CREATION_DATETIME" use="required"/>
958
+ <xs:attribute name="PROD_DATE" use="required"/>
959
+ <xs:attribute name="VALID_DATE" use="required"/>
960
+ </xs:complexType>
961
+ </xs:element>
962
+ <xs:element name="SBMD">
963
+ <xs:complexType>
964
+ <xs:sequence>
965
+ <xs:element ref="ns1:SUBNOMD"/>
966
+ <xs:element ref="ns1:NAMLMD"/>
967
+ </xs:sequence>
968
+ <xs:attribute name="DT" use="required"/>
969
+ </xs:complexType>
970
+ </xs:element>
971
+ <xs:element name="NAMLMD" type="xs:string"/>
972
+ <xs:element name="PRODNO" type="xs:integer"/>
973
+ <xs:element name="DSCRD" type="xs:string"/>
974
+ <xs:element name="DSCRF" type="xs:string"/>
975
+ <xs:element name="IT" type="xs:string"/>
976
+ <xs:element name="SUBNO" type="xs:integer"/>
977
+ <xs:element name="QTY" type="xs:string"/>
978
+ <xs:element name="RESULT">
979
+ <xs:complexType>
980
+ <xs:sequence>
981
+ <xs:element ref="ns1:OK_ERROR"/>
982
+ <xs:element ref="ns1:NBR_RECORD"/>
983
+ <xs:element ref="ns1:ERROR_CODE"/>
984
+ <xs:element ref="ns1:MESSAGE"/>
985
+ </xs:sequence>
986
+ </xs:complexType>
987
+ </xs:element>
988
+ <xs:element name="OK_ERROR" type="xs:NCName"/>
989
+ <xs:element name="NBR_RECORD" type="xs:integer"/>
990
+ <xs:element name="ERROR_CODE">
991
+ <xs:complexType/>
992
+ </xs:element>
993
+ <xs:element name="MESSAGE">
994
+ <xs:complexType/>
995
+ </xs:element>
996
+ <xs:element name="ITMD" type="xs:string"/>
997
+ <xs:element name="DSCRDMD" type="xs:string"/>
998
+ <xs:element name="DSCRFMD" type="xs:string"/>
999
+ <xs:element name="VDATMD" type="xs:NMTOKEN"/>
1000
+ <xs:element name="RESULTMD">
1001
+ <xs:complexType>
1002
+ <xs:sequence>
1003
+ <xs:element ref="ns1:OK_ERRORMD"/>
1004
+ <xs:element ref="ns1:NBR_RECORDMD"/>
1005
+ <xs:element ref="ns1:ERROR_CODEMD"/>
1006
+ <xs:element ref="ns1:MESSAGEMD"/>
1007
+ </xs:sequence>
1008
+ </xs:complexType>
1009
+ </xs:element>
1010
+ <xs:element name="VDAT" type="xs:NMTOKEN"/>
1011
+ <xs:element name="OK_ERRORMD" type="xs:NCName"/>
1012
+ <xs:element name="NBR_RECORDMD" type="xs:integer"/>
1013
+ <xs:element name="ERROR_CODEMD">
1014
+ <xs:complexType/>
1015
+ </xs:element>
1016
+ <xs:element name="MESSAGEMD">
1017
+ <xs:complexType/>
1018
+ </xs:element>
1019
+ <xs:element name="PLZ" type="xs:integer"/>
1020
+ <xs:element name="Ort" type="xs:string"/>
1021
+ <xs:element name="Bewilligungskanton" type="xs:string"/>
1022
+ <xs:element name="Land" type="xs:NCName"/>
1023
+ <xs:element name="PRODNOMD" type="xs:integer"/>
1024
+ <xs:element name="SUBNOMD" type="xs:integer"/>
1025
+ <xs:element name="QTYMD" type="xs:string"/>
1026
+ <xs:element name="CDTYPMD">
1027
+ <xs:simpleType>
1028
+ <xs:restriction base="xs:byte">
1029
+ <xs:enumeration value="11" />
1030
+ <xs:enumeration value="12" />
1031
+ <xs:enumeration value="13" />
1032
+ <xs:enumeration value="14" />
1033
+ <xs:enumeration value="15" />
1034
+ <xs:enumeration value="16" />
1035
+ </xs:restriction>
1036
+ </xs:simpleType>
1037
+ </xs:element>
1038
+ <xs:element name="CDVALMD">
1039
+ <xs:simpleType>
1040
+ <xs:restriction base="xs:string">
1041
+ <xs:enumeration value="X" />
1042
+ <xs:enumeration value="E" />
1043
+ <xs:enumeration value="D" />
1044
+ <xs:enumeration value="C" />
1045
+ <xs:enumeration value="B" />
1046
+ <xs:enumeration value="A" />
1047
+ </xs:restriction>
1048
+ </xs:simpleType>
1049
+ </xs:element>
1050
+ <xs:element name="DELMD" type="xs:boolean"/>
1051
+ <xs:element name="DEL" type="xs:boolean"/>
1052
+ <xs:element name="CDTYP">
1053
+ <xs:simpleType>
1054
+ <xs:restriction base="xs:decimal">
1055
+ <xs:enumeration value="11" />
1056
+ <xs:enumeration value="12" />
1057
+ <xs:enumeration value="13" />
1058
+ <xs:enumeration value="14" />
1059
+ <xs:enumeration value="15" />
1060
+ <xs:enumeration value="16" />
1061
+ </xs:restriction>
1062
+ </xs:simpleType>
1063
+ </xs:element>
1064
+ <xs:element name="CDVAL">
1065
+ <xs:simpleType>
1066
+ <xs:restriction base="xs:string">
1067
+ <xs:enumeration value="X" />
1068
+ <xs:enumeration value="E" />
1069
+ <xs:enumeration value="D" />
1070
+ <xs:enumeration value="C" />
1071
+ <xs:enumeration value="B" />
1072
+ <xs:enumeration value="A" />
1073
+ </xs:restriction>
1074
+ </xs:simpleType>
1075
+ </xs:element>
1076
+ <xs:element name="DSCRSD">
1077
+ <xs:simpleType>
1078
+ <xs:restriction base="xs:string">
1079
+ <xs:enumeration value="Kontraindiziert" />
1080
+ <xs:enumeration value="Kombination meiden" />
1081
+ <xs:enumeration value="Monitorisieren" />
1082
+ <xs:enumeration value="Vorsichtsmassnahmen" />
1083
+ <xs:enumeration value="keine Massnahmen" />
1084
+ </xs:restriction>
1085
+ </xs:simpleType>
1086
+ </xs:element>
1087
+ </xs:schema>