diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/assets/highlight.css b/assets/highlight.css new file mode 100644 index 0000000..d9dbaa3 --- /dev/null +++ b/assets/highlight.css @@ -0,0 +1,99 @@ +:root { + --light-hl-0: #001080; + --dark-hl-0: #9CDCFE; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #0000FF; + --dark-hl-2: #569CD6; + --light-hl-3: #0070C1; + --dark-hl-3: #4FC1FF; + --light-hl-4: #795E26; + --dark-hl-4: #DCDCAA; + --light-hl-5: #A31515; + --dark-hl-5: #CE9178; + --light-hl-6: #098658; + --dark-hl-6: #B5CEA8; + --light-hl-7: #AF00DB; + --dark-hl-7: #C586C0; + --light-hl-8: #008000; + --dark-hl-8: #6A9955; + --light-hl-9: #267F99; + --dark-hl-9: #4EC9B0; + --light-hl-10: #000000; + --dark-hl-10: #C8C8C8; + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +.hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } +.hl-10 { color: var(--hl-10); } +pre, code { background: var(--code-background); } diff --git a/assets/icons.js b/assets/icons.js new file mode 100644 index 0000000..e88e8ca --- /dev/null +++ b/assets/icons.js @@ -0,0 +1,18 @@ +(function() { + addIcons(); + function addIcons() { + if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons); + const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg")); + svg.innerHTML = `""`; + svg.style.display = "none"; + if (location.protocol === "file:") updateUseElements(); + } + + function updateUseElements() { + document.querySelectorAll("use").forEach(el => { + if (el.getAttribute("href").includes("#icon-")) { + el.setAttribute("href", el.getAttribute("href").replace(/.*#/, "#")); + } + }); + } +})() \ No newline at end of file diff --git a/assets/icons.svg b/assets/icons.svg new file mode 100644 index 0000000..e371b8b --- /dev/null +++ b/assets/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/main.js b/assets/main.js new file mode 100644 index 0000000..7d7f77a --- /dev/null +++ b/assets/main.js @@ -0,0 +1,60 @@ +"use strict"; +window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings."}; +"use strict";(()=>{var Ce=Object.create;var ie=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _e(e))!Me.call(t,i)&&i!==n&&ie(t,i,{get:()=>e[i],enumerable:!(r=Oe(e,i))||r.enumerable});return t};var Ae=(t,e,n)=>(n=t!=null?Ce(Re(t)):{},De(e||!t||!t.__esModule?ie(n,"default",{value:t,enumerable:!0}):n,t));var ue=Fe((ae,le)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof ae=="object"?le.exports=n():e.lunr=n()}(this,function(){return t})})()});var se=[];function G(t,e){se.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){se.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!e.checkVisibility()){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};var oe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var pe=Ae(ue());async function ce(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=pe.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function fe(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{ce(e,t)}),ce(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{te(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),Ve(t,i,r,e)}function Ve(t,e,n,r){n.addEventListener("input",oe(()=>{Ne(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?He(e,t):i.key=="ArrowUp"?(de(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(de(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),te(t))})}function te(t){t.classList.remove("has-focus")}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=he(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${he(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function de(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function He(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),te(e)}}function he(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ee(t.substring(s,o)),`${ee(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ee(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function ee(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",ye="mousemove",H="mouseup",J={x:0,y:0},me=!1,ne=!1,je=!1,D=!1,ve=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(ve?"is-mobile":"not-mobile");ve&&"ontouchstart"in document.documentElement&&(je=!0,F="touchstart",ye="touchmove",H="touchend");document.addEventListener(F,t=>{ne=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(ye,t=>{if(ne&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(H,()=>{ne=!1});document.addEventListener("click",t=>{me&&(t.preventDefault(),t.stopImmediatePropagation(),me=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(H,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(H,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var re;try{re=localStorage}catch{re={getItem(){return null},setItem(){}}}var Q=re;var ge=document.head.appendChild(document.createElement("style"));ge.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ge.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function Ee(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,xe(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),xe(t.value)})}function xe(t){document.documentElement.dataset.theme=t}var K;function we(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Le),Le())}async function Le(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();K=t.dataset.base,K.endsWith("/")||(K+="/"),t.innerHTML="";for(let s of i)Se(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Se(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',be(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)Se(u,l,i)}else be(t,r,t.class)}function be(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=K+t.path,n&&(r.className=n),location.pathname===r.pathname&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Te=document.getElementById("tsd-theme");Te&&Ee(Te);var qe=new U;Object.defineProperty(window,"app",{value:qe});fe();we();})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/assets/navigation.js b/assets/navigation.js new file mode 100644 index 0000000..42007af --- /dev/null +++ b/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA5XWWW/iMBAA4P+SfUW7JeSgvJWWKkj0EDxWFXLjAaImTuQ4FdWq/31lNuSiHk9fmZnPnuDr5a+j4KicmXP7tF44I6dg6uDMnCznVQrlH/3r74PKUmfkvCeCOzNv5MSHJOUShDN7acvTBIRCgF9NRu2Mr73Jlfc1aog7SJMsUSDLlgFRZTXShvsTmnaINTD+uVFMwbdEGzYTc6biQ1sdp6wsz32cYv3Ssdstvs2FgFgluTAIbQLGLLJCfT7mHAxKE8eQ+yQFrJkmjiHRKlxImUuDcQ5biHumWGpx2hwL9sxkCdKidZIwbine8krwNZRFLkrT5x5kYeADlCXbm6A6igH6X50z41TOYYzYwD7r7cWeUEcxgMOOVakJqKPoNjht9XmVpBykXmdPhV7ynX2dCAVyx+JmXxgq+qO4fmAapf60PxuoX0Qe62eDkPVVUioQZH6QbveJLsGLVmH/dBpKdQJmLL87K4fO0nRe9q2nSp12aMQET6FzLKjP4kwNcgbc1XU49t0OqRe8VI9V9tb1dpU4TaY2u0l9MOhebLEEpiBahXe9i2mA9bIQjUOcc4jguFEyEXujN8hDRChjVsB9LtewXxwLozjIw8RjMWfxe77bmbEmBXGScnCDDZA6jgr6NEEAHUbr9VrGl0EnxyZZ/rNODiIVjNsWU5uCOJIJnmeWKXWTEOuDpQlfPn94RqjJICiBVQkulNf+AXX5FI1WIekpG63CrbsdX15/GqiDljfK1t26WL1rr59g9RNCPd7BhNKDhwmevd7H6n1CPd6DT+khwITAXh9i9SGhHu8hpPQwxYSprX7zvLjdzm82C7PSpNjnMt4+bKJvb+zO9tA5lgeE3gUEyqVRE9K8JtSZTUgYifIIlEejfFKTPrVJn4SRqIBABTQqJDUZUpsMSRiJmhKoKYXSuw11dAKG9Obx/42rSy+Hrp+1r1+v/wC3cLis6REAAA==" \ No newline at end of file diff --git a/assets/search.js b/assets/search.js new file mode 100644 index 0000000..d4ea0e1 --- /dev/null +++ b/assets/search.js @@ -0,0 +1 @@ +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/assets/style.css b/assets/style.css new file mode 100644 index 0000000..d0c980d --- /dev/null +++ b/assets/style.css @@ -0,0 +1,1438 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + --light-color-link: #1f70c2; + --light-color-focus-outline: #3584e4; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: var(--light-color-ts-variable); + --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: #a55c0e; + --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + --light-color-document: #000000; + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + --dark-color-focus-outline: #4c97f2; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: var(--dark-color-ts-variable); + --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: #e07d13; + --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + --dark-color-document: #ffffff; + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } +} + +html { + color-scheme: var(--color-scheme); +} + +body { + margin: 0; +} + +:root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +*:focus-visible, +.tsd-accordion-summary:focus-visible svg { + outline: 2px solid var(--color-focus-outline); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +footer { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} +footer > p { + margin: 0 1em; +} + +.container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} +a.tsd-anchor-link { + color: var(--color-text); +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + position: relative; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h4, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} +.tsd-typography table { + border-collapse: collapse; + border: none; +} +.tsd-typography td, +.tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); +} +.tsd-typography thead, +.tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: -moz-fit-content; + width: fit-content; + align-items: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus-visible + svg { + outline: 2px solid var(--color-focus-outline); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.settings-label { + font-weight: bold; + text-transform: uppercase; + display: inline-block; +} + +.tsd-filter-visibility .settings-label { + margin: 0.75rem 0 0.5rem 0; +} + +.tsd-theme-toggle .settings-label { + margin: 0.75rem 0.75rem 0 0; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); +} +.tsd-full-hierarchy, +.tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; +} +.tsd-full-hierarchy ul { + padding-left: 1.5rem; +} +.tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } +} +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } +} +.tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: relative; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} + +.tsd-navigation.settings { + margin: 1rem 0; +} +.tsd-navigation > a, +.tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.25rem); + display: flex; + align-items: center; +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: flex; + width: calc(100% - 0.25rem); + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; +} +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li, +.tsd-page-navigation li { + padding: 0; + max-width: 100%; +} +.tsd-navigation .tsd-nav-link { + display: none; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-page-navigation ul { + padding-left: 1.75rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ +} +.tsd-accordion-summary, +.tsd-accordion-summary a { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} +.tsd-panel-group > .tsd-accordion-summary { + margin-bottom: 1rem; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-signatures .tsd-index-signature:not(:last-child) { + margin-bottom: 1em; +} +.tsd-signatures .tsd-index-signature .tsd-signature { + border-width: 1px; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through !important; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); +} +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); +} +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); +} +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); +} +.tsd-kind-parameter { + color: var(--color-ts-parameter); +} +.tsd-kind-type-literal { + color: var(--color-ts-type-literal); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* if we have a kind icon, don't color the text by kind */ +.tsd-kind-icon ~ span { + color: var(--color-text); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} + +/* mobile */ +@media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } + #tsd-toolbar-links { + display: none; + } + .tsd-navigation .tsd-nav-link { + display: flex; + } +} + +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } +} +@media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } +} + +/* two sidebars */ +@media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem 0; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } +} diff --git a/classes/CORE.Batch.html b/classes/CORE.Batch.html new file mode 100644 index 0000000..50fbcb5 --- /dev/null +++ b/classes/CORE.Batch.html @@ -0,0 +1,112 @@ +Batch | Node HL7 Client - v2.3.0-beta.1

Batch Class

+

Creating a Batch (BHS) which could include hundreds of MSH segments for processing. +Normally used in large data processing. +However, the server usually breaks down a batch MSH into single "elements" to process them and returns that the batch.

+

1.0.0

+

Hierarchy

  • RootBase
    • Batch

Constructors

Properties

_name: string
parent: null | NodeBase
empty: EmptyNode = ...

Accessors

Methods

  • Add a Message to the Batch

    +

    Parameters

    • message: Message

      The Message to add into the batch.

      +
    • Optionalindex: number

      Used Internally mostly to add an MSH segment within a BHS segment at a certain index.

      +

    Returns void

    This adds a Message (MSH) output into the batch. +It also increases the count of the BTS segment as the batch final result +when in end tells the receiving end how many message (MSH) segments are included.

    +

    1.0.0

    +
  • End Batch

    +

    Returns void

    At the conclusion of building the batch, +(Usually add method will be before this) will add the Batch Trailing Segment (BTS) to the end. +If a message (MSH) is added after this, +that message (MSH) will get added to the first BHS found if there is more than one. +This might be typical inside a file output process. +FileBatch for more information.

    +

    1.0.0

    +
  • Get BHS Segment at Path

    +

    Parameters

    • path: string | number

      Could be 'BHS.7' or 7, and it shall get the same result.

      +

    Returns HL7Node

    1.0.0

    +
    const date = batch.get('BHS.7')
    +
    + +

    or

    +
    const date = batch.get(7)
    +
    + +
  • Get the First Segment

    +

    Parameters

    • name: string

      The name of the segment. +At max usually three characters long.

      +

    Returns Segment

    Returns the first segment found in the Batch (BHS). +This is only used during the add method +in determining +if there is more than one Batch of MSH in a File Batch FileBatch +which can hold more than one Batch groups.

    +

    1.0.0

    +
  • Get Messages within a submitted Batch

    +

    Returns Message[]

    Returns an array of messages or a HL7ParserError will throw.

    +

    This will parse the passed on "text" +in the contractor options and get all the messages (MSH) segments within it and return an array of them.

    +

    1.0.0

    +
    try {
    // parser the batch
    const parser = new Batch({ text: loadedMessage })
    // load the messages
    const allMessage = parser.messages()
    // loop messages
    allMessage.forEach((message: Message) => {
    const messageParsed = new Message({ text: message.toString() })
    })
    } catch (e) {
    // error here
    } +
    + +
  • Set Batch Segment at Path with a Value

    +

    Parameters

    • path: string | number

      Where you want to set in the segment

      +
    • Optionalvalue: any

      The value. +It Can be an Array, String, or Boolean. +If the value is not set, you can chain this to expand the paths

      +

    Returns HL7Node

    1.0.0

    +
    const batch = new Batch()
    batch.set('BHS.7', '20231231') +
    + +

    If the value is not used this can be employed:

    +
    batch.set('BHS.3').set(0).set('BHS.3.1', 'abc');
    +
    + +
  • Start Batch

    +

    Parameters

    • Optionalstyle: "8" | "12" | "14"

      Your options produce: YYYYMMDDHHMMSS = 14 | YYYYMMDDHHMM = 12 | YYYYMMDD = 8

      +

    Returns void

    This allows you to override the orginial contractor BHS fields that are required. +In this case, 'BHS.7' +(Date Field) is filled out with a 14-character date field with YYYYMMDDHHMMSS entered in by default.

    +

    1.0.0

    +
    YYYYMMDDHHMMSS (14)
    +
    + +
  • Create File from a Batch

    +

    Parameters

    • name: string

      File Name

      +
    • OptionalnewLine: boolean

      Provide a New Line

      +
    • Optionallocation: string

      Where to save the exported file

      +
    • extension: string = 'hl7'

      Custom extension of the file. +Default: hl7

      +

    Returns string

    Will procure a file of the saved MSH in the proper format +that includes a FHS and FTS segments with the possibility of more than one BHS segments inside with one or more MSH inside each BHS groups.

    +

    1.0.0

    +
    const batch = new Batch({text: hl7_batch_string})
    batch.toFile('readTestBHS', true, 'temp/') +
    + +

    You can set an extension parameter on Batch to set a custom extension if you don't want to be HL7.

    +
\ No newline at end of file diff --git a/classes/CORE.Connection.html b/classes/CORE.Connection.html new file mode 100644 index 0000000..53ba935 --- /dev/null +++ b/classes/CORE.Connection.html @@ -0,0 +1,38 @@ +Connection | Node HL7 Client - v2.3.0-beta.1

Connection Class

+

Create a connection customer that will listen to result send to the particular port.

+

1.0.0

+

Hierarchy

  • EventEmitter
    • Connection

Implements

Constructors

Methods

Constructors

  • Parameters

    • client: default

      The client parent that we are connecting too.

      +
    • props: ClientListenerOptions

      The individual port connection options. +Some values will be defaulted by the parent server connection.

      +
    • handler: OutboundHandler

      The function that will send the returned information back to the client after we got a response from the server.

      +

    Returns Connection

    1.0.0

    +
    const OB = client.createConnection({ port: 3000 }, async (res) => {})
    +
    + +

Methods

  • Close Client Listener Instance.

    +

    Returns Promise<void>

    Force close a connection. +It will stop any re-connection timers. +If you want to restart, your app has to restart the connection.

    +

    1.0.0

    +
    OB.close()
    +
    + +
  • Get Port

    +

    Returns number

    Get the port that this connection will connect to.

    +

    2.0.0

    +
  • Send a HL7 Message to the Listener

    +

    Parameters

    Returns Promise<void>

    This function sends a message/batch/file batch to the remote side. +It has the ability, if set to auto-retry (defaulted to 1 re-connect before connection closes)

    +

    1.0.0

    +

    // the OB was set from the orginial 'createConnection' method.

    let message = new Message({
    messageHeader: {
    msh_9_1: "ADT",
    msh_9_2: "A01",
    msh_11_1: "P" // marked for production here in the example
    }async sendMessage (message: Message | Batch | FileBatch): void {
    })

    await OB.sendMessage(message)
    +
    + +
\ No newline at end of file diff --git a/classes/CORE.EmptyNode.html b/classes/CORE.EmptyNode.html new file mode 100644 index 0000000..7bb373a --- /dev/null +++ b/classes/CORE.EmptyNode.html @@ -0,0 +1,22 @@ +EmptyNode | Node HL7 Client - v2.3.0-beta.1

Empty Node

+

1.0.0

+

Implements

Constructors

Accessors

Methods

\ No newline at end of file diff --git a/classes/CORE.FileBatch.html b/classes/CORE.FileBatch.html new file mode 100644 index 0000000..2304408 --- /dev/null +++ b/classes/CORE.FileBatch.html @@ -0,0 +1,90 @@ +FileBatch | Node HL7 Client - v2.3.0-beta.1

File Batch Class

+

Create a File Batch (FHS) which will could include many BHS/BTS segments, +which could include many Message (MSH) segments to output the contents into a file on the OS. +These files could then be used to send manually or read by another system to interpret the contents. +This class helps +in generating the particulars for that file generation to make sure that it follows the correct format.

+

1.0.0

+

Hierarchy

  • RootBase
    • FileBatch

Constructors

Properties

_name: string
parent: null | NodeBase
empty: EmptyNode = ...

Accessors

Methods

  • AAdd a Message or a Batch to the File

    +

    Parameters

    Returns void

    This adds a Message (MSH) output into the file batch. +If there is a Batch ("BHS") already part of this file, any new Message type will be added to the first found BHS regardless if the second Batch is added last.

    +

    1.0.0

    +
  • Create a file to be stored.

    +

    Parameters

    • name: string

      Name of the file.

      +

    Returns void

    1.0.0

    +
  • End Batch

    +

    Returns void

    At the conclusion of building the file batch, +(Usually add method will be before this) will add the File Batch Trailing Segment (FTS) to the end. +If a message (MSH) is added after this, +that message (MSH) will get added to the first BHS found if there is one, otherwise it will just be added. +This might be typical inside a file output process.

    +

    1.0.0

    +
  • Get File name

    +

    Returns string

    Get File name going to be created.

    +

    1.2.0

    +
  • Get FHS Segment at Path

    +

    Parameters

    • path: string | number

      Could be 'FHS.7' or 7, and it shall get the same result.

      +

    Returns HL7Node

    1.0.0

    +
    const fileBatch = file.get('FHS.7')
    +
    + +

    or

    +
    const fileBatch = file.get(7)
    +
    + +
  • Get Messages within a submitted File Batch

    +

    Returns Message[]

    Returns an array of messages or a HL7ParserError will throw.

    +

    This will parse the passed on "text" +in the contractor options and get all the messages (MSH) segments within it and return an array of them. +This will happen regardless of the depth of the segments.

    +

    1.0.0

    +
    try {
    // parser the batch
    const parser = new FileBatch({ text: loadedMessage })
    // load the messages
    const allMessage = parser.messages()
    // loop messages
    allMessage.forEach((message: Message) => {
    const messageParsed = new Message({ text: message.toString() })
    })
    } catch (e) {
    // error here
    } +
    + +
  • Set Batch Segment at Path with a Value

    +

    Parameters

    • path: string | number

      Where you want to set in the segment

      +
    • Optionalvalue: any

      The value. +It Can be an Array, String, or Boolean. +If the value is not set, you can chain this to expand the paths

      +

    Returns HL7Node

    1.0.0

    +
    const batch = new Batch()
    batch.set('BHS.7', '20231231') +
    + +

    If the value is not used this can be employed:

    +
    batch.set('BHS.3').set(0).set('BHS.3.1', 'abc');
    +
    + +
  • Parameters

    • _name: string
    • Optional_newLine: boolean
    • Optional_location: string

    Returns void

\ No newline at end of file diff --git a/classes/CORE.HL7Error.html b/classes/CORE.HL7Error.html new file mode 100644 index 0000000..dde8a05 --- /dev/null +++ b/classes/CORE.HL7Error.html @@ -0,0 +1,4 @@ +HL7Error | Node HL7 Client - v2.3.0-beta.1

Parent Cass of HL7 Error

+

1.0.0

+

Hierarchy (view full)

Properties

Properties

code: number
\ No newline at end of file diff --git a/classes/CORE.HL7FatalError.html b/classes/CORE.HL7FatalError.html new file mode 100644 index 0000000..db5326d --- /dev/null +++ b/classes/CORE.HL7FatalError.html @@ -0,0 +1,5 @@ +HL7FatalError | Node HL7 Client - v2.3.0-beta.1

Used to indicate a fatal failure of a connection.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Constructors

Properties

code: number
\ No newline at end of file diff --git a/classes/CORE.HL7ParserError.html b/classes/CORE.HL7ParserError.html new file mode 100644 index 0000000..ac31acb --- /dev/null +++ b/classes/CORE.HL7ParserError.html @@ -0,0 +1,4 @@ +HL7ParserError | Node HL7 Client - v2.3.0-beta.1

Used to indicate a fatal failure of a connection.

+

1.0.0

+

Hierarchy

  • Error
    • HL7ParserError

Constructors

Constructors

  • Parameters

    • Optionalmessage: string

    Returns HL7ParserError

\ No newline at end of file diff --git a/classes/CORE.InboundResponse.html b/classes/CORE.InboundResponse.html new file mode 100644 index 0000000..399e8b9 --- /dev/null +++ b/classes/CORE.InboundResponse.html @@ -0,0 +1,13 @@ +InboundResponse | Node HL7 Client - v2.3.0-beta.1

Inbound Request

+

1.0.0

+

Constructors

Methods

Constructors

  • Process the Inbound Response from the Server

    +

    Parameters

    • data: string

    Returns InboundResponse

    This takes the string of the response from the server and makes it a message. +A response from a broker SHOULD always be a properly formated Hl7 message, we hope.

    +

    1.0.0

    +

Methods

\ No newline at end of file diff --git a/classes/CORE.Message.html b/classes/CORE.Message.html new file mode 100644 index 0000000..a777cb0 --- /dev/null +++ b/classes/CORE.Message.html @@ -0,0 +1,71 @@ +Message | Node HL7 Client - v2.3.0-beta.1

Message Class

+

1.0.0

+

Hierarchy

  • RootBase
    • Message

Constructors

  • Build the Message or Parse It

    +

    Returns Message

    1.0.0

    +
    If you are processing a full message, do this:

    const message = new Message({text: "The HL7 Message Here"})
    ... output cut ...

    If you are building out a message, do this:

    const message = new Message({messageHeader: { ... MSH Header Required Values Here ... }});

    which then you add segments with fields and values for your Hl7 message. +
    + +

Properties

_name: string
parent: null | NodeBase
empty: EmptyNode = ...

Accessors

Methods

  • Add a new segment to a message.

    +

    Parameters

    • path: string

    Returns Segment

    1.0.0

    +

    Creating a new segment adds an empty segment to the message. +It could be blank, or it could have values added into it.

    +
    const message = new Message({. the correct options here .})

    const segment = message.addSegment('PV1')
    segment.set('PV1.1', 'Value Here');

    // When doing this, it overall adds it to the 'message' object
    // when your output is the final result.

    const finalMessage = message.toString(); +
    + +
  • Protected

    Create a new child of a message which is a segment.

    +

    Parameters

    • text: string

      Segment string. Must be 3 characters long.

      +
    • _index: number

      Not used to create a segment.

      +

    Returns HL7Node

    Segment

    +
  • Protected

    Path Core

    +

    Returns string[]

    1.0.0

    +
  • Create File from a Message

    +

    Parameters

    • name: string

      File Name

      +
    • OptionalnewLine: boolean

      Provide a New Line

      +
    • Optionallocation: string

      Where to save the exported file

      +
    • extension: string = 'hl7'

      Custom extension of the file. +Default: hl7

      +

    Returns string

    Will procure a file of the saved MSH in the proper format +that includes a FHS and FTS segments.

    +

    1.0.0

    +
    const message = new Message({text: hl7_batch_string})
    message.toFile('readTestMSH', true, 'temp/') +
    + +

    You can set an extension parameter on Batch to set a custom extension if you don't want to be HL7.

    +
\ No newline at end of file diff --git a/classes/CORE.NodeBase.html b/classes/CORE.NodeBase.html new file mode 100644 index 0000000..40b8be0 --- /dev/null +++ b/classes/CORE.NodeBase.html @@ -0,0 +1,26 @@ +NodeBase | Node HL7 Client - v2.3.0-beta.1

Node Base

+

1.0.0

+

Hierarchy (view full)

Implements

Constructors

Properties

_name: string
parent: null | NodeBase
empty: EmptyNode = ...

Accessors

Methods

\ No newline at end of file diff --git a/classes/CORE.Segment.html b/classes/CORE.Segment.html new file mode 100644 index 0000000..8381bbb --- /dev/null +++ b/classes/CORE.Segment.html @@ -0,0 +1,23 @@ +Segment | Node HL7 Client - v2.3.0-beta.1

Segment

+

1.0.0

+

Hierarchy (view full)

Properties

_name: string
parent: null | NodeBase
empty: EmptyNode = ...

Accessors

Methods

\ No newline at end of file diff --git a/classes/CORE.default.html b/classes/CORE.default.html new file mode 100644 index 0000000..a409ea9 --- /dev/null +++ b/classes/CORE.default.html @@ -0,0 +1,36 @@ +default | Node HL7 Client - v2.3.0-beta.1

Client Class

+

The main class that starts a client connection to a valid HL7 TCP/MLLP specified server.

+

1.0.0

+

Hierarchy

  • EventEmitter
    • default

Constructors

  • This creates a new client to a new server connection. +This is the remote side in which we will connect. +Then using the createConnection method, you establish a connection to the port.

    +

    Parameters

    Returns default

    1.0.0

    +
    const client = new Client({host: '0.0.0.0'})
    +
    + +

Methods

  • Connect to a listener to a specified port.

    +

    Parameters

    • props: ClientListenerOptions

      This individual port connections which can override the main server connection properties. +Some properties from the server build could be defaulted if not specified here.

      +
    • cb: OutboundHandler

      The function that the client will process if and when they get a response from the server. +It follows an async/await function.

      +

    Returns Connection

    1.0.0

    +
    const outGoing = client.createOutbound({port: 3000}, async (res: InboundResponse) => {})
    +
    + +

    Review the InboundResponse on the properties returned.

    +
  • Get the host that we will connect to. +The port might be different from each different "connection"

    +

    Returns string

    1.1.0

    +
  • Total sent messages in this object lifetime.

    +

    Returns number

    2.0.0

    +
\ No newline at end of file diff --git a/classes/HL7.HL7_2_1.html b/classes/HL7.HL7_2_1.html new file mode 100644 index 0000000..e39898f --- /dev/null +++ b/classes/HL7.HL7_2_1.html @@ -0,0 +1,15 @@ +HL7_2_1 | Node HL7 Client - v2.3.0-beta.1

Hl7 Specification Version 2.1

+

Used to indicate that the message should follow 2.7 specification for retrieval or building a message.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/classes/HL7.HL7_2_2.html b/classes/HL7.HL7_2_2.html new file mode 100644 index 0000000..1ec83b6 --- /dev/null +++ b/classes/HL7.HL7_2_2.html @@ -0,0 +1,15 @@ +HL7_2_2 | Node HL7 Client - v2.3.0-beta.1

Hl7 Specification Version 2.2

+

Used to indicate that the message should follow 2.7 specification for retrieval or building a message.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/classes/HL7.HL7_2_3.html b/classes/HL7.HL7_2_3.html new file mode 100644 index 0000000..791a86d --- /dev/null +++ b/classes/HL7.HL7_2_3.html @@ -0,0 +1,15 @@ +HL7_2_3 | Node HL7 Client - v2.3.0-beta.1

Hl7 Specification Version 2.3

+

Used to indicate that the message should follow 2.7 specification for retrieval or building a message.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/classes/HL7.HL7_2_3_1.html b/classes/HL7.HL7_2_3_1.html new file mode 100644 index 0000000..9a5d01f --- /dev/null +++ b/classes/HL7.HL7_2_3_1.html @@ -0,0 +1,15 @@ +HL7_2_3_1 | Node HL7 Client - v2.3.0-beta.1

Hl7 Specification Version 2.3.1

+

Used to indicate that the message should follow 2.7 specification for retrieval or building a message.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/classes/HL7.HL7_2_4.html b/classes/HL7.HL7_2_4.html new file mode 100644 index 0000000..332103c --- /dev/null +++ b/classes/HL7.HL7_2_4.html @@ -0,0 +1,15 @@ +HL7_2_4 | Node HL7 Client - v2.3.0-beta.1

Hl7 Specification Version 2.4

+

Used to indicate that the message should follow 2.7 specification for retrieval or building a message.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/classes/HL7.HL7_2_5.html b/classes/HL7.HL7_2_5.html new file mode 100644 index 0000000..2ab8934 --- /dev/null +++ b/classes/HL7.HL7_2_5.html @@ -0,0 +1,15 @@ +HL7_2_5 | Node HL7 Client - v2.3.0-beta.1

Hl7 Specification Version 2.5

+

Used to indicate that the message should follow 2.7 specification for retrieval or building a message.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/classes/HL7.HL7_2_5_1.html b/classes/HL7.HL7_2_5_1.html new file mode 100644 index 0000000..ec97e8f --- /dev/null +++ b/classes/HL7.HL7_2_5_1.html @@ -0,0 +1,15 @@ +HL7_2_5_1 | Node HL7 Client - v2.3.0-beta.1

Hl7 Specification Version 2.5.1

+

Used to indicate that the message should follow 2.7 specification for retrieval or building a message.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/classes/HL7.HL7_2_6.html b/classes/HL7.HL7_2_6.html new file mode 100644 index 0000000..149a3ab --- /dev/null +++ b/classes/HL7.HL7_2_6.html @@ -0,0 +1,15 @@ +HL7_2_6 | Node HL7 Client - v2.3.0-beta.1

Hl7 Specification Version 2.6

+

Used to indicate that the message should follow 2.7 specification for retrieval or building a message.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/classes/HL7.HL7_2_7.html b/classes/HL7.HL7_2_7.html new file mode 100644 index 0000000..9984869 --- /dev/null +++ b/classes/HL7.HL7_2_7.html @@ -0,0 +1,15 @@ +HL7_2_7 | Node HL7 Client - v2.3.0-beta.1

Hl7 Specification Version 2.7

+

Used to indicate that the message should follow 2.7 specification for retrieval or building a message.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/classes/HL7.HL7_2_7_1.html b/classes/HL7.HL7_2_7_1.html new file mode 100644 index 0000000..5d3656c --- /dev/null +++ b/classes/HL7.HL7_2_7_1.html @@ -0,0 +1,15 @@ +HL7_2_7_1 | Node HL7 Client - v2.3.0-beta.1

Hl7 Specification Version 2.7.1

+

Used to indicate that the message should follow 2.7 specification for retrieval or building a message.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/classes/HL7.HL7_2_8.html b/classes/HL7.HL7_2_8.html new file mode 100644 index 0000000..ce6eb9f --- /dev/null +++ b/classes/HL7.HL7_2_8.html @@ -0,0 +1,15 @@ +HL7_2_8 | Node HL7 Client - v2.3.0-beta.1

Hl7 Specification Version 2.8

+

Used to indicate that the message should follow 2.7 specification for retrieval or building a message.

+

1.0.0

+

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/classes/HL7.HL7_SPEC_BASE.html b/classes/HL7.HL7_SPEC_BASE.html new file mode 100644 index 0000000..e73011f --- /dev/null +++ b/classes/HL7.HL7_SPEC_BASE.html @@ -0,0 +1,16 @@ +HL7_SPEC_BASE | Node HL7 Client - v2.3.0-beta.1

Base Class of an HL7 Specification

+

1.0.0

+

Hierarchy (view full)

Implements

Constructors

Properties

Methods

Constructors

Properties

name: string = ''

Name

+

1.0.0

+

Methods

\ No newline at end of file diff --git a/enums/CORE.Delimiters.html b/enums/CORE.Delimiters.html new file mode 100644 index 0000000..94a874a --- /dev/null +++ b/enums/CORE.Delimiters.html @@ -0,0 +1,17 @@ +Delimiters | Node HL7 Client - v2.3.0-beta.1

Enumeration Delimiters

Type of Segments Values

+

Used during the class creation to give each type its own index value. +This is done during the constructor phase of the classes.

+

1.0.0

+

Enumeration Members

Component: 2

Usually within each Field, seperated by ^

+
Escape: 4

The escape string used within the code.

+
Field: 1

The field of each segment. Usually separated with a |

+
Repetition: 3

Usually within each Component, seperated by &

+
Segment: 0

Usually each line of the overall HL7 Message.

+
SubComponent: 5

Usually within each Field, seperated by ~

+
\ No newline at end of file diff --git a/enums/CORE.ReadyState.html b/enums/CORE.ReadyState.html new file mode 100644 index 0000000..666c300 --- /dev/null +++ b/enums/CORE.ReadyState.html @@ -0,0 +1,14 @@ +ReadyState | Node HL7 Client - v2.3.0-beta.1

Enumeration ReadyState

State of the Connected to the Server

+

These are the states that are used to track the connecting to the server side and also during the auto-reconnect phase.

+

1.0.0

+

Enumeration Members

Enumeration Members

CLOSED: 4

The client connection is closed.

+
CLOSING: 3

The client is closing the connection by force or by timeout

+
CONNECTED: 1

The client is connected to the server.

+
CONNECTING: 0

The client is trying to connect to the server.

+
OPEN: 2

The client is open, but not yet trying to connect to the server.

+
\ No newline at end of file diff --git a/functions/CORE.assertNumber.html b/functions/CORE.assertNumber.html new file mode 100644 index 0000000..737ba62 --- /dev/null +++ b/functions/CORE.assertNumber.html @@ -0,0 +1,7 @@ +assertNumber | Node HL7 Client - v2.3.0-beta.1

Function assertNumber

Assert Number on a Property

+

1.0.0

+
  • Parameters

    • props: Record<string, number>

      Property Object

      +
    • name: string

      Property Name

      +
    • min: number

      Min Number

      +
    • Optionalmax: number

      Max Number

      +

    Returns void

\ No newline at end of file diff --git a/functions/CORE.createHL7Date.html b/functions/CORE.createHL7Date.html new file mode 100644 index 0000000..018c8f2 --- /dev/null +++ b/functions/CORE.createHL7Date.html @@ -0,0 +1,4 @@ +createHL7Date | Node HL7 Client - v2.3.0-beta.1

Function createHL7Date

Create a valid HL7 Date.

+

Custom for this package and based of HL7 specification.

+

1.0.0

+
  • Parameters

    • date: Date
    • Optionallength: string

    Returns string

\ No newline at end of file diff --git a/functions/CORE.decodeHexString.html b/functions/CORE.decodeHexString.html new file mode 100644 index 0000000..76a488f --- /dev/null +++ b/functions/CORE.decodeHexString.html @@ -0,0 +1,3 @@ +decodeHexString | Node HL7 Client - v2.3.0-beta.1

Function decodeHexString

Decode Hex String

+

1.0.0

+
\ No newline at end of file diff --git a/functions/CORE.escapeForRegExp.html b/functions/CORE.escapeForRegExp.html new file mode 100644 index 0000000..408a1fc --- /dev/null +++ b/functions/CORE.escapeForRegExp.html @@ -0,0 +1,3 @@ +escapeForRegExp | Node HL7 Client - v2.3.0-beta.1

Function escapeForRegExp

Escape for RegEx Expressing

+

1.0.0

+
\ No newline at end of file diff --git a/functions/CORE.expBackoff.html b/functions/CORE.expBackoff.html new file mode 100644 index 0000000..6b6fcb0 --- /dev/null +++ b/functions/CORE.expBackoff.html @@ -0,0 +1,7 @@ +expBackoff | Node HL7 Client - v2.3.0-beta.1

Calculate exponential backoff/retry delay. +Where attempts >= 1, exp > 1

+
expBackoff(1000, 30000, attempts)
---------------------------------
attempts | possible delay
----------+----------------------
1 | 1000 to 2000
2 | 1000 to 4000
3 | 1000 to 8000
4 | 1000 to 16000
5 | 1000 to 30000
---------------------------------
Attempts required before max delay is possible = Math.ceil(Math.log(high/step) / Math.log(exp)) +
+ +

1.0.0

+
  • Parameters

    • step: number
    • high: number
    • attempts: number
    • exp: number = 2

    Returns number

\ No newline at end of file diff --git a/functions/CORE.isBatch.html b/functions/CORE.isBatch.html new file mode 100644 index 0000000..bff84ba --- /dev/null +++ b/functions/CORE.isBatch.html @@ -0,0 +1,3 @@ +isBatch | Node HL7 Client - v2.3.0-beta.1

Check to see if the message starts with Batch (BHS) header segment.

+

1.0.0

+
\ No newline at end of file diff --git a/functions/CORE.isFile.html b/functions/CORE.isFile.html new file mode 100644 index 0000000..3a29a18 --- /dev/null +++ b/functions/CORE.isFile.html @@ -0,0 +1,2 @@ +isFile | Node HL7 Client - v2.3.0-beta.1

Check to see if the message starts with a File Batch (FHS) header segment.

+
\ No newline at end of file diff --git a/functions/CORE.isHL7Number.html b/functions/CORE.isHL7Number.html new file mode 100644 index 0000000..55864d1 --- /dev/null +++ b/functions/CORE.isHL7Number.html @@ -0,0 +1,4 @@ +isHL7Number | Node HL7 Client - v2.3.0-beta.1

Function isHL7Number

Is Number

+

Custom for this package.

+

1.0.0

+
\ No newline at end of file diff --git a/functions/CORE.isHL7String.html b/functions/CORE.isHL7String.html new file mode 100644 index 0000000..255eff4 --- /dev/null +++ b/functions/CORE.isHL7String.html @@ -0,0 +1,4 @@ +isHL7String | Node HL7 Client - v2.3.0-beta.1

Function isHL7String

Is String

+

Custom for this package.

+

1.0.0

+
\ No newline at end of file diff --git a/functions/CORE.padHL7Date.html b/functions/CORE.padHL7Date.html new file mode 100644 index 0000000..2b4b2d2 --- /dev/null +++ b/functions/CORE.padHL7Date.html @@ -0,0 +1,3 @@ +padHL7Date | Node HL7 Client - v2.3.0-beta.1

HL7 Padding for Date

+

1.0.0

+
  • Parameters

    • n: number
    • width: number
    • z: string = '0'

    Returns string

\ No newline at end of file diff --git a/functions/CORE.randomString.html b/functions/CORE.randomString.html new file mode 100644 index 0000000..b85bfda --- /dev/null +++ b/functions/CORE.randomString.html @@ -0,0 +1,3 @@ +randomString | Node HL7 Client - v2.3.0-beta.1

Function randomString

Generate a random string

+

1.0.0

+
\ No newline at end of file diff --git a/functions/CORE.validIPv4.html b/functions/CORE.validIPv4.html new file mode 100644 index 0000000..1804076 --- /dev/null +++ b/functions/CORE.validIPv4.html @@ -0,0 +1,3 @@ +validIPv4 | Node HL7 Client - v2.3.0-beta.1

Valid IPv4 Checker

+

1.0.0

+
\ No newline at end of file diff --git a/functions/CORE.validIPv6.html b/functions/CORE.validIPv6.html new file mode 100644 index 0000000..2ef5351 --- /dev/null +++ b/functions/CORE.validIPv6.html @@ -0,0 +1,3 @@ +validIPv6 | Node HL7 Client - v2.3.0-beta.1

Valid IPv6 Checker

+

1.0.0

+
\ No newline at end of file diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 0000000..2a28758 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1 @@ +Node HL7 Client - v2.3.0-beta.1
\ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..6e82d93 --- /dev/null +++ b/index.html @@ -0,0 +1,58 @@ +Node HL7 Client - v2.3.0-beta.1

Node HL7 Client - v2.3.0-beta.1

+

A pure Node.js HL7 Client +that allows for communication to a HL7 Broker/Server that can send properly formatted HL7 messages with ease. +Separately, it can also parse and extract out any segment within an HL7 message. +Messages could come as one after the other (MSH), as a Batch (BHS), or in a batch file (FHS).

+
+

Included in this package:

+
    +
  • The Client, which can connect to a HL7 server and send messages and get response back from that Hl7 Server and do something with the results if needed.
  • +
  • The Parser will decode an HL7 message string for your manipulation.
  • +
  • The Builder can create a properly formatted HL7 message(s) to be sent either a single message, batch of messages, or batch of messages written into a file for further processing.
  • +
+

Benefits:

+
    +
  • :fast_forward: No external dependencies, making this ultra-fast.
  • +
  • :electric_plug: Automatically re-connect or retry sending
  • +
  • :memo: Written in typescript and published with heavily commented type definitions
  • +
  • :bust_in_silhouette: Peer node-hl7-server npm package that in conjunction with this one could create a powerful HL7 system.
  • +
  • :computer: Works in Windows or Linux-based systems
  • +
  • :guide_dog: With typed settings of key segment generation of the HL7 message (MSH, BHS, and FHS) it ensures that you are building your message in compliance with the HL7 standards defined at https://www.hl7.org
  • +
+

If you are using this NPM package, please consider giving it a :star: star. +This will increase its visibility and solicit more contribution from the outside.

+

Install using NPM into your package:

+
npm install node-hl7-client
+
+ +
    +
  1. Keyword Definitions
  2. +
  3. Documentation
  4. +
  5. Acknowledgements
  6. +
  7. License
  8. +
+

This NPM is designed to support medical applications with potential impact on patient care and diagnoses, +this package documentation, +and its peer package node-hl7-server follow these definitions when it comes to the documentation.

+

Keywords such as "MUST", "MUST NOT", "REQUIRED", +"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL". +These are standardized terms for technology documentation interoperability. +These words should have these meaning when you are reading them. +They might be sans uppercase throughout the documentation, but they would have the same meaning regardless.

+
    +
  • MUST - This word, or the terms "REQUIRED" or "SHALL", mean that the definition is an absolute requirement of the specification.
  • +
  • MUST NOT - This phrase, or the phrase "SHALL NOT", mean that the definition is an absolute prohibition of the specification.
  • +
  • SHOULD - This word, or the adjective "RECOMMENDED", mean that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood and carefully weighed before choosing a different course.
  • +
  • SHOULD NOT - This phrase, or the phrase "NOT RECOMMENDED", mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful. The full implications should be understood, and the case carefully weighed before implementing any behavior described with this label.
  • +
  • MAY - This word, or the adjective "OPTIONAL", mean that an item is truly optional. Any implementation which does not include a particular option MUST be prepared to interoperate with another implementation which does include the option, though perhaps with reduced functionality. In the same vein, an implementation which does include a particular option MUST be prepared to interoperate with another implementation, which does not include the option (except, of course, for the feature the option provides.)
  • +
+

It's way too extensive to include on this README alone. +Please read this to gain more information. +GitHub pages now has mostly full listing of all methods, classes, etc., but only for the most recent release.

+ +

Licensed under MIT.

+
\ No newline at end of file diff --git a/interfaces/CORE.ClientBuilderFileOptions.html b/interfaces/CORE.ClientBuilderFileOptions.html new file mode 100644 index 0000000..f3e42c7 --- /dev/null +++ b/interfaces/CORE.ClientBuilderFileOptions.html @@ -0,0 +1,90 @@ +ClientBuilderFileOptions | Node HL7 Client - v2.3.0-beta.1

Interface ClientBuilderFileOptions

Client Builder Options

+

Used to specific default paramaters around building an HL7 message if that is +so desired. +It also sets up checking of input values to make sure they match up to the proper +HL7 specification.

+

1.0.0

+
interface ClientBuilderFileOptions {
    date?: string;
    extension?: string;
    fileBuffer?: Buffer;
    fullFilePath?: string;
    location?: string;
    newLine?: string;
    parsing?: boolean;
    separatorComponent?: string;
    separatorEscape?: string;
    separatorField?: string;
    separatorRepetition?: string;
    separatorSubComponent?: string;
    specification?: any;
    text?: string;
}

Hierarchy (view full)

Properties

date?: string

The date type for the date field. Usually generated at the time of the class being initialized.

+

1.0.0

+
14
+
+ +
extension?: string

Extension of the file when it gets created.

+

1.0.0

+
hl7
+
+ +
fileBuffer?: Buffer

The file as a buffer passed onto the constructor

+

1.0.0

+
fullFilePath?: string

If you are providing the full file path, please set it here.

+

1.0.0

+
location?: string

Location where the file will be saved. +If this is not set, +the files will get save it in the same directory of the executing file that is calling the function. +If running this package inside a DOCKER/KUBERNETES node, +if the container is destroyed and the files are not saved on a folder mounted outside the node, +the files will be lost on restart.

+

1.0.0

+
""
+
+ +
newLine?: string

At the end of each line, add this as the new line character.

+

1.0.0

+
\r
+
+ +
parsing?: boolean

Parsing a message?

+

1.0.0

+
false
+
+ +
separatorComponent?: string

The character used to separate different components.

+

1.0.0

+
^
+
+ +
separatorEscape?: string

The character used to escape characters that need it in order for the computer to interpret the string correctly.

+

1.0.0

+
\\
+
+ +
separatorField?: string

The character used for separating fields.

+

1.0.0

+
|
+
+ +
separatorRepetition?: string

The character used for repetition field/values pairs.

+

1.0.0

+
~
+
+ +
separatorSubComponent?: string

The character used to have subcomponents seperated.

+

1.0.0

+
&
+
+ +
specification?: any

The HL7 spec we are going to be creating. +This will be formatted into the MSH header by default.

+

1.0.0

+
2.7 via class new HL7_2_7()
+
+ +
text?: string

The HL7 string that we are going to parse.

+
""
+
+ +
\ No newline at end of file diff --git a/interfaces/CORE.ClientBuilderMessageOptions.html b/interfaces/CORE.ClientBuilderMessageOptions.html new file mode 100644 index 0000000..264e00e --- /dev/null +++ b/interfaces/CORE.ClientBuilderMessageOptions.html @@ -0,0 +1,70 @@ +ClientBuilderMessageOptions | Node HL7 Client - v2.3.0-beta.1

Interface ClientBuilderMessageOptions

Client Builder Options

+

Used to specific default paramaters around building an HL7 message if that is +so desired. +It also sets up checking of input values to make sure they match up to the proper +HL7 specification.

+

1.0.0

+
interface ClientBuilderMessageOptions {
    date?: string;
    messageHeader?: MSH;
    newLine?: string;
    parsing?: boolean;
    separatorComponent?: string;
    separatorEscape?: string;
    separatorField?: string;
    separatorRepetition?: string;
    separatorSubComponent?: string;
    specification?: any;
    text?: string;
}

Hierarchy (view full)

Properties

date?: string

The date type for the date field. Usually generated at the time of the class being initialized.

+

1.0.0

+
14
+
+ +
messageHeader?: MSH

MSH Header Options

+

1.0.0

+
newLine?: string

At the end of each line, add this as the new line character.

+

1.0.0

+
\r
+
+ +
parsing?: boolean

Parsing a message?

+

1.0.0

+
false
+
+ +
separatorComponent?: string

The character used to separate different components.

+

1.0.0

+
^
+
+ +
separatorEscape?: string

The character used to escape characters that need it in order for the computer to interpret the string correctly.

+

1.0.0

+
\\
+
+ +
separatorField?: string

The character used for separating fields.

+

1.0.0

+
|
+
+ +
separatorRepetition?: string

The character used for repetition field/values pairs.

+

1.0.0

+
~
+
+ +
separatorSubComponent?: string

The character used to have subcomponents seperated.

+

1.0.0

+
&
+
+ +
specification?: any

The HL7 spec we are going to be creating. +This will be formatted into the MSH header by default.

+

1.0.0

+
2.7 via class new HL7_2_7()
+
+ +
text?: string

The HL7 string that we are going to parse.

+
""
+
+ +
\ No newline at end of file diff --git a/interfaces/CORE.ClientBuilderOptions.html b/interfaces/CORE.ClientBuilderOptions.html new file mode 100644 index 0000000..13d8b7f --- /dev/null +++ b/interfaces/CORE.ClientBuilderOptions.html @@ -0,0 +1,67 @@ +ClientBuilderOptions | Node HL7 Client - v2.3.0-beta.1

Interface ClientBuilderOptions

Client Builder Options

+

Used to specific default paramaters around building an HL7 message if that is +so desired. +It also sets up checking of input values to make sure they match up to the proper +HL7 specification.

+

1.0.0

+
interface ClientBuilderOptions {
    date?: string;
    newLine?: string;
    parsing?: boolean;
    separatorComponent?: string;
    separatorEscape?: string;
    separatorField?: string;
    separatorRepetition?: string;
    separatorSubComponent?: string;
    specification?: any;
    text?: string;
}

Hierarchy (view full)

Properties

date?: string

The date type for the date field. Usually generated at the time of the class being initialized.

+

1.0.0

+
14
+
+ +
newLine?: string

At the end of each line, add this as the new line character.

+

1.0.0

+
\r
+
+ +
parsing?: boolean

Parsing a message?

+

1.0.0

+
false
+
+ +
separatorComponent?: string

The character used to separate different components.

+

1.0.0

+
^
+
+ +
separatorEscape?: string

The character used to escape characters that need it in order for the computer to interpret the string correctly.

+

1.0.0

+
\\
+
+ +
separatorField?: string

The character used for separating fields.

+

1.0.0

+
|
+
+ +
separatorRepetition?: string

The character used for repetition field/values pairs.

+

1.0.0

+
~
+
+ +
separatorSubComponent?: string

The character used to have subcomponents seperated.

+

1.0.0

+
&
+
+ +
specification?: any

The HL7 spec we are going to be creating. +This will be formatted into the MSH header by default.

+

1.0.0

+
2.7 via class new HL7_2_7()
+
+ +
text?: string

The HL7 string that we are going to parse.

+
""
+
+ +
\ No newline at end of file diff --git a/interfaces/CORE.ClientListenerOptions.html b/interfaces/CORE.ClientListenerOptions.html new file mode 100644 index 0000000..81939db --- /dev/null +++ b/interfaces/CORE.ClientListenerOptions.html @@ -0,0 +1,85 @@ +ClientListenerOptions | Node HL7 Client - v2.3.0-beta.1

Interface ClientListenerOptions

interface ClientListenerOptions {
    autoConnect?: boolean;
    connectionTimeout?: number;
    encoding?: BufferEncoding;
    host?: string;
    ipv4?: boolean;
    ipv6?: boolean;
    maxAttempts?: number;
    maxConnectionAttempts?: number;
    maxConnections?: number;
    maxTimeout?: number;
    port: number;
    retryHigh?: number;
    retryLow?: number;
    socket?: TcpSocketConnectOpts;
    tls?: boolean | ConnectionOptions;
    waitAck?: boolean;
}

Hierarchy (view full)

Properties

autoConnect?: boolean

If set to false, you have to tell the system to start trying to connect +by sending 'start' method.

+
true
+
+ +
connectionTimeout?: number

How long a connection attempt checked before ending the socket and attempting again. +Min. is 1000 (1 second) and Max. is 60000 (60 seconds.) +Note: Less than 10 seconds could cause some serious issues. +Use with caution.

+
10000
+
+ +
encoding?: BufferEncoding

Encoding of the messages we expect from the HL7 message.

+
"utf-8"
+
+ +
host?: string

Host - You can do a FQDN or the IPv(4|6) address.

+
ipv4?: boolean

IPv4 - If this is set to true, only IPv4 address will be used and also validated upon installation from the hostname property.

+
false
+
+ +
ipv6?: boolean

IPv6 - If this is set to true, only IPv6 address will be used and also validated upon installation from the hostname property.

+
false
+
+ +
maxAttempts?: number

Max attempts +to send the message before an error is thrown if we are in the process of re-attempting to connect to the server. +Has to be greater than 1. You cannot exceed 50.

+
10
+
+ +
maxConnectionAttempts?: number

If we are trying to establish an initial connection to the server, let's end it after this many attempts. +The time between re-connects is determined by connectionTimeout. +You cannot exceed 50.

+

1.1.0

+
30
+
+ +
maxConnections?: number

Max Connections this connection makes. +Has to be greater than 1.

+
10
+
+ +
maxTimeout?: number

The number of times a connection timeout occurs until it stops attempting and just stops.

+

2.1.0

+
10
+
+ +
port: number

The port we should connect to on the server.

+
retryHigh?: number

Max delay, in milliseconds, for exponential-backoff when reconnecting

+
30_000
+
+ +
retryLow?: number

Step size, in milliseconds, for exponential-backoff when reconnecting

+
1000
+
+ +
socket?: TcpSocketConnectOpts

Additional options when creating the TCP socket with net.connect().

+
tls?: boolean | ConnectionOptions

Enable TLS, or set TLS specific options like overriding the CA for +self-signed certificates.

+
waitAck?: boolean

Wait for ACK before sending a new message. +If this is set to false, you can send as many messages as you want but since you are not expecting any ACK from a +previous message sent before sending another one. +This does not stop the "total acknowledgement" counter on the +client object to stop increasing.

+
true *
+
+ +
\ No newline at end of file diff --git a/interfaces/CORE.ClientOptions.html b/interfaces/CORE.ClientOptions.html new file mode 100644 index 0000000..78b0f7c --- /dev/null +++ b/interfaces/CORE.ClientOptions.html @@ -0,0 +1,57 @@ +ClientOptions | Node HL7 Client - v2.3.0-beta.1

Interface ClientOptions

interface ClientOptions {
    connectionTimeout?: number;
    host?: string;
    ipv4?: boolean;
    ipv6?: boolean;
    maxAttempts?: number;
    maxConnectionAttempts?: number;
    maxTimeout?: number;
    retryHigh?: number;
    retryLow?: number;
    socket?: TcpSocketConnectOpts;
    tls?: boolean | ConnectionOptions;
}

Hierarchy (view full)

Properties

connectionTimeout?: number

How long a connection attempt checked before ending the socket and attempting again. +Min. is 1000 (1 second) and Max. is 60000 (60 seconds.) +Note: Less than 10 seconds could cause some serious issues. +Use with caution.

+
10000
+
+ +
host?: string

Host - You can do a FQDN or the IPv(4|6) address.

+
ipv4?: boolean

IPv4 - If this is set to true, only IPv4 address will be used and also validated upon installation from the hostname property.

+
false
+
+ +
ipv6?: boolean

IPv6 - If this is set to true, only IPv6 address will be used and also validated upon installation from the hostname property.

+
false
+
+ +
maxAttempts?: number

Max attempts +to send the message before an error is thrown if we are in the process of re-attempting to connect to the server. +Has to be greater than 1. You cannot exceed 50.

+
10
+
+ +
maxConnectionAttempts?: number

If we are trying to establish an initial connection to the server, let's end it after this many attempts. +The time between re-connects is determined by connectionTimeout. +You cannot exceed 50.

+

1.1.0

+
30
+
+ +
maxTimeout?: number

The number of times a connection timeout occurs until it stops attempting and just stops.

+

2.1.0

+
10
+
+ +
retryHigh?: number

Max delay, in milliseconds, for exponential-backoff when reconnecting

+
30_000
+
+ +
retryLow?: number

Step size, in milliseconds, for exponential-backoff when reconnecting

+
1000
+
+ +
socket?: TcpSocketConnectOpts

Additional options when creating the TCP socket with net.connect().

+
tls?: boolean | ConnectionOptions

Enable TLS, or set TLS specific options like overriding the CA for +self-signed certificates.

+
\ No newline at end of file diff --git a/interfaces/CORE.HL7Node.html b/interfaces/CORE.HL7Node.html new file mode 100644 index 0000000..7b0f6d0 --- /dev/null +++ b/interfaces/CORE.HL7Node.html @@ -0,0 +1,21 @@ +HL7Node | Node HL7 Client - v2.3.0-beta.1

Node Base

+

1.0.0

+
interface HL7Node {
    exists: ((path: string | number) => boolean);
    forEach: ((callback: ((value: HL7Node, index: number) => void)) => void);
    get: ((path: string | number) => HL7Node);
    isEmpty: (() => boolean);
    length: number;
    name: string;
    path: string[];
    read: ((path: string[]) => HL7Node);
    set: ((path: string | number, value?: any) => HL7Node);
    toArray: (() => HL7Node[]);
    toBoolean: (() => boolean);
    toDate: (() => Date);
    toFile: ((name: string, newLine?: boolean, location?: string) => void);
    toFloat: (() => number);
    toInteger: (() => number);
    toRaw: (() => string);
    toString: (() => string);
    write: ((path: string[], value: string) => HL7Node);
}

Implemented by

Properties

exists: ((path: string | number) => boolean)
forEach: ((callback: ((value: HL7Node, index: number) => void)) => void)
get: ((path: string | number) => HL7Node)
isEmpty: (() => boolean)
length: number
name: string
path: string[]
read: ((path: string[]) => HL7Node)
set: ((path: string | number, value?: any) => HL7Node)
toArray: (() => HL7Node[])
toBoolean: (() => boolean)
toDate: (() => Date)
toFile: ((name: string, newLine?: boolean, location?: string) => void)
toFloat: (() => number)
toInteger: (() => number)
toRaw: (() => string)
toString: (() => string)
write: ((path: string[], value: string) => HL7Node)
\ No newline at end of file diff --git a/interfaces/CORE.IConnection.html b/interfaces/CORE.IConnection.html new file mode 100644 index 0000000..1f92df7 --- /dev/null +++ b/interfaces/CORE.IConnection.html @@ -0,0 +1,10 @@ +IConnection | Node HL7 Client - v2.3.0-beta.1

Interface IConnection

interface IConnection {
    on(name: "close", cb: (() => void)): this;
    on(name: "connect", cb: (() => void)): this;
    on(name: "connection", cb: (() => void)): this;
    on(name: "open", cb: (() => void)): this;
    on(name: "client.acknowledged", cb: ((number: number) => void)): this;
    on(name: "client.error", cb: ((err: any) => void)): this;
    on(name: "client.sent", cb: ((number: number) => void)): this;
    on(name: "client.timeout", cb: (() => void)): this;
}

Hierarchy

  • EventEmitter
    • IConnection

Implemented by

Methods

on +

Methods

  • The connection has been closed manually. You have to start the connection again.

    +

    Parameters

    • name: "close"
    • cb: (() => void)
        • (): void
        • Returns void

    Returns this

  • The connection is made.

    +

    Parameters

    • name: "connect"
    • cb: (() => void)
        • (): void
        • Returns void

    Returns this

  • The connection is being (re)established or attempting to re-connect.

    +

    Parameters

    • name: "connection"
    • cb: (() => void)
        • (): void
        • Returns void

    Returns this

  • The handle is open to do a manual start to connect.

    +

    Parameters

    • name: "open"
    • cb: (() => void)
        • (): void
        • Returns void

    Returns this

  • The total acknowledged for this connection.

    +

    Parameters

    • name: "client.acknowledged"
    • cb: ((number: number) => void)
        • (number): void
        • Parameters

          • number: number

          Returns void

    Returns this

  • The connection has an error.

    +

    Parameters

    • name: "client.error"
    • cb: ((err: any) => void)
        • (err): void
        • Parameters

          • err: any

          Returns void

    Returns this

  • The total sent for this connection.

    +

    Parameters

    • name: "client.sent"
    • cb: ((number: number) => void)
        • (number): void
        • Parameters

          • number: number

          Returns void

    Returns this

  • The connection has timeout. Review "client.error" event for the reason.

    +

    Parameters

    • name: "client.timeout"
    • cb: (() => void)
        • (): void
        • Returns void

    Returns this

\ No newline at end of file diff --git a/interfaces/HL7.HL7_2_1_MSH.html b/interfaces/HL7.HL7_2_1_MSH.html new file mode 100644 index 0000000..4e4723f --- /dev/null +++ b/interfaces/HL7.HL7_2_1_MSH.html @@ -0,0 +1,31 @@ +HL7_2_1_MSH | Node HL7 Client - v2.3.0-beta.1

Interface HL7_2_1_MSH

HL7 2.1 MSH Specification

+

Only the required ones are listed below for typescript validation to pass.

+

1.0.0

+

To make it easier on having to fill this out each time, you may do this in your code:

+
// Make this a constant in your application.
const MSH_HEADER: HL7_2_1_MSH = {
msh_9: "ADT",
msh_11_1: "D",
} +
+ +

MSH.7 (Date Time) and MSH.12 (HL7 Spec) are filled in automatically at the time of creation. +and when you create your Message class:

+
const message = new Message({ ...MSH_HEADER, msh_10: 'unique id' })
+
+ +

so this way your code is much neater.

+
interface HL7_2_1_MSH {
    msh_10?: string;
    msh_11: "D" | "P" | "T";
    msh_9: string;
}

Properties

Properties

msh_10?: string

Message Control ID

+

This ID is unique to the message being sent +so the client can track +to see if they get a response back from the server that this particular message was successful. +Max 20 characters.

+

1.0.0

+
Random 20 Character String
+
+ +

randomString if this is set to nothing or not included.

+
msh_11: "D" | "P" | "T"

Processing ID

+

1.0.0

+
msh_9: string

Message Code

+

1.0.0

+
\ No newline at end of file diff --git a/interfaces/HL7.HL7_2_2_MSH.html b/interfaces/HL7.HL7_2_2_MSH.html new file mode 100644 index 0000000..a2ee3d6 --- /dev/null +++ b/interfaces/HL7.HL7_2_2_MSH.html @@ -0,0 +1,34 @@ +HL7_2_2_MSH | Node HL7 Client - v2.3.0-beta.1

Interface HL7_2_2_MSH

HL7 2.2 MSH Specification

+

Only the required ones are listed below for typescript validation to pass.

+

1.0.0

+

To make it easier on having to fill this out each time, you may do this in your code:

+
// Make this a constant in your application.
const MSH_HEADER: HL7_2_2_MSH = {
msh_9_1: "ADT",
msh_9_1: "A01",
msh_11: "D",
} +
+ +

MSH.7 (Date Time) and MSH.12 (HL7 Spec) are filled in automatically at the time of creation. +and when you create your Message class:

+
const message = new Message({ ...MSH_HEADER, msh_10: 'unique id' })
+
+ +

so this way your code is much neater.

+
interface HL7_2_2_MSH {
    msh_10?: string;
    msh_11: "D" | "P" | "T";
    msh_9_1: string;
    msh_9_2: string;
}

Properties

Properties

msh_10?: string

Message Control ID

+

This ID is unique to the message being sent +so the client can track +to see if they get a response back from the server that this particular message was successful. +Max 20 characters.

+

1.0.0

+
Random 20 Character String
+
+ +

randomString if this is set to nothing or not included.

+
msh_11: "D" | "P" | "T"

Processing ID

+

1.0.0

+
msh_9_1: string

Message Code

+

1.0.0

+
msh_9_2: string

Trigger Event

+

1.0.0

+
\ No newline at end of file diff --git a/interfaces/HL7.HL7_2_3_1_MSH.html b/interfaces/HL7.HL7_2_3_1_MSH.html new file mode 100644 index 0000000..6ac0183 --- /dev/null +++ b/interfaces/HL7.HL7_2_3_1_MSH.html @@ -0,0 +1,37 @@ +HL7_2_3_1_MSH | Node HL7 Client - v2.3.0-beta.1

Interface HL7_2_3_1_MSH

HL7 2.3.1 MSH Specification

+

Only the required ones are listed below for typescript validation to pass.

+

1.0.0

+

To make it easier on having to fill this out each time, you may do this in your code:

+
// Make this a constant in your application.
const MSH_HEADER: HL7_2_3_1_MSH = {
msh_9_1: "ADT",
msh_9_2: "A01",
msh_11_1: "D",
msh_11_2: "A",
} +
+ +

MSH.7 (Date Time) and MSH.12 (HL7 Spec) are filled in automatically at the time of creation. +and when you create your Message class:

+
const message = new Message({ ...MSH_HEADER, msh_10: 'unique id' })
+
+ +

so this way your code is much neater.

+
interface HL7_2_3_1_MSH {
    msh_10?: string;
    msh_11_1: "D" | "P" | "T";
    msh_11_2?:
        | ""
        | "T"
        | "A"
        | "I"
        | "R";
    msh_9_1: string;
    msh_9_2: string;
}

Properties

msh_10?: string

Message Control ID

+

This ID is unique to the message being sent +so the client can track +to see if they get a response back from the server that this particular message was successful. +Max 20 characters.

+

1.0.0

+
Random 20 Character String
+
+ +

randomString if this is set to nothing or not included.

+
msh_11_1: "D" | "P" | "T"

Processing ID

+

1.0.0

+
msh_11_2?:
    | ""
    | "T"
    | "A"
    | "I"
    | "R"

Processing Mode

+

1.0.0

+
msh_9_1: string

Message Code

+

1.0.0

+
msh_9_2: string

Trigger Event

+

1.0.0

+
\ No newline at end of file diff --git a/interfaces/HL7.HL7_2_3_MSH.html b/interfaces/HL7.HL7_2_3_MSH.html new file mode 100644 index 0000000..37c8363 --- /dev/null +++ b/interfaces/HL7.HL7_2_3_MSH.html @@ -0,0 +1,37 @@ +HL7_2_3_MSH | Node HL7 Client - v2.3.0-beta.1

Interface HL7_2_3_MSH

HL7 2.3 MSH Specification

+

Only the required ones are listed below for typescript validation to pass.

+

1.0.0

+

To make it easier on having to fill this out each time, you may do this in your code:

+
// Make this a constant in your application.
const MSH_HEADER: HL7_2_3_MSH = {
msh_9_1: "ADT",
msh_9_2: "A01",
msh_11_1: "D",
msh_11_2: "A",
} +
+ +

MSH.7 (Date Time) and MSH.12 (HL7 Spec) are filled in automatically at the time of creation. +and when you create your Message class:

+
const message = new Message({ ...MSH_HEADER, msh_10: 'unique id' })
+
+ +

so this way your code is much neater.

+
interface HL7_2_3_MSH {
    msh_10?: string;
    msh_11_1: "D" | "P" | "T";
    msh_11_2?:
        | ""
        | "T"
        | "A"
        | "I"
        | "R";
    msh_9_1: string;
    msh_9_2: string;
}

Properties

msh_10?: string

Message Control ID

+

This ID is unique to the message being sent +so the client can track +to see if they get a response back from the server that this particular message was successful. +Max 20 characters.

+

1.0.0

+
Random 20 Character String
+
+ +

randomString if this is set to nothing or not included.

+
msh_11_1: "D" | "P" | "T"

Processing ID

+

1.0.0

+
msh_11_2?:
    | ""
    | "T"
    | "A"
    | "I"
    | "R"

Processing Mode

+

1.0.0

+
msh_9_1: string

Message Code

+

1.0.0

+
msh_9_2: string

Trigger Event

+

1.0.0

+
\ No newline at end of file diff --git a/interfaces/HL7.HL7_2_4_MSH.html b/interfaces/HL7.HL7_2_4_MSH.html new file mode 100644 index 0000000..4ccdca9 --- /dev/null +++ b/interfaces/HL7.HL7_2_4_MSH.html @@ -0,0 +1,43 @@ +HL7_2_4_MSH | Node HL7 Client - v2.3.0-beta.1

Interface HL7_2_4_MSH

HL7 2.4 MSH Specification

+

Only the required ones are listed below for typescript validation to pass.

+

1.0.0

+

To make it easier on having to fill this out each time, you may do this in your code:

+
// Make this a constant in your application.
const MSH_HEADER: HL7_2_4_MSH = {
msh_9_1: "ADT",
msh_9_2: "A01",
msh_11_1: "D",
msh_11_2: "A",
} +
+ +

MSH.7 (Date Time) and MSH.12 (HL7 Spec) are filled in automatically at the time of creation. +and when you create your Message class:

+
const message = new Message({ ...MSH_HEADER, msh_10: 'unique id' })
+
+ +

so this way your code is much neater.

+
interface HL7_2_4_MSH {
    msh_10?: string;
    msh_11_1: "D" | "P" | "T";
    msh_11_2?:
        | ""
        | "T"
        | "A"
        | "I"
        | "R";
    msh_9_1: string;
    msh_9_2: string;
    msh_9_3?: string;
}

Properties

msh_10?: string

Message Control ID

+

This ID is unique to the message being sent +so the client can track +to see if they get a response back from the server that this particular message was successful. +Max 20 characters.

+

1.0.0

+
Random 20 Character String
+
+ +

randomString if this is set to nothing or not included.

+
msh_11_1: "D" | "P" | "T"

Processing ID

+

1.0.0

+
msh_11_2?:
    | ""
    | "T"
    | "A"
    | "I"
    | "R"

Processing Mode

+

1.0.0

+
msh_9_1: string

Message Code

+

1.0.0

+
msh_9_2: string

Trigger Event

+

1.0.0

+
msh_9_3?: string

Message Structure

+

2.2.0

+
If not specified, it will be the combo of 9.1 and 9.2 with an underscore.
+
+ +
\ No newline at end of file diff --git a/interfaces/HL7.HL7_2_5_1_MSH.html b/interfaces/HL7.HL7_2_5_1_MSH.html new file mode 100644 index 0000000..b000b18 --- /dev/null +++ b/interfaces/HL7.HL7_2_5_1_MSH.html @@ -0,0 +1,43 @@ +HL7_2_5_1_MSH | Node HL7 Client - v2.3.0-beta.1

Interface HL7_2_5_1_MSH

HL7 2.5.1 MSH Specification

+

Only the required ones are listed below for typescript validation to pass.

+

1.0.0

+

To make it easier on having to fill this out each time, you may do this in your code:

+
// Make this a constant in your application.
const MSH_HEADER: HL7_2_5_1_MSH = {
msh_9_1: "ADT",
msh_9_2: "A01",
msh_11_1: "D",
msh_11_2: "A",
} +
+ +

MSH.7 (Date Time) and MSH.12 (HL7 Spec) are filled in automatically at the time of creation. +and when you create your Message class:

+
const message = new Message({ ...MSH_HEADER, msh_10: 'unique id' })
+
+ +

so this way your code is much neater.

+
interface HL7_2_5_1_MSH {
    msh_10?: string;
    msh_11_1: "D" | "P" | "T";
    msh_11_2?:
        | ""
        | "T"
        | "A"
        | "I"
        | "R";
    msh_9_1: string;
    msh_9_2: string;
    msh_9_3?: string;
}

Properties

msh_10?: string

Message Control ID

+

This ID is unique to the message being sent +so the client can track +to see if they get a response back from the server that this particular message was successful. +Max 20 characters.

+

1.0.0

+
Random 20 Character String
+
+ +

randomString if this is set to nothing or not included.

+
msh_11_1: "D" | "P" | "T"

Processing ID

+

1.0.0

+
msh_11_2?:
    | ""
    | "T"
    | "A"
    | "I"
    | "R"

Processing Mode

+

1.0.0

+
msh_9_1: string

Message Code

+

1.0.0

+
msh_9_2: string

Trigger Event

+

1.0.0

+
msh_9_3?: string

Message Structure

+

2.2.0

+
If not specified, it will be the combo of 9.1 and 9.2 with an underscore.
+
+ +
\ No newline at end of file diff --git a/interfaces/HL7.HL7_2_5_MSH.html b/interfaces/HL7.HL7_2_5_MSH.html new file mode 100644 index 0000000..b4744e8 --- /dev/null +++ b/interfaces/HL7.HL7_2_5_MSH.html @@ -0,0 +1,43 @@ +HL7_2_5_MSH | Node HL7 Client - v2.3.0-beta.1

Interface HL7_2_5_MSH

HL7 2.5 MSH Specification

+

Only the required ones are listed below for typescript validation to pass.

+

1.0.0

+

To make it easier on having to fill this out each time, you may do this in your code:

+
// Make this a constant in your application.
const MSH_HEADER: HL7_2_5_MSH = {
msh_9_1: "ADT",
msh_9_2: "A01",
msh_11_1: "D",
msh_11_2: "A",
} +
+ +

MSH.7 (Date Time) and MSH.12 (HL7 Spec) are filled in automatically at the time of creation. +and when you create your Message class:

+
const message = new Message({ ...MSH_HEADER, msh_10: 'unique id' })
+
+ +

so this way your code is much neater.

+
interface HL7_2_5_MSH {
    msh_10?: string;
    msh_11_1: "D" | "P" | "T";
    msh_11_2?:
        | ""
        | "T"
        | "A"
        | "I"
        | "R";
    msh_9_1: string;
    msh_9_2: string;
    msh_9_3?: string;
}

Properties

msh_10?: string

Message Control ID

+

This ID is unique to the message being sent +so the client can track +to see if they get a response back from the server that this particular message was successful. +Max 20 characters.

+

1.0.0

+
Random 20 Character String
+
+ +

randomString if this is set to nothing or not included.

+
msh_11_1: "D" | "P" | "T"

Processing ID

+

1.0.0

+
msh_11_2?:
    | ""
    | "T"
    | "A"
    | "I"
    | "R"

Processing Mode

+

1.0.0

+
msh_9_1: string

Message Code

+

1.0.0

+
msh_9_2: string

Trigger Event

+

1.0.0

+
msh_9_3?: string

Message Structure

+

2.2.0

+
If not specified, it will be the combo of 9.1 and 9.2 with an underscore.
+
+ +
\ No newline at end of file diff --git a/interfaces/HL7.HL7_2_6_MSH.html b/interfaces/HL7.HL7_2_6_MSH.html new file mode 100644 index 0000000..9ed5b97 --- /dev/null +++ b/interfaces/HL7.HL7_2_6_MSH.html @@ -0,0 +1,43 @@ +HL7_2_6_MSH | Node HL7 Client - v2.3.0-beta.1

Interface HL7_2_6_MSH

HL7 2.6 MSH Specification

+

Only the required ones are listed below for typescript validation to pass.

+

1.0.0

+

To make it easier on having to fill this out each time, you may do this in your code:

+
// Make this a constant in your application.
const MSH_HEADER: HL7_2_6_MSH = {
msh_9_1: "ADT",
msh_9_2: "A01",
msh_11_1: "D",
msh_11_2: "A",
} +
+ +

MSH.7 (Date Time) and MSH.12 (HL7 Spec) are filled in automatically at the time of creation. +and when you create your Message class:

+
const message = new Message({ ...MSH_HEADER, msh_10: 'unique id' })
+
+ +

so this way your code is much neater.

+
interface HL7_2_6_MSH {
    msh_10?: string;
    msh_11_1: "D" | "P" | "T";
    msh_11_2?:
        | ""
        | "T"
        | "A"
        | "I"
        | "R";
    msh_9_1: string;
    msh_9_2: string;
    msh_9_3?: string;
}

Properties

msh_10?: string

Message Control ID

+

This ID is unique to the message being sent +so the client can track +to see if they get a response back from the server that this particular message was successful. +Max 20 characters.

+

1.0.0

+
Random 20 Character String
+
+ +

randomString if this is set to nothing or not included.

+
msh_11_1: "D" | "P" | "T"

Processing ID

+

1.0.0

+
msh_11_2?:
    | ""
    | "T"
    | "A"
    | "I"
    | "R"

Processing Mode

+

1.0.0

+
msh_9_1: string

Message Code

+

1.0.0

+
msh_9_2: string

Trigger Event

+

1.0.0

+
msh_9_3?: string

Message Structure

+

2.2.0

+
If not specified, it will be the combo of 9.1 and 9.2 with an underscore.
+
+ +
\ No newline at end of file diff --git a/interfaces/HL7.HL7_2_7_1_MSH.html b/interfaces/HL7.HL7_2_7_1_MSH.html new file mode 100644 index 0000000..f7fd0b0 --- /dev/null +++ b/interfaces/HL7.HL7_2_7_1_MSH.html @@ -0,0 +1,42 @@ +HL7_2_7_1_MSH | Node HL7 Client - v2.3.0-beta.1

Interface HL7_2_7_1_MSH

HL7 2.7.1 MSH Specification

+

Only the required ones are listed below for typescript validation to pass.

+

1.0.0

+

To make it easier on having to fill this out each time, you may do this in your code:

+
// Make this a constant in your application.
const MSH_HEADER: HL7_2_7_MSH = {
msh_9_1: "ADT",
msh_9_2: "A01",
msh_11_1: "D",
} +
+ +

MSH.7 (Date Time) and MSH.12 (HL7 Spec) are filled in automatically at the time of creation. +and when you create your Message class:

+
const message = new Message({ ...MSH_HEADER, msh_10: 'unique id' })
+
+ +

so this way your code is much neater.

+
interface HL7_2_7_1_MSH {
    msh_10?: string;
    msh_11_1: "D" | "P" | "T";
    msh_11_2?:
        | ""
        | "T"
        | "A"
        | "I"
        | "R";
    msh_9_1: string;
    msh_9_2: string;
    msh_9_3?: string;
}

Properties

msh_10?: string

Message Control ID

+

This ID is unique to the message being sent +so the client can track +to see if they get a response back from the server that this particular message was successful.

+

1.0.0

+
Random 20 Character String
+
+ +

randomString if this is set to nothing or not included.

+
msh_11_1: "D" | "P" | "T"

Processing ID

+

1.0.0

+
msh_11_2?:
    | ""
    | "T"
    | "A"
    | "I"
    | "R"

Processing Mode

+

1.0.0

+
msh_9_1: string

Message Code

+

1.0.0

+
msh_9_2: string

Trigger Event

+

1.0.0

+
msh_9_3?: string

Message Structure

+

2.2.0

+
If not specified, it will be the combo of 9.1 and 9.2 with an underscore.
+
+ +
\ No newline at end of file diff --git a/interfaces/HL7.HL7_2_7_MSH.html b/interfaces/HL7.HL7_2_7_MSH.html new file mode 100644 index 0000000..77aafbd --- /dev/null +++ b/interfaces/HL7.HL7_2_7_MSH.html @@ -0,0 +1,42 @@ +HL7_2_7_MSH | Node HL7 Client - v2.3.0-beta.1

Interface HL7_2_7_MSH

HL7 2.7 MSH Specification

+

Only the required ones are listed below for typescript validation to pass.

+

1.0.0

+

To make it easier on having to fill this out each time, you may do this in your code:

+
// Make this a constant in your application.
const MSH_HEADER: HL7_2_7_MSH = {
msh_9_1: "ADT",
msh_9_2: "A01",
msh_11_1: "D",
} +
+ +

MSH.7 (Date Time) and MSH.12 (HL7 Spec) are filled in automatically at the time of creation. +and when you create your Message class:

+
const message = new Message({ ...MSH_HEADER, msh_10: 'unique id' })
+
+ +

so this way your code is much neater.

+
interface HL7_2_7_MSH {
    msh_10?: string;
    msh_11_1: "D" | "P" | "T";
    msh_11_2?:
        | ""
        | "T"
        | "A"
        | "I"
        | "R";
    msh_9_1: string;
    msh_9_2: string;
    msh_9_3?: string;
}

Properties

msh_10?: string

Message Control ID

+

This ID is unique to the message being sent +so the client can track +to see if they get a response back from the server that this particular message was successful.

+

1.0.0

+
Random 20 Character String
+
+ +

randomString if this is set to nothing or not included.

+
msh_11_1: "D" | "P" | "T"

Processing ID

+

1.0.0

+
msh_11_2?:
    | ""
    | "T"
    | "A"
    | "I"
    | "R"

Processing Mode

+

1.0.0

+
msh_9_1: string

Message Code

+

1.0.0

+
msh_9_2: string

Trigger Event

+

1.0.0

+
msh_9_3?: string

Message Structure

+

2.2.0

+
If not specified, it will be the combo of 9.1 and 9.2 with an underscore.
+
+ +
\ No newline at end of file diff --git a/interfaces/HL7.HL7_2_8_MSH.html b/interfaces/HL7.HL7_2_8_MSH.html new file mode 100644 index 0000000..ff05109 --- /dev/null +++ b/interfaces/HL7.HL7_2_8_MSH.html @@ -0,0 +1,42 @@ +HL7_2_8_MSH | Node HL7 Client - v2.3.0-beta.1

Interface HL7_2_8_MSH

HL7 2.8 MSH Specification

+

Only the required ones are listed below for typescript validation to pass.

+

1.0.0

+

To make it easier on having to fill this out each time, you may do this in your code:

+
// Make this a constant in your application.
const MSH_HEADER: HL7_2_8_MSH = {
msh_9_1: "ADT",
msh_9_2: "A01",
msh_11_1: "D",
} +
+ +

MSH.7 (Date Time) and MSH.12 (HL7 Spec) are filled in automatically at the time of creation. +and when you create your Message class:

+
const message = new Message({ ...MSH_HEADER, msh_10: 'unique id' })
+
+ +

so this way your code is much neater.

+
interface HL7_2_8_MSH {
    msh_10?: string;
    msh_11_1: "D" | "P" | "T";
    msh_11_2?:
        | ""
        | "T"
        | "A"
        | "I"
        | "R";
    msh_9_1: string;
    msh_9_2: string;
    msh_9_3?: string;
}

Properties

msh_10?: string

Message Control ID

+

This ID is unique to the message being sent +so the client can track +to see if they get a response back from the server that this particular message was successful.

+

1.0.0

+
Random 20 Character String
+
+ +

randomString if this is set to nothing or not included.

+
msh_11_1: "D" | "P" | "T"

Processing ID

+

1.0.0

+
msh_11_2?:
    | ""
    | "T"
    | "A"
    | "I"
    | "R"

Processing Mode

+

1.0.0

+
msh_9_1: string

Message Code

+

1.0.0

+
msh_9_2: string

Trigger Event

+

1.0.0

+
msh_9_3?: string

Message Structure

+

2.2.0

+
If not specified, it will be the combo of 9.1 and 9.2 with an underscore.
+
+ +
\ No newline at end of file diff --git a/interfaces/HL7.HL7_SPEC.html b/interfaces/HL7.HL7_SPEC.html new file mode 100644 index 0000000..a7142ef --- /dev/null +++ b/interfaces/HL7.HL7_SPEC.html @@ -0,0 +1,9 @@ +HL7_SPEC | Node HL7 Client - v2.3.0-beta.1

Interface HL7_SPEC

HL7 Base Interface

+

1.0.0

+
interface HL7_SPEC {
    buildMSH: ((mshHeader: MSH, massage: Message) => void);
    checkMSH: ((options: MSH) => boolean);
    name: string;
}

Implemented by

Properties

Properties

buildMSH: ((mshHeader: MSH, massage: Message) => void)

Build MSH

+
checkMSH: ((options: MSH) => boolean)

Check the MSH Header for this Specification

+
name: string

Name of the HL7 Spec

+
\ No newline at end of file diff --git a/media/LICENSE b/media/LICENSE new file mode 100644 index 0000000..8da2d0c --- /dev/null +++ b/media/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Shane + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/media/index.md b/media/index.md new file mode 100644 index 0000000..55bc4ce --- /dev/null +++ b/media/index.md @@ -0,0 +1,86 @@ +# Node HL7 Client :: Documentation + +## Introduction + +The point of the Health Level Seven International ("HL7") +is +so that any application +that needs to integrate into the health care ecosystem can talk to each other in a common language. + +For example, let's take three different medical application and equipment companies: + +* GE Healthcare — Produces Medical Equipment and Software that goes along with it. +* Philips Healthcare — Produces Medical Equipment and Software that goes along with it. +* Epic - A premier Electronic Medical Record ("EMR") System. + +GE and Philips systems sometimes need to share to another system, +like an Electronic Medical Record ("EMR") to send results of a patient's diagnosis. +Or in the other direction, +Epic needs to send their applications that a patient has been admitted to facility and to send orders +(i.e., tests to be done) to their applications to be preformed and preformed correctly. +Since the EMR, GE, and Philips are all different companies, +they all have their own proprietary code and can't talk to each other naturally with their internal language. + +So HL7 was born. +HL7 allows GE, Philips, and/or the EMR to generate "results" and/or "communicate" using a common framework. +You need something in the middle to do so. +While there are plenty of paid interface HL7 engines out there, they are expensive, +and not to say they don't work, they do work. +But nothing is more needed than an HL7 Parser/Builder/Client (Send) ("HL7 Client") message that be important to do. + +This is not the world's authority on HL7. +If you need a more compressive on how to read and understand HL7 structure, +please visit [https://www.hl7.org](https://www.hl7.org/implement/standards/index.cfm?ref=nav) for more information. + +## Table of Contents + +1. [Introduction](#introduction) +2. [Solving the Divide](#solving-the-divide) +3. [Keyword Definitions](#Keyword-Definitions) +4. [Layout of Documentation](#layout-of-documentation) +5. [Copyright Notice](#copyright-notice) + +## Solving the Divide + +So what we are trying to solve with this NPM library is build an HL7 Client +that can be brought into the NodeJS ecosystem that is very well documented and also very well strongly typed. +It was also meant to not have to realize on outside NPM packages +(other than for development) so that it's fast and super lightweight. +At just under 500KB, this package does it all. + +There is still more to be developed, but this NPM library can do a lot all ready. + +## Keyword Definitions + +This NPM is designed to support medical applications with potential impact on patient care and diagnoses, +this package documentation, +and its peer package [node-hl7-server]() follow these definitions when it comes to the documentation. + +Keywords such as "MUST", "MUST NOT", "REQUIRED", +"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL". +These are standardized terms for technology documentation interoperability. +These words should have these meaning when you are reading them. +They might be sans uppercase throughout the documentation, but they would have the same meaning regardless. + +* **MUST** - This word, or the terms "**REQUIRED**" or "**SHALL**", mean that the definition is an absolute requirement of the specification. +* **MUST NOT** - This phrase, or the phrase "**SHALL NOT**", mean that the definition is an absolute prohibition of the specification. +* **SHOULD** - This word, or the adjective "**RECOMMENDED**", mean that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood and carefully weighed before choosing a different course. +* **SHOULD NOT** - This phrase, or the phrase "**NOT RECOMMENDED**", mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful. The full implications should be understood, and the case carefully weighed before implementing any behavior described with this label. +* **MAY** - This word, or the adjective "**OPTIONAL**", mean that an item is truly optional. Any implementation which does not include a particular option MUST be prepared to interoperate with another implementation which does include the option, though perhaps with reduced functionality. In the same vein, an implementation which does include a particular option MUST be prepared to interoperate with another implementation, which does not include the option (except, of course, for the feature the option provides.) + +## Layout of Documentation + +This documentation is laid out into three parts: + +| Section | Purposes | +|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Builder](builder/index.md) | The builder helps you generate standardized and proper HL7 messages. It's the heart of generating the message that need to be sent. | +| [Client](client/index.md) | The client connects you to a server/broker service to send a HL7 message, and then process the response from the server/broker as needed. If you need to accept messages from an outside source, you need to use the peer package of node-hl7-server, which can run along this package. | +| [Parser](parser/index.md) | The parser, which is built within the same builder, parses HL7 messages, either from a server response from the client connection or from HL7 formatted "files" which could also store messages. | + + +## COPYRIGHT NOTICE + +Epic, GE, and Philips are al registered trademarks to their respective owners. +We are using them only as an example, and od not in any way are affiliated or sponsored. +They are used as examples of how HL7 works, and that is it. \ No newline at end of file diff --git a/modules.html b/modules.html new file mode 100644 index 0000000..8b3f6b4 --- /dev/null +++ b/modules.html @@ -0,0 +1,3 @@ +Node HL7 Client - v2.3.0-beta.1

Node HL7 Client - v2.3.0-beta.1

Index

Namespaces

\ No newline at end of file diff --git a/modules/CORE.html b/modules/CORE.html new file mode 100644 index 0000000..f1419f8 --- /dev/null +++ b/modules/CORE.html @@ -0,0 +1,37 @@ +CORE | Node HL7 Client - v2.3.0-beta.1
\ No newline at end of file diff --git a/modules/HL7.html b/modules/HL7.html new file mode 100644 index 0000000..a5939f0 --- /dev/null +++ b/modules/HL7.html @@ -0,0 +1,26 @@ +HL7 | Node HL7 Client - v2.3.0-beta.1
\ No newline at end of file diff --git a/types/CORE.OutboundHandler.html b/types/CORE.OutboundHandler.html new file mode 100644 index 0000000..d655810 --- /dev/null +++ b/types/CORE.OutboundHandler.html @@ -0,0 +1,4 @@ +OutboundHandler | Node HL7 Client - v2.3.0-beta.1

Type Alias OutboundHandler

OutboundHandler: ((res: InboundResponse) => Promise<void> | void)

Outbound Handler

+

Used to receive a response from the server

+

1.0.0

+
\ No newline at end of file diff --git a/types/HL7.MSH.html b/types/HL7.MSH.html new file mode 100644 index 0000000..77fffad --- /dev/null +++ b/types/HL7.MSH.html @@ -0,0 +1,3 @@ +MSH | Node HL7 Client - v2.3.0-beta.1

Type Alias MSH

MSH:
    | HL7_2_1_MSH
    | HL7_2_2_MSH
    | HL7_2_3_MSH
    | HL7_2_3_1_MSH
    | HL7_2_4_MSH
    | HL7_2_5_MSH
    | HL7_2_5_1_MSH
    | HL7_2_6_MSH
    | HL7_2_7_MSH
    | HL7_2_7_1_MSH
    | HL7_2_8_MSH

MSH Unions

+

1.0.0

+
\ No newline at end of file