epha-robot
Version:
Fetching, cleaning, transforming of pharmaceutical data from public resources
94 lines (75 loc) • 3.19 kB
JavaScript
;
var xlsx = require("xlsx");
var util = require("../common/util");
/**
*
* @param {string} filename
* @param {function({Object})} corrector
* @returns {Array}
*/
function readXLSX(filename, corrector) {
var excel = xlsx.readFile(filename);
var worksheet = excel.SheetNames[0];
var cleaned = [];
for( var i = 5; i < 20000; i++ )
{
var clean = Object.create(null);
// DONE WITH ROWS
if( !excel.Sheets[ worksheet ]["A"+i] ) break;
// Zulassungs-Nummer
clean.zulassung = ("00000" + excel.Sheets[ worksheet ]["A"+i].v ).slice( -5 );
// Sequenz
clean.sequenz = ""+excel.Sheets[ worksheet ]["B"+i].v;
// Sequenzname
if( excel.Sheets[ worksheet ]["C"+i] ) {
clean.name = excel.Sheets[ worksheet ]["C"+i].v;
clean.name = clean.name.replace(/["\\"]/g,"");
}
// Zulassungsinhaberin
clean.hersteller = excel.Sheets[ worksheet ]["D"+i].v;
// IT-Nummer
if( excel.Sheets[ worksheet ]["E"+i] ) clean.itnummer = excel.Sheets[ worksheet ]["E"+i].v;
// ATC-Code
if( excel.Sheets[ worksheet ]["F"+i] ) clean.atc = excel.Sheets[ worksheet ]["F"+i].v;
// Heilmittelcode
clean.heilmittelcode = excel.Sheets[ worksheet ]["G"+i].v;
// Erstzulassung
var erst = new Date(1900,0,1);
erst.setDate( excel.Sheets[ worksheet ]["H"+i].v - 1);
clean.erstzulassung = (erst.getDate()) + "." + (erst.getMonth()+1) + "." + (erst.getFullYear());
// Zulassungsdatum
var zul = new Date(1900,0,1);
zul.setDate( excel.Sheets[ worksheet ]["I"+i].v - 1);
clean.zulassungsdatum = (zul.getDate()) + "." + (zul.getMonth()+1) + "." + (zul.getFullYear());
// Gueltigkeitsdatum
var valid = new Date(1900,0,1);
valid.setDate( excel.Sheets[ worksheet ]["J"+i].v -1);
clean.gueltigkeitsdatum = (valid.getDate()) + "." + (valid.getMonth()+1) + "." + (valid.getFullYear());
// Verpackungs-Id
clean.verpackung = ("000" + excel.Sheets[ worksheet ]["K"+i].v ).slice( -3 );
// Packungsgrösse
if( excel.Sheets[ worksheet ]["L"+i] ) clean.packungsgroesse = excel.Sheets[ worksheet ]["L"+i].v;
// Einheit
if( excel.Sheets[ worksheet ]["M"+i] ) clean.einheit = excel.Sheets[ worksheet ]["M"+i].v;
// Abgabekategorie
clean.abgabekategorie = excel.Sheets[ worksheet ]["N"+i].v;
// Wirkstoffe
if( excel.Sheets[ worksheet ]["O"+i]) clean.wirkstoffe = excel.Sheets[ worksheet ]["O"+i].v;
// Zusammensetzung
if( excel.Sheets[ worksheet ]["P"+i] )
clean.zusammensetzung = excel.Sheets[ worksheet ]["P"+i].v;
// Anwendungsgebiet Präparat
if( excel.Sheets[ worksheet ]["Q"+i] ) clean.anwendungsgebiet = excel.Sheets[ worksheet ]["Q"+i].v;
// Anwendungsgebeit Sequenz
if( excel.Sheets[ worksheet ]["R"+i] ) clean.anwendungsgebietsequenz = excel.Sheets[ worksheet ]["R"+i].v;
// QUESTION VALID
if( !clean.name || clean.heilmittelcode == "Tierarzneimittel" ) continue;
// NEU GTIN
var gtin = "7680" + clean.zulassung + clean.verpackung;
clean.gtin = gtin + util.eanCheckDigit( gtin );
clean = corrector( clean );
cleaned.push( clean );
}
return cleaned;
}
module.exports = readXLSX;