3 var bbu = require("../../oe-blue-button-util");
5 var fieldLevel = require("./fieldLevel");
6 var entryLevel = require("./entryLevel");
7 var leafLevel = require('./leafLevel');
8 var contentModifier = require("./contentModifier");
10 var required = contentModifier.required;
11 var bbud = bbu.datetime;
12 var bbuo = bbu.object;
14 var nda = "No Data Available";
16 var condition = require('./condition');
18 var getText = function (topArrayKey, headers, values) {
21 existsWhen: condition.keyExists(topArrayKey),
45 var headerTarget = result.content[0].content[0].content[0].content;
46 headers.forEach(function (header) {
51 headerTarget.push(element);
53 var valueTarget = result.content[0].content[1].content[0].content;
54 values.forEach(function (value) {
56 if (typeof value !== 'function') {
57 data = leafLevel.deepInputProperty(value, "");
66 valueTarget.push(element);
71 /*var alllergiesTextHeaders = ["Substance", "Overall Severity", "Reaction", "Reaction Severity", "Status"];
72 var allergiesTextRow = [
73 leafLevel.deepInputProperty("observation.allergen.name", ""),
74 leafLevel.deepInputProperty("observation.severity.code.name", ""),
75 leafLevel.deepInputProperty("observation.reactions.0.reaction.name", ""),
76 leafLevel.deepInputProperty("observation.reactions.0.severity.code.name", ""),
77 leafLevel.deepInputProperty("observation.status.name", "")
80 exports.allergiesSectionEntriesRequired = function (htmlHeader, na) {
86 fieldLevel.templateIdExt("2.16.840.1.113883.10.20.22.2.6.1", "2015-08-01"),
87 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.6.1"),
88 fieldLevel.templateCode("AllergiesSection"),
89 fieldLevel.templateTitle("AllergiesSection"), {
92 existsWhen: condition.keyDoesntExist("allergies")
101 [entryLevel.allergyProblemAct, required]
103 dataKey: "allergies",
111 /*var medicationsTextHeaders = ["Medication Class", "# fills", "Last fill date"];
112 var medicationsTextRow = [ // Name, did not find class in the medication blue-button-data
114 var value = bbuo.deepValue(input, 'product.product.name');
115 if (!bbuo.exists(value)) {
116 value = bbuo.deepValue(input, 'product.unencoded_name');
118 if (!bbuo.exists(value)) {
124 leafLevel.deepInputProperty("supply.repeatNumber", ""),
125 leafLevel.deepInputDate("supply.date_time.point", "")
128 exports.medicationsSectionEntriesRequired = function (htmlHeader, na) {
134 fieldLevel.templateIdExt("2.16.840.1.113883.10.20.22.2.1.1", "2014-06-09"),
135 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.1.1"),
136 fieldLevel.templateCode("MedicationsSection"),
137 fieldLevel.templateTitle("MedicationsSection"), {
140 existsWhen: condition.keyDoesntExist("medications")
149 [entryLevel.medicationActivity, required]
151 dataKey: "medications",
159 exports.problemsSectionEntriesRequired = function (htmlHeader, na) {
165 fieldLevel.templateIdExt("2.16.840.1.113883.10.20.22.2.5.1", "2015-08-01"),
166 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.5.1"),
167 fieldLevel.templateCode("ProblemSection"),
168 fieldLevel.templateTitle("ProblemSection"), {
171 existsWhen: condition.keyDoesntExist("problems")
180 [entryLevel.problemConcernAct, required]
186 existsWhen: condition.keyExists("problems_comment"),
194 fieldLevel.templateId("2.16.840.1.113883.10.20.22.4.64"),
195 fieldLevel.templateCode("CommentActivity"), {
197 text: leafLevel.deepInputProperty("problems_comment")
202 dataKey: "demographics.meta"
209 exports.proceduresSectionEntriesRequired = function (htmlHeader, na) {
215 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.7"),
216 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.7.1"),
217 fieldLevel.templateCode("ProceduresSection"),
218 fieldLevel.templateTitle("ProceduresSection"), {
221 existsWhen: condition.keyDoesntExist("procedures")
227 "typeCode": function (input) {
228 return input.procedure_type === "procedure" ? "DRIV" : null;
232 entryLevel.procedureActivityAct,
233 entryLevel.procedureActivityProcedure,
234 entryLevel.procedureActivityObservation
236 dataKey: "procedures"
246 exports.resultsSectionEntriesRequired = function (htmlHeader, na) {
252 fieldLevel.templateIdExt("2.16.840.1.113883.10.20.22.2.3.1", "2015-08-01"),
253 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.3.1"),
254 fieldLevel.templateCode("ResultsSection"),
255 fieldLevel.templateTitle("ResultsSection"), {
258 existsWhen: condition.keyDoesntExist("results")
267 [entryLevel.resultOrganizer, required]
277 exports.encountersSectionEntriesOptional = function (htmlHeader, na) {
283 fieldLevel.templateIdExt("2.16.840.1.113883.10.20.22.2.22.1", "2015-08-01"),
284 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.22.1"),
285 fieldLevel.templateCode("EncountersSection"),
286 fieldLevel.templateTitle("EncountersSection"), {
289 existsWhen: condition.keyDoesntExist("encounters")
298 [entryLevel.encounterActivities, required]
300 dataKey: "encounters"
307 exports.immunizationsSectionEntriesOptional = function (htmlHeader, na) {
313 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.2"),
314 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.2.1"),
315 fieldLevel.templateCode("ImmunizationsSection"),
316 fieldLevel.templateTitle("ImmunizationsSection"), {
319 existsWhen: condition.keyDoesntExist("immunizations")
328 [entryLevel.immunizationActivity, required]
330 dataKey: "immunizations"
337 exports.payersSection = function (htmlHeader, na) {
343 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.18"),
344 fieldLevel.templateCode("PayersSection"),
345 fieldLevel.templateTitle("PayersSection"), {
348 existsWhen: condition.keyDoesntExist("payers")
357 [entryLevel.coverageActivity, required]
366 exports.planOfCareSection = function (htmlHeader, na) {
372 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.10"),
373 fieldLevel.templateCode("PlanOfCareSection"),
374 fieldLevel.templateTitle("PlanOfCareSection"), {
377 existsWhen: condition.keyDoesntExist("plan_of_care")
383 "typeCode": function (input) {
384 return input.type === "observation" ? "DRIV" : null;
388 entryLevel.planOfCareActivityAct,
389 entryLevel.planOfCareActivityObservation,
390 entryLevel.planOfCareActivityProcedure,
391 entryLevel.planOfCareActivityEncounter,
392 entryLevel.planOfCareActivitySubstanceAdministration,
393 entryLevel.planOfCareActivitySupply,
394 entryLevel.planOfCareActivityInstructions
396 dataKey: "plan_of_care"
403 exports.socialHistorySection = function (htmlHeader, na) {
409 fieldLevel.templateIdExt("2.16.840.1.113883.10.20.22.2.17", "2015-08-01"),
410 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.17"),
411 fieldLevel.templateCode("SocialHistorySection"),
412 fieldLevel.templateTitle("SocialHistorySection"), {
415 existsWhen: condition.keyDoesntExist("social_history")
423 content: [entryLevel.smokingStatusObservation],
424 dataKey: "social_history"
430 content: [entryLevel.genderStatusObservation],
431 dataKey: "social_history"
437 content: [entryLevel.socialHistoryObservation],
438 existsWhen: function (input) {
439 return (!input.value) || input.value.indexOf("smoke") < 0;
441 dataKey: "social_history"
446 "pregnancyObservation",
452 exports.vitalSignsSectionEntriesOptional = function (htmlHeader, na) {
458 fieldLevel.templateIdExt("2.16.840.1.113883.10.20.22.2.4.1", "2015-08-01"),
459 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.4.1"),
460 fieldLevel.templateCode("VitalSignsSection"),
461 fieldLevel.templateTitle("VitalSignsSection"), {
464 existsWhen: condition.keyDoesntExist("vitals")
473 [entryLevel.vitalSignsOrganizer, required]
482 exports.medicalEquipmentSectionEntriesOptional = function (htmlHeader, na) {
488 fieldLevel.templateIdExt("2.16.840.1.113883.10.20.22.2.23", "2014-06-09"),
489 fieldLevel.templateId("2.16.840.1.113883.10.20.22.2.23"),
490 fieldLevel.templateCode("MedicalEquipmentSection"),
491 fieldLevel.templateTitle("MedicalEquipmentSection"), {
494 existsWhen: condition.keyDoesntExist("medical_devices")
500 entryLevel.medicalDeviceActivityProcedure,
502 dataKey: "medical_devices"