-
Notifications
You must be signed in to change notification settings - Fork 0
/
pharmajs-parser.js
1 lines (1 loc) · 10.5 KB
/
pharmajs-parser.js
1
module.exports=function(){"use strict";function t(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function e(t,r,n,i){this.message=t,this.expected=r,this.found=n,this.location=i,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,e)}function r(t){function r(){return t.substring(ve,fe)}function n(e){throw l(e,null,t.substring(ve,fe),u(ve,fe))}function i(e){var r,n,i=ye[e];if(i)return i;for(r=e-1;!ye[r];)r--;for(i=ye[r],i={line:i.line,column:i.column,seenCR:i.seenCR};e>r;)n=t.charAt(r),"\n"===n?(i.seenCR||i.line++,i.column=1,i.seenCR=!1):"\r"===n||"\u2028"===n||"\u2029"===n?(i.line++,i.column=1,i.seenCR=!0):(i.column++,i.seenCR=!1),r++;return ye[e]=i,i}function u(t,e){var r=i(t),n=i(e);return{start:{offset:t,line:r.line,column:r.column},end:{offset:e,line:n.line,column:n.column}}}function s(t){ge>fe||(fe>ge&&(ge=fe,me=[]),me.push(t))}function l(t,r,n,i){function u(t){var e=1;for(t.sort(function(t,e){return t.description<e.description?-1:t.description>e.description?1:0});e<t.length;)t[e-1]===t[e]?t.splice(e,1):e++}function s(t,e){function r(t){function e(t){return t.charCodeAt(0).toString(16).toUpperCase()}return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(t){return"\\x0"+e(t)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(t){return"\\x"+e(t)}).replace(/[\u0100-\u0FFF]/g,function(t){return"\\u0"+e(t)}).replace(/[\u1000-\uFFFF]/g,function(t){return"\\u"+e(t)})}var n,i,u,s=new Array(t.length);for(u=0;u<t.length;u++)s[u]=t[u].description;return n=t.length>1?s.slice(0,-1).join(", ")+" or "+s[t.length-1]:s[0],i=e?'"'+r(e)+'"':"end of input","Expected "+n+" but "+i+" found."}return null!==r&&u(r),new e(null!==t?t:s(r,n),r,n,i)}function a(){var t,e,r,n,i,u,s;return t=fe,e=C(),e!==q?(r=o(),r!==q?(n=c(),n!==q?(i=f(),i!==q?(u=v(),u===q&&(u=null),u!==q?(s=C(),s!==q?(ve=t,e=k(r,n,i,u),t=e):(fe=t,t=q)):(fe=t,t=q)):(fe=t,t=q)):(fe=t,t=q)):(fe=t,t=q)):(fe=t,t=q),t}function o(){var e,r,n;if(be++,e=fe,r=[],S.test(t.charAt(fe))?(n=t.charAt(fe),fe++):(n=q,0===be&&s(I)),n!==q)for(;n!==q;)r.push(n),S.test(t.charAt(fe))?(n=t.charAt(fe),fe++):(n=q,0===be&&s(I));else r=q;return r!==q&&(ve=e,r=T(r)),e=r,be--,e===q&&(r=q,0===be&&s(E)),e}function c(){var t,e,r,n,i,u;return be++,t=fe,e=C(),e!==q?(r=m(),r!==q?(n=C(),n!==q?(i=g(),i!==q?(u=p(),u===q&&(u=null),u!==q?(ve=t,e=M(r,i,u),t=e):(fe=t,t=q)):(fe=t,t=q)):(fe=t,t=q)):(fe=t,t=q)):(fe=t,t=q),be--,t===q&&(e=q,0===be&&s(z)),t}function p(){var t,e,r;return t=fe,e=h(),e!==q?(r=d(),r===q&&(r=null),r!==q?(ve=t,e=O(e,r),t=e):(fe=t,t=q)):(fe=t,t=q),t===q&&(t=fe,e=d(),e!==q&&(ve=t,e=P(e)),t=e),t}function d(){var e,r,n;return e=fe,47===t.charCodeAt(fe)?(r=U,fe++):(r=q,0===be&&s(V)),r!==q?(n=y(),n!==q?(ve=e,r=Z(n),e=r):(fe=e,e=q)):(fe=e,e=q),e}function h(){var e,r,n;return e=fe,47===t.charCodeAt(fe)?(r=U,fe++):(r=q,0===be&&s(V)),r!==q?(n=g(),n!==q?(ve=e,r=Z(n),e=r):(fe=e,e=q)):(fe=e,e=q),e}function f(){var e,r,n;return e=fe,r=A(),r!==q?(t.substr(fe,2)===N?(n=N,fe+=2):(n=q,0===be&&s(W)),n===q&&(t.substr(fe,2)===j?(n=j,fe+=2):(n=q,0===be&&s(B)),n===q&&(t.substr(fe,2)===L?(n=L,fe+=2):(n=q,0===be&&s(D)),n===q&&(t.substr(fe,2)===G?(n=G,fe+=2):(n=q,0===be&&s(H))))),n!==q?(ve=e,r=J(n),e=r):(fe=e,e=q)):(fe=e,e=q),e}function v(){var e,r,n,i,u,l;return e=fe,r=A(),r!==q?(n=fe,113===t.charCodeAt(fe)?(i=K,fe++):(i=q,0===be&&s(Q)),i!==q?(u=m(),u!==q?(l=y(),l!==q?(i=[i,u,l],n=i):(fe=n,n=q)):(fe=n,n=q)):(fe=n,n=q),n!==q?(ve=e,r=X(u,l),e=r):(fe=e,e=q)):(fe=e,e=q),e===q&&(e=fe,r=A(),r!==q?(t.substr(fe,2)===Y?(n=Y,fe+=2):(n=q,0===be&&s($)),n===q&&(t.substr(fe,2)===_?(n=_,fe+=2):(n=q,0===be&&s(tt)),n===q&&(t.substr(fe,3)===et?(n=et,fe+=3):(n=q,0===be&&s(rt)),n===q&&(t.substr(fe,3)===nt?(n=nt,fe+=3):(n=q,0===be&&s(it)),n===q&&(t.substr(fe,3)===ut?(n=ut,fe+=3):(n=q,0===be&&s(st)),n===q&&(t.substr(fe,2)===lt?(n=lt,fe+=2):(n=q,0===be&&s(at)),n===q&&(t.substr(fe,5)===ot?(n=ot,fe+=5):(n=q,0===be&&s(ct)))))))),n!==q?(ve=e,r=pt(n),e=r):(fe=e,e=q)):(fe=e,e=q)),e}function y(){var e;return t.substr(fe,7)===dt?(e=dt,fe+=7):(e=q,0===be&&s(ht)),e===q&&(t.substr(fe,6)===ft?(e=ft,fe+=6):(e=q,0===be&&s(vt)),e===q&&(t.substr(fe,4)===yt?(e=yt,fe+=4):(e=q,0===be&&s(gt)),e===q&&(t.substr(fe,3)===mt?(e=mt,fe+=3):(e=q,0===be&&s(bt)),e===q&&(115===t.charCodeAt(fe)?(e=At,fe++):(e=q,0===be&&s(Ct)),e===q&&(t.substr(fe,7)===xt?(e=xt,fe+=7):(e=q,0===be&&s(wt)),e===q&&(t.substr(fe,6)===qt?(e=qt,fe+=6):(e=q,0===be&&s(Ft)),e===q&&(t.substr(fe,4)===Rt?(e=Rt,fe+=4):(e=q,0===be&&s(kt)),e===q&&(t.substr(fe,3)===Et?(e=Et,fe+=3):(e=q,0===be&&s(St)),e===q&&(109===t.charCodeAt(fe)?(e=It,fe++):(e=q,0===be&&s(Tt)),e===q&&(t.substr(fe,5)===zt?(e=zt,fe+=5):(e=q,0===be&&s(Mt)),e===q&&(t.substr(fe,4)===Ot?(e=Ot,fe+=4):(e=q,0===be&&s(Pt)),e===q&&(t.substr(fe,3)===Ut?(e=Ut,fe+=3):(e=q,0===be&&s(Vt)),e===q&&(t.substr(fe,2)===Zt?(e=Zt,fe+=2):(e=q,0===be&&s(Nt)),e===q&&(104===t.charCodeAt(fe)?(e=Wt,fe++):(e=q,0===be&&s(jt)),e===q&&(t.substr(fe,4)===Bt?(e=Bt,fe+=4):(e=q,0===be&&s(Lt)),e===q&&(t.substr(fe,3)===Dt?(e=Dt,fe+=3):(e=q,0===be&&s(Gt)),e===q&&(100===t.charCodeAt(fe)?(e=Ht,fe++):(e=q,0===be&&s(Jt))))))))))))))))))),e}function g(){var e;return t.substr(fe,2)===Kt?(e=Kt,fe+=2):(e=q,0===be&&s(Qt)),e===q&&(t.substr(fe,3)===Xt?(e=Xt,fe+=3):(e=q,0===be&&s(Yt)),e===q&&(t.substr(fe,2)===$t?(e=$t,fe+=2):(e=q,0===be&&s(_t)),e===q&&(103===t.charCodeAt(fe)?(e=te,fe++):(e=q,0===be&&s(ee)),e===q&&(t.substr(fe,2)===re?(e=re,fe+=2):(e=q,0===be&&s(ne)))))),e}function m(){var e,r,n,i,u;return be++,e=fe,r=b(),r!==q?(n=fe,46===t.charCodeAt(fe)?(i=ue,fe++):(i=q,0===be&&s(se)),i!==q?(u=b(),u!==q?(i=[i,u],n=i):(fe=n,n=q)):(fe=n,n=q),n===q&&(n=null),n!==q?(ve=e,r=le(),e=r):(fe=e,e=q)):(fe=e,e=q),be--,e===q&&(r=q,0===be&&s(ie)),e}function b(){var e,r,n;if(e=fe,r=[],ae.test(t.charAt(fe))?(n=t.charAt(fe),fe++):(n=q,0===be&&s(oe)),n!==q)for(;n!==q;)r.push(n),ae.test(t.charAt(fe))?(n=t.charAt(fe),fe++):(n=q,0===be&&s(oe));else r=q;return r!==q&&(ve=e,r=ce(r)),e=r}function A(){var e,r;if(be++,e=[],de.test(t.charAt(fe))?(r=t.charAt(fe),fe++):(r=q,0===be&&s(he)),r!==q)for(;r!==q;)e.push(r),de.test(t.charAt(fe))?(r=t.charAt(fe),fe++):(r=q,0===be&&s(he));else e=q;return be--,e===q&&(r=q,0===be&&s(pe)),e}function C(){var e,r;for(be++,e=[],de.test(t.charAt(fe))?(r=t.charAt(fe),fe++):(r=q,0===be&&s(he));r!==q;)e.push(r),de.test(t.charAt(fe))?(r=t.charAt(fe),fe++):(r=q,0===be&&s(he));return be--,e===q&&(r=q,0===be&&s(pe)),e}var x,w=arguments.length>1?arguments[1]:{},q={},F={start:a},R=a,k=function(t,e,r,i){var u={medicationName:t.toLowerCase(),route:r,dosing:e,interval:i};return u.interval=null===u.dosing.infusionTime?u.interval:null,null===u.interval&null===u.dosing.infusionTime&&n("No interval or infusion dosing specified."),u},E={type:"other",description:"drug name"},S=/^[a-zA-Z\- ]/,I={type:"class",value:"[a-zA-Z\\- ]",description:"[a-zA-Z\\- ]"},T=function(t){return r().trim()},z={type:"other",description:"drug dose"},M=function(t,e,r){var n={quantity:{scalar:parseFloat(t),unit:Ce[e]}};return null===r?(n.perWeightUnits=null,n.infusionTime=null):(n.perWeightUnits=null===r.weight?null:Ce[r.weight],n.infusionTime=null===r.time?null:Ae[r.time]),n},O=function(t,e){return{weight:t,time:e}},P=function(t){return{weight:null,time:t}},U="/",V={type:"literal",value:"/",description:'"/"'},Z=function(t){return t},N="IM",W={type:"literal",value:"IM",description:'"IM"'},j="IV",B={type:"literal",value:"IV",description:'"IV"'},L="PO",D={type:"literal",value:"PO",description:'"PO"'},G="SC",H={type:"literal",value:"SC",description:'"SC"'},J=function(t){return t},K="q",Q={type:"literal",value:"q",description:'"q"'},X=function(t,e){return parseInt(t)*Ae[e]},Y="qd",$={type:"literal",value:"qd",description:'"qd"'},_="od",tt={type:"literal",value:"od",description:'"od"'},et="bid",rt={type:"literal",value:"bid",description:'"bid"'},nt="tid",it={type:"literal",value:"tid",description:'"tid"'},ut="qid",st={type:"literal",value:"qid",description:'"qid"'},lt="ac",at={type:"literal",value:"ac",description:'"ac"'},ot="daily",ct={type:"literal",value:"daily",description:'"daily"'},pt=function(t){return xe[t]},dt="seconds",ht={type:"literal",value:"seconds",description:'"seconds"'},ft="second",vt={type:"literal",value:"second",description:'"second"'},yt="secs",gt={type:"literal",value:"secs",description:'"secs"'},mt="sec",bt={type:"literal",value:"sec",description:'"sec"'},At="s",Ct={type:"literal",value:"s",description:'"s"'},xt="minutes",wt={type:"literal",value:"minutes",description:'"minutes"'},qt="minute",Ft={type:"literal",value:"minute",description:'"minute"'},Rt="mins",kt={type:"literal",value:"mins",description:'"mins"'},Et="min",St={type:"literal",value:"min",description:'"min"'},It="m",Tt={type:"literal",value:"m",description:'"m"'},zt="hours",Mt={type:"literal",value:"hours",description:'"hours"'},Ot="hour",Pt={type:"literal",value:"hour",description:'"hour"'},Ut="hrs",Vt={type:"literal",value:"hrs",description:'"hrs"'},Zt="hr",Nt={type:"literal",value:"hr",description:'"hr"'},Wt="h",jt={type:"literal",value:"h",description:'"h"'},Bt="days",Lt={type:"literal",value:"days",description:'"days"'},Dt="day",Gt={type:"literal",value:"day",description:'"day"'},Ht="d",Jt={type:"literal",value:"d",description:'"d"'},Kt="ng",Qt={type:"literal",value:"ng",description:'"ng"'},Xt="mcg",Yt={type:"literal",value:"mcg",description:'"mcg"'},$t="mg",_t={type:"literal",value:"mg",description:'"mg"'},te="g",ee={type:"literal",value:"g",description:'"g"'},re="kg",ne={type:"literal",value:"kg",description:'"kg"'},ie={type:"other",description:"number"},ue=".",se={type:"literal",value:".",description:'"."'},le=function(){return r()},ae=/^[0-9]/,oe={type:"class",value:"[0-9]",description:"[0-9]"},ce=function(t){return r()},pe={type:"other",description:"space"},de=/^[ \t\r\n]/,he={type:"class",value:"[ \\t\\r\\n]",description:"[ \\t\\r\\n]"},fe=0,ve=0,ye=[{line:1,column:1,seenCR:!1}],ge=0,me=[],be=0;if("startRule"in w){if(!(w.startRule in F))throw new Error("Can't start parsing from rule \""+w.startRule+'".');R=F[w.startRule]}var Ae={seconds:1,second:1,sec:1,s:1,minutes:60,minute:60,min:60,m:60,hours:3600,hour:3600,hr:3600,h:3600,days:86400,day:86400,d:86400,weeks:604800,week:604800,wk:604800,w:604800},Ce={ng:1e-9,mcg:1e-6,mg:.001,g:1,kg:1e3},xe={daily:86400,od:86400,qd:86400,bid:43200,tid:28800,qid:21600,ac:28800};if(x=R(),x!==q&&fe===t.length)return x;throw x!==q&&fe<t.length&&s({type:"end",description:"end of input"}),l(null,me,ge<t.length?t.charAt(ge):null,ge<t.length?u(ge,ge+1):u(ge,ge))}return t(e,Error),{SyntaxError:e,parse:r}}();