@smarttracker/blue-button-generate
Version:
Blue Button CCDA Generator.
134 lines (104 loc) • 3.81 kB
JavaScript
;
var fs = require("fs");
var path = require('path');
var bb = require('@amida-tech/blue-button');
var bbg = require('../../index');
var jsonutil = require('../util/jsonutil');
var util = require('../util');
var bbParserMods = require('../xmlmods/bbParser');
var bbGeneratorMods = require('../xmlmods/bbGenerator');
var ccd1ParserMods = require('../xmlmods/ccd1Parser');
var ccd1GeneratorMods = require('../xmlmods/ccd1Generator');
var viteraParserMods = require('../xmlmods/viteraParser');
var viteraGeneratorMods = require('../xmlmods/viteraGenerator');
describe('xml vs parse generate xml ', function () {
var generatedDir = null;
var sampleDir = null;
beforeAll(function () {
generatedDir = path.join(__dirname, "../fixtures/files/generated");
sampleDir = path.join(__dirname, "../fixtures/files/ccda_xml");
expect(generatedDir).toBeDefined();
expect(sampleDir).toBeDefined();
});
var testSampleFile = function (filename, validate, addlParserMods, addlGeneratorMods, limited) {
return function () {
var xmlRaw;
var xmlObj;
var xmlGeneratedObj;
it('read xml', function () {
xmlRaw = fs.readFileSync(path.join(sampleDir, filename + '.xml')).toString();
expect(xmlRaw).toBeDefined();
});
it('xml2js original', function (done) {
var mods = bbParserMods;
if (addlParserMods) {
mods = mods.concat(addlParserMods);
}
util.toSectionJSONs(xmlRaw, mods, function (err, result) {
xmlObj = result;
done(err);
});
});
it('xml2js generated', function (done) {
var mods = bbGeneratorMods;
if (addlGeneratorMods) {
mods = mods.concat(addlGeneratorMods);
}
util.toBBSectionJSONs(xmlRaw, validate, mods, function (err, result) {
xmlGeneratedObj = result;
done(err);
});
});
var compareSection = function (section, sectionGenerated, baseName) {
jsonutil.JSONToFile(section, generatedDir, "o_" + baseName + ".json");
jsonutil.JSONToFile(sectionGenerated, generatedDir, "g_" + baseName + ".json");
expect(sectionGenerated).toEqual(section);
};
var findCompareSection = function (sectionName) {
var section = xmlObj[sectionName];
var sectionGenerated = xmlGeneratedObj[sectionName];
compareSection(section, sectionGenerated, filename + '_' + sectionName);
};
it('allergies', function () {
findCompareSection('allergies');
});
it('medications', function () {
findCompareSection('medications');
});
it('immunizations', function () {
findCompareSection('immunizations');
});
it('procedures', function () {
findCompareSection('procedures');
});
it('encounters', function () {
findCompareSection('encounters');
});
it('payers', function () {
findCompareSection('payers');
});
it('plan_of_care', function () {
findCompareSection('plan_of_care');
});
it('problems', function () {
findCompareSection('problems');
});
if (!limited) {
it('social_history', function () {
findCompareSection('social_history');
});
}
it('vitals', function () {
findCompareSection('vitals');
});
it('results', function () {
findCompareSection('results');
});
it('demographics', function () {
findCompareSection('demographics');
});
};
};
describe('CCD_1.xml', testSampleFile('CCD_1', true, ccd1ParserMods, ccd1GeneratorMods));
//describe('Vitera.xml', testSampleFile('Vitera', false, viteraParserMods, viteraGeneratorMods, true));
});