oddb2xml is a ruby gem developed and maintained by yweese GmbH. The source code is available under https://github.com/zdavatz/oddb2xml. It might be installed (Ruby >= 1.9 required) via "gem install oddb2xml". Under http://dev.ywesee.com/Main/Oddb2xml you find more information on how the data is generated. In this XSD file we refer to the following sources: # swissINDEX ## Pharma: https://index.ws.e-mediat.net/Swissindex/Pharma/ws_Pharma_V101.asmx?WSDL" ## NonPharma https://index.ws.e-mediat.net/Swissindex/NonPharma/ws_NonPharma_V101.asmx?WSDL" # Preparations.xml ## Extracted from http://bag.e-mediat.net/SL2007.Web.External/File.axd?file=XMLPublications.zip # Packungen.xls https://www.swissmedic.ch/arzneimittel/00156/00221/00222/00230/index.html?lang=de # Prices (ZurRose) http://zurrose.com/fileadmin/main/lib/download.php?file=/fileadmin/user_upload/downloads/ProduktUpdate/IGM11_mit_MwSt/Vollstamm/transfer.dat # https://raw.github.com/zdavatz/oddb2xml_files/master/BM_Update.txt see Anhang 1, 4, 5 und 6 zur AMZV; SR 821.212.22. http://www.admin.ch/opc/de/classified-compilation/20011693/ # LPPV: https://raw.github.com/zdavatz/oddb2xml_files/master/LPPV.txt # https://www.medregbm.admin.ch/Publikation/CreateExcelListBetriebs # https://www.medregbm.admin.ch/Publikation/CreateExcelListMedizinalPersons # (epha-)interactions https://download.epha.ch/cleaned/matrix.csv For historical reasons the generated *.XML have not a common layout and some fields have different meanings in different files. The two files oddb_article and oddb_product are not normalized. There if for one swissmedic IKSNR several packages are available you will find an entry inside oddb_article and oddb_product for each of them. The GTIN (Global Trade Item Number, aka EAN13) is emitted as field GTIN in oddb_product.xml. Inside oddb_article you find it as element BC inside ARTBAR (Article barcode). Some comments for invidual fields: NINCD: possible values are 10 => BAG-XML (SL/LS), 13 -> MiGel, 20 => (LPPV) Limitation, empty => NonPharma) GENCD: possible values are 'O' for original and 'G' for generic, 'K' for Komplementärmedizin. Since decembre 2015 we found some products with a 'C' which probably stands for Co-Marketing We don't have a list of possible generics for a given original. It is however possible find generics via ch.oddb.org where a sophisticated algorithm searches for similar medicaments taking into account all ATC-codes and galenic information. PHAR Pharmacode: Taken from swissINDEX or ZurRose characters 3..9 PEXF Price Ex-Factory (exkl. VAT): Taken from the ZurRose.dat characters 60..65 PPUB Public Price (inkl. VAT): Taken from the ZurRose.dat characters 66..71 SLOPLUS Selbsbehalt/deductilbe, where 1 => 40%, 2 => 10%, '' => not known REF_DATA 1 in oddb_article if coming from a refdata source (migel, bag, swissmedic), else 0 FIRST import all data from swissINDEX * DSCRD German name * DSCRF French name (Products/article only from ZurRose do not have a french name) * GTIN GTIN may be 8, 12, 13 or 14 chars long (https://en.wikipedia.org/wiki/Global_Trade_Item_Number) The EAN-8 code is an eight-digit barcode used usually for very small articles, such as a battery for hearing aid, where fitting a larger code onto the item would be difficult you may test GTIN via the GS1 information GEPIR, eg www.gepir.ch or globally http://gepir.gs1.org/ Drugs registered in Switzerland have GTINs starting with 7680 (which is reserved by Swissmedic) * PHAR * Status * Since STDATE * Bezeichnung (DE / FR) * QTY Quantity, e.g. 3 Flaschen 5 ml. The EAN13 specified that this package contains 3 bottles. Think of it as as description of volume/size of the content. The QTY is present in the oddb_product.xml, but not in the oddb_article.xml In oddb_calc.xml you find QTY/UNIT, where QTY is a float and unit something like ml, mg, etc. * ATC * company_name (only for migel) * GLN company_ean, field COMPNO in oddb_article then you add the following flags via Preparations.xml * Ex-Factory Price * Public Price * SL Price valid from * decuctible/SLOPLUS * Original / Generic * all Limitations (go into oddb_limitations.xml) * narcotics (FlagNarcosis) emitted as element BG with value 'Y' or 'N' then you add the following flags via Packungen.xls * Abgabekategorie (column 'N') as field SMCAT with the possible value see also Abgabekategorien: https://www.swissmedic.ch/swissmedic/de/home/services/zugelassene-praeparate/human--und-tierarzneimittel.html A Einmalige Abgabe auf ärztliche oder tierärztliche Verschreibung B Abgabe auf ärztliche oder tierärztliche Verschreibung C Abgabe nach Fachberatung durch Medizinalpersonen D Abgabe nach Fachberatung E Abgabe ohne Fachberatung * IT IT-Number aka Index Therapeuticus: column 'E' from packages.xlsx * ATC (if missing from swissINDEX) -> Field SubstanceSwissmedic in oddb_article.xml * Wirkstoff (column 'O') -> Field SubstanceSwissmedic in oddb_article.xml * Composition (column 'P') -> Field CompositionSwissmedic in oddb_product.xml * Packungsgrösse (column 'L') -> Field PackGrSwissmedic in oddb_article.xml * Packungseinheit(column 'L') -> Field EinheitSwissmedic in oddb_article.xml In oddb_product.xml PRODNO must be exactly 7 digits long. For all drugs appearing in the Packungen.xlsx the PRODNO is defined as IKSNR (column A Zulassungsnummer) + SEQ (column b Dosisstärkenummer) and the DSCRD is taken vom refdata. Bedeutung ist 'A' = Aktiv,'I' = inaktiv == Ausser Handel meaning is 'A' = active,'I' = inactive == out of trade possible values are 10 => BAG-XML (SL/LS), 13 -> MiGel, 20 => (LPPV) Limitation, empty => NonPharma)