@kno2/bluebutton 0.6.10 → 0.6.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bluebutton.js +4118 -4118
- package/build/bluebutton.js.map +1 -1
- package/package.json +1 -1
package/build/bluebutton.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bluebutton.js","mappings":"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","sources":["webpack://bluebutton/webpack/universalModuleDefinition","webpack://bluebutton/./lib/parsers/ccd.js","webpack://bluebutton/./lib/parsers/ccda/care_plan.js","webpack://bluebutton/./lib/parsers/c32/problems.js","webpack://bluebutton/./lib/parsers/generic.js","webpack://bluebutton/./lib/parsers/ccda/instructions.js","webpack://bluebutton/./lib/parsers/ccda/problems.js","webpack://bluebutton/./lib/parsers/ccda/medications.js","webpack://bluebutton/./lib/parsers/c32/document.js","webpack://bluebutton/./lib/parsers/ccda.js","webpack://bluebutton/./lib/core.js","webpack://bluebutton/./lib/documents/ccdar2.js","webpack://bluebutton/./lib/parsers/ccdar2.js","webpack://bluebutton/./lib/generators/c32.js","webpack://bluebutton/./lib/generators.js","webpack://bluebutton/./lib/parsers/ccda/vitals.js","webpack://bluebutton/./lib/parsers/ccda/immunizations.js","webpack://bluebutton/./lib/parsers.js","webpack://bluebutton/./lib/parsers/ccda/procedures.js","webpack://bluebutton/./lib/parsers/c32/procedures.js","webpack://bluebutton/./lib/bluebutton.js","webpack://bluebutton/./lib/parsers/c32/allergies.js","webpack://bluebutton/./lib/parsers/ccda/document.js","webpack://bluebutton/./lib/parsers/ccda/allergies.js","webpack://bluebutton/./lib/parsers/ccdar2/document.js","webpack://bluebutton/./lib/parsers/ccda/encounters.js","webpack://bluebutton/external commonjs \"@xmldom/xmldom\"","webpack://bluebutton/./lib/parsers/c32.js","webpack://bluebutton/./lib/parsers/ccda/demographics.js","webpack://bluebutton/./lib/parsers/ccd/document.js","webpack://bluebutton/./lib/documents/ccd.js","webpack://bluebutton/./lib/generators/ccda.js","webpack://bluebutton/./lib/parsers/c32/vitals.js","webpack://bluebutton/./lib/parsers/c32/results.js","webpack://bluebutton/./lib/documents/c32.js","webpack://bluebutton/./lib/parsers/ccda/results.js","webpack://bluebutton/./lib/parsers/ccdar2/health_concerns.js","webpack://bluebutton/./lib/core/codes.js","webpack://bluebutton/./lib/core/common.js","webpack://bluebutton/./lib/parsers/ccda/functional_statuses.js","webpack://bluebutton/./lib/parsers/c32/demographics.js","webpack://bluebutton/./lib/parsers/ccda/free_text.js","webpack://bluebutton/./lib/core/xml.js","webpack://bluebutton/external commonjs \"lodash\"","webpack://bluebutton/./lib/parsers/c32/medications.js","webpack://bluebutton/./lib/documents.js","webpack://bluebutton/./lib/parsers/ccda/smoking_status.js","webpack://bluebutton/./lib/documents/ccda.js","webpack://bluebutton/./lib/parsers/c32/encounters.js","webpack://bluebutton/./lib/parsers/c32/immunizations.js","webpack://bluebutton/webpack/bootstrap","webpack://bluebutton/webpack/runtime/global","webpack://bluebutton/webpack/before-startup","webpack://bluebutton/webpack/startup","webpack://bluebutton/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bluebutton\"] = factory();\n\telse\n\t\troot[\"bluebutton\"] = factory();\n})(self, () => {\nreturn ","/*\n * Parser for the CCDAR2 document\n */\n\nvar ParseGenericInfo = require('./generic');\nvar Core = require('../core');\nvar DocumentParser = require('./ccd/document');\nvar DemographicsParser = require('./ccda/demographics');\nvar HealthConcernsParser = require('./ccdar2/health_concerns');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.documentParser = new DocumentParser(self.doc);\n self.demographicsParser = new DemographicsParser(self.doc);\n self.healthConcernsParser = new HealthConcernsParser(self.doc);\n \n self.run = function (ccda) {\n var data = {};\n\n data.document = self.documentParser.document(ccda);\n data.demographics = self.demographicsParser.demographics(ccda);\n data.health_concerns_document = self.healthConcernsParser.health_concerns_document(ccda);\n data.json = Core.json;\n\n // Decorate each section with Title, templateId and text and adds missing sections\n ParseGenericInfo(ccda, data);\n\n return data;\n };\n}\n","/*\n * Parser for the CCDA \"plan of care\" section\n */\n\n'use strict'\nlet Core = require('../../core');\n\nmodule.exports = function(doc) {\n let self = this;\n self.doc = doc;\n\n self.care_plan = function (ccda) {\n let care_plan = ccda.section('care_plan');\n \n let data = {}, el;\n data.entries = [];\n data.displayName = \"Care Plan\";\n data.templateId = care_plan.tag('templateId').attr('root');\n data.text = care_plan.tag('text').val(true);\n \n care_plan.entries().each(function (entry) {\n \n let name = null,\n code = null,\n code_system = null,\n code_system_name = null;\n \n // Plan of care encounters, which have no other details\n el = entry.template('2.16.840.1.113883.10.20.22.4.40');\n if (!el.isEmpty()) {\n name = 'encounter';\n } else {\n el = entry.tag('code');\n \n name = el.attr('displayName');\n code = el.attr('code');\n code_system = el.attr('codeSystem');\n code_system_name = el.attr('codeSystemName');\n }\n \n let text = Core.stripWhitespace(entry.tag('text').val(true));\n let time = entry.tag('effectiveTime').immediateChildTag('center').attr('value');\n \n data.entries.push({\n text: text,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n effective_time: parse(time)\n });\n });\n \n return data;\n \n function parse(str) {\n if (!str) return null;\n let y = str.substr(0, 4),\n m = str.substr(4, 2) - 1,\n d = str.substr(6, 2);\n let D = new Date(y, m, d);\n return (D.getFullYear() == y && D.getMonth() == m && D.getDate() == d) ? D : null;\n }\n };\n}\n","var Core = require('../../core');\n\n/*\n * Parser for the C32 problems section\n */\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var problems = c32.section('problems');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Problems\";\n data.templateId = problems.tag('templateId').attr('root');\n data.text = problems.tag('text').val(true);\n \n problems.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var start_date = parseDate(el.tag('low').attr('value')),\n end_date = parseDate(el.tag('high').attr('value'));\n \n el = entry.template('2.16.840.1.113883.10.20.1.28').tag('value');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n // Pre-C32 CCDs put the problem name in this \"originalText\" field, and some vendors\n // continue doing this with their C32, even though it's not technically correct\n if (!name) {\n el = entry.template('2.16.840.1.113883.10.20.1.28').tag('originalText');\n if (!el.isEmpty()) {\n name = Core.stripWhitespace(el.val());\n }\n }\n \n el = entry.template('2.16.840.1.113883.10.20.1.28').tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = entry.template('2.16.840.1.113883.10.20.1.50');\n var status = el.tag('value').attr('displayName');\n \n var age = null;\n el = entry.template('2.16.840.1.113883.10.20.1.38');\n if (!el.isEmpty()) {\n age = parseFloat(el.tag('value').attr('value'));\n }\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n name: name,\n status: status,\n age: age,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n comment: null // not part of C32\n });\n });\n \n return data;\n };\n}\n","/* Parses out basic data about each section */\n\nmodule.exports = function (ccda, data) {\n\n var each = function (callback) {\n for (var i = 0; i < this.length; i++) {\n callback(this[i]);\n }\n };\n\n var containsTemplateId = function(templateId, data) {\n for (var property in data) {\n if (data.hasOwnProperty(property)) {\n var p = data[property].templateId;\n //var display = this[property].displayName;\n if(p) {\n if(p === templateId) {\n //console.log(\"TemplateId Match \" + templateId + \" \" + display);\n return true;\n }\n }\n }\n }\n return false;\n };\n\n var allSections = ccda.elsByTag('section');\n allSections.each = each;\n\n allSections.each(function(s) {\n\n var code = s.tag('code').attr('displayName');\n var templateId = s.tag('templateId').attr('root');\n\n var existingTemplateId = containsTemplateId(templateId, data);\n\n if (code) {\n var nodeName = code.split(' ').join('_').toLowerCase();\n\n //console.log(\"NODE NAME \" + nodeName);\n\n if (!data[nodeName] && !existingTemplateId) {\n //console.log(\"CREATE NODE \" + code);\n data[nodeName] = {};\n }\n\n if(data[nodeName]) {\n data[nodeName].displayName = code;\n data[nodeName].templateId = templateId;\n data[nodeName].text = s.tag('text').val(true);\n }\n\n }\n });\n};","/*\n * Parser for the CCDA \"plan of care\" section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function() {\n var self = this;\n \n self.instructions = function (ccda) {\n \n var data = [], el;\n \n var instructions = ccda.section('instructions');\n data.templateId = instructions.tag('templateId').attr('root');\n \n instructions.entries().each(function(entry) {\n \n el = entry.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n var text = Core.stripWhitespace(entry.tag('text').val(true));\n \n data.push({\n text: text,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the CCDA problems section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.problems = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n \n var problems = ccda.section('problems');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Problems\";\n data.templateId = problems.tag('templateId').attr('root');\n data.text = problems.tag('text').val(true);\n \n problems.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var start_date = parseDate(el.tag('low').attr('value')),\n end_date = parseDate(el.tag('high').attr('value'));\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.4').tag('value');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.4').tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.6');\n var status = el.tag('value').attr('displayName');\n \n var age = null;\n el = entry.template('2.16.840.1.113883.10.20.22.4.31');\n if (!el.isEmpty()) {\n age = parseFloat(el.tag('value').attr('value'));\n }\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.64');\n var comment = Core.stripWhitespace(el.tag('text').val());\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n name: name,\n status: status,\n age: age,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n comment: comment\n });\n });\n \n return data;\n };\n}\n","/*\n * Parser for the CCDA medications section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function (doc) {\n var self = this;\n self.doc = doc;\n\n self.medications = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var medications = ccda.section('medications');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Medications\";\n data.templateId = medications.tag('templateId').attr('root');\n data.text = medications.tag('text').val(true);\n \n medications.entries().each(function(entry) {\n \n el = entry.tag('text');\n var sig = Core.stripWhitespace(el.val());\n \n var effectiveTimes = entry.elsByTag('effectiveTime');\n \n el = effectiveTimes[0]; // the first effectiveTime is the med start date\n var start_date = null, end_date = null;\n if (el) {\n start_date = parseDate(el.tag('low').attr('value'));\n end_date = parseDate(el.tag('high').attr('value'));\n }\n \n // the second effectiveTime might the schedule period or it might just\n // be a random effectiveTime from further in the entry... xsi:type should tell us\n el = effectiveTimes[1];\n var schedule_type = null, schedule_period_value = null, schedule_period_unit = null;\n if (el && el.attr('xsi:type') === 'PIVL_TS') {\n var institutionSpecified = el.attr('institutionSpecified');\n if (institutionSpecified === 'true') {\n schedule_type= 'frequency';\n } else if (institutionSpecified === 'false') {\n schedule_type = 'interval';\n }\n \n el = el.tag('period');\n schedule_period_value = el.attr('value');\n schedule_period_unit = el.attr('unit');\n }\n \n el = entry.tag('manufacturedProduct').tag('code');\n var product_name = el.attr('displayName'),\n product_code = el.attr('code'),\n product_code_system = el.attr('codeSystem');\n \n var product_original_text = null;\n el = entry.tag('manufacturedProduct').tag('originalText');\n if (!el.isEmpty()) {\n product_original_text = Core.stripWhitespace(el.val());\n }\n // if we don't have a product name yet, try the originalText version\n if (!product_name && product_original_text) {\n product_name = product_original_text;\n }\n \n el = entry.tag('manufacturedProduct').tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = entry.tag('doseQuantity');\n var dose_value = el.attr('value'),\n dose_unit = el.attr('unit');\n \n el = entry.tag('rateQuantity');\n var rate_quantity_value = el.attr('value'),\n rate_quantity_unit = el.attr('unit');\n \n el = entry.tag('precondition').tag('value');\n var precondition_name = el.attr('displayName'),\n precondition_code = el.attr('code'),\n precondition_code_system = el.attr('codeSystem');\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.19').tag('value');\n var reason_name = el.attr('displayName'),\n reason_code = el.attr('code'),\n reason_code_system = el.attr('codeSystem');\n \n el = entry.tag('routeCode');\n var route_name = el.attr('displayName'),\n route_code = el.attr('code'),\n route_code_system = el.attr('codeSystem'),\n route_code_system_name = el.attr('codeSystemName');\n \n // participant/playingEntity => vehicle\n el = entry.tag('participant').tag('playingEntity');\n var vehicle_name = el.tag('name').val();\n \n el = el.tag('code');\n // prefer the code vehicle_name but fall back to the non-coded one\n vehicle_name = el.attr('displayName') || vehicle_name;\n var vehicle_code = el.attr('code'),\n vehicle_code_system = el.attr('codeSystem'),\n vehicle_code_system_name = el.attr('codeSystemName');\n \n el = entry.tag('administrationUnitCode');\n var administration_name = el.attr('displayName'),\n administration_code = el.attr('code'),\n administration_code_system = el.attr('codeSystem'),\n administration_code_system_name = el.attr('codeSystemName');\n \n // performer => prescriber\n el = entry.tag('performer');\n var prescriber_organization = el.tag('name').val(),\n prescriber_person = null;\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n text: sig,\n product: {\n name: product_name,\n code: product_code,\n code_system: product_code_system,\n text: product_original_text,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n }\n },\n dose_quantity: {\n value: dose_value,\n unit: dose_unit\n },\n rate_quantity: {\n value: rate_quantity_value,\n unit: rate_quantity_unit\n },\n precondition: {\n name: precondition_name,\n code: precondition_code,\n code_system: precondition_code_system\n },\n reason: {\n name: reason_name,\n code: reason_code,\n code_system: reason_code_system\n },\n route: {\n name: route_name,\n code: route_code,\n code_system: route_code_system,\n code_system_name: route_code_system_name\n },\n schedule: {\n type: schedule_type,\n period_value: schedule_period_value,\n period_unit: schedule_period_unit\n },\n vehicle: {\n name: vehicle_name,\n code: vehicle_code,\n code_system: vehicle_code_system,\n code_system_name: vehicle_code_system_name\n },\n administration: {\n name: administration_name,\n code: administration_code,\n code_system: administration_code_system,\n code_system_name: administration_code_system_name\n },\n prescriber: {\n organization: prescriber_organization,\n person: prescriber_person\n }\n });\n });\n \n return data;\n };\n}\n","/*\n * Parser for the C32 document section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var doc = c32.section('document');\n \n // Parse Doc Type Info\n var templates = doc.elsByTag('templateId');\n var rootTemplate = templates[0].attr('root');\n var secondTemplate;\n if(templates.length >1)\n secondTemplate = templates[1].attr('root');\n else\n secondTemplate = rootTemplate;\n \n var loinc = doc.tag('code').attr('code');\n var templateId = doc.tag('templateId').attr('root');\n var displayName = doc.tag('code').attr('displayName');\n \n var nonXml = doc.tag('nonXMLBody');\n var nonXmlNodes = nonXml.el.childNodes;\n \n var bodyType = \"structured\";\n var nonXmlBody = {\n type: \"\",\n mediaType: \"\",\n representation: \"\",\n rawText: \"\",\n reference: \"\"\n };\n \n if(nonXmlNodes && nonXmlNodes.length > 0) {\n bodyType = \"unstructured\";\n var text = nonXml.tag('text');\n var mediaType = \"\";\n var representation = \"\";\n var rawText = \"\";\n var reference = \"\";\n var type = \"\";\n \n // We have an embedded doc\n if(text && text.attr('mediaType')) {\n mediaType = text.attr('mediaType');\n representation = text.attr('representation');\n rawText = text.val();\n type = \"embedded\";\n }\n \n if(text && !mediaType) {\n reference = text.tag('reference').attr('value');\n type = \"reference\";\n }\n nonXmlBody = {\n type: type,\n mediaType: mediaType,\n representation: representation,\n rawText: rawText,\n reference: reference\n }\n }\n \n var docType = {\n type: \"CCDAR2\",\n rootTemplateId: rootTemplate,\n templateId: secondTemplate,\n displayName: displayName,\n loinc: loinc,\n bodyType: bodyType,\n nonXmlBody: nonXmlBody\n };\n \n var date = parseDate(doc.tag('effectiveTime').attr('value'));\n var title = Core.stripWhitespace(doc.tag('title').val());\n \n var author = doc.tag('author');\n el = author.tag('assignedPerson').tag('name');\n var name_dict = parseName(el);\n // Sometimes C32s include names that are just like <name>String</name>\n // and we still want to get something out in that case\n if (!name_dict.prefix && !name_dict.given.length && !name_dict.family) {\n name_dict.family = el.val();\n }\n \n el = author.tag('addr');\n var address_dict = parseAddress(el);\n \n el = author.tag('telecom');\n var work_phone = el.attr('value');\n \n var documentation_of_list = [];\n var performers = doc.tag('documentationOf').elsByTag('performer');\n for (var i = 0; i < performers.length; i++) {\n el = performers[i].tag('assignedPerson').tag('name');\n var performer_name_dict = parseName(el);\n var performer_phone = performers[i].tag('telecom').attr('value');\n var performer_addr = parseAddress(el.tag('addr'));\n documentation_of_list.push({\n name: performer_name_dict,\n phone: {\n work: performer_phone\n },\n address: performer_addr\n });\n }\n \n el = doc.tag('encompassingEncounter');\n var location_name = Core.stripWhitespace(el.tag('name').val());\n var location_addr_dict = parseAddress(el.tag('addr'));\n \n var encounter_date = null;\n el = el.tag('effectiveTime');\n if (!el.isEmpty()) {\n encounter_date = parseDate(el.attr('value'));\n }\n \n data = {\n type: docType,\n date: date,\n title: title,\n author: {\n name: name_dict,\n address: address_dict,\n phone: {\n work: work_phone\n }\n },\n documentation_of: documentation_of_list,\n location: {\n name: location_name,\n address: location_addr_dict,\n encounter_date: encounter_date\n }\n };\n \n return data;\n };\n}","var Core = require('../core');\nvar AllergiesParser = require('./ccda/allergies');\nvar CarePlanParser = require('./ccda/care_plan');\nvar DemographicsParser = require('./ccda/demographics');\nvar DocumentParser = require('./ccda/document');\nvar EncountersParser = require('./ccda/encounters');\nvar FreeTextParser = require('./ccda/free_text');\nvar FunctionalStatusesParser = require('./ccda/functional_statuses');\nvar ImmunizationsParser = require('./ccda/immunizations');\nvar InstructionsParser = require('./ccda/instructions');\nvar MedicationsParser = require('./ccda/medications');\nvar ProblemsParser = require('./ccda/problems');\nvar ProceduresParser = require('./ccda/procedures');\nvar ResultsParser = require('./ccda/results');\nvar SmokingStatusParser = require('./ccda/smoking_status');\nvar VitalsParser = require('./ccda/vitals');\n\nvar ParseGenericInfo = require('./generic');\n\n/*\n * Parser for the CCDA document\n */\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.allergiesParser = new AllergiesParser(self.doc);\n self.carePlanParser = new CarePlanParser(self.doc);\n self.demographicsParser = new DemographicsParser(self.doc);\n self.documentParser = new DocumentParser(self.doc);\n self.encountersParser = new EncountersParser(self.doc);\n self.freeTextParser = new FreeTextParser();\n self.functionalStatusesParser = new FunctionalStatusesParser(self.doc);\n self.immunizationsParser = new ImmunizationsParser(self.doc);\n self.instructionsParser = new InstructionsParser();\n self.medicationsParser = new MedicationsParser(self.doc);\n self.problemsParser = new ProblemsParser(self.doc);\n self.proceduresParser = new ProceduresParser(self.doc);\n self.resultsParser = new ResultsParser(self.doc);\n self.smokingStatusParser = new SmokingStatusParser(self.doc);\n self.vitalsParser = new VitalsParser(self.doc);\n\n\n self.run = function (ccda) {\n var data = {};\n \n data.document = self.documentParser.document(ccda);\n data.allergies = self.allergiesParser.allergies(ccda);\n data.care_plan = self.carePlanParser.care_plan(ccda);\n data.chief_complaint = self.freeTextParser.free_text(ccda, 'chief_complaint');\n data.demographics = self.demographicsParser.demographics(ccda);\n data.encounters = self.encountersParser.encounters(ccda);\n data.functional_statuses = self.functionalStatusesParser.functional_statuses(ccda);\n var parsedImmunizations = self.immunizationsParser.immunizations(ccda);\n data.immunizations = parsedImmunizations.administered;\n data.immunization_declines = parsedImmunizations.declined;\n data.instructions = self.instructionsParser.instructions(ccda);\n data.results = self.resultsParser.results(ccda);\n data.medications = self.medicationsParser.medications(ccda);\n data.problems = self.problemsParser.problems(ccda);\n data.procedures = self.proceduresParser.procedures(ccda);\n data.smoking_status = self.smokingStatusParser.smoking_status(ccda);\n data.vitals = self.vitalsParser.vitals(ccda);\n \n data.json = Core.json;\n data.document.json = Core.json;\n data.allergies.json = Core.json;\n data.care_plan.json = Core.json;\n data.chief_complaint.json = Core.json;\n data.demographics.json = Core.json;\n data.encounters.json = Core.json;\n data.functional_statuses.json = Core.json;\n data.immunizations.json = Core.json;\n data.immunization_declines.json = Core.json;\n data.instructions.json = Core.json;\n data.results.json = Core.json;\n data.medications.json = Core.json;\n data.problems.json = Core.json;\n data.procedures.json = Core.json;\n data.smoking_status.json = Core.json;\n data.vitals.json = Core.json;\n\n // Decorate each section with Title, templateId and text and adds missing sections\n ParseGenericInfo(ccda, data);\n\n return data;\n };\n}\n","/*\n * ...\n */\n\nvar Codes = require('./core/codes');\nvar XML = require('./core/xml');\nvar { stripWhitespace } = require('./core/common');\n\n/* exported Core */\nmodule.exports = {\n parseData: parseData,\n stripWhitespace: stripWhitespace,\n json: json,\n trim: trim,\n Codes: Codes,\n XML: XML\n};\n/*\n * ...\n */\nfunction parseData(source) {\n source = stripWhitespace(source);\n \n if (source.charAt(0) === '<') {\n try {\n return XML.parse(source);\n } catch (e) {\n if (console.log) {\n console.log(\"File looked like it might be XML but couldn't be parsed.\");\n }\n }\n }\n\n try {\n return JSON.parse(source);\n } catch (e) {\n if (console.error) {\n console.error(\"Error: Cannot parse this file. BB.js only accepts valid XML \" +\n \"(for parsing) or JSON (for generation). If you are attempting to provide \" +\n \"XML or JSON, please run your data through a validator to see if it is malformed.\\n\");\n }\n throw e;\n }\n};\n\n/*\n * A wrapper around JSON.stringify which allows us to produce customized JSON.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/\n * JavaScript/Guide/Using_native_JSON#The_replacer_parameter\n * for documentation on the replacerFn.\n */\nfunction json() {\n\n var datePad = function(number) {\n if (number < 10) {\n return '0' + number;\n }\n return number;\n };\n \n var replacerFn = function(key, value) {\n /* By default, Dates are output as ISO Strings like \"2014-01-03T08:00:00.000Z.\" This is\n * tricky when all we have is a date (not a datetime); JS sadly ignores that distinction.\n *\n * To paper over this JS wart, we use two different JSON formats for dates and datetimes.\n * This is a little ugly but makes sure that the dates/datetimes mostly just parse\n * correclty for clients:\n *\n * 1. Datetimes are rendered as standard ISO strings, without the misleading millisecond\n * precision (misleading because we don't have it): YYYY-MM-DDTHH:mm:ssZ\n * 2. Dates are rendered as MM/DD/YYYY. This ensures they are parsed as midnight local-time,\n * no matter what local time is, and therefore ensures the date is always correct.\n * Outputting \"YYYY-MM-DD\" would lead most browsers/node to assume midnight UTC, which\n * means \"2014-04-27\" suddenly turns into \"04/26/2014 at 5PM\" or just \"04/26/2014\"\n * if you format it as a date...\n *\n * See http://stackoverflow.com/questions/2587345/javascript-date-parse and\n * http://blog.dygraphs.com/2012/03/javascript-and-dates-what-mess.html\n * for more on this issue.\n */\n var originalValue = this[key]; // a Date\n\n if ( value && (originalValue instanceof Date) && !isNaN(originalValue.getTime()) ) {\n\n // If while parsing we indicated that there was time-data specified, or if we see\n // non-zero values in the hour/minutes/seconds/millis fields, output a datetime.\n if (originalValue._parsedWithTimeData ||\n originalValue.getHours() || originalValue.getMinutes() ||\n originalValue.getSeconds() || originalValue.getMilliseconds()) {\n\n // Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/\n // Reference/Global_Objects/Date/toISOString\n return originalValue.getUTCFullYear() +\n '-' + datePad( originalValue.getUTCMonth() + 1 ) +\n '-' + datePad( originalValue.getUTCDate() ) +\n 'T' + datePad( originalValue.getUTCHours() ) +\n ':' + datePad( originalValue.getUTCMinutes() ) +\n ':' + datePad( originalValue.getUTCSeconds() ) +\n 'Z';\n }\n \n // We just have a pure date\n return datePad( originalValue.getMonth() + 1 ) +\n '/' + datePad( originalValue.getDate() ) +\n '/' + originalValue.getFullYear();\n\n }\n\n return value;\n };\n \n return JSON.stringify(this, replacerFn, 2);\n};\n\n\n/*\n * Removes all `null` properties from an object.\n */\nfunction trim(o) {\n var y;\n for (var x in o) {\n if (o.hasOwnProperty(x)) {\n y = o[x];\n // if (y === null || (y instanceof Object && Object.keys(y).length == 0)) {\n if (y === null) {\n delete o[x];\n }\n if (y instanceof Object) y = trim(y);\n }\n }\n return o;\n};\n","/*\n * ...\n */\n\nmodule.exports = function (getEntries) {\n var self = this;\n self.getEntries = getEntries;\n \n self.process = process;\n self.section = section; \n\n /*\n * Preprocesses the CCDAR2 document\n */\n function process(ccda) {\n ccda.section = section;\n return ccda;\n };\n\n /*\n * Finds the section of a CCDA document\n */\n function section(name) {\n var el, entries = self.getEntries();\n\n switch (name) {\n case 'document':\n return this.template('2.16.840.1.113883.10.20.22.1.15');\n case 'demographics':\n return this.template('2.16.840.1.113883.10.20.22.1.15');\n case 'health_concerns_document':\n el = this.template('2.16.840.1.113883.10.20.22.2.58');\n el.entries = entries;\n return el;\n case 'goals':\n el = this.template('2.16.840.1.113883.10.20.22.2.60');\n el.entries = entries;\n return el;\n case 'interventions':\n el = this.template('2.16.840.1.113883.10.20.21.2.3');\n el.entries = entries;\n return el;\n case 'health_status_outcomes':\n el = this.template('2.16.840.1.113883.10.20.22.2.61');\n el.entries = entries;\n return el;\n }\n\n return null;\n };\n}\n","/*\n * Parser for the CCDAR2 document\n */\n\nvar ParseGenericInfo = require('./generic');\nvar Core = require('../core');\n\nvar DocumentParser = require('./ccdar2/document');\nvar DemographicsParser = require('./ccda/demographics');\nvar HealthConcernsParser = require('./ccdar2/health_concerns');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.documentParser = new DocumentParser(self.doc);\n self.demographicsParser = new DemographicsParser(self.doc);\n self.healthConcernsParser = new HealthConcernsParser(self.doc);\n\n self.run = function (ccda) { \n var data = {};\n \n data.document = self.documentParser.document(ccda);\n data.demographics = self.demographicsParser.demographics(ccda);\n data.health_concerns_document = self.healthConcernsParser.health_concerns_document(ccda);\n data.json = Core.json;\n \n // Decorate each section with Title, templateId and text and adds missing sections\n ParseGenericInfo(ccda, data);\n \n return data;\n };\n}\n","/*\n * ...\n */\n\nmodule.exports = {\n run: run\n};\n \n/*\n * Generates a C32 document\n */\nfunction run(json, template, testingMode) {\n /* jshint unused: false */ // only until this stub is actually implemented\n console.log(\"C32 generation is not implemented yet\");\n return null;\n};","/*\n * ...\n */\n\nvar C32 = require('./generators/c32');\nvar CCDA = require('./generators/ccda');\n\nvar method = function () {};\n\n/* exported Generators */\nmodule.exports = {\n method: method,\n C32: C32,\n CCDA: CCDA\n};\n \n\n\n /* Import ejs if we're in Node. Then setup custom formatting filters\n */\n /*if (typeof exports !== 'undefined') {\n if (typeof module !== 'undefined' && module.exports) {\n ejs = require(\"ejs\");\n }\n }\n\n if (typeof ejs !== 'undefined') {\n /* Filters are automatically available to ejs to be used like \"... | hl7Date\"\n * Helpers are functions that we'll manually pass in to ejs.\n * The intended distinction is that a helper gets called with regular function-call syntax\n */ /*\n var pad = function(number) {\n if (number < 10) {\n return '0' + number;\n }\n return String(number);\n };\n\n ejs.filters.hl7Date = function(obj) {\n try {\n if (obj === null || obj === undefined) { return 'nullFlavor=\"UNK\"'; }\n var date = new Date(obj);\n if (isNaN(date.getTime())) { return obj; }\n\n var dateStr = null;\n if (date.getHours() || date.getMinutes() || date.getSeconds()) {\n // If there's a meaningful time, output a UTC datetime\n dateStr = date.getUTCFullYear() +\n pad( date.getUTCMonth() + 1 ) +\n pad( date.getUTCDate() );\n var timeStr = pad( date.getUTCHours() ) +\n pad( date.getUTCMinutes() ) +\n pad ( date.getUTCSeconds() ) +\n \"+0000\";\n return 'value=\"' + dateStr + timeStr + '\"';\n \n } else {\n // If there's no time, don't apply timezone tranformations: just output a date\n dateStr = String(date.getFullYear()) +\n pad( date.getMonth() + 1 ) +\n pad( date.getDate() );\n return 'value=\"' + dateStr + '\"';\n }\n\n } catch (e) {\n return obj;\n }\n };\n\n var escapeSpecialChars = function(s) {\n return s.replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n };\n\n ejs.filters.hl7Code = function(obj) {\n if (!obj) { return ''; }\n\n var tag = '';\n var name = obj.name || '';\n if (obj.name) { tag += 'displayName=\"'+escapeSpecialChars(name)+'\"'; }\n\n if (obj.code) {\n tag += ' code=\"'+obj.code+'\"';\n if (obj.code_system) { tag += ' codeSystem=\"'+escapeSpecialChars(obj.code_system)+'\"'; }\n if (obj.code_system_name) { tag += ' codeSystemName=\"' +\n escapeSpecialChars(obj.code_system_name)+'\"'; }\n } else {\n tag += ' nullFlavor=\"UNK\"';\n }\n\n if (!obj.name && ! obj.code) {\n return 'nullFlavor=\"UNK\"';\n }\n \n return tag;\n };\n\n ejs.filters.emptyStringIfFalsy = function(obj) {\n if (!obj) { return ''; }\n return obj;\n };\n\n if (!ejs.helpers) ejs.helpers = {};\n ejs.helpers.simpleTag = function(tagName, value) {\n if (value) {\n return \"<\"+tagName+\">\"+value+\"</\"+tagName+\">\";\n } else {\n return \"<\"+tagName+\" nullFlavor=\\\"UNK\\\" />\";\n }\n };\n\n ejs.helpers.addressTags = function(addressDict) {\n if (!addressDict) {\n return '<streetAddressLine nullFlavor=\"NI\" />\\n' +\n '<city nullFlavor=\"NI\" />\\n' +\n '<state nullFlavor=\"NI\" />\\n' +\n '<postalCode nullFlavor=\"NI\" />\\n' +\n '<country nullFlavor=\"NI\" />\\n';\n }\n \n var tags = '';\n if (!addressDict.street.length) {\n tags += ejs.helpers.simpleTag('streetAddressLine', null) + '\\n';\n } else {\n for (var i=0; i<addressDict.street.length; i++) {\n tags += ejs.helpers.simpleTag('streetAddressLine', addressDict.street[i]) + '\\n';\n }\n }\n tags += ejs.helpers.simpleTag('city', addressDict.city) + '\\n';\n tags += ejs.helpers.simpleTag('state', addressDict.state) + '\\n';\n tags += ejs.helpers.simpleTag('postalCode', addressDict.zip) + '\\n';\n tags += ejs.helpers.simpleTag('country', addressDict.country) + '\\n';\n return tags;\n };\n\n ejs.helpers.nameTags = function(nameDict) {\n if (!nameDict) {\n return '<given nullFlavor=\"NI\" />\\n' +\n '<family nullFlavor=\"NI\" />\\n';\n }\n\n var tags = '';\n if (nameDict.prefix) {\n tags += ejs.helpers.simpleTag('prefix', nameDict.prefix) + '\\n';\n }\n if (!nameDict.given.length) {\n tags += ejs.helpers.simpleTag('given', null) + '\\n';\n } else {\n for (var i=0; i<nameDict.given.length; i++) {\n tags += ejs.helpers.simpleTag('given', nameDict.given[i]) + '\\n';\n }\n }\n tags += ejs.helpers.simpleTag('family', nameDict.family) + '\\n';\n if (nameDict.suffix) {\n tags += ejs.helpers.simpleTag('suffix', nameDict.suffix) + '\\n';\n }\n return tags;\n };\n\n }*/\n","/*\n * Parser for the CCDA vitals section\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.vitals = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var vitals = ccda.section('vitals');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Vitals\";\n data.templateId = vitals.tag('templateId').attr('root');\n data.text = vitals.tag('text').val(true);\n \n vitals.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var entry_date = parseDate(el.attr('value'));\n \n var result;\n var results = entry.elsByTag('component');\n var results_data = [];\n \n for (var i = 0; i < results.length; i++) {\n result = results[i];\n \n el = result.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n el = result.tag('value');\n var value = parseFloat(el.attr('value')),\n unit = el.attr('unit');\n \n results_data.push({\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n value: value,\n unit: unit\n });\n }\n \n data.entries.push({\n date: entry_date,\n results: results_data\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the CCDA immunizations section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.immunizations = function (ccda) { \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var administeredData = {}, declinedData = {}, product, el;\n \n var immunizations = ccda.section('immunizations');\n \n administeredData.entries = [];\n administeredData.displayName = \"Immunizations\";\n administeredData.templateId = immunizations.tag('templateId').attr('root');\n administeredData.text = immunizations.tag('text').val(true);\n \n declinedData.entries = [];\n declinedData.displayName = \"Immunizations Declined\";\n declinedData.templateId = immunizations.tag('templateId').attr('root');\n declinedData.text = immunizations.tag('text').val(true);\n \n immunizations.entries().each(function(entry) {\n \n // date\n el = entry.tag('effectiveTime');\n var date = parseDate(el.attr('value'));\n if (!date) {\n date = parseDate(el.tag('low').attr('value'));\n }\n \n // if 'declined' is true, this is a record that this vaccine WASN'T administered\n el = entry.tag('substanceAdministration');\n var declined = el.boolAttr('negationInd');\n \n // product\n product = entry.template('2.16.840.1.113883.10.20.22.4.54');\n el = product.tag('code');\n var product_name = el.attr('displayName'),\n product_code = el.attr('code'),\n product_code_system = el.attr('codeSystem'),\n product_code_system_name = el.attr('codeSystemName');\n \n // translation\n el = product.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n // misc product details\n el = product.tag('lotNumberText');\n var lot_number = el.val();\n \n el = product.tag('manufacturerOrganization');\n var manufacturer_name = el.tag('name').val();\n \n // route\n el = entry.tag('routeCode');\n var route_name = el.attr('displayName'),\n route_code = el.attr('code'),\n route_code_system = el.attr('codeSystem'),\n route_code_system_name = el.attr('codeSystemName');\n \n // instructions\n el = entry.template('2.16.840.1.113883.10.20.22.4.20');\n var instructions_text = Core.stripWhitespace(el.tag('text').val());\n el = el.tag('code');\n var education_name = el.attr('displayName'),\n education_code = el.attr('code'),\n education_code_system = el.attr('codeSystem');\n \n // dose\n el = entry.tag('doseQuantity');\n var dose_value = el.attr('value'),\n dose_unit = el.attr('unit');\n \n var data = (declined) ? declinedData : administeredData;\n data.entries.push({\n date: date,\n product: {\n name: product_name,\n code: product_code,\n code_system: product_code_system,\n code_system_name: product_code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n lot_number: lot_number,\n manufacturer_name: manufacturer_name\n },\n dose_quantity: {\n value: dose_value,\n unit: dose_unit\n },\n route: {\n name: route_name,\n code: route_code,\n code_system: route_code_system,\n code_system_name: route_code_system_name\n },\n instructions: instructions_text,\n education_type: {\n name: education_name,\n code: education_code,\n code_system: education_code_system\n }\n });\n });\n \n return {\n administered: administeredData,\n declined: declinedData\n };\n };\n}\n\n\n","/*\n * ...\n */\nvar C32 = require('./parsers/c32');\nvar CCD = require('./parsers/ccd');\nvar CCDA = require('./parsers/ccda');\nvar CCDAR2 = require('./parsers/ccdar2');\n\nvar method = function () {};\n\n/* exported Parsers */\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.method = method;\n self.C32 = new C32(self.doc);\n self.CCD = new CCD(self.doc);\n self.CCDA = new CCDA(self.doc);\n self.CCDAR2 = new CCDAR2(self.doc);\n}; ","/*\n * Parser for the CCDA procedures section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.procedures = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var procedures = ccda.section('procedures');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Procedures\";\n data.templateId = procedures.tag('templateId').attr('root');\n data.text = procedures.tag('text').val(true);\n \n procedures.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var date = parseDate(el.attr('value'));\n \n el = entry.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem');\n \n if (!name) {\n name = Core.stripWhitespace(entry.tag('originalText').val());\n }\n \n // 'specimen' tag not always present\n el = entry.tag('specimen').tag('code');\n var specimen_name = el.attr('displayName'),\n specimen_code = el.attr('code'),\n specimen_code_system = el.attr('codeSystem');\n \n el = entry.tag('performer').tag('addr');\n var organization = el.tag('name').val(),\n phone = el.tag('telecom').attr('value');\n \n var performer_dict = parseAddress(el);\n performer_dict.organization = organization;\n performer_dict.phone = phone;\n \n // participant => device\n el = entry.template('2.16.840.1.113883.10.20.22.4.37').tag('code');\n var device_name = el.attr('displayName'),\n device_code = el.attr('code'),\n device_code_system = el.attr('codeSystem');\n \n data.entries.push({\n date: date,\n name: name,\n code: code,\n code_system: code_system,\n specimen: {\n name: specimen_name,\n code: specimen_code,\n code_system: specimen_code_system\n },\n performer: performer_dict,\n device: {\n name: device_name,\n code: device_code,\n code_system: device_code_system\n }\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the C32 procedures section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var procedures = c32.section('procedures');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Procedures\";\n data.templateId = procedures.tag('templateId').attr('root');\n data.text = procedures.tag('text').val(true);\n \n procedures.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var date = parseDate(el.attr('value'));\n \n el = entry.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem');\n \n if (!name) {\n name = Core.stripWhitespace(entry.tag('originalText').val());\n }\n \n // 'specimen' tag not always present\n el = entry.tag('specimen').tag('code');\n var specimen_name = el.attr('displayName'),\n specimen_code = el.attr('code'),\n specimen_code_system = el.attr('codeSystem');\n \n el = entry.tag('performer').tag('addr');\n var organization = el.tag('name').val(),\n phone = el.tag('telecom').attr('value');\n \n var performer_dict = parseAddress(el);\n performer_dict.organization = organization;\n performer_dict.phone = phone;\n \n // participant => device\n el = entry.tag('participant').tag('code');\n var device_name = el.attr('displayName'),\n device_code = el.attr('code'),\n device_code_system = el.attr('codeSystem');\n \n data.entries.push({\n date: date,\n name: name,\n code: code,\n code_system: code_system,\n specimen: {\n name: specimen_name,\n code: specimen_code,\n code_system: specimen_code_system\n },\n performer: performer_dict,\n device: {\n name: device_name,\n code: device_code,\n code_system: device_code_system\n }\n });\n });\n \n return data;\n };\n}","'use strict';\n/*\n * ...\n */\n\nvar Core = require('./core');\n\nvar Documents = require('./documents');\n\nvar Generators = require('./generators');\n\nvar Parsers = require('./parsers');\n\n\n/* exported BlueButton */\nmodule.exports = function (source, opts) {\n var type, parsedData, parsedDocument;\n \n // Look for options\n if (!opts) opts = {};\n \n // Detect and parse the source data\n parsedData = Core.parseData(source);\n \n // Detect and parse the document\n if (opts.parser) {\n \n // TODO: parse the document with provided custom parser\n parsedDocument = opts.parser();\n \n } else {\n var documents = new Documents();\n type = documents.detect(parsedData);\n var parsers = new Parsers(documents);\n switch (type) {\n case 'c32':\n parsedData = documents.C32.process(parsedData);\n parsedDocument = parsers.C32.run(parsedData);\n break;\n case 'ccda':\n parsedData = documents.CCDA.process(parsedData);\n parsedDocument = parsers.CCDA.run(parsedData);\n break;\n case 'ccdar2':\n parsedData = documents.CCDAR2.process(parsedData);\n parsedDocument = parsers.CCDAR2.run(parsedData);\n break;\n case 'ccd':\n parsedData = documents.CCD.process(parsedData);\n parsedDocument = parsers.CCD.run(parsedData);\n break;\n case 'json':\n /* Expects a call like:\n * BlueButton(json string, {\n * generatorType: 'ccda',\n * template: < EJS file contents >\n * })\n * The returned \"type\" will be the requested type (not \"json\")\n * and the XML will be turned as a string in the 'data' key\n */\n switch (opts.generatorType) {\n // only the unit tests ever need to worry about this testingMode argument\n case 'c32':\n type = 'c32';\n parsedDocument = Generators.C32.run(parsedData, opts.template, opts.testingMode);\n break;\n case 'ccda':\n type = 'ccda';\n parsedDocument = Generators.CCDA.run(parsedData, opts.template, opts.testingMode);\n break;\n }\n }\n }\n \n return {\n type: type,\n data: parsedDocument,\n source: parsedData\n };\n\n};\n","/*\n * Parser for the C32 allergies section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var allergies = c32.section('allergies');\n\n var data = {}, el;\n data.entries = [];\n data.displayName = \"Allergies\";\n data.templateId = allergies.tag('templateId').attr('root');\n data.text = allergies.tag('text').val(true);\n\n allergies.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var start_date = parseDate(el.tag('low').attr('value')),\n end_date = parseDate(el.tag('high').attr('value'));\n \n el = entry.template('2.16.840.1.113883.3.88.11.83.6').tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n // value => reaction_type\n el = entry.template('2.16.840.1.113883.3.88.11.83.6').tag('value');\n var reaction_type_name = el.attr('displayName'),\n reaction_type_code = el.attr('code'),\n reaction_type_code_system = el.attr('codeSystem'),\n reaction_type_code_system_name = el.attr('codeSystemName');\n \n // reaction\n el = entry.template('2.16.840.1.113883.10.20.1.54').tag('value');\n var reaction_name = el.attr('displayName'),\n reaction_code = el.attr('code'),\n reaction_code_system = el.attr('codeSystem');\n \n // an irregularity seen in some c32s\n if (!reaction_name) {\n el = entry.template('2.16.840.1.113883.10.20.1.54').tag('text');\n if (!el.isEmpty()) {\n reaction_name = Core.stripWhitespace(el.val());\n }\n }\n\n // severity\n el = entry.template('2.16.840.1.113883.10.20.1.55').tag('value');\n var severity = el.attr('displayName');\n \n // participant => allergen\n el = entry.tag('participant').tag('code');\n var allergen_name = el.attr('displayName'),\n allergen_code = el.attr('code'),\n allergen_code_system = el.attr('codeSystem'),\n allergen_code_system_name = el.attr('codeSystemName');\n\n // another irregularity seen in some c32s\n if (!allergen_name) {\n el = entry.tag('participant').tag('name');\n if (!el.isEmpty()) {\n allergen_name = el.val();\n }\n }\n if (!allergen_name) {\n el = entry.template('2.16.840.1.113883.3.88.11.83.6').tag('originalText');\n if (!el.isEmpty()) {\n allergen_name = Core.stripWhitespace(el.val());\n }\n }\n \n // status\n el = entry.template('2.16.840.1.113883.10.20.1.39').tag('value');\n var status = el.attr('displayName');\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n status: status,\n severity: severity,\n reaction: {\n name: reaction_name,\n code: reaction_code,\n code_system: reaction_code_system\n },\n reaction_type: {\n name: reaction_type_name,\n code: reaction_type_code,\n code_system: reaction_type_code_system,\n code_system_name: reaction_type_code_system_name\n },\n allergen: {\n name: allergen_name,\n code: allergen_code,\n code_system: allergen_code_system,\n code_system_name: allergen_code_system_name\n }\n });\n }); \n return data;\n }\n};\n","/*\n * Parser for the CCDA document section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.document = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var doc = ccda.section('document');\n \n \n // Parse Doc Type Info\n var templates = doc.elsByTag('templateId');\n var rootTemplate = templates[0].attr('root');\n var secondTemplate;\n if(templates.length >1)\n secondTemplate = templates[1].attr('root');\n else\n secondTemplate = rootTemplate;\n \n var loinc = doc.tag('code').attr('code');\n var templateId = doc.tag('templateId').attr('root');\n var displayName = doc.tag('code').attr('displayName');\n \n var nonXml = doc.tag('nonXMLBody');\n var nonXmlNodes = nonXml.el.childNodes;\n \n var bodyType = \"structured\";\n var nonXmlBody = {\n type: \"\",\n mediaType: \"\",\n representation: \"\",\n rawText: \"\",\n reference: \"\"\n };\n if(nonXmlNodes && nonXmlNodes.length > 0) {\n bodyType = \"unstructured\";\n var text = nonXml.tag('text');\n var mediaType = \"\";\n var representation = \"\";\n var rawText = \"\";\n var reference = \"\";\n var type = \"\";\n \n // We have an embedded doc\n if(text && text.attr('mediaType')) {\n mediaType = text.attr('mediaType');\n representation = text.attr('representation');\n rawText = text.val();\n type = \"embedded\";\n }\n \n if(text && !mediaType) {\n reference = text.tag('reference').attr('value');\n type = \"reference\";\n }\n nonXmlBody = {\n type: type,\n mediaType: mediaType,\n representation: representation,\n rawText: rawText,\n reference: reference\n }\n }\n \n var docType = {\n type: \"CCDAR2\",\n rootTemplateId: rootTemplate,\n templateId: secondTemplate,\n displayName: displayName,\n loinc: loinc,\n bodyType: bodyType,\n nonXmlBody: nonXmlBody\n };\n \n var date = parseDate(doc.tag('effectiveTime').attr('value'));\n var title = Core.stripWhitespace(doc.tag('title').val());\n \n var author = doc.tag('author');\n el = author.tag('assignedPerson').tag('name');\n var name_dict = parseName(el);\n \n el = author.tag('addr');\n var address_dict = parseAddress(el);\n \n el = author.tag('telecom');\n var work_phone = el.attr('value');\n \n var documentation_of_list = [];\n var performers = doc.tag('documentationOf').elsByTag('performer');\n for (var i = 0; i < performers.length; i++) {\n el = performers[i];\n var performer_name_dict = parseName(el);\n var performer_phone = el.tag('telecom').attr('value');\n var performer_addr = parseAddress(el.tag('addr'));\n documentation_of_list.push({\n name: performer_name_dict,\n phone: {\n work: performer_phone\n },\n address: performer_addr\n });\n }\n \n el = doc.tag('encompassingEncounter').tag('location');\n var location_name = Core.stripWhitespace(el.tag('name').val());\n var location_addr_dict = parseAddress(el.tag('addr'));\n \n var encounter_date = null;\n el = el.tag('effectiveTime');\n if (!el.isEmpty()) {\n encounter_date = parseDate(el.attr('value'));\n }\n \n data = {\n type: docType,\n date: date,\n title: title,\n author: {\n name: name_dict,\n address: address_dict,\n phone: {\n work: work_phone\n }\n },\n documentation_of: documentation_of_list,\n location: {\n name: location_name,\n address: location_addr_dict,\n encounter_date: encounter_date\n }\n };\n \n return data;\n };\n}","/*\n * Parser for the CCDA allergies section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n \n self.allergies = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var allergies = ccda.section('allergies');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Allergies\";\n data.templateId = allergies.tag('templateId').attr('root');\n data.text = allergies.tag('text').val(true);\n \n allergies.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var start_date = parseDate(el.tag('low').attr('value')),\n end_date = parseDate(el.tag('high').attr('value'));\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.7').tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n // value => reaction_type\n el = entry.template('2.16.840.1.113883.10.20.22.4.7').tag('value');\n var reaction_type_name = el.attr('displayName'),\n reaction_type_code = el.attr('code'),\n reaction_type_code_system = el.attr('codeSystem'),\n reaction_type_code_system_name = el.attr('codeSystemName');\n \n // reaction\n el = entry.template('2.16.840.1.113883.10.20.22.4.9').tag('value');\n var reaction_name = el.attr('displayName'),\n reaction_code = el.attr('code'),\n reaction_code_system = el.attr('codeSystem');\n \n // severity\n el = entry.template('2.16.840.1.113883.10.20.22.4.8').tag('value');\n var severity = el.attr('displayName');\n \n // participant => allergen\n el = entry.tag('participant').tag('code');\n var allergen_name = el.attr('displayName'),\n allergen_code = el.attr('code'),\n allergen_code_system = el.attr('codeSystem'),\n allergen_code_system_name = el.attr('codeSystemName');\n \n // this is not a valid place to store the allergen name but some vendors use it\n if (!allergen_name) {\n el = entry.tag('participant').tag('name');\n if (!el.isEmpty()) {\n allergen_name = el.val();\n }\n }\n if (!allergen_name) {\n el = entry.template('2.16.840.1.113883.10.20.22.4.7').tag('originalText');\n if (!el.isEmpty()) {\n allergen_name = Core.stripWhitespace(el.val());\n }\n }\n \n // status\n el = entry.template('2.16.840.1.113883.10.20.22.4.28').tag('value');\n var status = el.attr('displayName');\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n status: status,\n severity: severity,\n reaction: {\n name: reaction_name,\n code: reaction_code,\n code_system: reaction_code_system\n },\n reaction_type: {\n name: reaction_type_name,\n code: reaction_type_code,\n code_system: reaction_type_code_system,\n code_system_name: reaction_type_code_system_name\n },\n allergen: {\n name: allergen_name,\n code: allergen_code,\n code_system: allergen_code_system,\n code_system_name: allergen_code_system_name\n }\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the CCDAR2 document section\n */\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.document = function (ccda) { \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var doc = ccda.section('document');\n var date = parseDate(doc.tag('effectiveTime').attr('value'));\n var title = Core.stripWhitespace(doc.tag('title').val());\n \n // Parse Doc Type Info\n var templates = doc.elsByTag('templateId');\n \n var rootTemplate = templates[0].attr('root');\n var secondTemplate;\n if(templates.length >1)\n secondTemplate = templates[1].attr('root');\n else\n secondTemplate = rootTemplate;\n \n var loinc = doc.tag('code').attr('code');\n var templateId = doc.tag('templateId').attr('root');\n var displayName = doc.tag('code').attr('displayName');\n \n var nonXml = doc.tag('nonXMLBody');\n var nonXmlNodes = nonXml.el.childNodes;\n \n var bodyType = \"structured\";\n var nonXmlBody = {\n type: \"\",\n mediaType: \"\",\n representation: \"\",\n rawText: \"\",\n reference: \"\"\n };\n if(nonXmlNodes && nonXmlNodes.length > 0) {\n bodyType = \"unstructured\";\n var text = nonXml.tag('text');\n var mediaType = \"\";\n var representation = \"\";\n var rawText = \"\";\n var reference = \"\";\n var type = \"\";\n \n // We have an embedded doc\n if(text && text.attr('mediaType')) {\n mediaType = text.attr('mediaType');\n representation = text.attr('representation');\n rawText = text.val();\n type = \"embedded\";\n }\n \n if(text && !mediaType) {\n reference = text.tag('reference').attr('value');\n type = \"reference\";\n }\n nonXmlBody = {\n type: type,\n mediaType: mediaType,\n representation: representation,\n rawText: rawText,\n reference: reference\n }\n }\n \n var docType = {\n type: \"CCDAR2\",\n rootTemplateId: rootTemplate,\n templateId: secondTemplate,\n displayName: displayName,\n loinc: loinc,\n bodyType: bodyType,\n nonXmlBody: nonXmlBody\n };\n \n var author = doc.tag('author');\n el = author.tag('assignedPerson').tag('name');\n var name_dict = parseName(el);\n \n el = author.tag('addr');\n var address_dict = parseAddress(el);\n \n el = author.tag('telecom');\n var work_phone = el.attr('value');\n \n var documentation_of_list = [];\n var performers = doc.tag('documentationOf').elsByTag('performer');\n for (var i = 0; i < performers.length; i++) {\n el = performers[i];\n var performer_name_dict = parseName(el);\n var performer_phone = el.tag('telecom').attr('value');\n var performer_addr = parseAddress(el.tag('addr'));\n documentation_of_list.push({\n name: performer_name_dict,\n phone: {\n work: performer_phone\n },\n address: performer_addr\n });\n }\n \n el = doc.tag('encompassingEncounter').tag('location');\n var location_name = Core.stripWhitespace(el.tag('name').val());\n var location_addr_dict = parseAddress(el.tag('addr'));\n \n var encounter_date = null;\n el = el.tag('effectiveTime');\n if (!el.isEmpty()) {\n encounter_date = parseDate(el.attr('value'));\n }\n \n data = {\n type: docType,\n date: date,\n title: title,\n author: {\n name: name_dict,\n address: address_dict,\n phone: {\n work: work_phone\n }\n },\n documentation_of: documentation_of_list,\n location: {\n name: location_name,\n address: location_addr_dict,\n encounter_date: encounter_date\n }\n };\n \n return data;\n };\n}","/*\n * Parser for the CCDA encounters section\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.encounters = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var encounters = ccda.section('encounters');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Encounters\";\n data.templateId = encounters.tag('templateId').attr('root');\n data.text = encounters.tag('text').val(true);\n \n encounters.entries().each(function(entry) {\n \n var date = parseDate(entry.tag('effectiveTime').attr('value'));\n \n el = entry.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName'),\n code_system_version = el.attr('codeSystemVersion');\n \n // translation\n el = entry.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n // performer\n el = entry.tag('performer').tag('code');\n var performer_name = el.attr('displayName'),\n performer_code = el.attr('code'),\n performer_code_system = el.attr('codeSystem'),\n performer_code_system_name = el.attr('codeSystemName');\n \n // participant => location\n el = entry.tag('participant');\n var organization = el.tag('code').attr('displayName');\n \n var location_dict = parseAddress(el);\n location_dict.organization = organization;\n \n // findings\n var findings = [];\n var findingEls = entry.elsByTag('entryRelationship');\n for (var i = 0; i < findingEls.length; i++) {\n el = findingEls[i].tag('value');\n findings.push({\n name: el.attr('displayName'),\n code: el.attr('code'),\n code_system: el.attr('codeSystem')\n });\n }\n \n data.entries.push({\n date: date,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n code_system_version: code_system_version,\n findings: findings,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n performer: {\n name: performer_name,\n code: performer_code,\n code_system: performer_code_system,\n code_system_name: performer_code_system_name\n },\n location: location_dict\n });\n });\n \n return data;\n };\n}","module.exports = require(\"@xmldom/xmldom\");","/*\n * Parser for the C32 document\n */\n\nvar Core = require('../core');\nvar AllergiesParser = require('./c32/allergies');\nvar DemographicsParser = require('./c32/demographics');\nvar DocumentParser = require('./c32/document');\nvar EncountersParser = require('./c32/encounters');\nvar ImmunizationsParser = require('./c32/immunizations');\nvar MedicationsParser = require('./c32/medications');\nvar ProblemsParser = require('./c32/problems');\nvar ProceduresParser = require('./c32/procedures');\nvar ResultsParser = require('./c32/results');\nvar VitalsParser = require('./c32/vitals');\nvar ParseGenericInfo = require('./generic');\n\nmodule.exports = function(doc) {\n var self = this;\n\n self.doc = doc;\n self.allergiesParser = new AllergiesParser(self.doc);\n self.demographicsParser = new DemographicsParser(self.doc);\n self.demographicsParser = new DocumentParser(self.doc);\n self.encountersParser = new EncountersParser(self.doc);\n self.immunizationsParser = new ImmunizationsParser(self.doc);\n self.medicationsParser = new MedicationsParser(self.doc);\n self.problemsParser = new ProblemsParser(self.doc);\n self.proceduresParser = new ProceduresParser(self.doc);\n self.resultsParser = new ResultsParser(self.doc);\n self.vitalsParser = new VitalsParser(self.doc);\n\n self.run = function (c32) {\n var data = {};\n \n data.document = self.demographicsParser.parse(c32);\n data.allergies = self.allergiesParser.parse(c32);\n data.demographics = self.demographicsParser.parse(c32);\n data.encounters = self.encountersParser.parse(c32);\n var parsedImmunizations = self.immunizationsParser.parse(c32);\n data.immunizations = parsedImmunizations.administered;\n data.immunization_declines = parsedImmunizations.declined;\n data.results = self.resultsParser.parse(c32);\n data.medications = self.medicationsParser.parse(c32);\n data.problems = self.problemsParser.parse(c32);\n data.procedures = self.proceduresParser.parse(c32);\n data.vitals = self.vitals.parse(c32);\n \n data.json = Core.json;\n data.document.json = Core.json;\n data.allergies.json = Core.json;\n data.demographics.json = Core.json;\n data.encounters.json = Core.json;\n data.immunizations.json = Core.json;\n data.immunization_declines.json = Core.json;\n data.results.json = Core.json;\n data.medications.json = Core.json;\n data.problems.json = Core.json;\n data.procedures.json = Core.json;\n data.vitals.json = Core.json;\n \n // Sections that are in CCDA but not C32... we want to keep the API\n // consistent, even if the entries are always null\n data.smoking_status = {\n date: null,\n name: null,\n code: null,\n code_system: null,\n code_system_name: null\n };\n data.smoking_status.json = Core.json;\n \n data.chief_complaint = {\n text: null\n };\n data.chief_complaint.json = Core.json;\n \n data.care_plan = [];\n data.care_plan.json = Core.json;\n \n data.instructions = [];\n data.instructions.json = Core.json;\n \n data.functional_statuses = [];\n data.functional_statuses.json = Core.json;\n \n // Decorate each section with Title, templateId and text and adds missing sections\n ParseGenericInfo(c32, data);\n \n return data;\n };\n};\n\n\n","/*\n * Parser for the CCDA demographics section\n */\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.demographics = demographics;\n\n function demographics(ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var demographics = ccda.section('demographics');\n \n var patient = demographics.tag('patientRole');\n el = patient.tag('patient').tag('name');\n var patient_name_dict = parseName(el);\n \n el = patient.tag('patient');\n var dob = parseDate(el.tag('birthTime').attr('value')),\n gender = Core.Codes.gender(el.tag('administrativeGenderCode').attr('code')),\n marital_status = Core.Codes.maritalStatus(el.tag('maritalStatusCode').attr('code'));\n \n el = patient.tag('addr');\n var patient_address_dict = parseAddress(el);\n \n el = patient.tag('telecom');\n var home = el.attr('value'),\n work = null,\n mobile = null;\n \n var email = null;\n \n var language = patient.tag('languageCommunication').tag('languageCode').attr('code'),\n race = patient.tag('raceCode').attr('displayName'),\n ethnicity = patient.tag('ethnicGroupCode').attr('displayName'),\n religion = patient.tag('religiousAffiliationCode').attr('displayName');\n \n el = patient.tag('birthplace');\n var birthplace_dict = parseAddress(el);\n \n el = patient.tag('guardian');\n var guardian_relationship = el.tag('code').attr('displayName'),\n guardian_relationship_code = el.tag('code').attr('code'),\n guardian_home = el.tag('telecom').attr('value');\n \n el = el.tag('guardianPerson').tag('name');\n var guardian_name_dict = parseName(el);\n \n el = patient.tag('guardian').tag('addr');\n var guardian_address_dict = parseAddress(el);\n \n el = patient.tag('providerOrganization');\n var provider_organization = el.tag('name').val(),\n provider_phone = el.tag('telecom').attr('value');\n \n var provider_address_dict = parseAddress(el.tag('addr'));\n \n data = {\n name: patient_name_dict,\n dob: dob,\n gender: gender,\n marital_status: marital_status,\n address: patient_address_dict,\n phone: {\n home: home,\n work: work,\n mobile: mobile\n },\n email: email,\n language: language,\n race: race,\n ethnicity: ethnicity,\n religion: religion,\n birthplace: {\n state: birthplace_dict.state,\n zip: birthplace_dict.zip,\n country: birthplace_dict.country\n },\n guardian: {\n name: {\n given: guardian_name_dict.given,\n family: guardian_name_dict.family\n },\n relationship: guardian_relationship,\n relationship_code: guardian_relationship_code,\n address: guardian_address_dict,\n phone: {\n home: guardian_home\n }\n },\n provider: {\n organization: provider_organization,\n phone: provider_phone,\n address: provider_address_dict\n }\n };\n \n return data;\n };\n}","/*\n * Parser for the CCDAR2 document section\n */\nvar Core = require('../../core');\n\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.document = document;\n\n function document(ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var doc = ccda.section('document');\n var date = parseDate(doc.tag('effectiveTime').attr('value'));\n var title = Core.stripWhitespace(doc.tag('title').val());\n \n // Parse Doc Type Info\n var templates = doc.elsByTag('templateId');\n \n var rootTemplate = templates[0].attr('root');\n var secondTemplate;\n if(templates.length >1)\n secondTemplate = templates[1].attr('root');\n else\n secondTemplate = rootTemplate;\n \n var loinc = doc.tag('code').attr('code');\n var templateId = doc.tag('templateId').attr('root');\n var displayName = doc.tag('code').attr('displayName');\n \n var nonXml = doc.tag('nonXMLBody');\n var nonXmlNodes = nonXml.el.childNodes;\n \n var bodyType = \"structured\";\n var nonXmlBody = {\n type: \"\",\n mediaType: \"\",\n representation: \"\",\n rawText: \"\",\n reference: \"\"\n };\n if(nonXmlNodes && nonXmlNodes.length > 0) {\n bodyType = \"unstructured\";\n var text = nonXml.tag('text');\n var mediaType = \"\";\n var representation = \"\";\n var rawText = \"\";\n var reference = \"\";\n var type = \"\";\n \n // We have an embedded doc\n if(text && text.attr('mediaType')) {\n mediaType = text.attr('mediaType');\n representation = text.attr('representation');\n rawText = text.val();\n type = \"embedded\";\n }\n \n if(text && !mediaType) {\n reference = text.tag('reference').attr('value');\n type = \"reference\";\n }\n nonXmlBody = {\n type: type,\n mediaType: mediaType,\n representation: representation,\n rawText: rawText,\n reference: reference\n }\n }\n \n var docType = {\n type: \"CCDAR2\",\n rootTemplateId: rootTemplate,\n templateId: secondTemplate,\n displayName: displayName,\n loinc: loinc,\n bodyType: bodyType,\n nonXmlBody: nonXmlBody\n };\n \n var author = doc.tag('author');\n el = author.tag('assignedPerson').tag('name');\n var name_dict = parseName(el);\n \n el = author.tag('addr');\n var address_dict = parseAddress(el);\n \n el = author.tag('telecom');\n var work_phone = el.attr('value');\n \n var documentation_of_list = [];\n var performers = doc.tag('documentationOf').elsByTag('performer');\n for (var i = 0; i < performers.length; i++) {\n el = performers[i];\n var performer_name_dict = parseName(el);\n var performer_phone = el.tag('telecom').attr('value');\n var performer_addr = parseAddress(el.tag('addr'));\n documentation_of_list.push({\n name: performer_name_dict,\n phone: {\n work: performer_phone\n },\n address: performer_addr\n });\n }\n \n el = doc.tag('encompassingEncounter').tag('location');\n var location_name = Core.stripWhitespace(el.tag('name').val());\n var location_addr_dict = parseAddress(el.tag('addr'));\n \n var encounter_date = null;\n el = el.tag('effectiveTime');\n if (!el.isEmpty()) {\n encounter_date = parseDate(el.attr('value'));\n }\n \n data = {\n type: docType,\n date: date,\n title: title,\n author: {\n name: name_dict,\n address: address_dict,\n phone: {\n work: work_phone\n }\n },\n documentation_of: documentation_of_list,\n location: {\n name: location_name,\n address: location_addr_dict,\n encounter_date: encounter_date\n }\n };\n \n return data;\n };\n}","/*\n * ...\n */\n\nmodule.exports = function (getEntries) {\n var self = this;\n self.getEntries = getEntries;\n\n self.process = process;\n self.section = section;\n\n /*\n * Preprocesses the CCDAR2 document\n */\n function process(ccda) {\n ccda.section = section;\n return ccda;\n };\n\n /*\n * Finds the section of a CCDA document\n */\n function section(name) {\n var el, entries = self.getEntries();\n\n switch (name) {\n case 'document':\n return this.template('2.16.840.1.113883.10.20.22.1.2');\n case 'demographics':\n return this.template('2.16.840.1.113883.10.20.22.1.2');\n case 'health_concerns_document':\n el = this.template('2.16.840.1.113883.10.20.22.2.58');\n el.entries = entries;\n return el;\n case 'goals':\n el = this.template('2.16.840.1.113883.10.20.22.2.60');\n el.entries = entries;\n return el;\n case 'interventions':\n el = this.template('2.16.840.1.113883.10.20.21.2.3');\n el.entries = entries;\n return el;\n case 'health_status_outcomes':\n el = this.template('2.16.840.1.113883.10.20.22.2.61');\n el.entries = entries;\n return el;\n }\n\n return null;\n };\n}\n","/*\n * ...\n */\nvar _ = require('lodash');\n\nmodule.exports = {\n run: run\n};\n \n/*\n * Generates a CCDA document\n * A lot of the EJS setup happens in generators.js\n *\n * If `testingMode` is true, we'll set the \"now\" variable to a specific,\n * fixed time, so that the expected XML doesn't change across runs\n */\nfunction run(json, template, testingMode) {\n if (!template) {\n console.log(\"Please provide a template EJS file for the Generator to use. \" +\n \"Load it via fs.readFileSync in Node or XHR in the browser.\");\n return null;\n }\n\n // `now` is actually now, unless we're running this for a test,\n // in which case it's always Jan 1, 2000 at 12PM UTC\n var now = (testingMode) ?\n new Date('2000-01-01T12:00:00Z') : new Date();\n\n var ccda = _.template(template, {\n filename: 'ccda.xml',\n bb: json,\n now: now,\n tagHelpers: ejs.helpers,\n codes: Core.Codes\n });\n return ccda;\n};","/*\n * Parser for the C32 vitals section\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var vitals = c32.section('vitals');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Vitals\";\n data.templateId = vitals.tag('templateId').attr('root');\n data.text = vitals.tag('text').val(true);\n \n vitals.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var entry_date = parseDate(el.attr('value'));\n \n var result;\n var results = entry.elsByTag('component');\n var results_data = [];\n \n for (var j = 0; j < results.length; j++) {\n result = results[j];\n \n // Results\n \n el = result.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n el = result.tag('value');\n var value = parseFloat(el.attr('value')),\n unit = el.attr('unit');\n \n results_data.push({\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n value: value,\n unit: unit\n });\n }\n \n data.entries.push({\n date: entry_date,\n results: results_data\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the C32 results (labs) section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var results = c32.section('results');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Results\";\n data.templateId = results.tag('templateId').attr('root');\n data.text = results.tag('text').val(true);\n \n \n results.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var panel_date = parseDate(entry.tag('effectiveTime').attr('value'));\n if (!panel_date) {\n panel_date = parseDate(entry.tag('effectiveTime').tag('low').attr('value'));\n }\n \n // panel\n el = entry.tag('code');\n var panel_name = el.attr('displayName'),\n panel_code = el.attr('code'),\n panel_code_system = el.attr('codeSystem'),\n panel_code_system_name = el.attr('codeSystemName');\n \n var observation;\n var tests = entry.elsByTag('observation');\n var tests_data = [];\n \n for (var i = 0; i < tests.length; i++) {\n observation = tests[i];\n \n // sometimes results organizers contain non-results. we only want tests\n if (observation.template('2.16.840.1.113883.10.20.1.31').val()) {\n var date = parseDate(observation.tag('effectiveTime').attr('value'));\n \n el = observation.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n if (!name) {\n name = Core.stripWhitespace(observation.tag('text').val());\n }\n \n el = observation.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = observation.tag('value');\n var value = el.attr('value'),\n unit = el.attr('unit');\n // We could look for xsi:type=\"PQ\" (physical quantity) but it seems better\n // not to trust that that field has been used correctly...\n if (value && !isNaN(parseFloat(value))) {\n value = parseFloat(value);\n }\n if (!value) {\n value = el.val(); // look for free-text values\n }\n \n el = observation.tag('referenceRange');\n var reference_range_text = Core.stripWhitespace(el.tag('observationRange').tag('text').val()),\n reference_range_low_unit = el.tag('observationRange').tag('low').attr('unit'),\n reference_range_low_value = el.tag('observationRange').tag('low').attr('value'),\n reference_range_high_unit = el.tag('observationRange').tag('high').attr('unit'),\n reference_range_high_value = el.tag('observationRange').tag('high').attr('value');\n \n tests_data.push({\n date: date,\n name: name,\n value: value,\n unit: unit,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n reference_range: {\n text: reference_range_text,\n low_unit: reference_range_low_unit,\n low_value: reference_range_low_value,\n high_unit: reference_range_high_unit,\n high_value: reference_range_high_value,\n }\n });\n }\n }\n \n data.entries.push({\n name: panel_name,\n code: panel_code,\n code_system: panel_code_system,\n code_system_name: panel_code_system_name,\n date: panel_date,\n tests: tests_data\n });\n });\n \n return data;\n }; \n}","/*\n * ...\n */\n \nmodule.exports = function(getEntries) {\n var self = this;\n\n self.getEntries = getEntries;\n self.process = process;\n self.section = section;\n\n /*\n * Preprocesses the C32 document\n */\n function process(c32) {\n c32.section = section;\n return c32;\n };\n\n /*\n * Finds the section of a C32 document\n *\n * Usually we check first for the HITSP section ID and then for the HL7-CCD ID.\n */\n function section(name) {\n var el, entries = self.getEntries();\n \n switch (name) {\n case 'document':\n return this.template('2.16.840.1.113883.3.88.11.32.1');\n case 'allergies':\n el = this.template('2.16.840.1.113883.3.88.11.83.102');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.2');\n }\n el.entries = entries;\n return el;\n case 'demographics':\n return this.template('2.16.840.1.113883.3.88.11.32.1');\n case 'encounters':\n el = this.template('2.16.840.1.113883.3.88.11.83.127');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.3');\n }\n el.entries = entries;\n return el;\n case 'immunizations':\n el = this.template('2.16.840.1.113883.3.88.11.83.117');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.6');\n }\n el.entries = entries;\n return el;\n case 'results':\n el = this.template('2.16.840.1.113883.3.88.11.83.122');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.14');\n }\n el.entries = entries;\n return el;\n case 'medications':\n el = this.template('2.16.840.1.113883.3.88.11.83.112');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.8');\n }\n el.entries = entries;\n return el;\n case 'problems':\n el = this.template('2.16.840.1.113883.3.88.11.83.103');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.11');\n }\n el.entries = entries;\n return el;\n case 'procedures':\n el = this.template('2.16.840.1.113883.3.88.11.83.108');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.12');\n }\n el.entries = entries;\n return el;\n case 'vitals':\n el = this.template('2.16.840.1.113883.3.88.11.83.119');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.16');\n }\n el.entries = entries;\n return el;\n }\n \n return null;\n };\n};\n","/*\n * Parser for the CCDA results (labs) section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.results = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var results = ccda.section('results');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Results\";\n data.templateId = results.tag('templateId').attr('root');\n data.text = results.tag('text').val(true);\n \n results.entries().each(function(entry) {\n \n // panel\n el = entry.tag('code');\n var panel_name = el.attr('displayName'),\n panel_code = el.attr('code'),\n panel_code_system = el.attr('codeSystem'),\n panel_code_system_name = el.attr('codeSystemName');\n \n var observation;\n var tests = entry.elsByTag('observation');\n var tests_data = [];\n \n for (var i = 0; i < tests.length; i++) {\n observation = tests[i];\n \n var date = parseDate(observation.tag('effectiveTime').attr('value'));\n \n el = observation.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n if (!name) {\n name = Core.stripWhitespace(observation.tag('text').val());\n }\n \n el = observation.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = observation.tag('value');\n var value = el.attr('value'),\n unit = el.attr('unit');\n // We could look for xsi:type=\"PQ\" (physical quantity) but it seems better\n // not to trust that that field has been used correctly...\n if (value && !isNaN(parseFloat(value))) {\n value = parseFloat(value);\n }\n if (!value) {\n value = el.val(); // look for free-text values\n }\n \n el = observation.tag('referenceRange');\n var reference_range_text = Core.stripWhitespace(el.tag('observationRange').tag('text').val()),\n reference_range_low_unit = el.tag('observationRange').tag('low').attr('unit'),\n reference_range_low_value = el.tag('observationRange').tag('low').attr('value'),\n reference_range_high_unit = el.tag('observationRange').tag('high').attr('unit'),\n reference_range_high_value = el.tag('observationRange').tag('high').attr('value');\n \n tests_data.push({\n date: date,\n name: name,\n value: value,\n unit: unit,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n reference_range: {\n text: reference_range_text,\n low_unit: reference_range_low_unit,\n low_value: reference_range_low_value,\n high_unit: reference_range_high_unit,\n high_value: reference_range_high_value,\n }\n });\n }\n \n data.entries.push({\n name: panel_name,\n code: panel_code,\n code_system: panel_code_system,\n code_system_name: panel_code_system_name,\n tests: tests_data\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the CCDAR2 Health Concerns Section\n * 2.16.840.1.113883.10.20.22.2.58\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.health_concerns_document = function (ccda) {\n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n \n // Helper to create each iterator for collection\n var each = function (callback) {\n for (var i = 0; i < this.length; i++) {\n callback(this[i]);\n }\n };\n \n var model = {}, el;\n model.entries = [];\n \n model.text = ccda.tag('text').val(true);\n \n var health_concerns = ccda.section('health_concerns_document');\n var title = health_concerns.tag('title').val();\n \n health_concerns.entries().each(function(entry) {\n \n var entryModel = {};\n // Parse out the ACT Body\n //A record of something that is being done, has been done, can be done, or is intended or requested to be done.\n var act = entry.tag('act');\n var er = act.elsByTag('entryRelationship');\n var templateId = act.tag('templateId').attr('root');\n var id = act.tag('id').attr('root');\n var statusCode = act.tag('statusCode').attr('code');\n var code = act.tag('code');\n var name = code.attr('displayName');\n var effectiveTime = parseDate(entry.tag('effectiveTime'));\n \n // The model we want to return in json\n var actModel = {\n effective_time: effectiveTime,\n name: name,\n entry_relationship:[]\n };\n \n // Parse Entity Relationship child nodes\n \n var ers = entry.elsByTag('entryRelationship');\n ers.each = each;\n \n ers.each(function(er){\n \n var erModel = {\n type_code : er.attr('typeCode'),\n observations : []\n };\n \n var obs = er.elsByTag('observation');\n obs.each = each;\n \n // Parse out Obsevations for Each ER\n obs.each(function(ob) {\n erModel.observations.push({\n class_code: ob.attr('classCode'),\n mood_code: ob.attr('moodCode'),\n display_name : ob.tag('value').attr('displayName'),\n status: ob.tag('statusCode').attr('code')\n });\n });\n \n actModel.entry_relationship.push(erModel);\n \n });\n \n // Add ACT Model to our final return model\n entryModel['act'] = actModel;\n model.entries.push(entryModel);\n });\n \n return model;\n }; \n}","/*\n * ...\n */\n\n\n \n/*\n * Administrative Gender (HL7 V3)\n * http://phinvads.cdc.gov/vads/ViewValueSet.action?id=8DE75E17-176B-DE11-9B52-0015173D1785\n * OID: 2.16.840.1.113883.1.11.1\n */\nvar GENDER_MAP = {\n 'F': 'female',\n 'M': 'male',\n 'UN': 'undifferentiated'\n};\n\n/*\n * Marital Status (HL7)\n * http://phinvads.cdc.gov/vads/ViewValueSet.action?id=46D34BBC-617F-DD11-B38D-00188B398520\n * OID: 2.16.840.1.114222.4.11.809\n */\nvar MARITAL_STATUS_MAP = {\n 'N': 'annulled',\n 'C': 'common law',\n 'D': 'divorced',\n 'P': 'domestic partner',\n 'I': 'interlocutory',\n 'E': 'legally separated',\n 'G': 'living together',\n 'M': 'married',\n 'O': 'other',\n 'R': 'registered domestic partner',\n 'A': 'separated',\n 'S': 'single',\n 'U': 'unknown',\n 'B': 'unmarried',\n 'T': 'unreported',\n 'W': 'widowed'\n};\n\n/*\n * Religious Affiliation (HL7 V3)\n * https://phinvads.cdc.gov/vads/ViewValueSet.action?id=6BFDBFB5-A277-DE11-9B52-0015173D1785\n * OID: 2.16.840.1.113883.5.1076\n */\nvar RELIGION_MAP = {\n \"1001\": \"adventist\",\n \"1002\": \"african religions\",\n \"1003\": \"afro-caribbean religions\",\n \"1004\": \"agnosticism\",\n \"1005\": \"anglican\",\n \"1006\": \"animism\",\n \"1061\": \"assembly of god\",\n \"1007\": \"atheism\",\n \"1008\": \"babi & baha'i faiths\",\n \"1009\": \"baptist\",\n \"1010\": \"bon\",\n \"1062\": \"brethren\",\n \"1011\": \"cao dai\",\n \"1012\": \"celticism\",\n \"1013\": \"christian (non-catholic, non-specific)\",\n \"1063\": \"christian scientist\",\n \"1064\": \"church of christ\",\n \"1065\": \"church of god\",\n \"1014\": \"confucianism\",\n \"1066\": \"congregational\",\n \"1015\": \"cyberculture religions\",\n \"1067\": \"disciples of christ\",\n \"1016\": \"divination\",\n \"1068\": \"eastern orthodox\",\n \"1069\": \"episcopalian\",\n \"1070\": \"evangelical covenant\",\n \"1017\": \"fourth way\",\n \"1018\": \"free daism\",\n \"1071\": \"friends\",\n \"1072\": \"full gospel\",\n \"1019\": \"gnosis\",\n \"1020\": \"hinduism\",\n \"1021\": \"humanism\",\n \"1022\": \"independent\",\n \"1023\": \"islam\",\n \"1024\": \"jainism\",\n \"1025\": \"jehovah's witnesses\",\n \"1026\": \"judaism\",\n \"1027\": \"latter day saints\",\n \"1028\": \"lutheran\",\n \"1029\": \"mahayana\",\n \"1030\": \"meditation\",\n \"1031\": \"messianic judaism\",\n \"1073\": \"methodist\",\n \"1032\": \"mitraism\",\n \"1074\": \"native american\",\n \"1075\": \"nazarene\",\n \"1033\": \"new age\",\n \"1034\": \"non-roman catholic\",\n \"1035\": \"occult\",\n \"1036\": \"orthodox\",\n \"1037\": \"paganism\",\n \"1038\": \"pentecostal\",\n \"1076\": \"presbyterian\",\n \"1039\": \"process, the\",\n \"1077\": \"protestant\",\n \"1078\": \"protestant, no denomination\",\n \"1079\": \"reformed\",\n \"1040\": \"reformed/presbyterian\",\n \"1041\": \"roman catholic church\",\n \"1080\": \"salvation army\",\n \"1042\": \"satanism\",\n \"1043\": \"scientology\",\n \"1044\": \"shamanism\",\n \"1045\": \"shiite (islam)\",\n \"1046\": \"shinto\",\n \"1047\": \"sikism\",\n \"1048\": \"spiritualism\",\n \"1049\": \"sunni (islam)\",\n \"1050\": \"taoism\",\n \"1051\": \"theravada\",\n \"1081\": \"unitarian universalist\",\n \"1052\": \"unitarian-universalism\",\n \"1082\": \"united church of christ\",\n \"1053\": \"universal life church\",\n \"1054\": \"vajrayana (tibetan)\",\n \"1055\": \"veda\",\n \"1056\": \"voodoo\",\n \"1057\": \"wicca\",\n \"1058\": \"yaohushua\",\n \"1059\": \"zen buddhism\",\n \"1060\": \"zoroastrianism\"\n};\n\n/*\n * Race & Ethnicity (HL7 V3)\n * Full list at http://phinvads.cdc.gov/vads/ViewCodeSystem.action?id=2.16.840.1.113883.6.238\n * OID: 2.16.840.1.113883.6.238\n *\n * Abbreviated list closer to real usage at: (Race / Ethnicity)\n * https://phinvads.cdc.gov/vads/ViewValueSet.action?id=67D34BBC-617F-DD11-B38D-00188B398520\n * https://phinvads.cdc.gov/vads/ViewValueSet.action?id=35D34BBC-617F-DD11-B38D-00188B398520\n */\nvar RACE_ETHNICITY_MAP = {\n '2028-9': 'asian',\n '2054-5': 'black or african american',\n '2135-2': 'hispanic or latino',\n '2076-8': 'native',\n '2186-5': 'not hispanic or latino',\n '2131-1': 'other',\n '2106-3': 'white'\n};\n\n/*\n * Role (HL7 V3)\n * https://phinvads.cdc.gov/vads/ViewCodeSystem.action?id=2.16.840.1.113883.5.111\n * OID: 2.16.840.1.113883.5.111\n */\nvar ROLE_MAP = {\n \"ACC\": \"accident site\",\n \"ACHFID\": \"accreditation location identifier\",\n \"ACTMIL\": \"active duty military\",\n \"ALL\": \"allergy clinic\",\n \"AMB\": \"ambulance\",\n \"AMPUT\": \"amputee clinic\",\n \"ANTIBIOT\": \"antibiotic\",\n \"ASSIST\": \"assistive non-person living subject\",\n \"AUNT\": \"aunt\",\n \"B\": \"blind\",\n \"BF\": \"beef\",\n \"BILL\": \"billing contact\",\n \"BIOTH\": \"biotherapeutic non-person living subject\",\n \"BL\": \"broiler\",\n \"BMTC\": \"bone marrow transplant clinic\",\n \"BMTU\": \"bone marrow transplant unit\",\n \"BR\": \"breeder\",\n \"BREAST\": \"breast clinic\",\n \"BRO\": \"brother\",\n \"BROINLAW\": \"brother-in-law\",\n \"C\": \"calibrator\",\n \"CANC\": \"child and adolescent neurology clinic\",\n \"CAPC\": \"child and adolescent psychiatry clinic\",\n \"CARD\": \"ambulatory health care facilities; clinic/center; rehabilitation: cardiac facilities\",\n \"CAS\": \"asylum seeker\",\n \"CASM\": \"single minor asylum seeker\",\n \"CATH\": \"cardiac catheterization lab\",\n \"CCO\": \"clinical companion\",\n \"CCU\": \"coronary care unit\",\n \"CHEST\": \"chest unit\",\n \"CHILD\": \"child\",\n \"CHLDADOPT\": \"adopted child\",\n \"CHLDFOST\": \"foster child\",\n \"CHLDINLAW\": \"child in-law\",\n \"CHR\": \"chronic care facility\",\n \"CLAIM\": \"claimant\",\n \"CN\": \"national\",\n \"CNRP\": \"non-country member without residence permit\",\n \"CNRPM\": \"non-country member minor without residence permit\",\n \"CO\": \"companion\",\n \"COAG\": \"coagulation clinic\",\n \"COCBEN\": \"continuity of coverage beneficiary\",\n \"COMM\": \"community location\",\n \"COMMUNITYLABORATORY\": \"community laboratory\",\n \"COUSN\": \"cousin\",\n \"CPCA\": \"permit card applicant\",\n \"CRIMEVIC\": \"crime victim\",\n \"CRP\": \"non-country member with residence permit\",\n \"CRPM\": \"non-country member minor with residence permit\",\n \"CRS\": \"colon and rectal surgery clinic\",\n \"CSC\": \"community service center\",\n \"CVDX\": \"cardiovascular diagnostics or therapeutics unit\",\n \"DA\": \"dairy\",\n \"DADDR\": \"delivery address\",\n \"DAU\": \"natural daughter\",\n \"DAUADOPT\": \"adopted daughter\",\n \"DAUC\": \"daughter\",\n \"DAUFOST\": \"foster daughter\",\n \"DAUINLAW\": \"daughter in-law\",\n \"DC\": \"therapeutic class\",\n \"DEBR\": \"debridement\",\n \"DERM\": \"dermatology clinic\",\n \"DIFFABL\": \"differently abled\",\n \"DOMPART\": \"domestic partner\",\n \"DPOWATT\": \"durable power of attorney\",\n \"DR\": \"draft\",\n \"DU\": \"dual\",\n \"DX\": \"diagnostics or therapeutics unit\",\n \"E\": \"electronic qc\",\n \"ECHO\": \"echocardiography lab\",\n \"ECON\": \"emergency contact\",\n \"ENDO\": \"endocrinology clinic\",\n \"ENDOS\": \"endoscopy lab\",\n \"ENROLBKR\": \"enrollment broker\",\n \"ENT\": \"otorhinolaryngology clinic\",\n \"EPIL\": \"epilepsy unit\",\n \"ER\": \"emergency room\",\n \"ERL\": \"enrollment\",\n \"ETU\": \"emergency trauma unit\",\n \"EXCEST\": \"executor of estate\",\n \"EXT\": \"extended family member\",\n \"F\": \"filler proficiency\",\n \"FAMDEP\": \"family dependent\",\n \"FAMMEMB\": \"family member\",\n \"FI\": \"fiber\",\n \"FMC\": \"family medicine clinic\",\n \"FRND\": \"unrelated friend\",\n \"FSTUD\": \"full-time student\",\n \"FTH\": \"father\",\n \"FTHINLAW\": \"father-in-law\",\n \"FULLINS\": \"fully insured coverage sponsor\",\n \"G\": \"group\",\n \"GACH\": \"hospitals; general acute care hospital\",\n \"GD\": \"generic drug\",\n \"GDF\": \"generic drug form\",\n \"GDS\": \"generic drug strength\",\n \"GDSF\": \"generic drug strength form\",\n \"GGRFTH\": \"great grandfather\",\n \"GGRMTH\": \"great grandmother\",\n \"GGRPRN\": \"great grandparent\",\n \"GI\": \"gastroenterology clinic\",\n \"GIDX\": \"gastroenterology diagnostics or therapeutics lab\",\n \"GIM\": \"general internal medicine clinic\",\n \"GRFTH\": \"grandfather\",\n \"GRMTH\": \"grandmother\",\n \"GRNDCHILD\": \"grandchild\",\n \"GRNDDAU\": \"granddaughter\",\n \"GRNDSON\": \"grandson\",\n \"GRPRN\": \"grandparent\",\n \"GT\": \"guarantor\",\n \"GUADLTM\": \"guardian ad lidem\",\n \"GUARD\": \"guardian\",\n \"GYN\": \"gynecology clinic\",\n \"HAND\": \"hand clinic\",\n \"HANDIC\": \"handicapped dependent\",\n \"HBRO\": \"half-brother\",\n \"HD\": \"hemodialysis unit\",\n \"HEM\": \"hematology clinic\",\n \"HLAB\": \"hospital laboratory\",\n \"HOMEHEALTH\": \"home health\",\n \"HOSP\": \"hospital\",\n \"HPOWATT\": \"healthcare power of attorney\",\n \"HRAD\": \"radiology unit\",\n \"HSIB\": \"half-sibling\",\n \"HSIS\": \"half-sister\",\n \"HTN\": \"hypertension clinic\",\n \"HU\": \"hospital unit\",\n \"HUSB\": \"husband\",\n \"HUSCS\": \"specimen collection site\",\n \"ICU\": \"intensive care unit\",\n \"IEC\": \"impairment evaluation center\",\n \"INDIG\": \"member of an indigenous people\",\n \"INFD\": \"infectious disease clinic\",\n \"INJ\": \"injured plaintiff\",\n \"INJWKR\": \"injured worker\",\n \"INLAB\": \"inpatient laboratory\",\n \"INPHARM\": \"inpatient pharmacy\",\n \"INV\": \"infertility clinic\",\n \"JURID\": \"jurisdiction location identifier\",\n \"L\": \"pool\",\n \"LABORATORY\": \"laboratory\",\n \"LOCHFID\": \"local location identifier\",\n \"LY\": \"layer\",\n \"LYMPH\": \"lympedema clinic\",\n \"MAUNT\": \"maternalaunt\",\n \"MBL\": \"medical laboratory\",\n \"MCOUSN\": \"maternalcousin\",\n \"MGDSF\": \"manufactured drug strength form\",\n \"MGEN\": \"medical genetics clinic\",\n \"MGGRFTH\": \"maternalgreatgrandfather\",\n \"MGGRMTH\": \"maternalgreatgrandmother\",\n \"MGGRPRN\": \"maternalgreatgrandparent\",\n \"MGRFTH\": \"maternalgrandfather\",\n \"MGRMTH\": \"maternalgrandmother\",\n \"MGRPRN\": \"maternalgrandparent\",\n \"MHSP\": \"military hospital\",\n \"MIL\": \"military\",\n \"MOBL\": \"mobile unit\",\n \"MT\": \"meat\",\n \"MTH\": \"mother\",\n \"MTHINLAW\": \"mother-in-law\",\n \"MU\": \"multiplier\",\n \"MUNCLE\": \"maternaluncle\",\n \"NBOR\": \"neighbor\",\n \"NBRO\": \"natural brother\",\n \"NCCF\": \"nursing or custodial care facility\",\n \"NCCS\": \"neurology critical care and stroke unit\",\n \"NCHILD\": \"natural child\",\n \"NEPH\": \"nephrology clinic\",\n \"NEPHEW\": \"nephew\",\n \"NEUR\": \"neurology clinic\",\n \"NFTH\": \"natural father\",\n \"NFTHF\": \"natural father of fetus\",\n \"NIECE\": \"niece\",\n \"NIENEPH\": \"niece/nephew\",\n \"NMTH\": \"natural mother\",\n \"NOK\": \"next of kin\",\n \"NPRN\": \"natural parent\",\n \"NS\": \"neurosurgery unit\",\n \"NSIB\": \"natural sibling\",\n \"NSIS\": \"natural sister\",\n \"O\": \"operator proficiency\",\n \"OB\": \"obstetrics clinic\",\n \"OF\": \"outpatient facility\",\n \"OMS\": \"oral and maxillofacial surgery clinic\",\n \"ONCL\": \"medical oncology clinic\",\n \"OPH\": \"opthalmology clinic\",\n \"OPTC\": \"optometry clinic\",\n \"ORG\": \"organizational contact\",\n \"ORTHO\": \"orthopedics clinic\",\n \"OUTLAB\": \"outpatient laboratory\",\n \"OUTPHARM\": \"outpatient pharmacy\",\n \"P\": \"patient\",\n \"PAINCL\": \"pain clinic\",\n \"PATHOLOGIST\": \"pathologist\",\n \"PAUNT\": \"paternalaunt\",\n \"PAYOR\": \"payor contact\",\n \"PC\": \"primary care clinic\",\n \"PCOUSN\": \"paternalcousin\",\n \"PEDC\": \"pediatrics clinic\",\n \"PEDCARD\": \"pediatric cardiology clinic\",\n \"PEDE\": \"pediatric endocrinology clinic\",\n \"PEDGI\": \"pediatric gastroenterology clinic\",\n \"PEDHEM\": \"pediatric hematology clinic\",\n \"PEDHO\": \"pediatric oncology clinic\",\n \"PEDICU\": \"pediatric intensive care unit\",\n \"PEDID\": \"pediatric infectious disease clinic\",\n \"PEDNEPH\": \"pediatric nephrology clinic\",\n \"PEDNICU\": \"pediatric neonatal intensive care unit\",\n \"PEDRHEUM\": \"pediatric rheumatology clinic\",\n \"PEDU\": \"pediatric unit\",\n \"PGGRFTH\": \"paternalgreatgrandfather\",\n \"PGGRMTH\": \"paternalgreatgrandmother\",\n \"PGGRPRN\": \"paternalgreatgrandparent\",\n \"PGRFTH\": \"paternalgrandfather\",\n \"PGRMTH\": \"paternalgrandmother\",\n \"PGRPRN\": \"paternalgrandparent\",\n \"PH\": \"policy holder\",\n \"PHARM\": \"pharmacy\",\n \"PHLEBOTOMIST\": \"phlebotomist\",\n \"PHU\": \"psychiatric hospital unit\",\n \"PL\": \"pleasure\",\n \"PLS\": \"plastic surgery clinic\",\n \"POD\": \"podiatry clinic\",\n \"POWATT\": \"power of attorney\",\n \"PRC\": \"pain rehabilitation center\",\n \"PREV\": \"preventive medicine clinic\",\n \"PRN\": \"parent\",\n \"PRNINLAW\": \"parent in-law\",\n \"PROCTO\": \"proctology clinic\",\n \"PROFF\": \"provider's office\",\n \"PROG\": \"program eligible\",\n \"PROS\": \"prosthodontics clinic\",\n \"PSI\": \"psychology clinic\",\n \"PSTUD\": \"part-time student\",\n \"PSY\": \"psychiatry clinic\",\n \"PSYCHF\": \"psychiatric care facility\",\n \"PT\": \"patient\",\n \"PTRES\": \"patient's residence\",\n \"PUNCLE\": \"paternaluncle\",\n \"Q\": \"quality control\",\n \"R\": \"replicate\",\n \"RADDX\": \"radiology diagnostics or therapeutics unit\",\n \"RADO\": \"radiation oncology unit\",\n \"RC\": \"racing\",\n \"RESPRSN\": \"responsible party\",\n \"RETIREE\": \"retiree\",\n \"RETMIL\": \"retired military\",\n \"RH\": \"rehabilitation hospital\",\n \"RHAT\": \"addiction treatment center\",\n \"RHEUM\": \"rheumatology clinic\",\n \"RHII\": \"intellectual impairment center\",\n \"RHMAD\": \"parents with adjustment difficulties center\",\n \"RHPI\": \"physical impairment center\",\n \"RHPIH\": \"physical impairment - hearing center\",\n \"RHPIMS\": \"physical impairment - motor skills center\",\n \"RHPIVS\": \"physical impairment - visual skills center\",\n \"RHU\": \"rehabilitation hospital unit\",\n \"RHYAD\": \"youths with adjustment difficulties center\",\n \"RNEU\": \"neuroradiology unit\",\n \"ROOM\": \"roommate\",\n \"RTF\": \"residential treatment facility\",\n \"SCHOOL\": \"school\",\n \"SCN\": \"screening\",\n \"SEE\": \"seeing\",\n \"SELF\": \"self\",\n \"SELFINS\": \"self insured coverage sponsor\",\n \"SH\": \"show\",\n \"SIB\": \"sibling\",\n \"SIBINLAW\": \"sibling in-law\",\n \"SIGOTHR\": \"significant other\",\n \"SIS\": \"sister\",\n \"SISINLAW\": \"sister-in-law\",\n \"SLEEP\": \"sleep disorders unit\",\n \"SNF\": \"skilled nursing facility\",\n \"SNIFF\": \"sniffing\",\n \"SON\": \"natural son\",\n \"SONADOPT\": \"adopted son\",\n \"SONC\": \"son\",\n \"SONFOST\": \"foster son\",\n \"SONINLAW\": \"son in-law\",\n \"SPMED\": \"sports medicine clinic\",\n \"SPON\": \"sponsored dependent\",\n \"SPOWATT\": \"special power of attorney\",\n \"SPS\": \"spouse\",\n \"STPBRO\": \"stepbrother\",\n \"STPCHLD\": \"step child\",\n \"STPDAU\": \"stepdaughter\",\n \"STPFTH\": \"stepfather\",\n \"STPMTH\": \"stepmother\",\n \"STPPRN\": \"step parent\",\n \"STPSIB\": \"step sibling\",\n \"STPSIS\": \"stepsister\",\n \"STPSON\": \"stepson\",\n \"STUD\": \"student\",\n \"SU\": \"surgery clinic\",\n \"SUBJECT\": \"self\",\n \"SURF\": \"substance use rehabilitation facility\",\n \"THIRDPARTY\": \"third party\",\n \"TPA\": \"third party administrator\",\n \"TR\": \"transplant clinic\",\n \"TRAVEL\": \"travel and geographic medicine clinic\",\n \"TRB\": \"tribal member\",\n \"UMO\": \"utilization management organization\",\n \"UNCLE\": \"uncle\",\n \"UPC\": \"underage protection center\",\n \"URO\": \"urology clinic\",\n \"V\": \"verifying\",\n \"VET\": \"veteran\",\n \"VL\": \"veal\",\n \"WARD\": \"ward\",\n \"WIFE\": \"wife\",\n \"WL\": \"wool\",\n \"WND\": \"wound clinic\",\n \"WO\": \"working\",\n \"WORK\": \"work site\",\n};\n\nvar PROBLEM_STATUS_MAP = {\n \"55561003\": \"active\",\n \"73425007\": \"inactive\",\n \"413322009\": \"resolved\"\n};\n\n\n// copied from _.invert to avoid making browser users include all of underscore\nvar invertKeys = function(obj) {\n var result = {};\n var keys = Object.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n};\n\nvar lookupFnGenerator = function(map) {\n return function(key) {\n return map[key] || null;\n };\n};\nvar reverseLookupFnGenerator = function(map) {\n return function(key) {\n if (!key) { return null; }\n var invertedMap = invertKeys(map);\n key = key.toLowerCase();\n return invertedMap[key] || null;\n };\n};\n\n\nmodule.exports = {\n gender: lookupFnGenerator(GENDER_MAP),\n reverseGender: reverseLookupFnGenerator(GENDER_MAP),\n maritalStatus: lookupFnGenerator(MARITAL_STATUS_MAP),\n reverseMaritalStatus: reverseLookupFnGenerator(MARITAL_STATUS_MAP),\n religion: lookupFnGenerator(RELIGION_MAP),\n reverseReligion: reverseLookupFnGenerator(RELIGION_MAP),\n raceEthnicity: lookupFnGenerator(RACE_ETHNICITY_MAP),\n reverseRaceEthnicity: reverseLookupFnGenerator(RACE_ETHNICITY_MAP),\n role: lookupFnGenerator(ROLE_MAP),\n reverseRole: reverseLookupFnGenerator(ROLE_MAP),\n problemStatus: lookupFnGenerator(PROBLEM_STATUS_MAP),\n reverseProblemStatus: reverseLookupFnGenerator(PROBLEM_STATUS_MAP)\n};\n","module.exports = {\n stripWhitespace: stripWhitespace\n}\n\nfunction stripWhitespace (str) {\n if (!str) { return str; }\n return str.trim();\n};\n","/*\n * Parser for the CCDA functional & cognitive status\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.functional_statuses = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var data = [], el;\n \n var statuses = ccda.section('functional_statuses');\n \n statuses.entries().each(function(entry) {\n \n var date = parseDate(entry.tag('effectiveTime').attr('value'));\n if (!date) {\n date = parseDate(entry.tag('effectiveTime').tag('low').attr('value'));\n }\n \n el = entry.tag('value');\n \n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n data.push({\n date: date,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name\n });\n \n });\n \n return data;\n }; \n}","/*\n * Parser for the C32 demographics section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) { \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var demographics = c32.section('demographics');\n \n var patient = demographics.tag('patientRole');\n el = patient.tag('patient').tag('name');\n var patient_name_dict = parseName(el);\n \n el = patient.tag('patient');\n var dob = parseDate(el.tag('birthTime').attr('value')),\n gender = Core.Codes.gender(el.tag('administrativeGenderCode').attr('code')),\n marital_status = Core.Codes.maritalStatus(el.tag('maritalStatusCode').attr('code'));\n \n el = patient.tag('addr');\n var patient_address_dict = parseAddress(el);\n \n el = patient.tag('telecom');\n var home = el.attr('value'),\n work = null,\n mobile = null;\n \n var email = null;\n \n var language = patient.tag('languageCommunication').tag('languageCode').attr('code'),\n race = patient.tag('raceCode').attr('displayName'),\n ethnicity = patient.tag('ethnicGroupCode').attr('displayName'),\n religion = patient.tag('religiousAffiliationCode').attr('displayName');\n \n el = patient.tag('birthplace');\n var birthplace_dict = parseAddress(el);\n \n el = patient.tag('guardian');\n var guardian_relationship = el.tag('code').attr('displayName'),\n guardian_relationship_code = el.tag('code').attr('code'),\n guardian_home = el.tag('telecom').attr('value');\n \n el = el.tag('guardianPerson').tag('name');\n var guardian_name_dict = parseName(el);\n \n el = patient.tag('guardian').tag('addr');\n var guardian_address_dict = parseAddress(el);\n \n el = patient.tag('providerOrganization');\n var provider_organization = el.tag('name').val(),\n provider_phone = el.tag('telecom').attr('value'),\n provider_address_dict = parseAddress(el.tag('addr'));\n \n data = {\n name: patient_name_dict,\n dob: dob,\n gender: gender,\n marital_status: marital_status,\n address: patient_address_dict,\n phone: {\n home: home,\n work: work,\n mobile: mobile\n },\n email: email,\n language: language,\n race: race,\n ethnicity: ethnicity,\n religion: religion,\n birthplace: {\n state: birthplace_dict.state,\n zip: birthplace_dict.zip,\n country: birthplace_dict.country\n },\n guardian: {\n name: {\n given: guardian_name_dict.given,\n family: guardian_name_dict.family\n },\n relationship: guardian_relationship,\n relationship_code: guardian_relationship_code,\n address: guardian_address_dict,\n phone: {\n home: guardian_home\n }\n },\n provider: {\n organization: provider_organization,\n phone: provider_phone,\n address: provider_address_dict\n }\n };\n \n return data;\n };\n}\n","/*\n * Parser for any freetext section (i.e., contains just a single <text> element)\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function() {\n var self = this;\n\n self.free_text = function (ccda, sectionName) { \n var data = {};\n \n var doc = ccda.section(sectionName);\n var text = Core.stripWhitespace(doc.tag('text').val(true));\n \n data = {\n text: text\n };\n\n return data;\n };\n}\n","/*\n * ...\n */\nvar { stripWhitespace } = require('./common');\n/*\n * A function used to wrap DOM elements in an object so methods can be added\n * to the element object. IE8 does not allow methods to be added directly to\n * DOM objects.\n */\nvar wrapElement = function (el) {\n function wrapElementHelper(currentEl) {\n return {\n el: currentEl,\n template: template,\n content: content,\n tag: tag,\n immediateChildTag: immediateChildTag,\n elsByTag: elsByTag,\n attr: attr,\n boolAttr: boolAttr,\n val: val,\n isEmpty: isEmpty\n };\n }\n \n // el is an array of elements\n if (el.length) {\n var els = [];\n for (var i = 0; i < el.length; i++) {\n els.push(wrapElementHelper(el[i]));\n }\n return els;\n \n // el is a single element\n } else {\n return wrapElementHelper(el);\n }\n};\n\n\n/*\n * Find element by tag name, then attribute value.\n */\nvar tagAttrVal = function (el, tag, attr, value) {\n el = el.getElementsByTagName(tag);\n for (var i = 0; i < el.length; i++) {\n if (el[i].getAttribute(attr) === value) {\n return el[i];\n }\n }\n};\n\n\n/*\n * Search for a template ID, and return its parent element.\n * Example:\n * <templateId root=\"2.16.840.1.113883.10.20.22.2.17\"/>\n * Can be found using:\n * el = dom.template('2.16.840.1.113883.10.20.22.2.17');\n */\nvar template = function (templateId) {\n var el = tagAttrVal(this.el, 'templateId', 'root', templateId);\n if (!el) {\n return emptyEl();\n } else {\n return wrapElement(el.parentNode);\n }\n};\n\n/*\n * Search for a content tag by \"ID\", and return it as an element.\n * These are used in the unstructured versions of each section but\n * referenced from the structured version sometimes.\n * Example:\n * <content ID=\"UniqueNameReferencedElsewhere\"/>\n * Can be found using:\n * el = dom.content('UniqueNameReferencedElsewhere');\n *\n * We can't use `getElementById` because `ID` (the standard attribute name\n * in this context) is not the same attribute as `id` in XML, so there are no matches\n */\nvar content = function (contentId) {\n var el = tagAttrVal(this.el, 'content', 'ID', contentId);\n if (!el) {\n // check the <td> tag too, which isn't really correct but\n // will inevitably be used sometimes because it looks like very\n // normal HTML to put the data directly in a <td>\n el = tagAttrVal(this.el, 'td', 'ID', contentId);\n }\n if (!el) {\n // Ugh, Epic uses really non-standard locations.\n el = tagAttrVal(this.el, 'caption', 'ID', contentId) ||\n tagAttrVal(this.el, 'paragraph', 'ID', contentId) ||\n tagAttrVal(this.el, 'tr', 'ID', contentId) ||\n tagAttrVal(this.el, 'item', 'ID', contentId);\n }\n\n if (!el) {\n return emptyEl();\n } else {\n return wrapElement(el);\n }\n };\n\n\n/*\n * Search for the first occurrence of an element by tag name.\n */\nvar tag = function (tag) {\n var el = this.el.getElementsByTagName(tag)[0];\n if (!el) {\n return emptyEl();\n } else {\n return wrapElement(el);\n }\n};\n\n/*\n * Like `tag`, except it will only count a tag that is an immediate child of `this`.\n * This is useful for tags like \"text\" which A. may not be present for a given location\n * in every document and B. have a very different meaning depending on their positioning\n *\n * <parent>\n * <target></target>\n * </parent>\n * vs.\n * <parent>\n * <intermediate>\n * <target></target>\n * </intermediate>\n * </parent>\n * parent.immediateChildTag('target') will have a result in the first case but not in the second.\n */\nvar immediateChildTag = function (tag) {\n var els = this.el.getElementsByTagName(tag);\n if (!els) { return null; }\n for (var i = 0; i < els.length; i++) {\n if (els[i].parentNode === this.el) {\n return wrapElement(els[i]);\n }\n }\n return emptyEl();\n};\n\n\n/*\n * Search for all elements by tag name.\n */\nvar elsByTag = function (tag) {\n return wrapElement(this.el.getElementsByTagName(tag));\n};\n\n\nvar unescapeSpecialChars = function(s) {\n if (!s) { return s; }\n return s.replace(/\\</g, '<')\n .replace(/\\>/g, '>')\n .replace(/\\"/g, '\"')\n .replace(/\\'/g, \"'\")\n .replace(/\\&/g, '&');\n};\n\n\n/*\n * Retrieve the element's attribute value. Example:\n * value = el.attr('displayName');\n *\n * The browser and jsdom return \"null\" for empty attributes;\n * xmldom (which we now use because it's faster / can be explicitly\n * told to parse malformed XML as XML anyways), return the empty\n * string instead, so we fix that here.\n */\nvar attr = function (attrName) {\n if (!this.el) { return null; }\n var attrVal = this.el.getAttribute(attrName);\n if (attrVal) {\n return unescapeSpecialChars(attrVal);\n }\n return null;\n};\n\n/*\n * Wrapper for attr() for retrieving boolean attributes;\n * a raw call attr() will return Strings, which can be unexpected,\n * since the string 'false' will by truthy\n */\nvar boolAttr = function (attrName) {\n var rawAttr = this.attr(attrName);\n if (rawAttr === 'true' || rawAttr === '1') {\n return true;\n }\n return false;\n};\n\n/*\n * Retrieve the element's value. For example, if the element is:\n * <city>Madison</city>\n * Use:\n * value = el.tag('city').val();\n *\n * This function also knows how to retrieve the value of <reference> tags,\n * which can store their content in a <content> tag in a totally different\n * part of the document.\n */\nvar val = function (html) {\n if (!this.el) { return null; }\n if (!this.el.childNodes || !this.el.childNodes.length) { return null; }\n \n var textContent;\n if (html) {\n textContent = this.el.innerHTML;\n if (!textContent && root.XMLSerializer)\n textContent = new XMLSerializer().serializeToString(this.el);\n } else {\n textContent = this.el.textContent;\n }\n\n // if there's no text value here and the only thing inside is a\n // <reference> tag, see if there's a linked <content> tag we can\n // get something out of\n if (!stripWhitespace(textContent)) {\n\n var contentId;\n // \"no text value\" might mean there's just a reference tag\n if (this.el.childNodes.length === 1 &&\n this.el.childNodes[0].tagName === 'reference') {\n contentId = this.el.childNodes[0].getAttribute('value');\n\n // or maybe a newlines on top/above the reference tag\n } else if (this.el.childNodes.length === 3 &&\n this.el.childNodes[1].tagName === 'reference') {\n contentId = this.el.childNodes[1].getAttribute('value');\n\n } else {\n return unescapeSpecialChars(textContent);\n }\n\n if (contentId && contentId[0] === '#') {\n contentId = contentId.slice(1); // get rid of the '#'\n var docRoot = wrapElement(this.el.ownerDocument);\n var contentTag = docRoot.content(contentId);\n return contentTag.val();\n }\n }\n\n return unescapeSpecialChars(textContent);\n};\n\n\n/*\n * Creates and returns an empty DOM element with tag name \"empty\":\n * <empty></empty>\n */\nvar emptyEl = function () {\n var el = doc.createElement('empty');\n return wrapElement(el);\n};\n\n\n/*\n * Determines if the element is empty, i.e.:\n * <empty></empty>\n * This element is created by function `emptyEL`.\n */\nvar isEmpty = function () {\n if (this.el.tagName.toLowerCase() === 'empty') {\n return true;\n } else {\n return false;\n }\n};\n\n\n/*\n * Cross-browser XML parsing supporting IE8+ and Node.js.\n */\nfunction parse(data) {\n // XML data must be a string\n if (!data || typeof data !== \"string\") {\n console.log(\"BB Error: XML data is not a string\");\n return null;\n }\n \n var xml, parser;\n \n // Node\n if (isNode) {\n parser = new (xmldom.DOMParser)();\n xml = parser.parseFromString(data, \"text/xml\");\n \n // Browser\n } else {\n \n // Standard parser\n if (window.DOMParser) {\n parser = new DOMParser();\n xml = parser.parseFromString(data, \"text/xml\");\n \n // IE\n } else {\n try {\n xml = new ActiveXObject(\"Microsoft.XMLDOM\");\n xml.async = \"false\";\n xml.loadXML(data);\n } catch (e) {\n console.log(\"BB ActiveX Exception: Could not parse XML\");\n }\n }\n }\n \n if (!xml || !xml.documentElement || xml.getElementsByTagName(\"parsererror\").length) {\n console.log(\"BB Error: Could not parse XML\");\n return null;\n }\n \n return wrapElement(xml);\n};\n\n\n// Establish the root object, `window` in the browser, or `global` in Node.\nvar root = window || global,\n xmldom,\n isNode = false,\n doc = root.document; // Will be `undefined` if we're in Node\n\n// Check if we're in Node. If so, pull in `xmldom` so we can simulate the DOM.\nif (typeof process === 'object' && Object.prototype.toString.call(process) === '[object process]') {\n isNode = true;\n xmldom = require(\"@xmldom/xmldom\");\n doc = new xmldom.DOMImplementation().createDocument();\n}\n\nmodule.exports = {\n parse: parse\n};\n","module.exports = require(\"lodash\");","var Core = require('../../core');\n\n/*\n * Parser for the C32 medications section\n */\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n \n function parse(c32) { \n var parseDate = self.doc.parseDate;\n var medications = c32.section('medications');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Medications\";\n data.templateId = medications.tag('templateId').attr('root');\n data.text = medications.tag('text').val(true);\n \n medications.entries().each(function(entry) {\n \n var text = null;\n el = entry.tag('substanceAdministration').immediateChildTag('text');\n if (!el.isEmpty()) {\n // technically C32s don't use this, but C83s (another CCD) do,\n // and CCDAs do, so we may see it anyways\n text = Core.stripWhitespace(el.val());\n }\n \n var effectiveTimes = entry.elsByTag('effectiveTime');\n \n el = effectiveTimes[0]; // the first effectiveTime is the med start date\n var start_date = null, end_date = null;\n if (el) {\n start_date = parseDate(el.tag('low').attr('value'));\n end_date = parseDate(el.tag('high').attr('value'));\n }\n \n // the second effectiveTime might the schedule period or it might just\n // be a random effectiveTime from further in the entry... xsi:type should tell us\n el = effectiveTimes[1];\n var schedule_type = null, schedule_period_value = null, schedule_period_unit = null;\n if (el && el.attr('xsi:type') === 'PIVL_TS') {\n var institutionSpecified = el.attr('institutionSpecified');\n if (institutionSpecified === 'true') {\n schedule_type= 'frequency';\n } else if (institutionSpecified === 'false') {\n schedule_type = 'interval';\n }\n \n el = el.tag('period');\n schedule_period_value = el.attr('value');\n schedule_period_unit = el.attr('unit');\n }\n \n el = entry.tag('manufacturedProduct').tag('code');\n var product_name = el.attr('displayName'),\n product_code = el.attr('code'),\n product_code_system = el.attr('codeSystem');\n \n var product_original_text = null;\n el = entry.tag('manufacturedProduct').tag('originalText');\n if (!el.isEmpty()) {\n product_original_text = Core.stripWhitespace(el.val());\n }\n // if we don't have a product name yet, try the originalText version\n if (!product_name && product_original_text) {\n product_name = product_original_text;\n }\n \n // irregularity in some c32s\n if (!product_name) {\n el = entry.tag('manufacturedProduct').tag('name');\n if (!el.isEmpty()) {\n product_name = Core.stripWhitespace(el.val());\n }\n }\n \n el = entry.tag('manufacturedProduct').tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = entry.tag('doseQuantity');\n var dose_value = el.attr('value'),\n dose_unit = el.attr('unit');\n \n el = entry.tag('rateQuantity');\n var rate_quantity_value = el.attr('value'),\n rate_quantity_unit = el.attr('unit');\n \n el = entry.tag('precondition').tag('value');\n var precondition_name = el.attr('displayName'),\n precondition_code = el.attr('code'),\n precondition_code_system = el.attr('codeSystem');\n \n el = entry.template('2.16.840.1.113883.10.20.1.28').tag('value');\n var reason_name = el.attr('displayName'),\n reason_code = el.attr('code'),\n reason_code_system = el.attr('codeSystem');\n \n el = entry.tag('routeCode');\n var route_name = el.attr('displayName'),\n route_code = el.attr('code'),\n route_code_system = el.attr('codeSystem'),\n route_code_system_name = el.attr('codeSystemName');\n \n // participant/playingEntity => vehicle\n el = entry.tag('participant').tag('playingEntity');\n var vehicle_name = el.tag('name').val();\n \n el = el.tag('code');\n // prefer the code vehicle_name but fall back to the non-coded one\n // (which for C32s is in fact the primary field for this info)\n vehicle_name = el.attr('displayName') || vehicle_name;\n var vehicle_code = el.attr('code'),\n vehicle_code_system = el.attr('codeSystem'),\n vehicle_code_system_name = el.attr('codeSystemName');\n \n el = entry.tag('administrationUnitCode');\n var administration_name = el.attr('displayName'),\n administration_code = el.attr('code'),\n administration_code_system = el.attr('codeSystem'),\n administration_code_system_name = el.attr('codeSystemName');\n \n // performer => prescriber\n el = entry.tag('performer');\n var prescriber_organization = el.tag('name').val(),\n prescriber_person = null;\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n text: text,\n product: {\n name: product_name,\n text: product_original_text,\n code: product_code,\n code_system: product_code_system,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n }\n },\n dose_quantity: {\n value: dose_value,\n unit: dose_unit\n },\n rate_quantity: {\n value: rate_quantity_value,\n unit: rate_quantity_unit\n },\n precondition: {\n name: precondition_name,\n code: precondition_code,\n code_system: precondition_code_system\n },\n reason: {\n name: reason_name,\n code: reason_code,\n code_system: reason_code_system\n },\n route: {\n name: route_name,\n code: route_code,\n code_system: route_code_system,\n code_system_name: route_code_system_name\n },\n schedule: {\n type: schedule_type,\n period_value: schedule_period_value,\n period_unit: schedule_period_unit\n },\n vehicle: {\n name: vehicle_name,\n code: vehicle_code,\n code_system: vehicle_code_system,\n code_system_name: vehicle_code_system_name\n },\n administration: {\n name: administration_name,\n code: administration_code,\n code_system: administration_code_system,\n code_system_name: administration_code_system_name\n },\n prescriber: {\n organization: prescriber_organization,\n person: prescriber_person\n }\n });\n });\n \n return data;\n };\n}\n","/*\n * ...\n */\nvar C32 = require('./documents/c32');\nvar CCD = require('./documents/ccd');\nvar CCDA = require('./documents/ccda');\nvar CCDAR2 = require('./documents/ccdar2');\n\nmodule.exports = function() {\n var self = this;\n\n self.detect = detect;\n self.entries = entries;\n self.parseDate = parseDate;\n self.parseName = parseName;\n self.parseAddress = parseAddress;\n self.C32 = new C32(getEntries);\n self.CCD = new CCD(getEntries);\n self.CCDA = new CCDA(getEntries);\n self.CCDAR2 = new CCDAR2(getEntries);\n};\n\nfunction getEntries() {\n return entries;\n};\n\nfunction detect(data) {\n if (!data.template) {\n return 'json';\n }\n \n if (!data.template('2.16.840.1.113883.3.88.11.32.1').isEmpty()) {\n return 'c32';\n } else if(!data.template('2.16.840.1.113883.10.20.22.1.1').isEmpty()) {\n return 'ccda';\n } else if(!data.template('2.16.840.1.113883.10.20.22.1.15').isEmpty()) {\n return 'ccdar2';\n }else if(!data.template('2.16.840.1.113883.10.20.22.1.2').isEmpty()) {\n return 'ccd';\n }\n};\n\n\n/*\n * Get entries within an element (with tag name 'entry'), adds an `each` function\n */\nfunction entries() {\n var each = function (callback) {\n for (var i = 0; i < this.length; i++) {\n callback(this[i]);\n }\n };\n \n var els = this.elsByTag('entry');\n els.each = each;\n return els;\n};\n\n\n/*\n * Parses an HL7 date in String form and creates a new Date object.\n * \n * TODO: CCDA dates can be in form:\n * <effectiveTime value=\"20130703094812\"/>\n * ...or:\n * <effectiveTime>\n * <low value=\"19630617120000\"/>\n * <high value=\"20110207100000\"/>\n * </effectiveTime>\n * For the latter, parseDate will not be given type `String`\n * and will return `null`.\n */\nfunction parseDate(str) {\n if (!str || typeof str !== 'string') {\n return null;\n }\n\n // Note: months start at 0 (so January is month 0)\n\n // e.g., value=\"1999\" translates to Jan 1, 1999\n if (str.length === 4) {\n return new Date(str, 0, 1);\n }\n\n var year = str.substr(0, 4);\n // subtract 1 from the month since they're zero-indexed\n var month = parseInt(str.substr(4, 2), 10) - 1;\n // days are not zero-indexed. If we end up with the day 0 or '',\n // that will be equivalent to the last day of the previous month\n var day = str.substr(6, 2) || 1;\n\n // check for time info (the presence of at least hours and mins after the date)\n if (str.length >= 12) {\n var hour = str.substr(8, 2);\n var min = str.substr(10, 2);\n var secs = str.substr(12, 2);\n\n // check for timezone info (the presence of chars after the seconds place)\n if (str.length > 14) {\n // _utcOffsetFromString will return 0 if there's no utc offset found.\n var utcOffset = _utcOffsetFromString(str.substr(14));\n // We subtract that offset from the local time to get back to UTC\n // (e.g., if we're -480 mins behind UTC, we add 480 mins to get back to UTC)\n min = _toInt(min) - utcOffset;\n }\n\n var date = new Date(Date.UTC(year, month, day, hour, min, secs));\n // This flag lets us output datetime-precision in our JSON even if the time happens\n // to translate to midnight local time. If we clone the date object, it is not\n // guaranteed to survive.\n date._parsedWithTimeData = true;\n return date;\n }\n\n return new Date(year, month, day);\n};\n\n// These regexes and the two functions below are copied from moment.js\n// http://momentjs.com/\n// https://github.com/moment/moment/blob/develop/LICENSE\nvar parseTimezoneChunker = /([\\+\\-]|\\d\\d)/gi;\nvar parseTokenTimezone = /Z|[\\+\\-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nfunction _utcOffsetFromString(string) {\n string = string || '';\n var possibleTzMatches = (string.match(parseTokenTimezone) || []),\n tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [],\n parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0],\n minutes = +(parts[1] * 60) + _toInt(parts[2]);\n\n return parts[0] === '+' ? minutes : -minutes;\n}\nfunction _toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n if (coercedNumber >= 0) {\n value = Math.floor(coercedNumber);\n } else {\n value = Math.ceil(coercedNumber);\n }\n }\n\n return value;\n}\n\n\n/*\n * Parses an HL7 name (prefix / given [] / family)\n */\nfunction parseName(nameEl) {\n var prefix = nameEl.tag('prefix').val();\n \n var els = nameEl.elsByTag('given');\n var given = [];\n for (var i = 0; i < els.length; i++) {\n var val = els[i].val();\n if (val) { given.push(val); }\n }\n \n var family = nameEl.tag('family').val();\n \n return {\n prefix: prefix,\n given: given,\n family: family\n };\n};\n\n\n/*\n * Parses an HL7 address (streetAddressLine [], city, state, postalCode, country)\n */\nfunction parseAddress(addrEl) {\n var els = addrEl.elsByTag('streetAddressLine');\n var street = [];\n \n for (var i = 0; i < els.length; i++) {\n var val = els[i].val();\n if (val) { street.push(val); }\n }\n \n var city = addrEl.tag('city').val(),\n state = addrEl.tag('state').val(),\n zip = addrEl.tag('postalCode').val(),\n country = addrEl.tag('country').val();\n \n return {\n street: street,\n city: city,\n state: state,\n zip: zip,\n country: country\n };\n};\n","/*\n * Parser for the CCDA smoking status in social history section\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.smoking_status = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data, el;\n \n var name = null,\n code = null,\n code_system = null,\n code_system_name = null,\n entry_date = null;\n \n // We can parse all of the social_history sections,\n // but in practice, this section seems to be used for\n // smoking status, so we're just going to break that out.\n // And we're just looking for the first non-empty one.\n var social_history = ccda.section('social_history');\n var entries = social_history.entries();\n for (var i=0; i < entries.length; i++) {\n var entry = entries[i];\n \n var smoking_status = entry.template('2.16.840.1.113883.10.20.22.4.78');\n if (smoking_status.isEmpty()) {\n smoking_status = entry.template('2.16.840.1.113883.10.22.4.78');\n }\n if (smoking_status.isEmpty()) {\n continue;\n }\n \n el = smoking_status.tag('effectiveTime');\n entry_date = parseDate(el.attr('value'));\n \n el = smoking_status.tag('value');\n name = el.attr('displayName');\n code = el.attr('code');\n code_system = el.attr('codeSystem');\n code_system_name = el.attr('codeSystemName');\n \n if (name) {\n break;\n }\n }\n \n data = {\n date: entry_date,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name\n };\n \n return data;\n }; \n}","/*\n * ...\n */\n\nmodule.exports = function (getEntries) {\n var self = this;\n\n self.getEntries = getEntries;\n self.process = process;\n self.section = section;\n \n /*\n * Preprocesses the CCDA document\n */\n function process(ccda) {\n ccda.section = section;\n return ccda;\n }; \n \n /*\n * Finds the section of a CCDA document\n */\n function section(name) {\n var el, entries = self.getEntries();\n \n switch (name) {\n case 'document':\n return this.template('2.16.840.1.113883.10.20.22.1.1');\n case 'allergies':\n el = this.template('2.16.840.1.113883.10.20.22.2.6.1');\n el.entries = entries;\n return el;\n case 'care_plan':\n el = this.template('2.16.840.1.113883.10.20.22.2.10');\n el.entries = entries;\n return el;\n case 'chief_complaint':\n el = this.template('2.16.840.1.113883.10.20.22.2.13');\n if (el.isEmpty()) {\n el = this.template('1.3.6.1.4.1.19376.1.5.3.1.1.13.2.1');\n }\n // no entries in Chief Complaint\n return el;\n case 'demographics':\n return this.template('2.16.840.1.113883.10.20.22.1.1');\n case 'encounters':\n el = this.template('2.16.840.1.113883.10.20.22.2.22');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.22.1');\n }\n el.entries = entries;\n return el;\n case 'functional_statuses':\n el = this.template('2.16.840.1.113883.10.20.22.2.14');\n el.entries = entries;\n return el;\n case 'immunizations':\n el = this.template('2.16.840.1.113883.10.20.22.2.2.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.2');\n }\n el.entries = entries;\n return el;\n case 'instructions':\n el = this.template('2.16.840.1.113883.10.20.22.2.45');\n el.entries = entries;\n return el;\n case 'results':\n el = this.template('2.16.840.1.113883.10.20.22.2.3.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.3');\n }\n el.entries = entries;\n return el;\n case 'medications':\n el = this.template('2.16.840.1.113883.10.20.22.2.1.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.1');\n }\n el.entries = entries;\n return el;\n case 'problems':\n el = this.template('2.16.840.1.113883.10.20.22.2.5.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.5');\n }\n el.entries = entries;\n return el;\n case 'procedures':\n el = this.template('2.16.840.1.113883.10.20.22.2.7.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.7');\n }\n el.entries = entries;\n return el;\n case 'social_history':\n el = this.template('2.16.840.1.113883.10.20.22.2.17');\n el.entries = entries;\n return el;\n case 'vitals':\n el = this.template('2.16.840.1.113883.10.20.22.2.4.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.4');\n }\n el.entries = entries;\n return el;\n }\n \n return null;\n }; \n};\n","/*\n * Parser for the C32 encounters section\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var encounters = c32.section('encounters');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Encounters\";\n data.templateId = encounters.tag('templateId').attr('root');\n data.text = encounters.tag('text').val(true);\n \n encounters.entries().each(function(entry) {\n \n var date = parseDate(entry.tag('effectiveTime').attr('value'));\n if (!date) {\n date = parseDate(entry.tag('effectiveTime').tag('low').attr('value'));\n }\n \n el = entry.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName'),\n code_system_version = el.attr('codeSystemVersion');\n \n // translation\n el = entry.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n // performer\n el = entry.tag('performer');\n var performer_name = el.tag('name').val(),\n performer_code = el.attr('code'),\n performer_code_system = el.attr('codeSystem'),\n performer_code_system_name = el.attr('codeSystemName');\n \n // participant => location\n el = entry.tag('participant');\n var organization = el.tag('name').val(),\n location_dict = parseAddress(el);\n location_dict.organization = organization;\n \n // findings\n var findings = [];\n var findingEls = entry.elsByTag('entryRelationship');\n for (var i = 0; i < findingEls.length; i++) {\n el = findingEls[i].tag('value');\n findings.push({\n name: el.attr('displayName'),\n code: el.attr('code'),\n code_system: el.attr('codeSystem')\n });\n }\n \n data.entries.push({\n date: date,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n code_system_version: code_system_version,\n findings: findings,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n performer: {\n name: performer_name,\n code: performer_code,\n code_system: performer_code_system,\n code_system_name: performer_code_system_name\n },\n location: location_dict\n });\n });\n \n return data;\n };\n}\n","/*\n * Parser for the C32 immunizations section\n */\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var administeredData = {}, declinedData = {}, product, el;\n \n var immunizations = c32.section('immunizations');\n \n administeredData.entries = [];\n administeredData.displayName = \"Immunizations\";\n administeredData.templateId = immunizations.tag('templateId').attr('root');\n administeredData.text = immunizations.tag('text').val(true);\n \n declinedData.entries = [];\n declinedData.displayName = \"Immunizations Declined\";\n declinedData.templateId = immunizations.tag('templateId').attr('root');\n declinedData.text = immunizations.tag('text').val(true);\n \n \n \n immunizations.entries().each(function(entry) {\n \n // date\n el = entry.tag('effectiveTime');\n var date = parseDate(el.attr('value'));\n if (!date) {\n date = parseDate(el.tag('low').attr('value'));\n }\n \n // if 'declined' is true, this is a record that this vaccine WASN'T administered\n el = entry.tag('substanceAdministration');\n var declined = el.boolAttr('negationInd');\n \n // product\n product = entry.template('2.16.840.1.113883.10.20.1.53');\n el = product.tag('code');\n var product_name = el.attr('displayName'),\n product_code = el.attr('code'),\n product_code_system = el.attr('codeSystem'),\n product_code_system_name = el.attr('codeSystemName');\n \n // translation\n el = product.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n // misc product details\n el = product.tag('lotNumberText');\n var lot_number = el.val();\n \n el = product.tag('manufacturerOrganization');\n var manufacturer_name = el.tag('name').val();\n \n // route\n el = entry.tag('routeCode');\n var route_name = el.attr('displayName'),\n route_code = el.attr('code'),\n route_code_system = el.attr('codeSystem'),\n route_code_system_name = el.attr('codeSystemName');\n \n // instructions\n el = entry.template('2.16.840.1.113883.10.20.1.49');\n var instructions_text = Core.stripWhitespace(el.tag('text').val());\n el = el.tag('code');\n var education_name = el.attr('displayName'),\n education_code = el.attr('code'),\n education_code_system = el.attr('codeSystem');\n \n // dose\n el = entry.tag('doseQuantity');\n var dose_value = el.attr('value'),\n dose_unit = el.attr('unit');\n \n var data = (declined) ? declinedData : administeredData;\n data.entries.push({\n date: date,\n product: {\n name: product_name,\n code: product_code,\n code_system: product_code_system,\n code_system_name: product_code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n lot_number: lot_number,\n manufacturer_name: manufacturer_name\n },\n dose_quantity: {\n value: dose_value,\n unit: dose_unit\n },\n route: {\n name: route_name,\n code: route_code,\n code_system: route_code_system,\n code_system_name: route_code_system_name\n },\n instructions: instructions_text,\n education_type: {\n name: education_name,\n code: education_code,\n code_system: education_code_system\n }\n });\n });\n \n return {\n administered: administeredData,\n declined: declinedData\n };\n };\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(376);\n",""],"names":["ParseGenericInfo","require","Core","DocumentParser","DemographicsParser","HealthConcernsParser","module","exports","doc","self","documentParser","demographicsParser","healthConcernsParser","run","ccda","data","document","demographics","health_concerns_document","json","care_plan","section","el","entries","displayName","templateId","tag","attr","text","val","each","entry","name","code","code_system","code_system_name","template","isEmpty","stripWhitespace","time","immediateChildTag","push","effective_time","parse","str","y","substr","m","d","D","Date","getFullYear","getMonth","getDate","c32","parseDate","parseName","parseAddress","problems","start_date","end_date","translation_name","translation_code","translation_code_system","translation_code_system_name","status","age","parseFloat","date_range","start","end","translation","comment","callback","i","length","containsTemplateId","property","hasOwnProperty","p","allSections","elsByTag","s","existingTemplateId","nodeName","split","join","toLowerCase","instructions","medications","sig","effectiveTimes","schedule_type","schedule_period_value","schedule_period_unit","institutionSpecified","product_name","product_code","product_code_system","product_original_text","dose_value","dose_unit","rate_quantity_value","rate_quantity_unit","precondition_name","precondition_code","precondition_code_system","reason_name","reason_code","reason_code_system","route_name","route_code","route_code_system","route_code_system_name","vehicle_name","vehicle_code","vehicle_code_system","vehicle_code_system_name","administration_name","administration_code","administration_code_system","administration_code_system_name","prescriber_organization","prescriber_person","product","dose_quantity","value","unit","rate_quantity","precondition","reason","route","schedule","type","period_value","period_unit","vehicle","administration","prescriber","organization","person","templates","rootTemplate","secondTemplate","loinc","nonXml","nonXmlNodes","childNodes","bodyType","nonXmlBody","mediaType","representation","rawText","reference","docType","rootTemplateId","date","title","author","name_dict","prefix","given","family","address_dict","work_phone","documentation_of_list","performers","performer_name_dict","performer_phone","performer_addr","phone","work","address","location_name","location_addr_dict","encounter_date","documentation_of","location","AllergiesParser","CarePlanParser","EncountersParser","FreeTextParser","FunctionalStatusesParser","ImmunizationsParser","InstructionsParser","MedicationsParser","ProblemsParser","ProceduresParser","ResultsParser","SmokingStatusParser","VitalsParser","allergiesParser","carePlanParser","encountersParser","freeTextParser","functionalStatusesParser","immunizationsParser","instructionsParser","medicationsParser","problemsParser","proceduresParser","resultsParser","smokingStatusParser","vitalsParser","allergies","chief_complaint","free_text","encounters","functional_statuses","parsedImmunizations","immunizations","administered","immunization_declines","declined","results","procedures","smoking_status","vitals","Codes","XML","_require","parseData","trim","source","charAt","e","console","log","JSON","error","datePad","number","replacerFn","key","originalValue","isNaN","getTime","_parsedWithTimeData","getHours","getMinutes","getSeconds","getMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","stringify","o","x","Object","getEntries","process","testingMode","C32","CCDA","method","entry_date","result","results_data","administeredData","declinedData","boolAttr","product_code_system_name","lot_number","manufacturer_name","instructions_text","education_name","education_code","education_code_system","education_type","CCD","CCDAR2","specimen_name","specimen_code","specimen_code_system","performer_dict","device_name","device_code","device_code_system","specimen","performer","device","Documents","Generators","Parsers","opts","parsedData","parsedDocument","parser","documents","detect","parsers","generatorType","reaction_type_name","reaction_type_code","reaction_type_code_system","reaction_type_code_system_name","reaction_name","reaction_code","reaction_code_system","severity","allergen_name","allergen_code","allergen_code_system","allergen_code_system_name","reaction","reaction_type","allergen","code_system_version","performer_name","performer_code","performer_code_system","performer_code_system_name","location_dict","findings","findingEls","patient","patient_name_dict","dob","gender","marital_status","maritalStatus","patient_address_dict","home","mobile","email","language","race","ethnicity","religion","birthplace_dict","guardian_relationship","guardian_relationship_code","guardian_home","guardian_name_dict","guardian_address_dict","provider_organization","provider_phone","provider_address_dict","birthplace","state","zip","country","guardian","relationship","relationship_code","provider","_","now","filename","bb","tagHelpers","ejs","helpers","codes","j","panel_date","panel_name","panel_code","panel_code_system","panel_code_system_name","observation","tests","tests_data","reference_range_text","reference_range_low_unit","reference_range_low_value","reference_range_high_unit","reference_range_high_value","reference_range","low_unit","low_value","high_unit","high_value","model","health_concerns","entryModel","act","er","id","statusCode","effectiveTime","actModel","entry_relationship","ers","erModel","type_code","observations","obs","ob","class_code","mood_code","display_name","GENDER_MAP","MARITAL_STATUS_MAP","RELIGION_MAP","RACE_ETHNICITY_MAP","ROLE_MAP","PROBLEM_STATUS_MAP","invertKeys","obj","keys","lookupFnGenerator","map","reverseLookupFnGenerator","invertedMap","reverseGender","reverseMaritalStatus","reverseReligion","raceEthnicity","reverseRaceEthnicity","role","reverseRole","problemStatus","reverseProblemStatus","statuses","sectionName","wrapElement","wrapElementHelper","currentEl","content","els","tagAttrVal","getElementsByTagName","getAttribute","emptyEl","parentNode","contentId","unescapeSpecialChars","replace","attrName","attrVal","rawAttr","html","textContent","innerHTML","root","XMLSerializer","serializeToString","tagName","slice","docRoot","ownerDocument","contentTag","createElement","xml","isNode","xmldom","DOMParser","parseFromString","window","ActiveXObject","async","loadXML","documentElement","global","_typeof","prototype","toString","call","DOMImplementation","createDocument","year","month","parseInt","day","hour","min","secs","utcOffset","_utcOffsetFromString","_toInt","UTC","parseTimezoneChunker","parseTokenTimezone","string","possibleTzMatches","match","tzChunk","parts","minutes","argumentForCoercion","coercedNumber","isFinite","Math","floor","ceil","nameEl","addrEl","street","city","social_history"],"ignoreList":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"bluebutton.js","mappings":"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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KATE,CAUM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,S;;;;;;;AClJA;AACA;AACA;;AAEAf,MAAM,CAACC,OAAO,GAAG;EACfa,GAAG,EAAEA;AACP,CAAC;;AAED;AACA;AACA;AACA,SAASA,GAAGA,CAACY,IAAI,EAAEP,QAAQ,EAAEC,WAAW,EAAE;EACxC,2BAA2B;EAC3BW,OAAO,CAACC,GAAG,CAAC,uCAAuC,CAAC;EACpD,OAAO,IAAI;AACb;AAAC,C;;;;;;;ACfD;AACA;AACA;AACA,IAAI2K,CAAC,GAAG/M,mBAAO,CAAC,GAAQ,CAAC;AAEzBI,MAAM,CAACC,OAAO,GAAG;EACfa,GAAG,EAAEA;AACP,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,GAAGA,CAACY,IAAI,EAAEP,QAAQ,EAAEC,WAAW,EAAE;EACxC,IAAI,CAACD,QAAQ,EAAE;IACbY,OAAO,CAACC,GAAG,CAAC,+DAA+D,GAC/D,4DAA4D,CAAC;IACzE,OAAO,IAAI;EACb;;EAEA;EACA;EACA,IAAI4K,GAAG,GA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","sources":["webpack://bluebutton/webpack/universalModuleDefinition","webpack://bluebutton/./lib/bluebutton.js","webpack://bluebutton/./lib/core.js","webpack://bluebutton/./lib/core/codes.js","webpack://bluebutton/./lib/core/common.js","webpack://bluebutton/./lib/core/xml.js","webpack://bluebutton/./lib/documents.js","webpack://bluebutton/./lib/documents/c32.js","webpack://bluebutton/./lib/documents/ccd.js","webpack://bluebutton/./lib/documents/ccda.js","webpack://bluebutton/./lib/documents/ccdar2.js","webpack://bluebutton/./lib/generators.js","webpack://bluebutton/./lib/generators/c32.js","webpack://bluebutton/./lib/generators/ccda.js","webpack://bluebutton/./lib/parsers.js","webpack://bluebutton/./lib/parsers/c32.js","webpack://bluebutton/./lib/parsers/c32/allergies.js","webpack://bluebutton/./lib/parsers/c32/demographics.js","webpack://bluebutton/./lib/parsers/c32/document.js","webpack://bluebutton/./lib/parsers/c32/encounters.js","webpack://bluebutton/./lib/parsers/c32/immunizations.js","webpack://bluebutton/./lib/parsers/c32/medications.js","webpack://bluebutton/./lib/parsers/c32/problems.js","webpack://bluebutton/./lib/parsers/c32/procedures.js","webpack://bluebutton/./lib/parsers/c32/results.js","webpack://bluebutton/./lib/parsers/c32/vitals.js","webpack://bluebutton/./lib/parsers/ccd.js","webpack://bluebutton/./lib/parsers/ccd/document.js","webpack://bluebutton/./lib/parsers/ccda.js","webpack://bluebutton/./lib/parsers/ccda/allergies.js","webpack://bluebutton/./lib/parsers/ccda/care_plan.js","webpack://bluebutton/./lib/parsers/ccda/demographics.js","webpack://bluebutton/./lib/parsers/ccda/document.js","webpack://bluebutton/./lib/parsers/ccda/encounters.js","webpack://bluebutton/./lib/parsers/ccda/free_text.js","webpack://bluebutton/./lib/parsers/ccda/functional_statuses.js","webpack://bluebutton/./lib/parsers/ccda/immunizations.js","webpack://bluebutton/./lib/parsers/ccda/instructions.js","webpack://bluebutton/./lib/parsers/ccda/medications.js","webpack://bluebutton/./lib/parsers/ccda/problems.js","webpack://bluebutton/./lib/parsers/ccda/procedures.js","webpack://bluebutton/./lib/parsers/ccda/results.js","webpack://bluebutton/./lib/parsers/ccda/smoking_status.js","webpack://bluebutton/./lib/parsers/ccda/vitals.js","webpack://bluebutton/./lib/parsers/ccdar2.js","webpack://bluebutton/./lib/parsers/ccdar2/document.js","webpack://bluebutton/./lib/parsers/ccdar2/health_concerns.js","webpack://bluebutton/./lib/parsers/generic.js","webpack://bluebutton/external commonjs \"@xmldom/xmldom\"","webpack://bluebutton/external commonjs \"lodash\"","webpack://bluebutton/webpack/bootstrap","webpack://bluebutton/webpack/runtime/global","webpack://bluebutton/webpack/before-startup","webpack://bluebutton/webpack/startup","webpack://bluebutton/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bluebutton\"] = factory();\n\telse\n\t\troot[\"bluebutton\"] = factory();\n})(self, () => {\nreturn ","'use strict';\n/*\n * ...\n */\n\nvar Core = require('./core');\n\nvar Documents = require('./documents');\n\nvar Generators = require('./generators');\n\nvar Parsers = require('./parsers');\n\n\n/* exported BlueButton */\nmodule.exports = function (source, opts) {\n var type, parsedData, parsedDocument;\n \n // Look for options\n if (!opts) opts = {};\n \n // Detect and parse the source data\n parsedData = Core.parseData(source);\n \n // Detect and parse the document\n if (opts.parser) {\n \n // TODO: parse the document with provided custom parser\n parsedDocument = opts.parser();\n \n } else {\n var documents = new Documents();\n type = documents.detect(parsedData);\n var parsers = new Parsers(documents);\n switch (type) {\n case 'c32':\n parsedData = documents.C32.process(parsedData);\n parsedDocument = parsers.C32.run(parsedData);\n break;\n case 'ccda':\n parsedData = documents.CCDA.process(parsedData);\n parsedDocument = parsers.CCDA.run(parsedData);\n break;\n case 'ccdar2':\n parsedData = documents.CCDAR2.process(parsedData);\n parsedDocument = parsers.CCDAR2.run(parsedData);\n break;\n case 'ccd':\n parsedData = documents.CCD.process(parsedData);\n parsedDocument = parsers.CCD.run(parsedData);\n break;\n case 'json':\n /* Expects a call like:\n * BlueButton(json string, {\n * generatorType: 'ccda',\n * template: < EJS file contents >\n * })\n * The returned \"type\" will be the requested type (not \"json\")\n * and the XML will be turned as a string in the 'data' key\n */\n switch (opts.generatorType) {\n // only the unit tests ever need to worry about this testingMode argument\n case 'c32':\n type = 'c32';\n parsedDocument = Generators.C32.run(parsedData, opts.template, opts.testingMode);\n break;\n case 'ccda':\n type = 'ccda';\n parsedDocument = Generators.CCDA.run(parsedData, opts.template, opts.testingMode);\n break;\n }\n }\n }\n \n return {\n type: type,\n data: parsedDocument,\n source: parsedData\n };\n\n};\n","/*\n * ...\n */\n\nvar Codes = require('./core/codes');\nvar XML = require('./core/xml');\nvar { stripWhitespace } = require('./core/common');\n\n/* exported Core */\nmodule.exports = {\n parseData: parseData,\n stripWhitespace: stripWhitespace,\n json: json,\n trim: trim,\n Codes: Codes,\n XML: XML\n};\n/*\n * ...\n */\nfunction parseData(source) {\n source = stripWhitespace(source);\n \n if (source.charAt(0) === '<') {\n try {\n return XML.parse(source);\n } catch (e) {\n if (console.log) {\n console.log(\"File looked like it might be XML but couldn't be parsed.\");\n }\n }\n }\n\n try {\n return JSON.parse(source);\n } catch (e) {\n if (console.error) {\n console.error(\"Error: Cannot parse this file. BB.js only accepts valid XML \" +\n \"(for parsing) or JSON (for generation). If you are attempting to provide \" +\n \"XML or JSON, please run your data through a validator to see if it is malformed.\\n\");\n }\n throw e;\n }\n};\n\n/*\n * A wrapper around JSON.stringify which allows us to produce customized JSON.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/\n * JavaScript/Guide/Using_native_JSON#The_replacer_parameter\n * for documentation on the replacerFn.\n */\nfunction json() {\n\n var datePad = function(number) {\n if (number < 10) {\n return '0' + number;\n }\n return number;\n };\n \n var replacerFn = function(key, value) {\n /* By default, Dates are output as ISO Strings like \"2014-01-03T08:00:00.000Z.\" This is\n * tricky when all we have is a date (not a datetime); JS sadly ignores that distinction.\n *\n * To paper over this JS wart, we use two different JSON formats for dates and datetimes.\n * This is a little ugly but makes sure that the dates/datetimes mostly just parse\n * correclty for clients:\n *\n * 1. Datetimes are rendered as standard ISO strings, without the misleading millisecond\n * precision (misleading because we don't have it): YYYY-MM-DDTHH:mm:ssZ\n * 2. Dates are rendered as MM/DD/YYYY. This ensures they are parsed as midnight local-time,\n * no matter what local time is, and therefore ensures the date is always correct.\n * Outputting \"YYYY-MM-DD\" would lead most browsers/node to assume midnight UTC, which\n * means \"2014-04-27\" suddenly turns into \"04/26/2014 at 5PM\" or just \"04/26/2014\"\n * if you format it as a date...\n *\n * See http://stackoverflow.com/questions/2587345/javascript-date-parse and\n * http://blog.dygraphs.com/2012/03/javascript-and-dates-what-mess.html\n * for more on this issue.\n */\n var originalValue = this[key]; // a Date\n\n if ( value && (originalValue instanceof Date) && !isNaN(originalValue.getTime()) ) {\n\n // If while parsing we indicated that there was time-data specified, or if we see\n // non-zero values in the hour/minutes/seconds/millis fields, output a datetime.\n if (originalValue._parsedWithTimeData ||\n originalValue.getHours() || originalValue.getMinutes() ||\n originalValue.getSeconds() || originalValue.getMilliseconds()) {\n\n // Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/\n // Reference/Global_Objects/Date/toISOString\n return originalValue.getUTCFullYear() +\n '-' + datePad( originalValue.getUTCMonth() + 1 ) +\n '-' + datePad( originalValue.getUTCDate() ) +\n 'T' + datePad( originalValue.getUTCHours() ) +\n ':' + datePad( originalValue.getUTCMinutes() ) +\n ':' + datePad( originalValue.getUTCSeconds() ) +\n 'Z';\n }\n \n // We just have a pure date\n return datePad( originalValue.getMonth() + 1 ) +\n '/' + datePad( originalValue.getDate() ) +\n '/' + originalValue.getFullYear();\n\n }\n\n return value;\n };\n \n return JSON.stringify(this, replacerFn, 2);\n};\n\n\n/*\n * Removes all `null` properties from an object.\n */\nfunction trim(o) {\n var y;\n for (var x in o) {\n if (o.hasOwnProperty(x)) {\n y = o[x];\n // if (y === null || (y instanceof Object && Object.keys(y).length == 0)) {\n if (y === null) {\n delete o[x];\n }\n if (y instanceof Object) y = trim(y);\n }\n }\n return o;\n};\n","/*\n * ...\n */\n\n\n \n/*\n * Administrative Gender (HL7 V3)\n * http://phinvads.cdc.gov/vads/ViewValueSet.action?id=8DE75E17-176B-DE11-9B52-0015173D1785\n * OID: 2.16.840.1.113883.1.11.1\n */\nvar GENDER_MAP = {\n 'F': 'female',\n 'M': 'male',\n 'UN': 'undifferentiated'\n};\n\n/*\n * Marital Status (HL7)\n * http://phinvads.cdc.gov/vads/ViewValueSet.action?id=46D34BBC-617F-DD11-B38D-00188B398520\n * OID: 2.16.840.1.114222.4.11.809\n */\nvar MARITAL_STATUS_MAP = {\n 'N': 'annulled',\n 'C': 'common law',\n 'D': 'divorced',\n 'P': 'domestic partner',\n 'I': 'interlocutory',\n 'E': 'legally separated',\n 'G': 'living together',\n 'M': 'married',\n 'O': 'other',\n 'R': 'registered domestic partner',\n 'A': 'separated',\n 'S': 'single',\n 'U': 'unknown',\n 'B': 'unmarried',\n 'T': 'unreported',\n 'W': 'widowed'\n};\n\n/*\n * Religious Affiliation (HL7 V3)\n * https://phinvads.cdc.gov/vads/ViewValueSet.action?id=6BFDBFB5-A277-DE11-9B52-0015173D1785\n * OID: 2.16.840.1.113883.5.1076\n */\nvar RELIGION_MAP = {\n \"1001\": \"adventist\",\n \"1002\": \"african religions\",\n \"1003\": \"afro-caribbean religions\",\n \"1004\": \"agnosticism\",\n \"1005\": \"anglican\",\n \"1006\": \"animism\",\n \"1061\": \"assembly of god\",\n \"1007\": \"atheism\",\n \"1008\": \"babi & baha'i faiths\",\n \"1009\": \"baptist\",\n \"1010\": \"bon\",\n \"1062\": \"brethren\",\n \"1011\": \"cao dai\",\n \"1012\": \"celticism\",\n \"1013\": \"christian (non-catholic, non-specific)\",\n \"1063\": \"christian scientist\",\n \"1064\": \"church of christ\",\n \"1065\": \"church of god\",\n \"1014\": \"confucianism\",\n \"1066\": \"congregational\",\n \"1015\": \"cyberculture religions\",\n \"1067\": \"disciples of christ\",\n \"1016\": \"divination\",\n \"1068\": \"eastern orthodox\",\n \"1069\": \"episcopalian\",\n \"1070\": \"evangelical covenant\",\n \"1017\": \"fourth way\",\n \"1018\": \"free daism\",\n \"1071\": \"friends\",\n \"1072\": \"full gospel\",\n \"1019\": \"gnosis\",\n \"1020\": \"hinduism\",\n \"1021\": \"humanism\",\n \"1022\": \"independent\",\n \"1023\": \"islam\",\n \"1024\": \"jainism\",\n \"1025\": \"jehovah's witnesses\",\n \"1026\": \"judaism\",\n \"1027\": \"latter day saints\",\n \"1028\": \"lutheran\",\n \"1029\": \"mahayana\",\n \"1030\": \"meditation\",\n \"1031\": \"messianic judaism\",\n \"1073\": \"methodist\",\n \"1032\": \"mitraism\",\n \"1074\": \"native american\",\n \"1075\": \"nazarene\",\n \"1033\": \"new age\",\n \"1034\": \"non-roman catholic\",\n \"1035\": \"occult\",\n \"1036\": \"orthodox\",\n \"1037\": \"paganism\",\n \"1038\": \"pentecostal\",\n \"1076\": \"presbyterian\",\n \"1039\": \"process, the\",\n \"1077\": \"protestant\",\n \"1078\": \"protestant, no denomination\",\n \"1079\": \"reformed\",\n \"1040\": \"reformed/presbyterian\",\n \"1041\": \"roman catholic church\",\n \"1080\": \"salvation army\",\n \"1042\": \"satanism\",\n \"1043\": \"scientology\",\n \"1044\": \"shamanism\",\n \"1045\": \"shiite (islam)\",\n \"1046\": \"shinto\",\n \"1047\": \"sikism\",\n \"1048\": \"spiritualism\",\n \"1049\": \"sunni (islam)\",\n \"1050\": \"taoism\",\n \"1051\": \"theravada\",\n \"1081\": \"unitarian universalist\",\n \"1052\": \"unitarian-universalism\",\n \"1082\": \"united church of christ\",\n \"1053\": \"universal life church\",\n \"1054\": \"vajrayana (tibetan)\",\n \"1055\": \"veda\",\n \"1056\": \"voodoo\",\n \"1057\": \"wicca\",\n \"1058\": \"yaohushua\",\n \"1059\": \"zen buddhism\",\n \"1060\": \"zoroastrianism\"\n};\n\n/*\n * Race & Ethnicity (HL7 V3)\n * Full list at http://phinvads.cdc.gov/vads/ViewCodeSystem.action?id=2.16.840.1.113883.6.238\n * OID: 2.16.840.1.113883.6.238\n *\n * Abbreviated list closer to real usage at: (Race / Ethnicity)\n * https://phinvads.cdc.gov/vads/ViewValueSet.action?id=67D34BBC-617F-DD11-B38D-00188B398520\n * https://phinvads.cdc.gov/vads/ViewValueSet.action?id=35D34BBC-617F-DD11-B38D-00188B398520\n */\nvar RACE_ETHNICITY_MAP = {\n '2028-9': 'asian',\n '2054-5': 'black or african american',\n '2135-2': 'hispanic or latino',\n '2076-8': 'native',\n '2186-5': 'not hispanic or latino',\n '2131-1': 'other',\n '2106-3': 'white'\n};\n\n/*\n * Role (HL7 V3)\n * https://phinvads.cdc.gov/vads/ViewCodeSystem.action?id=2.16.840.1.113883.5.111\n * OID: 2.16.840.1.113883.5.111\n */\nvar ROLE_MAP = {\n \"ACC\": \"accident site\",\n \"ACHFID\": \"accreditation location identifier\",\n \"ACTMIL\": \"active duty military\",\n \"ALL\": \"allergy clinic\",\n \"AMB\": \"ambulance\",\n \"AMPUT\": \"amputee clinic\",\n \"ANTIBIOT\": \"antibiotic\",\n \"ASSIST\": \"assistive non-person living subject\",\n \"AUNT\": \"aunt\",\n \"B\": \"blind\",\n \"BF\": \"beef\",\n \"BILL\": \"billing contact\",\n \"BIOTH\": \"biotherapeutic non-person living subject\",\n \"BL\": \"broiler\",\n \"BMTC\": \"bone marrow transplant clinic\",\n \"BMTU\": \"bone marrow transplant unit\",\n \"BR\": \"breeder\",\n \"BREAST\": \"breast clinic\",\n \"BRO\": \"brother\",\n \"BROINLAW\": \"brother-in-law\",\n \"C\": \"calibrator\",\n \"CANC\": \"child and adolescent neurology clinic\",\n \"CAPC\": \"child and adolescent psychiatry clinic\",\n \"CARD\": \"ambulatory health care facilities; clinic/center; rehabilitation: cardiac facilities\",\n \"CAS\": \"asylum seeker\",\n \"CASM\": \"single minor asylum seeker\",\n \"CATH\": \"cardiac catheterization lab\",\n \"CCO\": \"clinical companion\",\n \"CCU\": \"coronary care unit\",\n \"CHEST\": \"chest unit\",\n \"CHILD\": \"child\",\n \"CHLDADOPT\": \"adopted child\",\n \"CHLDFOST\": \"foster child\",\n \"CHLDINLAW\": \"child in-law\",\n \"CHR\": \"chronic care facility\",\n \"CLAIM\": \"claimant\",\n \"CN\": \"national\",\n \"CNRP\": \"non-country member without residence permit\",\n \"CNRPM\": \"non-country member minor without residence permit\",\n \"CO\": \"companion\",\n \"COAG\": \"coagulation clinic\",\n \"COCBEN\": \"continuity of coverage beneficiary\",\n \"COMM\": \"community location\",\n \"COMMUNITYLABORATORY\": \"community laboratory\",\n \"COUSN\": \"cousin\",\n \"CPCA\": \"permit card applicant\",\n \"CRIMEVIC\": \"crime victim\",\n \"CRP\": \"non-country member with residence permit\",\n \"CRPM\": \"non-country member minor with residence permit\",\n \"CRS\": \"colon and rectal surgery clinic\",\n \"CSC\": \"community service center\",\n \"CVDX\": \"cardiovascular diagnostics or therapeutics unit\",\n \"DA\": \"dairy\",\n \"DADDR\": \"delivery address\",\n \"DAU\": \"natural daughter\",\n \"DAUADOPT\": \"adopted daughter\",\n \"DAUC\": \"daughter\",\n \"DAUFOST\": \"foster daughter\",\n \"DAUINLAW\": \"daughter in-law\",\n \"DC\": \"therapeutic class\",\n \"DEBR\": \"debridement\",\n \"DERM\": \"dermatology clinic\",\n \"DIFFABL\": \"differently abled\",\n \"DOMPART\": \"domestic partner\",\n \"DPOWATT\": \"durable power of attorney\",\n \"DR\": \"draft\",\n \"DU\": \"dual\",\n \"DX\": \"diagnostics or therapeutics unit\",\n \"E\": \"electronic qc\",\n \"ECHO\": \"echocardiography lab\",\n \"ECON\": \"emergency contact\",\n \"ENDO\": \"endocrinology clinic\",\n \"ENDOS\": \"endoscopy lab\",\n \"ENROLBKR\": \"enrollment broker\",\n \"ENT\": \"otorhinolaryngology clinic\",\n \"EPIL\": \"epilepsy unit\",\n \"ER\": \"emergency room\",\n \"ERL\": \"enrollment\",\n \"ETU\": \"emergency trauma unit\",\n \"EXCEST\": \"executor of estate\",\n \"EXT\": \"extended family member\",\n \"F\": \"filler proficiency\",\n \"FAMDEP\": \"family dependent\",\n \"FAMMEMB\": \"family member\",\n \"FI\": \"fiber\",\n \"FMC\": \"family medicine clinic\",\n \"FRND\": \"unrelated friend\",\n \"FSTUD\": \"full-time student\",\n \"FTH\": \"father\",\n \"FTHINLAW\": \"father-in-law\",\n \"FULLINS\": \"fully insured coverage sponsor\",\n \"G\": \"group\",\n \"GACH\": \"hospitals; general acute care hospital\",\n \"GD\": \"generic drug\",\n \"GDF\": \"generic drug form\",\n \"GDS\": \"generic drug strength\",\n \"GDSF\": \"generic drug strength form\",\n \"GGRFTH\": \"great grandfather\",\n \"GGRMTH\": \"great grandmother\",\n \"GGRPRN\": \"great grandparent\",\n \"GI\": \"gastroenterology clinic\",\n \"GIDX\": \"gastroenterology diagnostics or therapeutics lab\",\n \"GIM\": \"general internal medicine clinic\",\n \"GRFTH\": \"grandfather\",\n \"GRMTH\": \"grandmother\",\n \"GRNDCHILD\": \"grandchild\",\n \"GRNDDAU\": \"granddaughter\",\n \"GRNDSON\": \"grandson\",\n \"GRPRN\": \"grandparent\",\n \"GT\": \"guarantor\",\n \"GUADLTM\": \"guardian ad lidem\",\n \"GUARD\": \"guardian\",\n \"GYN\": \"gynecology clinic\",\n \"HAND\": \"hand clinic\",\n \"HANDIC\": \"handicapped dependent\",\n \"HBRO\": \"half-brother\",\n \"HD\": \"hemodialysis unit\",\n \"HEM\": \"hematology clinic\",\n \"HLAB\": \"hospital laboratory\",\n \"HOMEHEALTH\": \"home health\",\n \"HOSP\": \"hospital\",\n \"HPOWATT\": \"healthcare power of attorney\",\n \"HRAD\": \"radiology unit\",\n \"HSIB\": \"half-sibling\",\n \"HSIS\": \"half-sister\",\n \"HTN\": \"hypertension clinic\",\n \"HU\": \"hospital unit\",\n \"HUSB\": \"husband\",\n \"HUSCS\": \"specimen collection site\",\n \"ICU\": \"intensive care unit\",\n \"IEC\": \"impairment evaluation center\",\n \"INDIG\": \"member of an indigenous people\",\n \"INFD\": \"infectious disease clinic\",\n \"INJ\": \"injured plaintiff\",\n \"INJWKR\": \"injured worker\",\n \"INLAB\": \"inpatient laboratory\",\n \"INPHARM\": \"inpatient pharmacy\",\n \"INV\": \"infertility clinic\",\n \"JURID\": \"jurisdiction location identifier\",\n \"L\": \"pool\",\n \"LABORATORY\": \"laboratory\",\n \"LOCHFID\": \"local location identifier\",\n \"LY\": \"layer\",\n \"LYMPH\": \"lympedema clinic\",\n \"MAUNT\": \"maternalaunt\",\n \"MBL\": \"medical laboratory\",\n \"MCOUSN\": \"maternalcousin\",\n \"MGDSF\": \"manufactured drug strength form\",\n \"MGEN\": \"medical genetics clinic\",\n \"MGGRFTH\": \"maternalgreatgrandfather\",\n \"MGGRMTH\": \"maternalgreatgrandmother\",\n \"MGGRPRN\": \"maternalgreatgrandparent\",\n \"MGRFTH\": \"maternalgrandfather\",\n \"MGRMTH\": \"maternalgrandmother\",\n \"MGRPRN\": \"maternalgrandparent\",\n \"MHSP\": \"military hospital\",\n \"MIL\": \"military\",\n \"MOBL\": \"mobile unit\",\n \"MT\": \"meat\",\n \"MTH\": \"mother\",\n \"MTHINLAW\": \"mother-in-law\",\n \"MU\": \"multiplier\",\n \"MUNCLE\": \"maternaluncle\",\n \"NBOR\": \"neighbor\",\n \"NBRO\": \"natural brother\",\n \"NCCF\": \"nursing or custodial care facility\",\n \"NCCS\": \"neurology critical care and stroke unit\",\n \"NCHILD\": \"natural child\",\n \"NEPH\": \"nephrology clinic\",\n \"NEPHEW\": \"nephew\",\n \"NEUR\": \"neurology clinic\",\n \"NFTH\": \"natural father\",\n \"NFTHF\": \"natural father of fetus\",\n \"NIECE\": \"niece\",\n \"NIENEPH\": \"niece/nephew\",\n \"NMTH\": \"natural mother\",\n \"NOK\": \"next of kin\",\n \"NPRN\": \"natural parent\",\n \"NS\": \"neurosurgery unit\",\n \"NSIB\": \"natural sibling\",\n \"NSIS\": \"natural sister\",\n \"O\": \"operator proficiency\",\n \"OB\": \"obstetrics clinic\",\n \"OF\": \"outpatient facility\",\n \"OMS\": \"oral and maxillofacial surgery clinic\",\n \"ONCL\": \"medical oncology clinic\",\n \"OPH\": \"opthalmology clinic\",\n \"OPTC\": \"optometry clinic\",\n \"ORG\": \"organizational contact\",\n \"ORTHO\": \"orthopedics clinic\",\n \"OUTLAB\": \"outpatient laboratory\",\n \"OUTPHARM\": \"outpatient pharmacy\",\n \"P\": \"patient\",\n \"PAINCL\": \"pain clinic\",\n \"PATHOLOGIST\": \"pathologist\",\n \"PAUNT\": \"paternalaunt\",\n \"PAYOR\": \"payor contact\",\n \"PC\": \"primary care clinic\",\n \"PCOUSN\": \"paternalcousin\",\n \"PEDC\": \"pediatrics clinic\",\n \"PEDCARD\": \"pediatric cardiology clinic\",\n \"PEDE\": \"pediatric endocrinology clinic\",\n \"PEDGI\": \"pediatric gastroenterology clinic\",\n \"PEDHEM\": \"pediatric hematology clinic\",\n \"PEDHO\": \"pediatric oncology clinic\",\n \"PEDICU\": \"pediatric intensive care unit\",\n \"PEDID\": \"pediatric infectious disease clinic\",\n \"PEDNEPH\": \"pediatric nephrology clinic\",\n \"PEDNICU\": \"pediatric neonatal intensive care unit\",\n \"PEDRHEUM\": \"pediatric rheumatology clinic\",\n \"PEDU\": \"pediatric unit\",\n \"PGGRFTH\": \"paternalgreatgrandfather\",\n \"PGGRMTH\": \"paternalgreatgrandmother\",\n \"PGGRPRN\": \"paternalgreatgrandparent\",\n \"PGRFTH\": \"paternalgrandfather\",\n \"PGRMTH\": \"paternalgrandmother\",\n \"PGRPRN\": \"paternalgrandparent\",\n \"PH\": \"policy holder\",\n \"PHARM\": \"pharmacy\",\n \"PHLEBOTOMIST\": \"phlebotomist\",\n \"PHU\": \"psychiatric hospital unit\",\n \"PL\": \"pleasure\",\n \"PLS\": \"plastic surgery clinic\",\n \"POD\": \"podiatry clinic\",\n \"POWATT\": \"power of attorney\",\n \"PRC\": \"pain rehabilitation center\",\n \"PREV\": \"preventive medicine clinic\",\n \"PRN\": \"parent\",\n \"PRNINLAW\": \"parent in-law\",\n \"PROCTO\": \"proctology clinic\",\n \"PROFF\": \"provider's office\",\n \"PROG\": \"program eligible\",\n \"PROS\": \"prosthodontics clinic\",\n \"PSI\": \"psychology clinic\",\n \"PSTUD\": \"part-time student\",\n \"PSY\": \"psychiatry clinic\",\n \"PSYCHF\": \"psychiatric care facility\",\n \"PT\": \"patient\",\n \"PTRES\": \"patient's residence\",\n \"PUNCLE\": \"paternaluncle\",\n \"Q\": \"quality control\",\n \"R\": \"replicate\",\n \"RADDX\": \"radiology diagnostics or therapeutics unit\",\n \"RADO\": \"radiation oncology unit\",\n \"RC\": \"racing\",\n \"RESPRSN\": \"responsible party\",\n \"RETIREE\": \"retiree\",\n \"RETMIL\": \"retired military\",\n \"RH\": \"rehabilitation hospital\",\n \"RHAT\": \"addiction treatment center\",\n \"RHEUM\": \"rheumatology clinic\",\n \"RHII\": \"intellectual impairment center\",\n \"RHMAD\": \"parents with adjustment difficulties center\",\n \"RHPI\": \"physical impairment center\",\n \"RHPIH\": \"physical impairment - hearing center\",\n \"RHPIMS\": \"physical impairment - motor skills center\",\n \"RHPIVS\": \"physical impairment - visual skills center\",\n \"RHU\": \"rehabilitation hospital unit\",\n \"RHYAD\": \"youths with adjustment difficulties center\",\n \"RNEU\": \"neuroradiology unit\",\n \"ROOM\": \"roommate\",\n \"RTF\": \"residential treatment facility\",\n \"SCHOOL\": \"school\",\n \"SCN\": \"screening\",\n \"SEE\": \"seeing\",\n \"SELF\": \"self\",\n \"SELFINS\": \"self insured coverage sponsor\",\n \"SH\": \"show\",\n \"SIB\": \"sibling\",\n \"SIBINLAW\": \"sibling in-law\",\n \"SIGOTHR\": \"significant other\",\n \"SIS\": \"sister\",\n \"SISINLAW\": \"sister-in-law\",\n \"SLEEP\": \"sleep disorders unit\",\n \"SNF\": \"skilled nursing facility\",\n \"SNIFF\": \"sniffing\",\n \"SON\": \"natural son\",\n \"SONADOPT\": \"adopted son\",\n \"SONC\": \"son\",\n \"SONFOST\": \"foster son\",\n \"SONINLAW\": \"son in-law\",\n \"SPMED\": \"sports medicine clinic\",\n \"SPON\": \"sponsored dependent\",\n \"SPOWATT\": \"special power of attorney\",\n \"SPS\": \"spouse\",\n \"STPBRO\": \"stepbrother\",\n \"STPCHLD\": \"step child\",\n \"STPDAU\": \"stepdaughter\",\n \"STPFTH\": \"stepfather\",\n \"STPMTH\": \"stepmother\",\n \"STPPRN\": \"step parent\",\n \"STPSIB\": \"step sibling\",\n \"STPSIS\": \"stepsister\",\n \"STPSON\": \"stepson\",\n \"STUD\": \"student\",\n \"SU\": \"surgery clinic\",\n \"SUBJECT\": \"self\",\n \"SURF\": \"substance use rehabilitation facility\",\n \"THIRDPARTY\": \"third party\",\n \"TPA\": \"third party administrator\",\n \"TR\": \"transplant clinic\",\n \"TRAVEL\": \"travel and geographic medicine clinic\",\n \"TRB\": \"tribal member\",\n \"UMO\": \"utilization management organization\",\n \"UNCLE\": \"uncle\",\n \"UPC\": \"underage protection center\",\n \"URO\": \"urology clinic\",\n \"V\": \"verifying\",\n \"VET\": \"veteran\",\n \"VL\": \"veal\",\n \"WARD\": \"ward\",\n \"WIFE\": \"wife\",\n \"WL\": \"wool\",\n \"WND\": \"wound clinic\",\n \"WO\": \"working\",\n \"WORK\": \"work site\",\n};\n\nvar PROBLEM_STATUS_MAP = {\n \"55561003\": \"active\",\n \"73425007\": \"inactive\",\n \"413322009\": \"resolved\"\n};\n\n\n// copied from _.invert to avoid making browser users include all of underscore\nvar invertKeys = function(obj) {\n var result = {};\n var keys = Object.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n};\n\nvar lookupFnGenerator = function(map) {\n return function(key) {\n return map[key] || null;\n };\n};\nvar reverseLookupFnGenerator = function(map) {\n return function(key) {\n if (!key) { return null; }\n var invertedMap = invertKeys(map);\n key = key.toLowerCase();\n return invertedMap[key] || null;\n };\n};\n\n\nmodule.exports = {\n gender: lookupFnGenerator(GENDER_MAP),\n reverseGender: reverseLookupFnGenerator(GENDER_MAP),\n maritalStatus: lookupFnGenerator(MARITAL_STATUS_MAP),\n reverseMaritalStatus: reverseLookupFnGenerator(MARITAL_STATUS_MAP),\n religion: lookupFnGenerator(RELIGION_MAP),\n reverseReligion: reverseLookupFnGenerator(RELIGION_MAP),\n raceEthnicity: lookupFnGenerator(RACE_ETHNICITY_MAP),\n reverseRaceEthnicity: reverseLookupFnGenerator(RACE_ETHNICITY_MAP),\n role: lookupFnGenerator(ROLE_MAP),\n reverseRole: reverseLookupFnGenerator(ROLE_MAP),\n problemStatus: lookupFnGenerator(PROBLEM_STATUS_MAP),\n reverseProblemStatus: reverseLookupFnGenerator(PROBLEM_STATUS_MAP)\n};\n","module.exports = {\n stripWhitespace: stripWhitespace\n}\n\nfunction stripWhitespace (str) {\n if (!str) { return str; }\n return str.trim();\n};\n","/*\n * ...\n */\nvar { stripWhitespace } = require('./common');\n/*\n * A function used to wrap DOM elements in an object so methods can be added\n * to the element object. IE8 does not allow methods to be added directly to\n * DOM objects.\n */\nvar wrapElement = function (el) {\n function wrapElementHelper(currentEl) {\n return {\n el: currentEl,\n template: template,\n content: content,\n tag: tag,\n immediateChildTag: immediateChildTag,\n elsByTag: elsByTag,\n attr: attr,\n boolAttr: boolAttr,\n val: val,\n isEmpty: isEmpty\n };\n }\n \n // el is an array of elements\n if (el.length) {\n var els = [];\n for (var i = 0; i < el.length; i++) {\n els.push(wrapElementHelper(el[i]));\n }\n return els;\n \n // el is a single element\n } else {\n return wrapElementHelper(el);\n }\n};\n\n\n/*\n * Find element by tag name, then attribute value.\n */\nvar tagAttrVal = function (el, tag, attr, value) {\n el = el.getElementsByTagName(tag);\n for (var i = 0; i < el.length; i++) {\n if (el[i].getAttribute(attr) === value) {\n return el[i];\n }\n }\n};\n\n\n/*\n * Search for a template ID, and return its parent element.\n * Example:\n * <templateId root=\"2.16.840.1.113883.10.20.22.2.17\"/>\n * Can be found using:\n * el = dom.template('2.16.840.1.113883.10.20.22.2.17');\n */\nvar template = function (templateId) {\n var el = tagAttrVal(this.el, 'templateId', 'root', templateId);\n if (!el) {\n return emptyEl();\n } else {\n return wrapElement(el.parentNode);\n }\n};\n\n/*\n * Search for a content tag by \"ID\", and return it as an element.\n * These are used in the unstructured versions of each section but\n * referenced from the structured version sometimes.\n * Example:\n * <content ID=\"UniqueNameReferencedElsewhere\"/>\n * Can be found using:\n * el = dom.content('UniqueNameReferencedElsewhere');\n *\n * We can't use `getElementById` because `ID` (the standard attribute name\n * in this context) is not the same attribute as `id` in XML, so there are no matches\n */\nvar content = function (contentId) {\n var el = tagAttrVal(this.el, 'content', 'ID', contentId);\n if (!el) {\n // check the <td> tag too, which isn't really correct but\n // will inevitably be used sometimes because it looks like very\n // normal HTML to put the data directly in a <td>\n el = tagAttrVal(this.el, 'td', 'ID', contentId);\n }\n if (!el) {\n // Ugh, Epic uses really non-standard locations.\n el = tagAttrVal(this.el, 'caption', 'ID', contentId) ||\n tagAttrVal(this.el, 'paragraph', 'ID', contentId) ||\n tagAttrVal(this.el, 'tr', 'ID', contentId) ||\n tagAttrVal(this.el, 'item', 'ID', contentId);\n }\n\n if (!el) {\n return emptyEl();\n } else {\n return wrapElement(el);\n }\n };\n\n\n/*\n * Search for the first occurrence of an element by tag name.\n */\nvar tag = function (tag) {\n var el = this.el.getElementsByTagName(tag)[0];\n if (!el) {\n return emptyEl();\n } else {\n return wrapElement(el);\n }\n};\n\n/*\n * Like `tag`, except it will only count a tag that is an immediate child of `this`.\n * This is useful for tags like \"text\" which A. may not be present for a given location\n * in every document and B. have a very different meaning depending on their positioning\n *\n * <parent>\n * <target></target>\n * </parent>\n * vs.\n * <parent>\n * <intermediate>\n * <target></target>\n * </intermediate>\n * </parent>\n * parent.immediateChildTag('target') will have a result in the first case but not in the second.\n */\nvar immediateChildTag = function (tag) {\n var els = this.el.getElementsByTagName(tag);\n if (!els) { return null; }\n for (var i = 0; i < els.length; i++) {\n if (els[i].parentNode === this.el) {\n return wrapElement(els[i]);\n }\n }\n return emptyEl();\n};\n\n\n/*\n * Search for all elements by tag name.\n */\nvar elsByTag = function (tag) {\n return wrapElement(this.el.getElementsByTagName(tag));\n};\n\n\nvar unescapeSpecialChars = function(s) {\n if (!s) { return s; }\n return s.replace(/\\</g, '<')\n .replace(/\\>/g, '>')\n .replace(/\\"/g, '\"')\n .replace(/\\'/g, \"'\")\n .replace(/\\&/g, '&');\n};\n\n\n/*\n * Retrieve the element's attribute value. Example:\n * value = el.attr('displayName');\n *\n * The browser and jsdom return \"null\" for empty attributes;\n * xmldom (which we now use because it's faster / can be explicitly\n * told to parse malformed XML as XML anyways), return the empty\n * string instead, so we fix that here.\n */\nvar attr = function (attrName) {\n if (!this.el) { return null; }\n var attrVal = this.el.getAttribute(attrName);\n if (attrVal) {\n return unescapeSpecialChars(attrVal);\n }\n return null;\n};\n\n/*\n * Wrapper for attr() for retrieving boolean attributes;\n * a raw call attr() will return Strings, which can be unexpected,\n * since the string 'false' will by truthy\n */\nvar boolAttr = function (attrName) {\n var rawAttr = this.attr(attrName);\n if (rawAttr === 'true' || rawAttr === '1') {\n return true;\n }\n return false;\n};\n\n/*\n * Retrieve the element's value. For example, if the element is:\n * <city>Madison</city>\n * Use:\n * value = el.tag('city').val();\n *\n * This function also knows how to retrieve the value of <reference> tags,\n * which can store their content in a <content> tag in a totally different\n * part of the document.\n */\nvar val = function (html) {\n if (!this.el) { return null; }\n if (!this.el.childNodes || !this.el.childNodes.length) { return null; }\n \n var textContent;\n if (html) {\n textContent = this.el.innerHTML;\n if (!textContent && root.XMLSerializer)\n textContent = new XMLSerializer().serializeToString(this.el);\n } else {\n textContent = this.el.textContent;\n }\n\n // if there's no text value here and the only thing inside is a\n // <reference> tag, see if there's a linked <content> tag we can\n // get something out of\n if (!stripWhitespace(textContent)) {\n\n var contentId;\n // \"no text value\" might mean there's just a reference tag\n if (this.el.childNodes.length === 1 &&\n this.el.childNodes[0].tagName === 'reference') {\n contentId = this.el.childNodes[0].getAttribute('value');\n\n // or maybe a newlines on top/above the reference tag\n } else if (this.el.childNodes.length === 3 &&\n this.el.childNodes[1].tagName === 'reference') {\n contentId = this.el.childNodes[1].getAttribute('value');\n\n } else {\n return unescapeSpecialChars(textContent);\n }\n\n if (contentId && contentId[0] === '#') {\n contentId = contentId.slice(1); // get rid of the '#'\n var docRoot = wrapElement(this.el.ownerDocument);\n var contentTag = docRoot.content(contentId);\n return contentTag.val();\n }\n }\n\n return unescapeSpecialChars(textContent);\n};\n\n\n/*\n * Creates and returns an empty DOM element with tag name \"empty\":\n * <empty></empty>\n */\nvar emptyEl = function () {\n var el = doc.createElement('empty');\n return wrapElement(el);\n};\n\n\n/*\n * Determines if the element is empty, i.e.:\n * <empty></empty>\n * This element is created by function `emptyEL`.\n */\nvar isEmpty = function () {\n if (this.el.tagName.toLowerCase() === 'empty') {\n return true;\n } else {\n return false;\n }\n};\n\n\n/*\n * Cross-browser XML parsing supporting IE8+ and Node.js.\n */\nfunction parse(data) {\n // XML data must be a string\n if (!data || typeof data !== \"string\") {\n console.log(\"BB Error: XML data is not a string\");\n return null;\n }\n \n var xml, parser;\n \n // Node\n if (isNode) {\n parser = new (xmldom.DOMParser)();\n xml = parser.parseFromString(data, \"text/xml\");\n \n // Browser\n } else {\n \n // Standard parser\n if (window.DOMParser) {\n parser = new DOMParser();\n xml = parser.parseFromString(data, \"text/xml\");\n \n // IE\n } else {\n try {\n xml = new ActiveXObject(\"Microsoft.XMLDOM\");\n xml.async = \"false\";\n xml.loadXML(data);\n } catch (e) {\n console.log(\"BB ActiveX Exception: Could not parse XML\");\n }\n }\n }\n \n if (!xml || !xml.documentElement || xml.getElementsByTagName(\"parsererror\").length) {\n console.log(\"BB Error: Could not parse XML\");\n return null;\n }\n \n return wrapElement(xml);\n};\n\n\n// Establish the root object, `window` in the browser, or `global` in Node.\nvar root = window || global,\n xmldom,\n isNode = false,\n doc = root.document; // Will be `undefined` if we're in Node\n\n// Check if we're in Node. If so, pull in `xmldom` so we can simulate the DOM.\nif (typeof process === 'object' && Object.prototype.toString.call(process) === '[object process]') {\n isNode = true;\n xmldom = require(\"@xmldom/xmldom\");\n doc = new xmldom.DOMImplementation().createDocument();\n}\n\nmodule.exports = {\n parse: parse\n};\n","/*\n * ...\n */\nvar C32 = require('./documents/c32');\nvar CCD = require('./documents/ccd');\nvar CCDA = require('./documents/ccda');\nvar CCDAR2 = require('./documents/ccdar2');\n\nmodule.exports = function() {\n var self = this;\n\n self.detect = detect;\n self.entries = entries;\n self.parseDate = parseDate;\n self.parseName = parseName;\n self.parseAddress = parseAddress;\n self.C32 = new C32(getEntries);\n self.CCD = new CCD(getEntries);\n self.CCDA = new CCDA(getEntries);\n self.CCDAR2 = new CCDAR2(getEntries);\n};\n\nfunction getEntries() {\n return entries;\n};\n\nfunction detect(data) {\n if (!data.template) {\n return 'json';\n }\n \n if (!data.template('2.16.840.1.113883.3.88.11.32.1').isEmpty()) {\n return 'c32';\n } else if(!data.template('2.16.840.1.113883.10.20.22.1.1').isEmpty()) {\n return 'ccda';\n } else if(!data.template('2.16.840.1.113883.10.20.22.1.15').isEmpty()) {\n return 'ccdar2';\n }else if(!data.template('2.16.840.1.113883.10.20.22.1.2').isEmpty()) {\n return 'ccd';\n }\n};\n\n\n/*\n * Get entries within an element (with tag name 'entry'), adds an `each` function\n */\nfunction entries() {\n var each = function (callback) {\n for (var i = 0; i < this.length; i++) {\n callback(this[i]);\n }\n };\n \n var els = this.elsByTag('entry');\n els.each = each;\n return els;\n};\n\n\n/*\n * Parses an HL7 date in String form and creates a new Date object.\n * \n * TODO: CCDA dates can be in form:\n * <effectiveTime value=\"20130703094812\"/>\n * ...or:\n * <effectiveTime>\n * <low value=\"19630617120000\"/>\n * <high value=\"20110207100000\"/>\n * </effectiveTime>\n * For the latter, parseDate will not be given type `String`\n * and will return `null`.\n */\nfunction parseDate(str) {\n if (!str || typeof str !== 'string') {\n return null;\n }\n\n // Note: months start at 0 (so January is month 0)\n\n // e.g., value=\"1999\" translates to Jan 1, 1999\n if (str.length === 4) {\n return new Date(str, 0, 1);\n }\n\n var year = str.substr(0, 4);\n // subtract 1 from the month since they're zero-indexed\n var month = parseInt(str.substr(4, 2), 10) - 1;\n // days are not zero-indexed. If we end up with the day 0 or '',\n // that will be equivalent to the last day of the previous month\n var day = str.substr(6, 2) || 1;\n\n // check for time info (the presence of at least hours and mins after the date)\n if (str.length >= 12) {\n var hour = str.substr(8, 2);\n var min = str.substr(10, 2);\n var secs = str.substr(12, 2);\n\n // check for timezone info (the presence of chars after the seconds place)\n if (str.length > 14) {\n // _utcOffsetFromString will return 0 if there's no utc offset found.\n var utcOffset = _utcOffsetFromString(str.substr(14));\n // We subtract that offset from the local time to get back to UTC\n // (e.g., if we're -480 mins behind UTC, we add 480 mins to get back to UTC)\n min = _toInt(min) - utcOffset;\n }\n\n var date = new Date(Date.UTC(year, month, day, hour, min, secs));\n // This flag lets us output datetime-precision in our JSON even if the time happens\n // to translate to midnight local time. If we clone the date object, it is not\n // guaranteed to survive.\n date._parsedWithTimeData = true;\n return date;\n }\n\n return new Date(year, month, day);\n};\n\n// These regexes and the two functions below are copied from moment.js\n// http://momentjs.com/\n// https://github.com/moment/moment/blob/develop/LICENSE\nvar parseTimezoneChunker = /([\\+\\-]|\\d\\d)/gi;\nvar parseTokenTimezone = /Z|[\\+\\-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nfunction _utcOffsetFromString(string) {\n string = string || '';\n var possibleTzMatches = (string.match(parseTokenTimezone) || []),\n tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [],\n parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0],\n minutes = +(parts[1] * 60) + _toInt(parts[2]);\n\n return parts[0] === '+' ? minutes : -minutes;\n}\nfunction _toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n if (coercedNumber >= 0) {\n value = Math.floor(coercedNumber);\n } else {\n value = Math.ceil(coercedNumber);\n }\n }\n\n return value;\n}\n\n\n/*\n * Parses an HL7 name (prefix / given [] / family)\n */\nfunction parseName(nameEl) {\n var prefix = nameEl.tag('prefix').val();\n \n var els = nameEl.elsByTag('given');\n var given = [];\n for (var i = 0; i < els.length; i++) {\n var val = els[i].val();\n if (val) { given.push(val); }\n }\n \n var family = nameEl.tag('family').val();\n \n return {\n prefix: prefix,\n given: given,\n family: family\n };\n};\n\n\n/*\n * Parses an HL7 address (streetAddressLine [], city, state, postalCode, country)\n */\nfunction parseAddress(addrEl) {\n var els = addrEl.elsByTag('streetAddressLine');\n var street = [];\n \n for (var i = 0; i < els.length; i++) {\n var val = els[i].val();\n if (val) { street.push(val); }\n }\n \n var city = addrEl.tag('city').val(),\n state = addrEl.tag('state').val(),\n zip = addrEl.tag('postalCode').val(),\n country = addrEl.tag('country').val();\n \n return {\n street: street,\n city: city,\n state: state,\n zip: zip,\n country: country\n };\n};\n","/*\n * ...\n */\n \nmodule.exports = function(getEntries) {\n var self = this;\n\n self.getEntries = getEntries;\n self.process = process;\n self.section = section;\n\n /*\n * Preprocesses the C32 document\n */\n function process(c32) {\n c32.section = section;\n return c32;\n };\n\n /*\n * Finds the section of a C32 document\n *\n * Usually we check first for the HITSP section ID and then for the HL7-CCD ID.\n */\n function section(name) {\n var el, entries = self.getEntries();\n \n switch (name) {\n case 'document':\n return this.template('2.16.840.1.113883.3.88.11.32.1');\n case 'allergies':\n el = this.template('2.16.840.1.113883.3.88.11.83.102');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.2');\n }\n el.entries = entries;\n return el;\n case 'demographics':\n return this.template('2.16.840.1.113883.3.88.11.32.1');\n case 'encounters':\n el = this.template('2.16.840.1.113883.3.88.11.83.127');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.3');\n }\n el.entries = entries;\n return el;\n case 'immunizations':\n el = this.template('2.16.840.1.113883.3.88.11.83.117');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.6');\n }\n el.entries = entries;\n return el;\n case 'results':\n el = this.template('2.16.840.1.113883.3.88.11.83.122');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.14');\n }\n el.entries = entries;\n return el;\n case 'medications':\n el = this.template('2.16.840.1.113883.3.88.11.83.112');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.8');\n }\n el.entries = entries;\n return el;\n case 'problems':\n el = this.template('2.16.840.1.113883.3.88.11.83.103');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.11');\n }\n el.entries = entries;\n return el;\n case 'procedures':\n el = this.template('2.16.840.1.113883.3.88.11.83.108');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.12');\n }\n el.entries = entries;\n return el;\n case 'vitals':\n el = this.template('2.16.840.1.113883.3.88.11.83.119');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.1.16');\n }\n el.entries = entries;\n return el;\n }\n \n return null;\n };\n};\n","/*\n * ...\n */\n\nmodule.exports = function (getEntries) {\n var self = this;\n self.getEntries = getEntries;\n\n self.process = process;\n self.section = section;\n\n /*\n * Preprocesses the CCDAR2 document\n */\n function process(ccda) {\n ccda.section = section;\n return ccda;\n };\n\n /*\n * Finds the section of a CCDA document\n */\n function section(name) {\n var el, entries = self.getEntries();\n\n switch (name) {\n case 'document':\n return this.template('2.16.840.1.113883.10.20.22.1.2');\n case 'demographics':\n return this.template('2.16.840.1.113883.10.20.22.1.2');\n case 'health_concerns_document':\n el = this.template('2.16.840.1.113883.10.20.22.2.58');\n el.entries = entries;\n return el;\n case 'goals':\n el = this.template('2.16.840.1.113883.10.20.22.2.60');\n el.entries = entries;\n return el;\n case 'interventions':\n el = this.template('2.16.840.1.113883.10.20.21.2.3');\n el.entries = entries;\n return el;\n case 'health_status_outcomes':\n el = this.template('2.16.840.1.113883.10.20.22.2.61');\n el.entries = entries;\n return el;\n }\n\n return null;\n };\n}\n","/*\n * ...\n */\n\nmodule.exports = function (getEntries) {\n var self = this;\n\n self.getEntries = getEntries;\n self.process = process;\n self.section = section;\n \n /*\n * Preprocesses the CCDA document\n */\n function process(ccda) {\n ccda.section = section;\n return ccda;\n }; \n \n /*\n * Finds the section of a CCDA document\n */\n function section(name) {\n var el, entries = self.getEntries();\n \n switch (name) {\n case 'document':\n return this.template('2.16.840.1.113883.10.20.22.1.1');\n case 'allergies':\n el = this.template('2.16.840.1.113883.10.20.22.2.6.1');\n el.entries = entries;\n return el;\n case 'care_plan':\n el = this.template('2.16.840.1.113883.10.20.22.2.10');\n el.entries = entries;\n return el;\n case 'chief_complaint':\n el = this.template('2.16.840.1.113883.10.20.22.2.13');\n if (el.isEmpty()) {\n el = this.template('1.3.6.1.4.1.19376.1.5.3.1.1.13.2.1');\n }\n // no entries in Chief Complaint\n return el;\n case 'demographics':\n return this.template('2.16.840.1.113883.10.20.22.1.1');\n case 'encounters':\n el = this.template('2.16.840.1.113883.10.20.22.2.22');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.22.1');\n }\n el.entries = entries;\n return el;\n case 'functional_statuses':\n el = this.template('2.16.840.1.113883.10.20.22.2.14');\n el.entries = entries;\n return el;\n case 'immunizations':\n el = this.template('2.16.840.1.113883.10.20.22.2.2.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.2');\n }\n el.entries = entries;\n return el;\n case 'instructions':\n el = this.template('2.16.840.1.113883.10.20.22.2.45');\n el.entries = entries;\n return el;\n case 'results':\n el = this.template('2.16.840.1.113883.10.20.22.2.3.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.3');\n }\n el.entries = entries;\n return el;\n case 'medications':\n el = this.template('2.16.840.1.113883.10.20.22.2.1.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.1');\n }\n el.entries = entries;\n return el;\n case 'problems':\n el = this.template('2.16.840.1.113883.10.20.22.2.5.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.5');\n }\n el.entries = entries;\n return el;\n case 'procedures':\n el = this.template('2.16.840.1.113883.10.20.22.2.7.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.7');\n }\n el.entries = entries;\n return el;\n case 'social_history':\n el = this.template('2.16.840.1.113883.10.20.22.2.17');\n el.entries = entries;\n return el;\n case 'vitals':\n el = this.template('2.16.840.1.113883.10.20.22.2.4.1');\n if (el.isEmpty()) {\n el = this.template('2.16.840.1.113883.10.20.22.2.4');\n }\n el.entries = entries;\n return el;\n }\n \n return null;\n }; \n};\n","/*\n * ...\n */\n\nmodule.exports = function (getEntries) {\n var self = this;\n self.getEntries = getEntries;\n \n self.process = process;\n self.section = section; \n\n /*\n * Preprocesses the CCDAR2 document\n */\n function process(ccda) {\n ccda.section = section;\n return ccda;\n };\n\n /*\n * Finds the section of a CCDA document\n */\n function section(name) {\n var el, entries = self.getEntries();\n\n switch (name) {\n case 'document':\n return this.template('2.16.840.1.113883.10.20.22.1.15');\n case 'demographics':\n return this.template('2.16.840.1.113883.10.20.22.1.15');\n case 'health_concerns_document':\n el = this.template('2.16.840.1.113883.10.20.22.2.58');\n el.entries = entries;\n return el;\n case 'goals':\n el = this.template('2.16.840.1.113883.10.20.22.2.60');\n el.entries = entries;\n return el;\n case 'interventions':\n el = this.template('2.16.840.1.113883.10.20.21.2.3');\n el.entries = entries;\n return el;\n case 'health_status_outcomes':\n el = this.template('2.16.840.1.113883.10.20.22.2.61');\n el.entries = entries;\n return el;\n }\n\n return null;\n };\n}\n","/*\n * ...\n */\n\nvar C32 = require('./generators/c32');\nvar CCDA = require('./generators/ccda');\n\nvar method = function () {};\n\n/* exported Generators */\nmodule.exports = {\n method: method,\n C32: C32,\n CCDA: CCDA\n};\n \n\n\n /* Import ejs if we're in Node. Then setup custom formatting filters\n */\n /*if (typeof exports !== 'undefined') {\n if (typeof module !== 'undefined' && module.exports) {\n ejs = require(\"ejs\");\n }\n }\n\n if (typeof ejs !== 'undefined') {\n /* Filters are automatically available to ejs to be used like \"... | hl7Date\"\n * Helpers are functions that we'll manually pass in to ejs.\n * The intended distinction is that a helper gets called with regular function-call syntax\n */ /*\n var pad = function(number) {\n if (number < 10) {\n return '0' + number;\n }\n return String(number);\n };\n\n ejs.filters.hl7Date = function(obj) {\n try {\n if (obj === null || obj === undefined) { return 'nullFlavor=\"UNK\"'; }\n var date = new Date(obj);\n if (isNaN(date.getTime())) { return obj; }\n\n var dateStr = null;\n if (date.getHours() || date.getMinutes() || date.getSeconds()) {\n // If there's a meaningful time, output a UTC datetime\n dateStr = date.getUTCFullYear() +\n pad( date.getUTCMonth() + 1 ) +\n pad( date.getUTCDate() );\n var timeStr = pad( date.getUTCHours() ) +\n pad( date.getUTCMinutes() ) +\n pad ( date.getUTCSeconds() ) +\n \"+0000\";\n return 'value=\"' + dateStr + timeStr + '\"';\n \n } else {\n // If there's no time, don't apply timezone tranformations: just output a date\n dateStr = String(date.getFullYear()) +\n pad( date.getMonth() + 1 ) +\n pad( date.getDate() );\n return 'value=\"' + dateStr + '\"';\n }\n\n } catch (e) {\n return obj;\n }\n };\n\n var escapeSpecialChars = function(s) {\n return s.replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n };\n\n ejs.filters.hl7Code = function(obj) {\n if (!obj) { return ''; }\n\n var tag = '';\n var name = obj.name || '';\n if (obj.name) { tag += 'displayName=\"'+escapeSpecialChars(name)+'\"'; }\n\n if (obj.code) {\n tag += ' code=\"'+obj.code+'\"';\n if (obj.code_system) { tag += ' codeSystem=\"'+escapeSpecialChars(obj.code_system)+'\"'; }\n if (obj.code_system_name) { tag += ' codeSystemName=\"' +\n escapeSpecialChars(obj.code_system_name)+'\"'; }\n } else {\n tag += ' nullFlavor=\"UNK\"';\n }\n\n if (!obj.name && ! obj.code) {\n return 'nullFlavor=\"UNK\"';\n }\n \n return tag;\n };\n\n ejs.filters.emptyStringIfFalsy = function(obj) {\n if (!obj) { return ''; }\n return obj;\n };\n\n if (!ejs.helpers) ejs.helpers = {};\n ejs.helpers.simpleTag = function(tagName, value) {\n if (value) {\n return \"<\"+tagName+\">\"+value+\"</\"+tagName+\">\";\n } else {\n return \"<\"+tagName+\" nullFlavor=\\\"UNK\\\" />\";\n }\n };\n\n ejs.helpers.addressTags = function(addressDict) {\n if (!addressDict) {\n return '<streetAddressLine nullFlavor=\"NI\" />\\n' +\n '<city nullFlavor=\"NI\" />\\n' +\n '<state nullFlavor=\"NI\" />\\n' +\n '<postalCode nullFlavor=\"NI\" />\\n' +\n '<country nullFlavor=\"NI\" />\\n';\n }\n \n var tags = '';\n if (!addressDict.street.length) {\n tags += ejs.helpers.simpleTag('streetAddressLine', null) + '\\n';\n } else {\n for (var i=0; i<addressDict.street.length; i++) {\n tags += ejs.helpers.simpleTag('streetAddressLine', addressDict.street[i]) + '\\n';\n }\n }\n tags += ejs.helpers.simpleTag('city', addressDict.city) + '\\n';\n tags += ejs.helpers.simpleTag('state', addressDict.state) + '\\n';\n tags += ejs.helpers.simpleTag('postalCode', addressDict.zip) + '\\n';\n tags += ejs.helpers.simpleTag('country', addressDict.country) + '\\n';\n return tags;\n };\n\n ejs.helpers.nameTags = function(nameDict) {\n if (!nameDict) {\n return '<given nullFlavor=\"NI\" />\\n' +\n '<family nullFlavor=\"NI\" />\\n';\n }\n\n var tags = '';\n if (nameDict.prefix) {\n tags += ejs.helpers.simpleTag('prefix', nameDict.prefix) + '\\n';\n }\n if (!nameDict.given.length) {\n tags += ejs.helpers.simpleTag('given', null) + '\\n';\n } else {\n for (var i=0; i<nameDict.given.length; i++) {\n tags += ejs.helpers.simpleTag('given', nameDict.given[i]) + '\\n';\n }\n }\n tags += ejs.helpers.simpleTag('family', nameDict.family) + '\\n';\n if (nameDict.suffix) {\n tags += ejs.helpers.simpleTag('suffix', nameDict.suffix) + '\\n';\n }\n return tags;\n };\n\n }*/\n","/*\n * ...\n */\n\nmodule.exports = {\n run: run\n};\n \n/*\n * Generates a C32 document\n */\nfunction run(json, template, testingMode) {\n /* jshint unused: false */ // only until this stub is actually implemented\n console.log(\"C32 generation is not implemented yet\");\n return null;\n};","/*\n * ...\n */\nvar _ = require('lodash');\n\nmodule.exports = {\n run: run\n};\n \n/*\n * Generates a CCDA document\n * A lot of the EJS setup happens in generators.js\n *\n * If `testingMode` is true, we'll set the \"now\" variable to a specific,\n * fixed time, so that the expected XML doesn't change across runs\n */\nfunction run(json, template, testingMode) {\n if (!template) {\n console.log(\"Please provide a template EJS file for the Generator to use. \" +\n \"Load it via fs.readFileSync in Node or XHR in the browser.\");\n return null;\n }\n\n // `now` is actually now, unless we're running this for a test,\n // in which case it's always Jan 1, 2000 at 12PM UTC\n var now = (testingMode) ?\n new Date('2000-01-01T12:00:00Z') : new Date();\n\n var ccda = _.template(template, {\n filename: 'ccda.xml',\n bb: json,\n now: now,\n tagHelpers: ejs.helpers,\n codes: Core.Codes\n });\n return ccda;\n};","/*\n * ...\n */\nvar C32 = require('./parsers/c32');\nvar CCD = require('./parsers/ccd');\nvar CCDA = require('./parsers/ccda');\nvar CCDAR2 = require('./parsers/ccdar2');\n\nvar method = function () {};\n\n/* exported Parsers */\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.method = method;\n self.C32 = new C32(self.doc);\n self.CCD = new CCD(self.doc);\n self.CCDA = new CCDA(self.doc);\n self.CCDAR2 = new CCDAR2(self.doc);\n}; ","/*\n * Parser for the C32 document\n */\n\nvar Core = require('../core');\nvar AllergiesParser = require('./c32/allergies');\nvar DemographicsParser = require('./c32/demographics');\nvar DocumentParser = require('./c32/document');\nvar EncountersParser = require('./c32/encounters');\nvar ImmunizationsParser = require('./c32/immunizations');\nvar MedicationsParser = require('./c32/medications');\nvar ProblemsParser = require('./c32/problems');\nvar ProceduresParser = require('./c32/procedures');\nvar ResultsParser = require('./c32/results');\nvar VitalsParser = require('./c32/vitals');\nvar ParseGenericInfo = require('./generic');\n\nmodule.exports = function(doc) {\n var self = this;\n\n self.doc = doc;\n self.allergiesParser = new AllergiesParser(self.doc);\n self.demographicsParser = new DemographicsParser(self.doc);\n self.demographicsParser = new DocumentParser(self.doc);\n self.encountersParser = new EncountersParser(self.doc);\n self.immunizationsParser = new ImmunizationsParser(self.doc);\n self.medicationsParser = new MedicationsParser(self.doc);\n self.problemsParser = new ProblemsParser(self.doc);\n self.proceduresParser = new ProceduresParser(self.doc);\n self.resultsParser = new ResultsParser(self.doc);\n self.vitalsParser = new VitalsParser(self.doc);\n\n self.run = function (c32) {\n var data = {};\n \n data.document = self.demographicsParser.parse(c32);\n data.allergies = self.allergiesParser.parse(c32);\n data.demographics = self.demographicsParser.parse(c32);\n data.encounters = self.encountersParser.parse(c32);\n var parsedImmunizations = self.immunizationsParser.parse(c32);\n data.immunizations = parsedImmunizations.administered;\n data.immunization_declines = parsedImmunizations.declined;\n data.results = self.resultsParser.parse(c32);\n data.medications = self.medicationsParser.parse(c32);\n data.problems = self.problemsParser.parse(c32);\n data.procedures = self.proceduresParser.parse(c32);\n data.vitals = self.vitals.parse(c32);\n \n data.json = Core.json;\n data.document.json = Core.json;\n data.allergies.json = Core.json;\n data.demographics.json = Core.json;\n data.encounters.json = Core.json;\n data.immunizations.json = Core.json;\n data.immunization_declines.json = Core.json;\n data.results.json = Core.json;\n data.medications.json = Core.json;\n data.problems.json = Core.json;\n data.procedures.json = Core.json;\n data.vitals.json = Core.json;\n \n // Sections that are in CCDA but not C32... we want to keep the API\n // consistent, even if the entries are always null\n data.smoking_status = {\n date: null,\n name: null,\n code: null,\n code_system: null,\n code_system_name: null\n };\n data.smoking_status.json = Core.json;\n \n data.chief_complaint = {\n text: null\n };\n data.chief_complaint.json = Core.json;\n \n data.care_plan = [];\n data.care_plan.json = Core.json;\n \n data.instructions = [];\n data.instructions.json = Core.json;\n \n data.functional_statuses = [];\n data.functional_statuses.json = Core.json;\n \n // Decorate each section with Title, templateId and text and adds missing sections\n ParseGenericInfo(c32, data);\n \n return data;\n };\n};\n\n\n","/*\n * Parser for the C32 allergies section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var allergies = c32.section('allergies');\n\n var data = {}, el;\n data.entries = [];\n data.displayName = \"Allergies\";\n data.templateId = allergies.tag('templateId').attr('root');\n data.text = allergies.tag('text').val(true);\n\n allergies.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var start_date = parseDate(el.tag('low').attr('value')),\n end_date = parseDate(el.tag('high').attr('value'));\n \n el = entry.template('2.16.840.1.113883.3.88.11.83.6').tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n // value => reaction_type\n el = entry.template('2.16.840.1.113883.3.88.11.83.6').tag('value');\n var reaction_type_name = el.attr('displayName'),\n reaction_type_code = el.attr('code'),\n reaction_type_code_system = el.attr('codeSystem'),\n reaction_type_code_system_name = el.attr('codeSystemName');\n \n // reaction\n el = entry.template('2.16.840.1.113883.10.20.1.54').tag('value');\n var reaction_name = el.attr('displayName'),\n reaction_code = el.attr('code'),\n reaction_code_system = el.attr('codeSystem');\n \n // an irregularity seen in some c32s\n if (!reaction_name) {\n el = entry.template('2.16.840.1.113883.10.20.1.54').tag('text');\n if (!el.isEmpty()) {\n reaction_name = Core.stripWhitespace(el.val());\n }\n }\n\n // severity\n el = entry.template('2.16.840.1.113883.10.20.1.55').tag('value');\n var severity = el.attr('displayName');\n \n // participant => allergen\n el = entry.tag('participant').tag('code');\n var allergen_name = el.attr('displayName'),\n allergen_code = el.attr('code'),\n allergen_code_system = el.attr('codeSystem'),\n allergen_code_system_name = el.attr('codeSystemName');\n\n // another irregularity seen in some c32s\n if (!allergen_name) {\n el = entry.tag('participant').tag('name');\n if (!el.isEmpty()) {\n allergen_name = el.val();\n }\n }\n if (!allergen_name) {\n el = entry.template('2.16.840.1.113883.3.88.11.83.6').tag('originalText');\n if (!el.isEmpty()) {\n allergen_name = Core.stripWhitespace(el.val());\n }\n }\n \n // status\n el = entry.template('2.16.840.1.113883.10.20.1.39').tag('value');\n var status = el.attr('displayName');\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n status: status,\n severity: severity,\n reaction: {\n name: reaction_name,\n code: reaction_code,\n code_system: reaction_code_system\n },\n reaction_type: {\n name: reaction_type_name,\n code: reaction_type_code,\n code_system: reaction_type_code_system,\n code_system_name: reaction_type_code_system_name\n },\n allergen: {\n name: allergen_name,\n code: allergen_code,\n code_system: allergen_code_system,\n code_system_name: allergen_code_system_name\n }\n });\n }); \n return data;\n }\n};\n","/*\n * Parser for the C32 demographics section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) { \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var demographics = c32.section('demographics');\n \n var patient = demographics.tag('patientRole');\n el = patient.tag('patient').tag('name');\n var patient_name_dict = parseName(el);\n \n el = patient.tag('patient');\n var dob = parseDate(el.tag('birthTime').attr('value')),\n gender = Core.Codes.gender(el.tag('administrativeGenderCode').attr('code')),\n marital_status = Core.Codes.maritalStatus(el.tag('maritalStatusCode').attr('code'));\n \n el = patient.tag('addr');\n var patient_address_dict = parseAddress(el);\n \n el = patient.tag('telecom');\n var home = el.attr('value'),\n work = null,\n mobile = null;\n \n var email = null;\n \n var language = patient.tag('languageCommunication').tag('languageCode').attr('code'),\n race = patient.tag('raceCode').attr('displayName'),\n ethnicity = patient.tag('ethnicGroupCode').attr('displayName'),\n religion = patient.tag('religiousAffiliationCode').attr('displayName');\n \n el = patient.tag('birthplace');\n var birthplace_dict = parseAddress(el);\n \n el = patient.tag('guardian');\n var guardian_relationship = el.tag('code').attr('displayName'),\n guardian_relationship_code = el.tag('code').attr('code'),\n guardian_home = el.tag('telecom').attr('value');\n \n el = el.tag('guardianPerson').tag('name');\n var guardian_name_dict = parseName(el);\n \n el = patient.tag('guardian').tag('addr');\n var guardian_address_dict = parseAddress(el);\n \n el = patient.tag('providerOrganization');\n var provider_organization = el.tag('name').val(),\n provider_phone = el.tag('telecom').attr('value'),\n provider_address_dict = parseAddress(el.tag('addr'));\n \n data = {\n name: patient_name_dict,\n dob: dob,\n gender: gender,\n marital_status: marital_status,\n address: patient_address_dict,\n phone: {\n home: home,\n work: work,\n mobile: mobile\n },\n email: email,\n language: language,\n race: race,\n ethnicity: ethnicity,\n religion: religion,\n birthplace: {\n state: birthplace_dict.state,\n zip: birthplace_dict.zip,\n country: birthplace_dict.country\n },\n guardian: {\n name: {\n given: guardian_name_dict.given,\n family: guardian_name_dict.family\n },\n relationship: guardian_relationship,\n relationship_code: guardian_relationship_code,\n address: guardian_address_dict,\n phone: {\n home: guardian_home\n }\n },\n provider: {\n organization: provider_organization,\n phone: provider_phone,\n address: provider_address_dict\n }\n };\n \n return data;\n };\n}\n","/*\n * Parser for the C32 document section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var doc = c32.section('document');\n \n // Parse Doc Type Info\n var templates = doc.elsByTag('templateId');\n var rootTemplate = templates[0].attr('root');\n var secondTemplate;\n if(templates.length >1)\n secondTemplate = templates[1].attr('root');\n else\n secondTemplate = rootTemplate;\n \n var loinc = doc.tag('code').attr('code');\n var templateId = doc.tag('templateId').attr('root');\n var displayName = doc.tag('code').attr('displayName');\n \n var nonXml = doc.tag('nonXMLBody');\n var nonXmlNodes = nonXml.el.childNodes;\n \n var bodyType = \"structured\";\n var nonXmlBody = {\n type: \"\",\n mediaType: \"\",\n representation: \"\",\n rawText: \"\",\n reference: \"\"\n };\n \n if(nonXmlNodes && nonXmlNodes.length > 0) {\n bodyType = \"unstructured\";\n var text = nonXml.tag('text');\n var mediaType = \"\";\n var representation = \"\";\n var rawText = \"\";\n var reference = \"\";\n var type = \"\";\n \n // We have an embedded doc\n if(text && text.attr('mediaType')) {\n mediaType = text.attr('mediaType');\n representation = text.attr('representation');\n rawText = text.val();\n type = \"embedded\";\n }\n \n if(text && !mediaType) {\n reference = text.tag('reference').attr('value');\n type = \"reference\";\n }\n nonXmlBody = {\n type: type,\n mediaType: mediaType,\n representation: representation,\n rawText: rawText,\n reference: reference\n }\n }\n \n var docType = {\n type: \"CCDAR2\",\n rootTemplateId: rootTemplate,\n templateId: secondTemplate,\n displayName: displayName,\n loinc: loinc,\n bodyType: bodyType,\n nonXmlBody: nonXmlBody\n };\n \n var date = parseDate(doc.tag('effectiveTime').attr('value'));\n var title = Core.stripWhitespace(doc.tag('title').val());\n \n var author = doc.tag('author');\n el = author.tag('assignedPerson').tag('name');\n var name_dict = parseName(el);\n // Sometimes C32s include names that are just like <name>String</name>\n // and we still want to get something out in that case\n if (!name_dict.prefix && !name_dict.given.length && !name_dict.family) {\n name_dict.family = el.val();\n }\n \n el = author.tag('addr');\n var address_dict = parseAddress(el);\n \n el = author.tag('telecom');\n var work_phone = el.attr('value');\n \n var documentation_of_list = [];\n var performers = doc.tag('documentationOf').elsByTag('performer');\n for (var i = 0; i < performers.length; i++) {\n el = performers[i].tag('assignedPerson').tag('name');\n var performer_name_dict = parseName(el);\n var performer_phone = performers[i].tag('telecom').attr('value');\n var performer_addr = parseAddress(el.tag('addr'));\n documentation_of_list.push({\n name: performer_name_dict,\n phone: {\n work: performer_phone\n },\n address: performer_addr\n });\n }\n \n el = doc.tag('encompassingEncounter');\n var location_name = Core.stripWhitespace(el.tag('name').val());\n var location_addr_dict = parseAddress(el.tag('addr'));\n \n var encounter_date = null;\n el = el.tag('effectiveTime');\n if (!el.isEmpty()) {\n encounter_date = parseDate(el.attr('value'));\n }\n \n data = {\n type: docType,\n date: date,\n title: title,\n author: {\n name: name_dict,\n address: address_dict,\n phone: {\n work: work_phone\n }\n },\n documentation_of: documentation_of_list,\n location: {\n name: location_name,\n address: location_addr_dict,\n encounter_date: encounter_date\n }\n };\n \n return data;\n };\n}","/*\n * Parser for the C32 encounters section\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var encounters = c32.section('encounters');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Encounters\";\n data.templateId = encounters.tag('templateId').attr('root');\n data.text = encounters.tag('text').val(true);\n \n encounters.entries().each(function(entry) {\n \n var date = parseDate(entry.tag('effectiveTime').attr('value'));\n if (!date) {\n date = parseDate(entry.tag('effectiveTime').tag('low').attr('value'));\n }\n \n el = entry.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName'),\n code_system_version = el.attr('codeSystemVersion');\n \n // translation\n el = entry.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n // performer\n el = entry.tag('performer');\n var performer_name = el.tag('name').val(),\n performer_code = el.attr('code'),\n performer_code_system = el.attr('codeSystem'),\n performer_code_system_name = el.attr('codeSystemName');\n \n // participant => location\n el = entry.tag('participant');\n var organization = el.tag('name').val(),\n location_dict = parseAddress(el);\n location_dict.organization = organization;\n \n // findings\n var findings = [];\n var findingEls = entry.elsByTag('entryRelationship');\n for (var i = 0; i < findingEls.length; i++) {\n el = findingEls[i].tag('value');\n findings.push({\n name: el.attr('displayName'),\n code: el.attr('code'),\n code_system: el.attr('codeSystem')\n });\n }\n \n data.entries.push({\n date: date,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n code_system_version: code_system_version,\n findings: findings,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n performer: {\n name: performer_name,\n code: performer_code,\n code_system: performer_code_system,\n code_system_name: performer_code_system_name\n },\n location: location_dict\n });\n });\n \n return data;\n };\n}\n","/*\n * Parser for the C32 immunizations section\n */\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var administeredData = {}, declinedData = {}, product, el;\n \n var immunizations = c32.section('immunizations');\n \n administeredData.entries = [];\n administeredData.displayName = \"Immunizations\";\n administeredData.templateId = immunizations.tag('templateId').attr('root');\n administeredData.text = immunizations.tag('text').val(true);\n \n declinedData.entries = [];\n declinedData.displayName = \"Immunizations Declined\";\n declinedData.templateId = immunizations.tag('templateId').attr('root');\n declinedData.text = immunizations.tag('text').val(true);\n \n \n \n immunizations.entries().each(function(entry) {\n \n // date\n el = entry.tag('effectiveTime');\n var date = parseDate(el.attr('value'));\n if (!date) {\n date = parseDate(el.tag('low').attr('value'));\n }\n \n // if 'declined' is true, this is a record that this vaccine WASN'T administered\n el = entry.tag('substanceAdministration');\n var declined = el.boolAttr('negationInd');\n \n // product\n product = entry.template('2.16.840.1.113883.10.20.1.53');\n el = product.tag('code');\n var product_name = el.attr('displayName'),\n product_code = el.attr('code'),\n product_code_system = el.attr('codeSystem'),\n product_code_system_name = el.attr('codeSystemName');\n \n // translation\n el = product.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n // misc product details\n el = product.tag('lotNumberText');\n var lot_number = el.val();\n \n el = product.tag('manufacturerOrganization');\n var manufacturer_name = el.tag('name').val();\n \n // route\n el = entry.tag('routeCode');\n var route_name = el.attr('displayName'),\n route_code = el.attr('code'),\n route_code_system = el.attr('codeSystem'),\n route_code_system_name = el.attr('codeSystemName');\n \n // instructions\n el = entry.template('2.16.840.1.113883.10.20.1.49');\n var instructions_text = Core.stripWhitespace(el.tag('text').val());\n el = el.tag('code');\n var education_name = el.attr('displayName'),\n education_code = el.attr('code'),\n education_code_system = el.attr('codeSystem');\n \n // dose\n el = entry.tag('doseQuantity');\n var dose_value = el.attr('value'),\n dose_unit = el.attr('unit');\n \n var data = (declined) ? declinedData : administeredData;\n data.entries.push({\n date: date,\n product: {\n name: product_name,\n code: product_code,\n code_system: product_code_system,\n code_system_name: product_code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n lot_number: lot_number,\n manufacturer_name: manufacturer_name\n },\n dose_quantity: {\n value: dose_value,\n unit: dose_unit\n },\n route: {\n name: route_name,\n code: route_code,\n code_system: route_code_system,\n code_system_name: route_code_system_name\n },\n instructions: instructions_text,\n education_type: {\n name: education_name,\n code: education_code,\n code_system: education_code_system\n }\n });\n });\n \n return {\n administered: administeredData,\n declined: declinedData\n };\n };\n}\n","var Core = require('../../core');\n\n/*\n * Parser for the C32 medications section\n */\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n \n function parse(c32) { \n var parseDate = self.doc.parseDate;\n var medications = c32.section('medications');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Medications\";\n data.templateId = medications.tag('templateId').attr('root');\n data.text = medications.tag('text').val(true);\n \n medications.entries().each(function(entry) {\n \n var text = null;\n el = entry.tag('substanceAdministration').immediateChildTag('text');\n if (!el.isEmpty()) {\n // technically C32s don't use this, but C83s (another CCD) do,\n // and CCDAs do, so we may see it anyways\n text = Core.stripWhitespace(el.val());\n }\n \n var effectiveTimes = entry.elsByTag('effectiveTime');\n \n el = effectiveTimes[0]; // the first effectiveTime is the med start date\n var start_date = null, end_date = null;\n if (el) {\n start_date = parseDate(el.tag('low').attr('value'));\n end_date = parseDate(el.tag('high').attr('value'));\n }\n \n // the second effectiveTime might the schedule period or it might just\n // be a random effectiveTime from further in the entry... xsi:type should tell us\n el = effectiveTimes[1];\n var schedule_type = null, schedule_period_value = null, schedule_period_unit = null;\n if (el && el.attr('xsi:type') === 'PIVL_TS') {\n var institutionSpecified = el.attr('institutionSpecified');\n if (institutionSpecified === 'true') {\n schedule_type= 'frequency';\n } else if (institutionSpecified === 'false') {\n schedule_type = 'interval';\n }\n \n el = el.tag('period');\n schedule_period_value = el.attr('value');\n schedule_period_unit = el.attr('unit');\n }\n \n el = entry.tag('manufacturedProduct').tag('code');\n var product_name = el.attr('displayName'),\n product_code = el.attr('code'),\n product_code_system = el.attr('codeSystem');\n \n var product_original_text = null;\n el = entry.tag('manufacturedProduct').tag('originalText');\n if (!el.isEmpty()) {\n product_original_text = Core.stripWhitespace(el.val());\n }\n // if we don't have a product name yet, try the originalText version\n if (!product_name && product_original_text) {\n product_name = product_original_text;\n }\n \n // irregularity in some c32s\n if (!product_name) {\n el = entry.tag('manufacturedProduct').tag('name');\n if (!el.isEmpty()) {\n product_name = Core.stripWhitespace(el.val());\n }\n }\n \n el = entry.tag('manufacturedProduct').tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = entry.tag('doseQuantity');\n var dose_value = el.attr('value'),\n dose_unit = el.attr('unit');\n \n el = entry.tag('rateQuantity');\n var rate_quantity_value = el.attr('value'),\n rate_quantity_unit = el.attr('unit');\n \n el = entry.tag('precondition').tag('value');\n var precondition_name = el.attr('displayName'),\n precondition_code = el.attr('code'),\n precondition_code_system = el.attr('codeSystem');\n \n el = entry.template('2.16.840.1.113883.10.20.1.28').tag('value');\n var reason_name = el.attr('displayName'),\n reason_code = el.attr('code'),\n reason_code_system = el.attr('codeSystem');\n \n el = entry.tag('routeCode');\n var route_name = el.attr('displayName'),\n route_code = el.attr('code'),\n route_code_system = el.attr('codeSystem'),\n route_code_system_name = el.attr('codeSystemName');\n \n // participant/playingEntity => vehicle\n el = entry.tag('participant').tag('playingEntity');\n var vehicle_name = el.tag('name').val();\n \n el = el.tag('code');\n // prefer the code vehicle_name but fall back to the non-coded one\n // (which for C32s is in fact the primary field for this info)\n vehicle_name = el.attr('displayName') || vehicle_name;\n var vehicle_code = el.attr('code'),\n vehicle_code_system = el.attr('codeSystem'),\n vehicle_code_system_name = el.attr('codeSystemName');\n \n el = entry.tag('administrationUnitCode');\n var administration_name = el.attr('displayName'),\n administration_code = el.attr('code'),\n administration_code_system = el.attr('codeSystem'),\n administration_code_system_name = el.attr('codeSystemName');\n \n // performer => prescriber\n el = entry.tag('performer');\n var prescriber_organization = el.tag('name').val(),\n prescriber_person = null;\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n text: text,\n product: {\n name: product_name,\n text: product_original_text,\n code: product_code,\n code_system: product_code_system,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n }\n },\n dose_quantity: {\n value: dose_value,\n unit: dose_unit\n },\n rate_quantity: {\n value: rate_quantity_value,\n unit: rate_quantity_unit\n },\n precondition: {\n name: precondition_name,\n code: precondition_code,\n code_system: precondition_code_system\n },\n reason: {\n name: reason_name,\n code: reason_code,\n code_system: reason_code_system\n },\n route: {\n name: route_name,\n code: route_code,\n code_system: route_code_system,\n code_system_name: route_code_system_name\n },\n schedule: {\n type: schedule_type,\n period_value: schedule_period_value,\n period_unit: schedule_period_unit\n },\n vehicle: {\n name: vehicle_name,\n code: vehicle_code,\n code_system: vehicle_code_system,\n code_system_name: vehicle_code_system_name\n },\n administration: {\n name: administration_name,\n code: administration_code,\n code_system: administration_code_system,\n code_system_name: administration_code_system_name\n },\n prescriber: {\n organization: prescriber_organization,\n person: prescriber_person\n }\n });\n });\n \n return data;\n };\n}\n","var Core = require('../../core');\n\n/*\n * Parser for the C32 problems section\n */\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var problems = c32.section('problems');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Problems\";\n data.templateId = problems.tag('templateId').attr('root');\n data.text = problems.tag('text').val(true);\n \n problems.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var start_date = parseDate(el.tag('low').attr('value')),\n end_date = parseDate(el.tag('high').attr('value'));\n \n el = entry.template('2.16.840.1.113883.10.20.1.28').tag('value');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n // Pre-C32 CCDs put the problem name in this \"originalText\" field, and some vendors\n // continue doing this with their C32, even though it's not technically correct\n if (!name) {\n el = entry.template('2.16.840.1.113883.10.20.1.28').tag('originalText');\n if (!el.isEmpty()) {\n name = Core.stripWhitespace(el.val());\n }\n }\n \n el = entry.template('2.16.840.1.113883.10.20.1.28').tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = entry.template('2.16.840.1.113883.10.20.1.50');\n var status = el.tag('value').attr('displayName');\n \n var age = null;\n el = entry.template('2.16.840.1.113883.10.20.1.38');\n if (!el.isEmpty()) {\n age = parseFloat(el.tag('value').attr('value'));\n }\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n name: name,\n status: status,\n age: age,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n comment: null // not part of C32\n });\n });\n \n return data;\n };\n}\n","/*\n * Parser for the C32 procedures section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var procedures = c32.section('procedures');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Procedures\";\n data.templateId = procedures.tag('templateId').attr('root');\n data.text = procedures.tag('text').val(true);\n \n procedures.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var date = parseDate(el.attr('value'));\n \n el = entry.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem');\n \n if (!name) {\n name = Core.stripWhitespace(entry.tag('originalText').val());\n }\n \n // 'specimen' tag not always present\n el = entry.tag('specimen').tag('code');\n var specimen_name = el.attr('displayName'),\n specimen_code = el.attr('code'),\n specimen_code_system = el.attr('codeSystem');\n \n el = entry.tag('performer').tag('addr');\n var organization = el.tag('name').val(),\n phone = el.tag('telecom').attr('value');\n \n var performer_dict = parseAddress(el);\n performer_dict.organization = organization;\n performer_dict.phone = phone;\n \n // participant => device\n el = entry.tag('participant').tag('code');\n var device_name = el.attr('displayName'),\n device_code = el.attr('code'),\n device_code_system = el.attr('codeSystem');\n \n data.entries.push({\n date: date,\n name: name,\n code: code,\n code_system: code_system,\n specimen: {\n name: specimen_name,\n code: specimen_code,\n code_system: specimen_code_system\n },\n performer: performer_dict,\n device: {\n name: device_name,\n code: device_code,\n code_system: device_code_system\n }\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the C32 results (labs) section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var results = c32.section('results');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Results\";\n data.templateId = results.tag('templateId').attr('root');\n data.text = results.tag('text').val(true);\n \n \n results.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var panel_date = parseDate(entry.tag('effectiveTime').attr('value'));\n if (!panel_date) {\n panel_date = parseDate(entry.tag('effectiveTime').tag('low').attr('value'));\n }\n \n // panel\n el = entry.tag('code');\n var panel_name = el.attr('displayName'),\n panel_code = el.attr('code'),\n panel_code_system = el.attr('codeSystem'),\n panel_code_system_name = el.attr('codeSystemName');\n \n var observation;\n var tests = entry.elsByTag('observation');\n var tests_data = [];\n \n for (var i = 0; i < tests.length; i++) {\n observation = tests[i];\n \n // sometimes results organizers contain non-results. we only want tests\n if (observation.template('2.16.840.1.113883.10.20.1.31').val()) {\n var date = parseDate(observation.tag('effectiveTime').attr('value'));\n \n el = observation.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n if (!name) {\n name = Core.stripWhitespace(observation.tag('text').val());\n }\n \n el = observation.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = observation.tag('value');\n var value = el.attr('value'),\n unit = el.attr('unit');\n // We could look for xsi:type=\"PQ\" (physical quantity) but it seems better\n // not to trust that that field has been used correctly...\n if (value && !isNaN(parseFloat(value))) {\n value = parseFloat(value);\n }\n if (!value) {\n value = el.val(); // look for free-text values\n }\n \n el = observation.tag('referenceRange');\n var reference_range_text = Core.stripWhitespace(el.tag('observationRange').tag('text').val()),\n reference_range_low_unit = el.tag('observationRange').tag('low').attr('unit'),\n reference_range_low_value = el.tag('observationRange').tag('low').attr('value'),\n reference_range_high_unit = el.tag('observationRange').tag('high').attr('unit'),\n reference_range_high_value = el.tag('observationRange').tag('high').attr('value');\n \n tests_data.push({\n date: date,\n name: name,\n value: value,\n unit: unit,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n reference_range: {\n text: reference_range_text,\n low_unit: reference_range_low_unit,\n low_value: reference_range_low_value,\n high_unit: reference_range_high_unit,\n high_value: reference_range_high_value,\n }\n });\n }\n }\n \n data.entries.push({\n name: panel_name,\n code: panel_code,\n code_system: panel_code_system,\n code_system_name: panel_code_system_name,\n date: panel_date,\n tests: tests_data\n });\n });\n \n return data;\n }; \n}","/*\n * Parser for the C32 vitals section\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.parse = parse;\n\n function parse(c32) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var vitals = c32.section('vitals');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Vitals\";\n data.templateId = vitals.tag('templateId').attr('root');\n data.text = vitals.tag('text').val(true);\n \n vitals.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var entry_date = parseDate(el.attr('value'));\n \n var result;\n var results = entry.elsByTag('component');\n var results_data = [];\n \n for (var j = 0; j < results.length; j++) {\n result = results[j];\n \n // Results\n \n el = result.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n el = result.tag('value');\n var value = parseFloat(el.attr('value')),\n unit = el.attr('unit');\n \n results_data.push({\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n value: value,\n unit: unit\n });\n }\n \n data.entries.push({\n date: entry_date,\n results: results_data\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the CCDAR2 document\n */\n\nvar ParseGenericInfo = require('./generic');\nvar Core = require('../core');\nvar DocumentParser = require('./ccd/document');\nvar DemographicsParser = require('./ccda/demographics');\nvar HealthConcernsParser = require('./ccdar2/health_concerns');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.documentParser = new DocumentParser(self.doc);\n self.demographicsParser = new DemographicsParser(self.doc);\n self.healthConcernsParser = new HealthConcernsParser(self.doc);\n \n self.run = function (ccda) {\n var data = {};\n\n data.document = self.documentParser.document(ccda);\n data.demographics = self.demographicsParser.demographics(ccda);\n data.health_concerns_document = self.healthConcernsParser.health_concerns_document(ccda);\n data.json = Core.json;\n\n // Decorate each section with Title, templateId and text and adds missing sections\n ParseGenericInfo(ccda, data);\n\n return data;\n };\n}\n","/*\n * Parser for the CCDAR2 document section\n */\nvar Core = require('../../core');\n\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.document = document;\n\n function document(ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var doc = ccda.section('document');\n var date = parseDate(doc.tag('effectiveTime').attr('value'));\n var title = Core.stripWhitespace(doc.tag('title').val());\n \n // Parse Doc Type Info\n var templates = doc.elsByTag('templateId');\n \n var rootTemplate = templates[0].attr('root');\n var secondTemplate;\n if(templates.length >1)\n secondTemplate = templates[1].attr('root');\n else\n secondTemplate = rootTemplate;\n \n var loinc = doc.tag('code').attr('code');\n var templateId = doc.tag('templateId').attr('root');\n var displayName = doc.tag('code').attr('displayName');\n \n var nonXml = doc.tag('nonXMLBody');\n var nonXmlNodes = nonXml.el.childNodes;\n \n var bodyType = \"structured\";\n var nonXmlBody = {\n type: \"\",\n mediaType: \"\",\n representation: \"\",\n rawText: \"\",\n reference: \"\"\n };\n if(nonXmlNodes && nonXmlNodes.length > 0) {\n bodyType = \"unstructured\";\n var text = nonXml.tag('text');\n var mediaType = \"\";\n var representation = \"\";\n var rawText = \"\";\n var reference = \"\";\n var type = \"\";\n \n // We have an embedded doc\n if(text && text.attr('mediaType')) {\n mediaType = text.attr('mediaType');\n representation = text.attr('representation');\n rawText = text.val();\n type = \"embedded\";\n }\n \n if(text && !mediaType) {\n reference = text.tag('reference').attr('value');\n type = \"reference\";\n }\n nonXmlBody = {\n type: type,\n mediaType: mediaType,\n representation: representation,\n rawText: rawText,\n reference: reference\n }\n }\n \n var docType = {\n type: \"CCDAR2\",\n rootTemplateId: rootTemplate,\n templateId: secondTemplate,\n displayName: displayName,\n loinc: loinc,\n bodyType: bodyType,\n nonXmlBody: nonXmlBody\n };\n \n var author = doc.tag('author');\n el = author.tag('assignedPerson').tag('name');\n var name_dict = parseName(el);\n \n el = author.tag('addr');\n var address_dict = parseAddress(el);\n \n el = author.tag('telecom');\n var work_phone = el.attr('value');\n \n var documentation_of_list = [];\n var performers = doc.tag('documentationOf').elsByTag('performer');\n for (var i = 0; i < performers.length; i++) {\n el = performers[i];\n var performer_name_dict = parseName(el);\n var performer_phone = el.tag('telecom').attr('value');\n var performer_addr = parseAddress(el.tag('addr'));\n documentation_of_list.push({\n name: performer_name_dict,\n phone: {\n work: performer_phone\n },\n address: performer_addr\n });\n }\n \n el = doc.tag('encompassingEncounter').tag('location');\n var location_name = Core.stripWhitespace(el.tag('name').val());\n var location_addr_dict = parseAddress(el.tag('addr'));\n \n var encounter_date = null;\n el = el.tag('effectiveTime');\n if (!el.isEmpty()) {\n encounter_date = parseDate(el.attr('value'));\n }\n \n data = {\n type: docType,\n date: date,\n title: title,\n author: {\n name: name_dict,\n address: address_dict,\n phone: {\n work: work_phone\n }\n },\n documentation_of: documentation_of_list,\n location: {\n name: location_name,\n address: location_addr_dict,\n encounter_date: encounter_date\n }\n };\n \n return data;\n };\n}","var Core = require('../core');\nvar AllergiesParser = require('./ccda/allergies');\nvar CarePlanParser = require('./ccda/care_plan');\nvar DemographicsParser = require('./ccda/demographics');\nvar DocumentParser = require('./ccda/document');\nvar EncountersParser = require('./ccda/encounters');\nvar FreeTextParser = require('./ccda/free_text');\nvar FunctionalStatusesParser = require('./ccda/functional_statuses');\nvar ImmunizationsParser = require('./ccda/immunizations');\nvar InstructionsParser = require('./ccda/instructions');\nvar MedicationsParser = require('./ccda/medications');\nvar ProblemsParser = require('./ccda/problems');\nvar ProceduresParser = require('./ccda/procedures');\nvar ResultsParser = require('./ccda/results');\nvar SmokingStatusParser = require('./ccda/smoking_status');\nvar VitalsParser = require('./ccda/vitals');\n\nvar ParseGenericInfo = require('./generic');\n\n/*\n * Parser for the CCDA document\n */\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.allergiesParser = new AllergiesParser(self.doc);\n self.carePlanParser = new CarePlanParser(self.doc);\n self.demographicsParser = new DemographicsParser(self.doc);\n self.documentParser = new DocumentParser(self.doc);\n self.encountersParser = new EncountersParser(self.doc);\n self.freeTextParser = new FreeTextParser();\n self.functionalStatusesParser = new FunctionalStatusesParser(self.doc);\n self.immunizationsParser = new ImmunizationsParser(self.doc);\n self.instructionsParser = new InstructionsParser();\n self.medicationsParser = new MedicationsParser(self.doc);\n self.problemsParser = new ProblemsParser(self.doc);\n self.proceduresParser = new ProceduresParser(self.doc);\n self.resultsParser = new ResultsParser(self.doc);\n self.smokingStatusParser = new SmokingStatusParser(self.doc);\n self.vitalsParser = new VitalsParser(self.doc);\n\n\n self.run = function (ccda) {\n var data = {};\n \n data.document = self.documentParser.document(ccda);\n data.allergies = self.allergiesParser.allergies(ccda);\n data.care_plan = self.carePlanParser.care_plan(ccda);\n data.chief_complaint = self.freeTextParser.free_text(ccda, 'chief_complaint');\n data.demographics = self.demographicsParser.demographics(ccda);\n data.encounters = self.encountersParser.encounters(ccda);\n data.functional_statuses = self.functionalStatusesParser.functional_statuses(ccda);\n var parsedImmunizations = self.immunizationsParser.immunizations(ccda);\n data.immunizations = parsedImmunizations.administered;\n data.immunization_declines = parsedImmunizations.declined;\n data.instructions = self.instructionsParser.instructions(ccda);\n data.results = self.resultsParser.results(ccda);\n data.medications = self.medicationsParser.medications(ccda);\n data.problems = self.problemsParser.problems(ccda);\n data.procedures = self.proceduresParser.procedures(ccda);\n data.smoking_status = self.smokingStatusParser.smoking_status(ccda);\n data.vitals = self.vitalsParser.vitals(ccda);\n \n data.json = Core.json;\n data.document.json = Core.json;\n data.allergies.json = Core.json;\n data.care_plan.json = Core.json;\n data.chief_complaint.json = Core.json;\n data.demographics.json = Core.json;\n data.encounters.json = Core.json;\n data.functional_statuses.json = Core.json;\n data.immunizations.json = Core.json;\n data.immunization_declines.json = Core.json;\n data.instructions.json = Core.json;\n data.results.json = Core.json;\n data.medications.json = Core.json;\n data.problems.json = Core.json;\n data.procedures.json = Core.json;\n data.smoking_status.json = Core.json;\n data.vitals.json = Core.json;\n\n // Decorate each section with Title, templateId and text and adds missing sections\n ParseGenericInfo(ccda, data);\n\n return data;\n };\n}\n","/*\n * Parser for the CCDA allergies section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n \n self.allergies = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var allergies = ccda.section('allergies');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Allergies\";\n data.templateId = allergies.tag('templateId').attr('root');\n data.text = allergies.tag('text').val(true);\n \n allergies.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var start_date = parseDate(el.tag('low').attr('value')),\n end_date = parseDate(el.tag('high').attr('value'));\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.7').tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n // value => reaction_type\n el = entry.template('2.16.840.1.113883.10.20.22.4.7').tag('value');\n var reaction_type_name = el.attr('displayName'),\n reaction_type_code = el.attr('code'),\n reaction_type_code_system = el.attr('codeSystem'),\n reaction_type_code_system_name = el.attr('codeSystemName');\n \n // reaction\n el = entry.template('2.16.840.1.113883.10.20.22.4.9').tag('value');\n var reaction_name = el.attr('displayName'),\n reaction_code = el.attr('code'),\n reaction_code_system = el.attr('codeSystem');\n \n // severity\n el = entry.template('2.16.840.1.113883.10.20.22.4.8').tag('value');\n var severity = el.attr('displayName');\n \n // participant => allergen\n el = entry.tag('participant').tag('code');\n var allergen_name = el.attr('displayName'),\n allergen_code = el.attr('code'),\n allergen_code_system = el.attr('codeSystem'),\n allergen_code_system_name = el.attr('codeSystemName');\n \n // this is not a valid place to store the allergen name but some vendors use it\n if (!allergen_name) {\n el = entry.tag('participant').tag('name');\n if (!el.isEmpty()) {\n allergen_name = el.val();\n }\n }\n if (!allergen_name) {\n el = entry.template('2.16.840.1.113883.10.20.22.4.7').tag('originalText');\n if (!el.isEmpty()) {\n allergen_name = Core.stripWhitespace(el.val());\n }\n }\n \n // status\n el = entry.template('2.16.840.1.113883.10.20.22.4.28').tag('value');\n var status = el.attr('displayName');\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n status: status,\n severity: severity,\n reaction: {\n name: reaction_name,\n code: reaction_code,\n code_system: reaction_code_system\n },\n reaction_type: {\n name: reaction_type_name,\n code: reaction_type_code,\n code_system: reaction_type_code_system,\n code_system_name: reaction_type_code_system_name\n },\n allergen: {\n name: allergen_name,\n code: allergen_code,\n code_system: allergen_code_system,\n code_system_name: allergen_code_system_name\n }\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the CCDA \"plan of care\" section\n */\n\n'use strict'\nlet Core = require('../../core');\n\nmodule.exports = function(doc) {\n let self = this;\n self.doc = doc;\n\n self.care_plan = function (ccda) {\n let care_plan = ccda.section('care_plan');\n \n let data = {}, el;\n data.entries = [];\n data.displayName = \"Care Plan\";\n data.templateId = care_plan.tag('templateId').attr('root');\n data.text = care_plan.tag('text').val(true);\n \n care_plan.entries().each(function (entry) {\n \n let name = null,\n code = null,\n code_system = null,\n code_system_name = null;\n \n // Plan of care encounters, which have no other details\n el = entry.template('2.16.840.1.113883.10.20.22.4.40');\n if (!el.isEmpty()) {\n name = 'encounter';\n } else {\n el = entry.tag('code');\n \n name = el.attr('displayName');\n code = el.attr('code');\n code_system = el.attr('codeSystem');\n code_system_name = el.attr('codeSystemName');\n }\n \n let text = Core.stripWhitespace(entry.tag('text').val(true));\n let time = entry.tag('effectiveTime').immediateChildTag('center').attr('value');\n \n data.entries.push({\n text: text,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n effective_time: parse(time)\n });\n });\n \n return data;\n \n function parse(str) {\n if (!str) return null;\n let y = str.substr(0, 4),\n m = str.substr(4, 2) - 1,\n d = str.substr(6, 2);\n let D = new Date(y, m, d);\n return (D.getFullYear() == y && D.getMonth() == m && D.getDate() == d) ? D : null;\n }\n };\n}\n","/*\n * Parser for the CCDA demographics section\n */\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.demographics = demographics;\n\n function demographics(ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var demographics = ccda.section('demographics');\n \n var patient = demographics.tag('patientRole');\n el = patient.tag('patient').tag('name');\n var patient_name_dict = parseName(el);\n \n el = patient.tag('patient');\n var dob = parseDate(el.tag('birthTime').attr('value')),\n gender = Core.Codes.gender(el.tag('administrativeGenderCode').attr('code')),\n marital_status = Core.Codes.maritalStatus(el.tag('maritalStatusCode').attr('code'));\n \n el = patient.tag('addr');\n var patient_address_dict = parseAddress(el);\n \n el = patient.tag('telecom');\n var home = el.attr('value'),\n work = null,\n mobile = null;\n \n var email = null;\n \n var language = patient.tag('languageCommunication').tag('languageCode').attr('code'),\n race = patient.tag('raceCode').attr('displayName'),\n ethnicity = patient.tag('ethnicGroupCode').attr('displayName'),\n religion = patient.tag('religiousAffiliationCode').attr('displayName');\n \n el = patient.tag('birthplace');\n var birthplace_dict = parseAddress(el);\n \n el = patient.tag('guardian');\n var guardian_relationship = el.tag('code').attr('displayName'),\n guardian_relationship_code = el.tag('code').attr('code'),\n guardian_home = el.tag('telecom').attr('value');\n \n el = el.tag('guardianPerson').tag('name');\n var guardian_name_dict = parseName(el);\n \n el = patient.tag('guardian').tag('addr');\n var guardian_address_dict = parseAddress(el);\n \n el = patient.tag('providerOrganization');\n var provider_organization = el.tag('name').val(),\n provider_phone = el.tag('telecom').attr('value');\n \n var provider_address_dict = parseAddress(el.tag('addr'));\n \n data = {\n name: patient_name_dict,\n dob: dob,\n gender: gender,\n marital_status: marital_status,\n address: patient_address_dict,\n phone: {\n home: home,\n work: work,\n mobile: mobile\n },\n email: email,\n language: language,\n race: race,\n ethnicity: ethnicity,\n religion: religion,\n birthplace: {\n state: birthplace_dict.state,\n zip: birthplace_dict.zip,\n country: birthplace_dict.country\n },\n guardian: {\n name: {\n given: guardian_name_dict.given,\n family: guardian_name_dict.family\n },\n relationship: guardian_relationship,\n relationship_code: guardian_relationship_code,\n address: guardian_address_dict,\n phone: {\n home: guardian_home\n }\n },\n provider: {\n organization: provider_organization,\n phone: provider_phone,\n address: provider_address_dict\n }\n };\n \n return data;\n };\n}","/*\n * Parser for the CCDA document section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.document = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var doc = ccda.section('document');\n \n \n // Parse Doc Type Info\n var templates = doc.elsByTag('templateId');\n var rootTemplate = templates[0].attr('root');\n var secondTemplate;\n if(templates.length >1)\n secondTemplate = templates[1].attr('root');\n else\n secondTemplate = rootTemplate;\n \n var loinc = doc.tag('code').attr('code');\n var templateId = doc.tag('templateId').attr('root');\n var displayName = doc.tag('code').attr('displayName');\n \n var nonXml = doc.tag('nonXMLBody');\n var nonXmlNodes = nonXml.el.childNodes;\n \n var bodyType = \"structured\";\n var nonXmlBody = {\n type: \"\",\n mediaType: \"\",\n representation: \"\",\n rawText: \"\",\n reference: \"\"\n };\n if(nonXmlNodes && nonXmlNodes.length > 0) {\n bodyType = \"unstructured\";\n var text = nonXml.tag('text');\n var mediaType = \"\";\n var representation = \"\";\n var rawText = \"\";\n var reference = \"\";\n var type = \"\";\n \n // We have an embedded doc\n if(text && text.attr('mediaType')) {\n mediaType = text.attr('mediaType');\n representation = text.attr('representation');\n rawText = text.val();\n type = \"embedded\";\n }\n \n if(text && !mediaType) {\n reference = text.tag('reference').attr('value');\n type = \"reference\";\n }\n nonXmlBody = {\n type: type,\n mediaType: mediaType,\n representation: representation,\n rawText: rawText,\n reference: reference\n }\n }\n \n var docType = {\n type: \"CCDAR2\",\n rootTemplateId: rootTemplate,\n templateId: secondTemplate,\n displayName: displayName,\n loinc: loinc,\n bodyType: bodyType,\n nonXmlBody: nonXmlBody\n };\n \n var date = parseDate(doc.tag('effectiveTime').attr('value'));\n var title = Core.stripWhitespace(doc.tag('title').val());\n \n var author = doc.tag('author');\n el = author.tag('assignedPerson').tag('name');\n var name_dict = parseName(el);\n \n el = author.tag('addr');\n var address_dict = parseAddress(el);\n \n el = author.tag('telecom');\n var work_phone = el.attr('value');\n \n var documentation_of_list = [];\n var performers = doc.tag('documentationOf').elsByTag('performer');\n for (var i = 0; i < performers.length; i++) {\n el = performers[i];\n var performer_name_dict = parseName(el);\n var performer_phone = el.tag('telecom').attr('value');\n var performer_addr = parseAddress(el.tag('addr'));\n documentation_of_list.push({\n name: performer_name_dict,\n phone: {\n work: performer_phone\n },\n address: performer_addr\n });\n }\n \n el = doc.tag('encompassingEncounter').tag('location');\n var location_name = Core.stripWhitespace(el.tag('name').val());\n var location_addr_dict = parseAddress(el.tag('addr'));\n \n var encounter_date = null;\n el = el.tag('effectiveTime');\n if (!el.isEmpty()) {\n encounter_date = parseDate(el.attr('value'));\n }\n \n data = {\n type: docType,\n date: date,\n title: title,\n author: {\n name: name_dict,\n address: address_dict,\n phone: {\n work: work_phone\n }\n },\n documentation_of: documentation_of_list,\n location: {\n name: location_name,\n address: location_addr_dict,\n encounter_date: encounter_date\n }\n };\n \n return data;\n };\n}","/*\n * Parser for the CCDA encounters section\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.encounters = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var encounters = ccda.section('encounters');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Encounters\";\n data.templateId = encounters.tag('templateId').attr('root');\n data.text = encounters.tag('text').val(true);\n \n encounters.entries().each(function(entry) {\n \n var date = parseDate(entry.tag('effectiveTime').attr('value'));\n \n el = entry.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName'),\n code_system_version = el.attr('codeSystemVersion');\n \n // translation\n el = entry.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n // performer\n el = entry.tag('performer').tag('code');\n var performer_name = el.attr('displayName'),\n performer_code = el.attr('code'),\n performer_code_system = el.attr('codeSystem'),\n performer_code_system_name = el.attr('codeSystemName');\n \n // participant => location\n el = entry.tag('participant');\n var organization = el.tag('code').attr('displayName');\n \n var location_dict = parseAddress(el);\n location_dict.organization = organization;\n \n // findings\n var findings = [];\n var findingEls = entry.elsByTag('entryRelationship');\n for (var i = 0; i < findingEls.length; i++) {\n el = findingEls[i].tag('value');\n findings.push({\n name: el.attr('displayName'),\n code: el.attr('code'),\n code_system: el.attr('codeSystem')\n });\n }\n \n data.entries.push({\n date: date,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n code_system_version: code_system_version,\n findings: findings,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n performer: {\n name: performer_name,\n code: performer_code,\n code_system: performer_code_system,\n code_system_name: performer_code_system_name\n },\n location: location_dict\n });\n });\n \n return data;\n };\n}","/*\n * Parser for any freetext section (i.e., contains just a single <text> element)\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function() {\n var self = this;\n\n self.free_text = function (ccda, sectionName) { \n var data = {};\n \n var doc = ccda.section(sectionName);\n var text = Core.stripWhitespace(doc.tag('text').val(true));\n \n data = {\n text: text\n };\n\n return data;\n };\n}\n","/*\n * Parser for the CCDA functional & cognitive status\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.functional_statuses = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var data = [], el;\n \n var statuses = ccda.section('functional_statuses');\n \n statuses.entries().each(function(entry) {\n \n var date = parseDate(entry.tag('effectiveTime').attr('value'));\n if (!date) {\n date = parseDate(entry.tag('effectiveTime').tag('low').attr('value'));\n }\n \n el = entry.tag('value');\n \n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n data.push({\n date: date,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name\n });\n \n });\n \n return data;\n }; \n}","/*\n * Parser for the CCDA immunizations section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.immunizations = function (ccda) { \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var administeredData = {}, declinedData = {}, product, el;\n \n var immunizations = ccda.section('immunizations');\n \n administeredData.entries = [];\n administeredData.displayName = \"Immunizations\";\n administeredData.templateId = immunizations.tag('templateId').attr('root');\n administeredData.text = immunizations.tag('text').val(true);\n \n declinedData.entries = [];\n declinedData.displayName = \"Immunizations Declined\";\n declinedData.templateId = immunizations.tag('templateId').attr('root');\n declinedData.text = immunizations.tag('text').val(true);\n \n immunizations.entries().each(function(entry) {\n \n // date\n el = entry.tag('effectiveTime');\n var date = parseDate(el.attr('value'));\n if (!date) {\n date = parseDate(el.tag('low').attr('value'));\n }\n \n // if 'declined' is true, this is a record that this vaccine WASN'T administered\n el = entry.tag('substanceAdministration');\n var declined = el.boolAttr('negationInd');\n \n // product\n product = entry.template('2.16.840.1.113883.10.20.22.4.54');\n el = product.tag('code');\n var product_name = el.attr('displayName'),\n product_code = el.attr('code'),\n product_code_system = el.attr('codeSystem'),\n product_code_system_name = el.attr('codeSystemName');\n \n // translation\n el = product.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n // misc product details\n el = product.tag('lotNumberText');\n var lot_number = el.val();\n \n el = product.tag('manufacturerOrganization');\n var manufacturer_name = el.tag('name').val();\n \n // route\n el = entry.tag('routeCode');\n var route_name = el.attr('displayName'),\n route_code = el.attr('code'),\n route_code_system = el.attr('codeSystem'),\n route_code_system_name = el.attr('codeSystemName');\n \n // instructions\n el = entry.template('2.16.840.1.113883.10.20.22.4.20');\n var instructions_text = Core.stripWhitespace(el.tag('text').val());\n el = el.tag('code');\n var education_name = el.attr('displayName'),\n education_code = el.attr('code'),\n education_code_system = el.attr('codeSystem');\n \n // dose\n el = entry.tag('doseQuantity');\n var dose_value = el.attr('value'),\n dose_unit = el.attr('unit');\n \n var data = (declined) ? declinedData : administeredData;\n data.entries.push({\n date: date,\n product: {\n name: product_name,\n code: product_code,\n code_system: product_code_system,\n code_system_name: product_code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n lot_number: lot_number,\n manufacturer_name: manufacturer_name\n },\n dose_quantity: {\n value: dose_value,\n unit: dose_unit\n },\n route: {\n name: route_name,\n code: route_code,\n code_system: route_code_system,\n code_system_name: route_code_system_name\n },\n instructions: instructions_text,\n education_type: {\n name: education_name,\n code: education_code,\n code_system: education_code_system\n }\n });\n });\n \n return {\n administered: administeredData,\n declined: declinedData\n };\n };\n}\n\n\n","/*\n * Parser for the CCDA \"plan of care\" section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function() {\n var self = this;\n \n self.instructions = function (ccda) {\n \n var data = [], el;\n \n var instructions = ccda.section('instructions');\n data.templateId = instructions.tag('templateId').attr('root');\n \n instructions.entries().each(function(entry) {\n \n el = entry.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n var text = Core.stripWhitespace(entry.tag('text').val(true));\n \n data.push({\n text: text,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the CCDA medications section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function (doc) {\n var self = this;\n self.doc = doc;\n\n self.medications = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var medications = ccda.section('medications');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Medications\";\n data.templateId = medications.tag('templateId').attr('root');\n data.text = medications.tag('text').val(true);\n \n medications.entries().each(function(entry) {\n \n el = entry.tag('text');\n var sig = Core.stripWhitespace(el.val());\n \n var effectiveTimes = entry.elsByTag('effectiveTime');\n \n el = effectiveTimes[0]; // the first effectiveTime is the med start date\n var start_date = null, end_date = null;\n if (el) {\n start_date = parseDate(el.tag('low').attr('value'));\n end_date = parseDate(el.tag('high').attr('value'));\n }\n \n // the second effectiveTime might the schedule period or it might just\n // be a random effectiveTime from further in the entry... xsi:type should tell us\n el = effectiveTimes[1];\n var schedule_type = null, schedule_period_value = null, schedule_period_unit = null;\n if (el && el.attr('xsi:type') === 'PIVL_TS') {\n var institutionSpecified = el.attr('institutionSpecified');\n if (institutionSpecified === 'true') {\n schedule_type= 'frequency';\n } else if (institutionSpecified === 'false') {\n schedule_type = 'interval';\n }\n \n el = el.tag('period');\n schedule_period_value = el.attr('value');\n schedule_period_unit = el.attr('unit');\n }\n \n el = entry.tag('manufacturedProduct').tag('code');\n var product_name = el.attr('displayName'),\n product_code = el.attr('code'),\n product_code_system = el.attr('codeSystem');\n \n var product_original_text = null;\n el = entry.tag('manufacturedProduct').tag('originalText');\n if (!el.isEmpty()) {\n product_original_text = Core.stripWhitespace(el.val());\n }\n // if we don't have a product name yet, try the originalText version\n if (!product_name && product_original_text) {\n product_name = product_original_text;\n }\n \n el = entry.tag('manufacturedProduct').tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = entry.tag('doseQuantity');\n var dose_value = el.attr('value'),\n dose_unit = el.attr('unit');\n \n el = entry.tag('rateQuantity');\n var rate_quantity_value = el.attr('value'),\n rate_quantity_unit = el.attr('unit');\n \n el = entry.tag('precondition').tag('value');\n var precondition_name = el.attr('displayName'),\n precondition_code = el.attr('code'),\n precondition_code_system = el.attr('codeSystem');\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.19').tag('value');\n var reason_name = el.attr('displayName'),\n reason_code = el.attr('code'),\n reason_code_system = el.attr('codeSystem');\n \n el = entry.tag('routeCode');\n var route_name = el.attr('displayName'),\n route_code = el.attr('code'),\n route_code_system = el.attr('codeSystem'),\n route_code_system_name = el.attr('codeSystemName');\n \n // participant/playingEntity => vehicle\n el = entry.tag('participant').tag('playingEntity');\n var vehicle_name = el.tag('name').val();\n \n el = el.tag('code');\n // prefer the code vehicle_name but fall back to the non-coded one\n vehicle_name = el.attr('displayName') || vehicle_name;\n var vehicle_code = el.attr('code'),\n vehicle_code_system = el.attr('codeSystem'),\n vehicle_code_system_name = el.attr('codeSystemName');\n \n el = entry.tag('administrationUnitCode');\n var administration_name = el.attr('displayName'),\n administration_code = el.attr('code'),\n administration_code_system = el.attr('codeSystem'),\n administration_code_system_name = el.attr('codeSystemName');\n \n // performer => prescriber\n el = entry.tag('performer');\n var prescriber_organization = el.tag('name').val(),\n prescriber_person = null;\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n text: sig,\n product: {\n name: product_name,\n code: product_code,\n code_system: product_code_system,\n text: product_original_text,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n }\n },\n dose_quantity: {\n value: dose_value,\n unit: dose_unit\n },\n rate_quantity: {\n value: rate_quantity_value,\n unit: rate_quantity_unit\n },\n precondition: {\n name: precondition_name,\n code: precondition_code,\n code_system: precondition_code_system\n },\n reason: {\n name: reason_name,\n code: reason_code,\n code_system: reason_code_system\n },\n route: {\n name: route_name,\n code: route_code,\n code_system: route_code_system,\n code_system_name: route_code_system_name\n },\n schedule: {\n type: schedule_type,\n period_value: schedule_period_value,\n period_unit: schedule_period_unit\n },\n vehicle: {\n name: vehicle_name,\n code: vehicle_code,\n code_system: vehicle_code_system,\n code_system_name: vehicle_code_system_name\n },\n administration: {\n name: administration_name,\n code: administration_code,\n code_system: administration_code_system,\n code_system_name: administration_code_system_name\n },\n prescriber: {\n organization: prescriber_organization,\n person: prescriber_person\n }\n });\n });\n \n return data;\n };\n}\n","/*\n * Parser for the CCDA problems section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.problems = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n \n var problems = ccda.section('problems');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Problems\";\n data.templateId = problems.tag('templateId').attr('root');\n data.text = problems.tag('text').val(true);\n \n problems.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var start_date = parseDate(el.tag('low').attr('value')),\n end_date = parseDate(el.tag('high').attr('value'));\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.4').tag('value');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.4').tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.6');\n var status = el.tag('value').attr('displayName');\n \n var age = null;\n el = entry.template('2.16.840.1.113883.10.20.22.4.31');\n if (!el.isEmpty()) {\n age = parseFloat(el.tag('value').attr('value'));\n }\n \n el = entry.template('2.16.840.1.113883.10.20.22.4.64');\n var comment = Core.stripWhitespace(el.tag('text').val());\n \n data.entries.push({\n date_range: {\n start: start_date,\n end: end_date\n },\n name: name,\n status: status,\n age: age,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n comment: comment\n });\n });\n \n return data;\n };\n}\n","/*\n * Parser for the CCDA procedures section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.procedures = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var procedures = ccda.section('procedures');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Procedures\";\n data.templateId = procedures.tag('templateId').attr('root');\n data.text = procedures.tag('text').val(true);\n \n procedures.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var date = parseDate(el.attr('value'));\n \n el = entry.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem');\n \n if (!name) {\n name = Core.stripWhitespace(entry.tag('originalText').val());\n }\n \n // 'specimen' tag not always present\n el = entry.tag('specimen').tag('code');\n var specimen_name = el.attr('displayName'),\n specimen_code = el.attr('code'),\n specimen_code_system = el.attr('codeSystem');\n \n el = entry.tag('performer').tag('addr');\n var organization = el.tag('name').val(),\n phone = el.tag('telecom').attr('value');\n \n var performer_dict = parseAddress(el);\n performer_dict.organization = organization;\n performer_dict.phone = phone;\n \n // participant => device\n el = entry.template('2.16.840.1.113883.10.20.22.4.37').tag('code');\n var device_name = el.attr('displayName'),\n device_code = el.attr('code'),\n device_code_system = el.attr('codeSystem');\n \n data.entries.push({\n date: date,\n name: name,\n code: code,\n code_system: code_system,\n specimen: {\n name: specimen_name,\n code: specimen_code,\n code_system: specimen_code_system\n },\n performer: performer_dict,\n device: {\n name: device_name,\n code: device_code,\n code_system: device_code_system\n }\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the CCDA results (labs) section\n */\n\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.results = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var results = ccda.section('results');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Results\";\n data.templateId = results.tag('templateId').attr('root');\n data.text = results.tag('text').val(true);\n \n results.entries().each(function(entry) {\n \n // panel\n el = entry.tag('code');\n var panel_name = el.attr('displayName'),\n panel_code = el.attr('code'),\n panel_code_system = el.attr('codeSystem'),\n panel_code_system_name = el.attr('codeSystemName');\n \n var observation;\n var tests = entry.elsByTag('observation');\n var tests_data = [];\n \n for (var i = 0; i < tests.length; i++) {\n observation = tests[i];\n \n var date = parseDate(observation.tag('effectiveTime').attr('value'));\n \n el = observation.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n if (!name) {\n name = Core.stripWhitespace(observation.tag('text').val());\n }\n \n el = observation.tag('translation');\n var translation_name = el.attr('displayName'),\n translation_code = el.attr('code'),\n translation_code_system = el.attr('codeSystem'),\n translation_code_system_name = el.attr('codeSystemName');\n \n el = observation.tag('value');\n var value = el.attr('value'),\n unit = el.attr('unit');\n // We could look for xsi:type=\"PQ\" (physical quantity) but it seems better\n // not to trust that that field has been used correctly...\n if (value && !isNaN(parseFloat(value))) {\n value = parseFloat(value);\n }\n if (!value) {\n value = el.val(); // look for free-text values\n }\n \n el = observation.tag('referenceRange');\n var reference_range_text = Core.stripWhitespace(el.tag('observationRange').tag('text').val()),\n reference_range_low_unit = el.tag('observationRange').tag('low').attr('unit'),\n reference_range_low_value = el.tag('observationRange').tag('low').attr('value'),\n reference_range_high_unit = el.tag('observationRange').tag('high').attr('unit'),\n reference_range_high_value = el.tag('observationRange').tag('high').attr('value');\n \n tests_data.push({\n date: date,\n name: name,\n value: value,\n unit: unit,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n translation: {\n name: translation_name,\n code: translation_code,\n code_system: translation_code_system,\n code_system_name: translation_code_system_name\n },\n reference_range: {\n text: reference_range_text,\n low_unit: reference_range_low_unit,\n low_value: reference_range_low_value,\n high_unit: reference_range_high_unit,\n high_value: reference_range_high_value,\n }\n });\n }\n \n data.entries.push({\n name: panel_name,\n code: panel_code,\n code_system: panel_code_system,\n code_system_name: panel_code_system_name,\n tests: tests_data\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the CCDA smoking status in social history section\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.smoking_status = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data, el;\n \n var name = null,\n code = null,\n code_system = null,\n code_system_name = null,\n entry_date = null;\n \n // We can parse all of the social_history sections,\n // but in practice, this section seems to be used for\n // smoking status, so we're just going to break that out.\n // And we're just looking for the first non-empty one.\n var social_history = ccda.section('social_history');\n var entries = social_history.entries();\n for (var i=0; i < entries.length; i++) {\n var entry = entries[i];\n \n var smoking_status = entry.template('2.16.840.1.113883.10.20.22.4.78');\n if (smoking_status.isEmpty()) {\n smoking_status = entry.template('2.16.840.1.113883.10.22.4.78');\n }\n if (smoking_status.isEmpty()) {\n continue;\n }\n \n el = smoking_status.tag('effectiveTime');\n entry_date = parseDate(el.attr('value'));\n \n el = smoking_status.tag('value');\n name = el.attr('displayName');\n code = el.attr('code');\n code_system = el.attr('codeSystem');\n code_system_name = el.attr('codeSystemName');\n \n if (name) {\n break;\n }\n }\n \n data = {\n date: entry_date,\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name\n };\n \n return data;\n }; \n}","/*\n * Parser for the CCDA vitals section\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.vitals = function (ccda) {\n \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var vitals = ccda.section('vitals');\n \n var data = {}, el;\n data.entries = [];\n data.displayName = \"Vitals\";\n data.templateId = vitals.tag('templateId').attr('root');\n data.text = vitals.tag('text').val(true);\n \n vitals.entries().each(function(entry) {\n \n el = entry.tag('effectiveTime');\n var entry_date = parseDate(el.attr('value'));\n \n var result;\n var results = entry.elsByTag('component');\n var results_data = [];\n \n for (var i = 0; i < results.length; i++) {\n result = results[i];\n \n el = result.tag('code');\n var name = el.attr('displayName'),\n code = el.attr('code'),\n code_system = el.attr('codeSystem'),\n code_system_name = el.attr('codeSystemName');\n \n el = result.tag('value');\n var value = parseFloat(el.attr('value')),\n unit = el.attr('unit');\n \n results_data.push({\n name: name,\n code: code,\n code_system: code_system,\n code_system_name: code_system_name,\n value: value,\n unit: unit\n });\n }\n \n data.entries.push({\n date: entry_date,\n results: results_data\n });\n });\n \n return data;\n };\n}","/*\n * Parser for the CCDAR2 document\n */\n\nvar ParseGenericInfo = require('./generic');\nvar Core = require('../core');\n\nvar DocumentParser = require('./ccdar2/document');\nvar DemographicsParser = require('./ccda/demographics');\nvar HealthConcernsParser = require('./ccdar2/health_concerns');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n self.documentParser = new DocumentParser(self.doc);\n self.demographicsParser = new DemographicsParser(self.doc);\n self.healthConcernsParser = new HealthConcernsParser(self.doc);\n\n self.run = function (ccda) { \n var data = {};\n \n data.document = self.documentParser.document(ccda);\n data.demographics = self.demographicsParser.demographics(ccda);\n data.health_concerns_document = self.healthConcernsParser.health_concerns_document(ccda);\n data.json = Core.json;\n \n // Decorate each section with Title, templateId and text and adds missing sections\n ParseGenericInfo(ccda, data);\n \n return data;\n };\n}\n","/*\n * Parser for the CCDAR2 document section\n */\nvar Core = require('../../core');\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.document = function (ccda) { \n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n var data = {}, el;\n \n var doc = ccda.section('document');\n var date = parseDate(doc.tag('effectiveTime').attr('value'));\n var title = Core.stripWhitespace(doc.tag('title').val());\n \n // Parse Doc Type Info\n var templates = doc.elsByTag('templateId');\n \n var rootTemplate = templates[0].attr('root');\n var secondTemplate;\n if(templates.length >1)\n secondTemplate = templates[1].attr('root');\n else\n secondTemplate = rootTemplate;\n \n var loinc = doc.tag('code').attr('code');\n var templateId = doc.tag('templateId').attr('root');\n var displayName = doc.tag('code').attr('displayName');\n \n var nonXml = doc.tag('nonXMLBody');\n var nonXmlNodes = nonXml.el.childNodes;\n \n var bodyType = \"structured\";\n var nonXmlBody = {\n type: \"\",\n mediaType: \"\",\n representation: \"\",\n rawText: \"\",\n reference: \"\"\n };\n if(nonXmlNodes && nonXmlNodes.length > 0) {\n bodyType = \"unstructured\";\n var text = nonXml.tag('text');\n var mediaType = \"\";\n var representation = \"\";\n var rawText = \"\";\n var reference = \"\";\n var type = \"\";\n \n // We have an embedded doc\n if(text && text.attr('mediaType')) {\n mediaType = text.attr('mediaType');\n representation = text.attr('representation');\n rawText = text.val();\n type = \"embedded\";\n }\n \n if(text && !mediaType) {\n reference = text.tag('reference').attr('value');\n type = \"reference\";\n }\n nonXmlBody = {\n type: type,\n mediaType: mediaType,\n representation: representation,\n rawText: rawText,\n reference: reference\n }\n }\n \n var docType = {\n type: \"CCDAR2\",\n rootTemplateId: rootTemplate,\n templateId: secondTemplate,\n displayName: displayName,\n loinc: loinc,\n bodyType: bodyType,\n nonXmlBody: nonXmlBody\n };\n \n var author = doc.tag('author');\n el = author.tag('assignedPerson').tag('name');\n var name_dict = parseName(el);\n \n el = author.tag('addr');\n var address_dict = parseAddress(el);\n \n el = author.tag('telecom');\n var work_phone = el.attr('value');\n \n var documentation_of_list = [];\n var performers = doc.tag('documentationOf').elsByTag('performer');\n for (var i = 0; i < performers.length; i++) {\n el = performers[i];\n var performer_name_dict = parseName(el);\n var performer_phone = el.tag('telecom').attr('value');\n var performer_addr = parseAddress(el.tag('addr'));\n documentation_of_list.push({\n name: performer_name_dict,\n phone: {\n work: performer_phone\n },\n address: performer_addr\n });\n }\n \n el = doc.tag('encompassingEncounter').tag('location');\n var location_name = Core.stripWhitespace(el.tag('name').val());\n var location_addr_dict = parseAddress(el.tag('addr'));\n \n var encounter_date = null;\n el = el.tag('effectiveTime');\n if (!el.isEmpty()) {\n encounter_date = parseDate(el.attr('value'));\n }\n \n data = {\n type: docType,\n date: date,\n title: title,\n author: {\n name: name_dict,\n address: address_dict,\n phone: {\n work: work_phone\n }\n },\n documentation_of: documentation_of_list,\n location: {\n name: location_name,\n address: location_addr_dict,\n encounter_date: encounter_date\n }\n };\n \n return data;\n };\n}","/*\n * Parser for the CCDAR2 Health Concerns Section\n * 2.16.840.1.113883.10.20.22.2.58\n */\n\nmodule.exports = function(doc) {\n var self = this;\n self.doc = doc;\n\n self.health_concerns_document = function (ccda) {\n var parseDate = self.doc.parseDate;\n var parseName = self.doc.parseName;\n var parseAddress = self.doc.parseAddress;\n \n // Helper to create each iterator for collection\n var each = function (callback) {\n for (var i = 0; i < this.length; i++) {\n callback(this[i]);\n }\n };\n \n var model = {}, el;\n model.entries = [];\n \n model.text = ccda.tag('text').val(true);\n \n var health_concerns = ccda.section('health_concerns_document');\n var title = health_concerns.tag('title').val();\n \n health_concerns.entries().each(function(entry) {\n \n var entryModel = {};\n // Parse out the ACT Body\n //A record of something that is being done, has been done, can be done, or is intended or requested to be done.\n var act = entry.tag('act');\n var er = act.elsByTag('entryRelationship');\n var templateId = act.tag('templateId').attr('root');\n var id = act.tag('id').attr('root');\n var statusCode = act.tag('statusCode').attr('code');\n var code = act.tag('code');\n var name = code.attr('displayName');\n var effectiveTime = parseDate(entry.tag('effectiveTime'));\n \n // The model we want to return in json\n var actModel = {\n effective_time: effectiveTime,\n name: name,\n entry_relationship:[]\n };\n \n // Parse Entity Relationship child nodes\n \n var ers = entry.elsByTag('entryRelationship');\n ers.each = each;\n \n ers.each(function(er){\n \n var erModel = {\n type_code : er.attr('typeCode'),\n observations : []\n };\n \n var obs = er.elsByTag('observation');\n obs.each = each;\n \n // Parse out Obsevations for Each ER\n obs.each(function(ob) {\n erModel.observations.push({\n class_code: ob.attr('classCode'),\n mood_code: ob.attr('moodCode'),\n display_name : ob.tag('value').attr('displayName'),\n status: ob.tag('statusCode').attr('code')\n });\n });\n \n actModel.entry_relationship.push(erModel);\n \n });\n \n // Add ACT Model to our final return model\n entryModel['act'] = actModel;\n model.entries.push(entryModel);\n });\n \n return model;\n }; \n}","/* Parses out basic data about each section */\n\nmodule.exports = function (ccda, data) {\n\n var each = function (callback) {\n for (var i = 0; i < this.length; i++) {\n callback(this[i]);\n }\n };\n\n var containsTemplateId = function(templateId, data) {\n for (var property in data) {\n if (data.hasOwnProperty(property)) {\n var p = data[property].templateId;\n //var display = this[property].displayName;\n if(p) {\n if(p === templateId) {\n //console.log(\"TemplateId Match \" + templateId + \" \" + display);\n return true;\n }\n }\n }\n }\n return false;\n };\n\n var allSections = ccda.elsByTag('section');\n allSections.each = each;\n\n allSections.each(function(s) {\n\n var code = s.tag('code').attr('displayName');\n var templateId = s.tag('templateId').attr('root');\n\n var existingTemplateId = containsTemplateId(templateId, data);\n\n if (code) {\n var nodeName = code.split(' ').join('_').toLowerCase();\n\n //console.log(\"NODE NAME \" + nodeName);\n\n if (!data[nodeName] && !existingTemplateId) {\n //console.log(\"CREATE NODE \" + code);\n data[nodeName] = {};\n }\n\n if(data[nodeName]) {\n data[nodeName].displayName = code;\n data[nodeName].templateId = templateId;\n data[nodeName].text = s.tag('text').val(true);\n }\n\n }\n });\n};","module.exports = require(\"@xmldom/xmldom\");","module.exports = require(\"lodash\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(376);\n",""],"names":["Core","require","Documents","Generators","Parsers","module","exports","source","opts","type","parsedData","parsedDocument","parseData","parser","documents","detect","parsers","C32","process","run","CCDA","CCDAR2","CCD","generatorType","template","testingMode","data","Codes","XML","_require","stripWhitespace","json","trim","charAt","parse","e","console","log","JSON","error","datePad","number","replacerFn","key","value","originalValue","Date","isNaN","getTime","_parsedWithTimeData","getHours","getMinutes","getSeconds","getMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getMonth","getDate","getFullYear","stringify","o","y","x","hasOwnProperty","Object","GENDER_MAP","MARITAL_STATUS_MAP","RELIGION_MAP","RACE_ETHNICITY_MAP","ROLE_MAP","PROBLEM_STATUS_MAP","invertKeys","obj","result","keys","i","length","lookupFnGenerator","map","reverseLookupFnGenerator","invertedMap","toLowerCase","gender","reverseGender","maritalStatus","reverseMaritalStatus","religion","reverseReligion","raceEthnicity","reverseRaceEthnicity","role","reverseRole","problemStatus","reverseProblemStatus","str","wrapElement","el","wrapElementHelper","currentEl","content","tag","immediateChildTag","elsByTag","attr","boolAttr","val","isEmpty","els","push","tagAttrVal","getElementsByTagName","getAttribute","templateId","emptyEl","parentNode","contentId","unescapeSpecialChars","s","replace","attrName","attrVal","rawAttr","html","childNodes","textContent","innerHTML","root","XMLSerializer","serializeToString","tagName","slice","docRoot","ownerDocument","contentTag","doc","createElement","xml","isNode","xmldom","DOMParser","parseFromString","window","ActiveXObject","async","loadXML","documentElement","global","document","_typeof","prototype","toString","call","DOMImplementation","createDocument","self","entries","parseDate","parseName","parseAddress","getEntries","each","callback","year","substr","month","parseInt","day","hour","min","secs","utcOffset","_utcOffsetFromString","_toInt","date","UTC","parseTimezoneChunker","parseTokenTimezone","string","possibleTzMatches","match","tzChunk","parts","minutes","argumentForCoercion","coercedNumber","isFinite","Math","floor","ceil","nameEl","prefix","given","family","addrEl","street","city","state","zip","country","section","c32","name","ccda","method","_","now","filename","bb","tagHelpers","ejs","helpers","codes","AllergiesParser","DemographicsParser","DocumentParser","EncountersParser","ImmunizationsParser","MedicationsParser","ProblemsParser","ProceduresParser","ResultsParser","VitalsParser","ParseGenericInfo","allergiesParser","demographicsParser","encountersParser","immunizationsParser","medicationsParser","problemsParser","proceduresParser","resultsParser","vitalsParser","allergies","demographics","encounters","parsedImmunizations","immunizations","administered","immunization_declines","declined","results","medications","problems","procedures","vitals","smoking_status","code","code_system","code_system_name","chief_complaint","text","care_plan","instructions","functional_statuses","displayName","entry","start_date","end_date","reaction_type_name","reaction_type_code","reaction_type_code_system","reaction_type_code_system_name","reaction_name","reaction_code","reaction_code_system","severity","allergen_name","allergen_code","allergen_code_system","allergen_code_system_name","status","date_range","start","end","reaction","reaction_type","allergen","patient","patient_name_dict","dob","marital_status","patient_address_dict","home","work","mobile","email","language","race","ethnicity","birthplace_dict","guardian_relationship","guardian_relationship_code","guardian_home","guardian_name_dict","guardian_address_dict","provider_organization","provider_phone","provider_address_dict","address","phone","birthplace","guardian","relationship","relationship_code","provider","organization","templates","rootTemplate","secondTemplate","loinc","nonXml","nonXmlNodes","bodyType","nonXmlBody","mediaType","representation","rawText","reference","docType","rootTemplateId","title","author","name_dict","address_dict","work_phone","documentation_of_list","performers","performer_name_dict","performer_phone","performer_addr","location_name","location_addr_dict","encounter_date","documentation_of","location","code_system_version","translation_name","translation_code","translation_code_system","translation_code_system_name","performer_name","performer_code","performer_code_system","performer_code_system_name","location_dict","findings","findingEls","translation","performer","administeredData","declinedData","product","product_name","product_code","product_code_system","product_code_system_name","lot_number","manufacturer_name","route_name","route_code","route_code_system","route_code_system_name","instructions_text","education_name","education_code","education_code_system","dose_value","dose_unit","dose_quantity","unit","route","education_type","effectiveTimes","schedule_type","schedule_period_value","schedule_period_unit","institutionSpecified","product_original_text","rate_quantity_value","rate_quantity_unit","precondition_name","precondition_code","precondition_code_system","reason_name","reason_code","reason_code_system","vehicle_name","vehicle_code","vehicle_code_system","vehicle_code_system_name","administration_name","administration_code","administration_code_system","administration_code_system_name","prescriber_organization","prescriber_person","rate_quantity","precondition","reason","schedule","period_value","period_unit","vehicle","administration","prescriber","person","age","parseFloat","comment","specimen_name","specimen_code","specimen_code_system","performer_dict","device_name","device_code","device_code_system","specimen","device","panel_date","panel_name","panel_code","panel_code_system","panel_code_system_name","observation","tests","tests_data","reference_range_text","reference_range_low_unit","reference_range_low_value","reference_range_high_unit","reference_range_high_value","reference_range","low_unit","low_value","high_unit","high_value","entry_date","results_data","j","HealthConcernsParser","documentParser","healthConcernsParser","health_concerns_document","CarePlanParser","FreeTextParser","FunctionalStatusesParser","InstructionsParser","SmokingStatusParser","carePlanParser","freeTextParser","functionalStatusesParser","instructionsParser","smokingStatusParser","free_text","time","effective_time","m","d","D","sectionName","statuses","sig","social_history","model","health_concerns","entryModel","act","er","id","statusCode","effectiveTime","actModel","entry_relationship","ers","erModel","type_code","observations","obs","ob","class_code","mood_code","display_name","containsTemplateId","property","p","allSections","existingTemplateId","nodeName","split","join"],"sourceRoot":""}
|