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.
- data/Gemfile.lock +1 -1
- data/History.txt +15 -0
- data/README.md +8 -5
- data/lib/oddb2xml/builder.rb +42 -90
- data/lib/oddb2xml/extractor.rb +20 -0
- data/lib/oddb2xml/version.rb +1 -1
- data/oddb2xml.xsd +1087 -0
- data/spec/builder_spec.rb +70 -18
- data/spec/data/swissmedic_package.xlsx +0 -0
- data/spec/data/zurrose_transfer.dat +4 -0
- data/spec/extractor_spec.rb +1 -1
- metadata +34 -5
- checksums.yaml +0 -15
data/Gemfile.lock
CHANGED
data/History.txt
CHANGED
@@ -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.
|
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
|
-
|
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
|
-
|
111
|
+
Manually you can also validate (assuming that you have installed the xmlbeans tools) all generated XML-files using
|
108
112
|
|
109
|
-
|
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
|
|
data/lib/oddb2xml/builder.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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 =
|
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
|
-
|
640
|
-
|
641
|
-
|
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
|
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 =
|
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 &&
|
1101
|
-
|
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 &&
|
1106
|
-
format_date(
|
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
|
data/lib/oddb2xml/extractor.rb
CHANGED
@@ -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
|
data/lib/oddb2xml/version.rb
CHANGED
data/oddb2xml.xsd
ADDED
@@ -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>
|