# Artikelstamm Readme odd2xml unterstützt seit Ende 2017 den von Elexis gebrauchten Artikelstamm wie folgt: * Mit der Option _--artikelstamm_ werden ArtikelstammDaten in der Version 3 und 5 erzeugt * https://github.com/zdavatz/oddb2xml/blob/master/bin/compare_v5 erlaubt es, zwei v5 (oder v3) XML-Dateien zu vergleichen ## Herkunft der Artikelstamm Daten Die für den Artikelstamm gebrauchten Ursprungs-Dateien werden unter _downloads_ in einem leicht lesbaren Format abgespeichert. Dazu wird die Utility _ssconvert_ von _Gnumeric_ verwendet, was viel schneller geht, als die Dateien per Ruby-Script zu laden. Mit _xmllint --format_ können die XML Daten schön formatiert werden. Damit ist möglich nach einem Durchlauf den Ursprung der Daten zu ermitteln, z.B. `grep -r 7680273040281 downloads` git dann folgende Zeilen zurück downloads/transfer.dat:1120098878HALDOL Tabl 1 mg 50 Stk 000278000660100B010500076802730402812 downloads/transfer.utf8:1120098878HALDOL Tabl 1 mg 50 Stk 000278000660100B010500076802730402812 downloads/Preparations.xml: 7680273040281 downloads/refdata_Pharma.xml: 7680273040281 Oder > grep -ri FERRO-GRADUMET downloads downloads/transfer.dat:1120020244FERRO-GRADUMET Depottabl 30 Stk 000896001380300C060710076803164401152 downloads/transfer.dat:1121245933FERRO-GRADUMET Depottabl 90 Stk 002296003540300C060710076803164403822 downloads/swissmedic_package.csv:31644,2,"Ferro-Gradumet, compresse a rilascio prolungato","FARMACEUTICA TEOFARMA SUISSE SA","Synthetika human",06.07.1.,B03AA07,1967/06/22,1994/03/28,2022/02/15,11,30,Tablette(n),C,C,C,ferrum(II),"ferrum(II) 105 mg ut ferrosi sulfas dessiccatus, arom.: saccharinum natricum, color.: E 127, excipiens pro compresso.","Anemia da carenza di ferro con carenza di ferro accertata",,,, downloads/swissmedic_package.csv:31644,2,"Ferro-Gradumet, compresse a rilascio prolungato","FARMACEUTICA TEOFARMA SUISSE SA","Synthetika human",06.07.1.,B03AA07,1967/06/22,1994/03/28,2022/02/15,38,90,Tablette(n),C,C,C,ferrum(II),"ferrum(II) 105 mg ut ferrosi sulfas dessiccatus, arom.: saccharinum natricum, color.: E 127, excipiens pro compresso.","Anemia da carenza di ferro con carenza di ferro accertata",,,, downloads/refdata_Pharma.xml: FERRO-GRADUMET Depottabl 30 Stk downloads/refdata_Pharma.xml: FERRO-GRADUMET cpr dépôt 30 pce downloads/refdata_Pharma.xml: FERRO-GRADUMET Depottabl 90 Stk downloads/refdata_Pharma.xml: FERRO-GRADUMET cpr dépôt 90 pce ### Herkunft der einzelenen Dateien * Siehe: https://github.com/zdavatz/oddb2xml/blob/master/README.md#data-sources Beim Transfer.dat werden Zeilen ausgelassen, wenn eine der folgenden Bedingungen zutrifft (siehe extractor.rb ZurroseExtractor) * Die GTIN ist 0000000000000 * Die Zeile beginnt mit 113 (inaktiv) und die GTIN beginnt mit 7680 (aka Swissmedic) * Die Zeile beginnt mit 113 (inaktiv) und sowohl der Public als auch der Extfactory Preis is 0 ### 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 for Switzerland, eg www.gepir.ch or globally http://gepir.gs1.org/ Drugs registered in Switzerland have GTINs starting with 7680 (which is reserved by Swissmedic) ## UnitTests Dafür werden Ruby RSpec tests verwendet. Die Testabdeckung ist gut. Im der Datei spec/spec_helper.rb findet man die Methode mock_downloads, welche mocks für die zu holenden Dateien (werden via ruby open-uri geöffnet) definiert. Als Ursprung werden die unter spec/data abgelegten Dateien (teilweiche auch beim Testlauf in Zip-Dateien umgewandelt) verwendet. Damit ist auf eine einfache Art möglich, neue Testfälle in die XML/XLSX-Dateien einzufügen. Vor 2017 wurde das Ruby-Gem vcr dazu verwendet, was jedoch einen zu hohen Wartungsbedarf mit sich brachte ## Entstehungsgeschichte Bis Ende 2017 wurden via oddb2xml die Dateien oddb_article.xml und oddb_product.xml generiert und mit einen AdHoc geschrieben Tool von Marco Descher in das Artikelstamm Format (in Versionen 1,2,3,4) umgewandelt und dann von Elexis eingelesen. 2017 erweiterte https://github.com/ngiger/ oddb2xml auf die Bedürfnisse von Elexis und dessen Artikelstammanforderungen, um für die neue Version 5 die Dateien direkt via oddb2xml zu erstellen. Dazu kam auch das Werkzeug https://github.com/zdavatz/oddb2xml/blob/master/bin/compare_v5 um zwei v5 XML-Dateien zu vergleichen, womit die pro Monat neu eintreffenden Anpassungen leicht verfolgbar werden.