fhirformjs
Version:
FHIR Questionnaire To Form Converter for rendering
3 lines (2 loc) • 9.3 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e,n=require("@ahryman40k/ts-fhir-types"),t=require("uuidv4"),r=require("axios");function i(e,n,t,r,i,o,u){try{var a=e[o](u),l=a.value}catch(e){return void t(e)}a.done?n(l):Promise.resolve(l).then(r,i)}function o(e){return function(){var n=this,t=arguments;return new Promise((function(r,o){var u=e.apply(n,t);function a(e){i(u,r,o,a,l,"next",e)}function l(e){i(u,r,o,a,l,"throw",e)}a(void 0)}))}}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},u.apply(null,arguments)}function a(){var e,n,t="function"==typeof Symbol?Symbol:{},r=t.iterator||"@@iterator",i=t.toStringTag||"@@toStringTag";function o(t,r,i,o){var a=Object.create((r&&r.prototype instanceof s?r:s).prototype);return l(a,"_invoke",function(t,r,i){var o,a,l,s=0,c=i||[],d=!1,v={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(n,t){return o=n,a=0,l=e,v.n=t,u}};function p(t,r){for(a=t,l=r,n=0;!d&&s&&!i&&n<c.length;n++){var i,o=c[n],p=v.p,f=o[2];t>3?(i=f===r)&&(a=o[4]||3,l=o[5]===e?o[3]:o[5],o[4]=3,o[5]=e):o[0]<=p&&((i=t<2&&p<o[1])?(a=0,v.v=r,v.n=o[1]):p<f&&(i=t<3||o[0]>r||r>f)&&(o[4]=t,o[5]=r,v.n=f,a=0))}if(i||t>1)return u;throw d=!0,r}return function(i,c,f){if(s>1)throw TypeError("Generator is already running");for(d&&1===c&&p(c,f),a=c,l=f;(n=a<2?e:l)||!d;){o||(a?a<3?(a>1&&(v.n=-1),p(a,l)):v.n=l:v.v=l);try{if(s=2,o){if(a||(i="next"),n=o[i]){if(!(n=n.call(o,l)))throw TypeError("iterator result is not an object");if(!n.done)return n;l=n.value,a<2&&(a=0)}else 1===a&&(n=o.return)&&n.call(o),a<2&&(l=TypeError("The iterator does not provide a '"+i+"' method"),a=1);o=e}else if((n=(d=v.n<0)?l:t.call(r,v))!==u)break}catch(n){o=e,a=1,l=n}finally{s=1}}return{value:n,done:d}}}(t,i,o),!0),a}var u={};function s(){}function c(){}function d(){}n=Object.getPrototypeOf;var v=[][r]?n(n([][r]())):(l(n={},r,(function(){return this})),n),p=d.prototype=s.prototype=Object.create(v);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,d):(e.__proto__=d,l(e,i,"GeneratorFunction")),e.prototype=Object.create(p),e}return c.prototype=d,l(p,"constructor",d),l(d,"constructor",c),c.displayName="GeneratorFunction",l(d,i,"GeneratorFunction"),l(p),l(p,i,"Generator"),l(p,r,(function(){return this})),l(p,"toString",(function(){return"[object Generator]"})),(a=function(){return{w:o,m:f}})()}function l(e,n,t,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}l=function(e,n,t,r){if(n)i?i(e,n,{value:t,enumerable:!r,configurable:!r,writable:!r}):e[n]=t;else{function o(n,t){l(e,n,(function(e){return this._invoke(n,t,e)}))}o("next",0),o("throw",1),o("return",2)}},l(e,n,t,r)}var s=function(e){var n=c(e),t=d(e);return""!==t?u({},n,t):n},c=function(e){var n;return{type:f(e),title:null==(n=e.text)?void 0:n.toString()}},d=function(e){var n=[],t=[];if(void 0!==e.answerOption){var r,i;null==(r=e.answerOption)||r.forEach((function(r,i){var o,u,a=void 0===r.valueCoding?"":"integer"===f(e)?r.valueCoding.code&&parseInt(r.valueCoding.code):null==(o=r.valueCoding.code)?void 0:o.toString();n.push(void 0===a?"":a);var l=null==(u=r.valueCoding)||null==(u=u.display)?void 0:u.toString();void 0!==l&&t.push(l)}));var o={enum:n,enumNames:t},a=(e.extension||[])[0],l=((null==a||null==(i=a.valueCodeableConcept)?void 0:i.coding)||[])[0];return(null==l?void 0:l.code)===h?{uniqueItems:!0,items:u({type:"string"},o)}:o}return""},v=function(e){if(e.type===n.R4.Questionnaire_ItemTypeKind._date||e.type===n.R4.Questionnaire_ItemTypeKind._dateTime||e.type===n.R4.Questionnaire_ItemTypeKind._time)return"datetime";if(e.type==n.R4.Questionnaire_ItemTypeKind._choice||e.type==n.R4.Questionnaire_ItemTypeKind._openChoice||e.type==n.R4.Questionnaire_ItemTypeKind._integer){var t,r=(e.extension||[])[0],i=((null==r||null==(t=r.valueCodeableConcept)?void 0:t.coding)||[])[0];if(null!=i&&i.code&&_[null==i?void 0:i.code])return _[null==i?void 0:i.code]}return""},p=function(e){var n=e.extension;return null==n?void 0:n.reduce((function(e,n){var t,r,i=null==n||null==(t=n.url)?void 0:t.split("/");switch(i&&i[i.length-1]){case"questionnaire-unit":e.unit=null==n||null==(r=n.valueCoding)?void 0:r.display;break;case"questionnaire-sliderStepValue":e.step=null==n?void 0:n.valueInteger;break;case"minValue":e.min=null==n?void 0:n.valueInteger;break;case"maxValue":e.max=null==n?void 0:n.valueInteger}return e}),{})},f=function(e){if(e.type==n.R4.Questionnaire_ItemTypeKind._choice||e.type==n.R4.Questionnaire_ItemTypeKind._openChoice){var t,r=(e.extension||[])[0],i=((null==r||null==(t=r.valueCodeableConcept)?void 0:t.coding)||[])[0];if((null==i?void 0:i.code)===h)return"array";if((null==i?void 0:i.code)===g)return"integer"}return e.type===n.R4.Questionnaire_ItemTypeKind._boolean?"boolean":e.type==n.R4.Questionnaire_ItemTypeKind._decimal?"number":e.type==n.R4.Questionnaire_ItemTypeKind._integer?"integer":"string"},y=function(e){var t,r={linkId:e.linkId,text:e.text,answer:[]},i=m(function(e){switch(e.type){case n.R4.Questionnaire_ItemTypeKind._date:return"item.answer[0].valueDate";case n.R4.Questionnaire_ItemTypeKind._time:return"item.answer[0].valueTime";case n.R4.Questionnaire_ItemTypeKind._dateTime:return"item.answer[0].valueDateTime";case n.R4.Questionnaire_ItemTypeKind._integer:return"item.answer[0].valueInteger";case n.R4.Questionnaire_ItemTypeKind._decimal:return"item.answer[0].valueDecimal";case n.R4.Questionnaire_ItemTypeKind._boolean:return"item.answer[0].valueBoolean";case n.R4.Questionnaire_ItemTypeKind._choice:case n.R4.Questionnaire_ItemTypeKind._openChoice:return"item.answer[0].valueCoding";default:return"item.answer[0].valueString"}}(e)),o={};switch(e.type){case n.R4.Questionnaire_ItemTypeKind._choice:case n.R4.Questionnaire_ItemTypeKind._openChoice:var a=(e.answerOption||[])[0];o[i]=Object.keys((null==a?void 0:a.valueCoding)||{}).reduce((function(e,n){var t;return u({},e,((t={})[n]="",t))}),{});break;default:o[i]=""}return null==(t=r.answer)||t.push(o),r},m=function(e){var n=e.split(/[\s.]+/);return n[n.length-1]},h="check-box",g="slider",_=((e={})["drop-down"]="select",e["radio-button"]="radio",e[h]="checkboxes",e[g]="range",e),b=["valueString","valueBoolean","valueDate","valueInteger","valueDecimal","valueCoding"],I=function(e,n,t){var r=null;if(e instanceof Array)for(var i=0;i<e.length&&"string"!=typeof e[i]&&!(r=I(e[i],n,t));i++);else for(var o in e){if(o===n&&(!(e[o]instanceof Object)||t))return e[o];if((e[o]instanceof Object||e[o]instanceof Array)&&(r=I(e[o],n,t)))break}return r};exports.FhirBackend=function(){function e(e){this.baseUrl="",this.questionnaireBundle={resourceType:"Bundle"},""!=e&&(this.baseUrl=e)}var n=e.prototype;return n.initialize=function(){var e=o(a().m((function e(){return a().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,r.get(this.baseUrl+"/Questionnaire");case 1:this.questionnaireBundle=e.v.data;case 2:return e.a(2)}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.getQuestionnaires=function(){return this.questionnaireBundle},n.getTableOfContents=function(){var e;return null==(e=this.questionnaireBundle)||null==(e=e.entry)?void 0:e.map((function(e){var n;return{fullUrl:e.fullUrl,id:null==(n=e.resource)?void 0:n.id}}))},n.getQuestionnaire=function(e){var n;return null==(n=this.questionnaireBundle)||null==(n=n.entry)||null==(n=n.find((function(n){var t;return(null==(t=n.resource)?void 0:t.id)===e})))?void 0:n.resource},e}(),exports.FhirJsonForm=function(e){var r,i,o={},u=[],a={},l={resourceType:"QuestionnaireResponse",item:[],status:n.R4.QuestionnaireResponseStatusKind._inProgress};null==(r=e.item)||r.forEach((function(e,r){if(e.type===n.R4.Questionnaire_ItemTypeKind._group){var i=void 0===e.linkId?t.uuid():e.linkId.toString(),c=void 0===e.text?t.uuid():e.text.toString();a[i]={},o[i]={},o[i].type="object",o[i].title=c,o[i].properties={};var d=[];e.item&&(d=e.item),d.forEach((function(e,n){var r,u=void 0===e.linkId?t.uuid():e.linkId.toString();o[i].properties[u]=s(e),e.required&&(void 0===o[i].required&&(o[i].required=[]),o[i].required.push(u)),a[i][u]={};var c=v(e);""!==c&&(a[i][u]["ui:widget"]=c);var d=p(e);d&&Object.keys(d).length&&(a[i][u]["ui:options"]=d,null!=d&&d.unit&&(a[i][u]["ui:placeholder"]=d.unit)),null==(r=l.item)||r.push(y(e))})),e.required&&u.push(i)}else{var f,m=void 0===e.linkId?t.uuid():e.linkId.toString();o[m]=s(e),a[m]={};var h=v(e);""!==h&&(a[m]["ui:widget"]=h);var g=p(e);g&&Object.keys(g).length&&(a[m]["ui:options"]=g),null==(f=l.item)||f.push(y(e)),e.required&&u.push(m)}}));var c={type:"object",title:null==(i=e.id)?void 0:i.toString(),properties:o,required:u};return{model:l,schema:c,uiSchema:a}},exports.FhirJsonResp=function(e,n,r){var i;return null==(i=e.item)||i.forEach((function(e,i){var o,u,a,l,s,c=void 0===e.linkId?t.uuid():e.linkId.toString(),d=I(n,c),v=null==(o=e.answer)?void 0:o.pop();v&&e.answer&&(e.answer=e.answer.concat((u=d,a=v,l=r,s=c,b.reduce((function(e,n){if(a&&a.hasOwnProperty(n)){var t=I(l.properties,s,!0),r=null==t?void 0:t.enumNames;if(r){var i,o=t.enum.indexOf(u);e.push(((i={})[n]={code:null!=u?""+u:u,display:r[o]||null},i))}else{var c;e.push(((c={})[n]=u,c))}}return e}),[]))))})),e};
//# sourceMappingURL=fhirformjs.cjs.production.min.js.map