bluebutton
Version:
BlueButton.js helps developers navigate complex health data with ease.
68 lines (55 loc) • 1.83 kB
JavaScript
/*
* Parser for the CCDA procedures section
*/
Parsers.CCDA.procedures = function (ccda) {
var parseDate = Documents.parseDate;
var parseName = Documents.parseName;
var parseAddress = Documents.parseAddress;
var data = [], el;
var procedures = ccda.section('procedures');
procedures.entries().each(function(entry) {
el = entry.tag('effectiveTime');
var date = parseDate(el.attr('value'));
el = entry.tag('code');
var name = el.attr('displayName'),
code = el.attr('code'),
code_system = el.attr('codeSystem');
// 'specimen' tag not always present
// el = entry.tag('specimen').tag('code');
// var specimen_name = el.attr('displayName'),
// specimen_code = el.attr('code'),
// specimen_code_system = el.attr('codeSystem');
var specimen_name = null,
specimen_code = null,
specimen_code_system = null;
el = entry.tag('performer').tag('addr');
var organization = el.tag('name').val(),
phone = el.tag('telecom').attr('value');
var performer_dict = parseAddress(el);
performer_dict.organization = organization;
performer_dict.phone = phone;
// participant => device
el = entry.tag('participant').tag('code');
var device_name = el.attr('displayName'),
device_code = el.attr('code'),
device_code_system = el.attr('codeSystem');
data.push({
date: date,
name: name,
code: code,
code_system: code_system,
specimen: {
name: specimen_name,
code: specimen_code,
code_system: specimen_code_system
},
performer: performer_dict,
device: {
name: device_name,
code: device_code,
code_system: device_code_system
}
});
});
return data;
};