bluebutton
Version:
BlueButton.js helps developers navigate complex health data with ease.
98 lines (80 loc) • 2.73 kB
JavaScript
/*
* Parser for the CCDA demographics section
*/
Parsers.CCDA.demographics = function (ccda) {
var parseDate = Documents.parseDate;
var parseName = Documents.parseName;
var parseAddress = Documents.parseAddress;
var data = {}, el;
var demographics = ccda.section('demographics');
var patient = demographics.tag('patientRole');
el = patient.tag('patient').tag('name');
var patient_name_dict = parseName(el);
el = patient.tag('patient');
var dob = parseDate(el.tag('birthTime').attr('value')),
gender = Core.Codes.gender(el.tag('administrativeGenderCode').attr('code')),
marital_status = Core.Codes.maritalStatus(el.tag('maritalStatusCode').attr('code'));
el = patient.tag('addr');
var patient_address_dict = parseAddress(el);
el = patient.tag('telecom');
var home = el.attr('value'),
work = null,
mobile = null;
var email = null;
var language = patient.tag('languageCommunication').tag('languageCode').attr('code'),
race = patient.tag('raceCode').attr('displayName'),
ethnicity = patient.tag('ethnicGroupCode').attr('displayName'),
religion = patient.tag('religiousAffiliationCode').attr('displayName');
el = patient.tag('birthplace');
var birthplace_dict = parseAddress(el);
el = patient.tag('guardian');
var guardian_relationship = el.tag('code').attr('displayName'),
guardian_home = el.tag('telecom').attr('value');
el = el.tag('guardianPerson').tag('name');
var guardian_name_dict = parseName(el);
el = patient.tag('guardian').tag('addr');
var guardian_address_dict = parseAddress(el);
el = patient.tag('providerOrganization');
var provider_organization = el.tag('name').val(),
provider_phone = el.tag('telecom').attr('value');
var provider_address_dict = parseAddress(el.tag('addr'));
data = {
name: patient_name_dict,
dob: dob,
gender: gender,
marital_status: marital_status,
address: patient_address_dict,
phone: {
home: home,
work: work,
mobile: mobile
},
email: email,
language: language,
race: race,
ethnicity: ethnicity,
religion: religion,
birthplace: {
state: birthplace_dict.state,
zip: birthplace_dict.zip,
country: birthplace_dict.country
},
guardian: {
name: {
given: guardian_name_dict.given,
family: guardian_name_dict.family
},
relationship: guardian_relationship,
address: guardian_address_dict,
phone: {
home: guardian_home
}
},
provider: {
organization: provider_organization,
phone: provider_phone,
address: provider_address_dict
}
};
return data;
};