UNPKG

bluebutton

Version:

BlueButton.js helps developers navigate complex health data with ease.

86 lines (73 loc) 2.52 kB
/* * Parser for the C32 encounters section */ Parsers.C32.encounters = function (c32) { var parseDate = Documents.parseDate; var parseName = Documents.parseName; var parseAddress = Documents.parseAddress; var data = [], el; var encounters = c32.section('encounters'); encounters.entries().each(function(entry) { var date = parseDate(entry.tag('effectiveTime').attr('value')); if (!date) { date = parseDate(entry.tag('effectiveTime').tag('low').attr('value')); } el = entry.tag('code'); var name = el.attr('displayName'), code = el.attr('code'), code_system = el.attr('codeSystem'), code_system_name = el.attr('codeSystemName'), code_system_version = el.attr('codeSystemVersion'); // translation el = entry.tag('translation'); var translation_name = el.attr('displayName'), translation_code = el.attr('code'), translation_code_system = el.attr('codeSystem'), translation_code_system_name = el.attr('codeSystemName'); // performer el = entry.tag('performer'); var performer_name = el.tag('name').val(), performer_code = el.attr('code'), performer_code_system = el.attr('codeSystem'), performer_code_system_name = el.attr('codeSystemName'); // participant => location el = entry.tag('participant'); var organization = el.tag('name').val(), location_dict = parseAddress(el); location_dict.organization = organization; // findings var findings = []; var findingEls = entry.elsByTag('entryRelationship'); for (var i = 0; i < findingEls.length; i++) { el = findingEls[i].tag('value'); findings.push({ name: el.attr('displayName'), code: el.attr('code'), code_system: el.attr('codeSystem') }); } data.push({ date: date, name: name, code: code, code_system: code_system, code_system_name: code_system_name, code_system_version: code_system_version, findings: findings, translation: { name: translation_name, code: translation_code, code_system: translation_code_system, code_system_name: translation_code_system_name }, performer: { name: performer_name, code: performer_code, code_system: performer_code_system, code_system_name: performer_code_system_name }, location: location_dict }); }); return data; };