3 var moment = require("moment");
4 var bbm = require("../../oe-blue-button-meta");
6 var css = bbm.code_systems;
8 exports.codeFromName = function (OID) {
9 return function (input) {
10 var cs = css.find(OID);
11 var code = cs ? cs.displayNameCode(input) : undefined;
12 var systemInfo = cs.systemId(OID);
16 "codeSystem": systemInfo.codeSystem,
17 "codeSystemName": systemInfo.codeSystemName
22 exports.code = function (input) {
25 result.code = input.code;
29 result.displayName = input.name;
32 var code_system = input.code_system || (input.code_system_name && css.findFromName(input.code_system_name));
34 result.codeSystem = code_system;
37 if (input.code_system_name) {
38 result.codeSystemName = input.code_system_name;
44 var precisionToFormat = {
49 minute: 'YYYYMMDDHHMM',
50 second: 'YYYYMMDDHHmmss',
51 subsecond: 'YYYYMMDDHHmmss.SSS'
54 exports.time = function (input) {
55 var m = moment.parseZone(input.date);
56 /*if (m._isValid !== true) {
59 var formatSpec = precisionToFormat[input.precision];
60 var result = m.format(formatSpec);
64 var acronymize = exports.acronymize = function (string) {
65 var ret = string.split(" ");
66 var fL = ret[0].slice(0, 1);
67 var lL = ret[1].slice(0, 1);
68 fL = fL.toUpperCase();
69 lL = lL.toUpperCase();
83 exports.telecom = function (input) {
84 var transformPhones = function (input) {
85 var phones = input.phone;
87 return phones.reduce(function (r, phone) {
88 if (phone && phone.number) {
90 value: "tel:" + phone.number
93 attrs.use = acronymize(phone.type);
104 var transformEmails = function (input) {
105 var emails = input.email;
107 return emails.reduce(function (r, email) {
108 if (email && email.address) {
110 value: "mailto:" + email.address
113 attrs.use = acronymize(email.type);
124 var result = [].concat(transformPhones(input), transformEmails(input));
125 return result.length === 0 ? null : result;
128 var nameSingle = function (input) {
131 given = [input.first];
132 if (input.middle && input.middle[0]) {
133 given.push(input.middle[0]);
137 prefix: input.prefix,
144 exports.name = function (input) {
145 if (Array.isArray(input)) {
146 return input.map(function (e) {
147 return nameSingle(e);
150 return nameSingle(input);