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