oddb2xml 1.8.3 → 1.8.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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>