gcp-nrces-fhir
Version:
Google cloud healthcare api NRCES FHIR implimenataion
303 lines • 12.3 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ResourceMai_1 = __importDefault(require("../resources/ResourceMai"));
const TimeZone_1 = require("../TimeZone");
// import GcpFhirCRUD from "./gcp";
class ResourceToHTML {
codeableConceptToHtml(val) {
if (!Array.isArray(val)) {
val = [val];
}
let ret = "";
val.forEach((concept) => {
if (concept.coding) {
ret += concept.coding.map((el) => this.codingToHtml(el)).join("");
}
if (concept.text) {
ret += `<p>${concept.text}</p>`;
}
});
return `<div>${ret}</div>`;
}
codingToHtml(el) {
return `
<p>
${el.code ? `<i> Code</i> ${el.code} <br/>` : ""}
${el.display ? `<i> Display</i> ${el.display} <br/>` : ""}
${el.system
? `<i> System</i> <a href="${el.system}" target="_blank" rel="noopener noreferrer">${el.system}</a><br/>`
: ""}
${el.userSelected !== undefined
? `<i> UserSelected</i> ${el.userSelected}<br/>`
: ""}
${el.version ? `<i> Version</i> ${el.version}<br/>` : ""}
</p>
`;
}
identifierToHtml(val) {
if (!Array.isArray(val)) {
val = [val];
}
let parts = [];
val.forEach((el) => {
parts.push("<p>");
if (el.system) {
parts.push(`<i>System</i> <a href="${el.system}" target="_blank" rel="noopener noreferrer">Right Click Open in new tab</a>`);
}
if (el.value) {
parts.push(`<i> Value</i> ${el.value}`);
}
if (el.period) {
parts.push(`<i> Period</i> ${this.periodtoHtml(el.period, false)}`);
}
if (el.assigner) {
try {
const resourceMain = new ResourceMai_1.default();
parts.push(`<i> Assigner Organization ID</i> ${resourceMain.getIdFromReference({
resourceType: "Organization",
ref: el.assigner.Reference,
})}`);
}
catch (error) {
console.error("Error processing assigner:", error);
}
}
if (el.type) {
parts.push(this.codeableConceptToHtml(el.type));
}
if (el.use) {
parts.push(`<i>Use</i> ${el.use}`);
}
parts.push("</p>");
});
return `<div>${parts.join("")}</div>`; // Join all parts on a single line with "|"
}
periodtoHtml(val, onlyDate) {
let ret = "";
if (val.start) {
ret += `Start : ${new TimeZone_1.TimeZone().convertTZ(val.start, "Asia/Kolkata", onlyDate)} `;
}
if (val.end) {
ret += `End : ${new TimeZone_1.TimeZone().convertTZ(val.end, "Asia/Kolkata", onlyDate)} `;
}
return ret;
}
extensionToHtml(val) {
let ret = "";
if (val.url) {
ret += `<i>URL</i> : <a href=${val.url} target="_blank" rel="noopener noreferrer">${val.url}</a>
<br\>`;
}
if (val.valueString) {
ret += `<i>Value</i> : ${val.valueString}`;
}
return ret;
}
codeDiplaytoHtml(val) {
let ret = "";
if (val.system) {
ret += `<i>System</i> <a href="${val.system}" target="_blank" rel="noopener noreferrer">
${val.code || ""} ${val.display || ""}
</a><br/>`;
}
else {
ret += `${val.code || ""} ${val.display || ""}`;
}
return ret;
}
codingtoHtml(val) {
let ret = "";
ret += this.codeDiplaytoHtml(val);
if (val.userSelected) {
ret += `<i>User Selected</i> : ${val.userSelected}<br/>`;
}
if (val.version) {
ret += `<i>Version</i> : ${val.version}<br/>`;
}
return ret;
}
positionToHtml(val) {
let ret = "";
if (val.altitude) {
ret += `<i>Altitude</i> : ${val.altitude}<br/> `;
}
if (val.latitude) {
ret += `<i>Latitude</i> : ${val.latitude}<br/>`;
}
if (val.longitude) {
ret += `<i>Longitude</i> : ${val.longitude}<br/>`;
}
return ret;
}
multiResourceToHtml(val, name) {
if (!Array.isArray(val)) {
val = [val];
}
if (val.length === 0) {
return `<p>${name}</p><p>No resources available</p>`;
}
let ret = `<p>${name}</p>`;
try {
ret += val
.map((el) => {
const fields = [
"<p>",
el.display ? `<i>Display</i> ${el.display}` : "",
el.type ? `<i>Type</i> ${el.type}` : "",
el.resource ? `<i>Resource</i> ${el.resource}` : "",
el.id ? `<i>Resource ID</i> ${el.id}` : "",
"</p>",
].join("");
return fields
? `<div>${fields}</div>`
: `<div><i>No details available</i></div>`;
})
.join("<br>");
}
catch (error) {
console.error("Error in multiResourceToHtml:", error);
ret += "<p>Error processing resources</p>";
}
return ret;
}
payloadToHtml(val) {
const getPayloads = (val) => val.map(p => `<li>${getPayloadContent(p)}</li>`).join('') || '';
const getPayloadContent = (payload) => {
if (!payload.content)
return '';
if (payload.content.contentAttachment) {
const a = payload.content.contentAttachment;
return `Attachment: ${a.title}
${a.data && `<br/><a href="data:${a.contentType};base64,${a.data}" >Right Click Open in new tab</a>`}
${a.url && `<br/><a href="${a.url}" >Right Click Open in new tab</a>`}
`;
}
if (payload.content.contentString) {
return `Text: ${payload.content.contentString}`;
}
if (payload.content.contentReference) {
return `Reference: ${this.multiResourceToHtml(Object.assign({}, payload.content.contentReference), "")}`;
}
return '';
};
return getPayloads(val);
}
insuranceToHtml(option) {
var _a, _b;
return __awaiter(this, void 0, void 0, function* () {
let ret = "";
if (option.val.length > 0) {
ret += `<h4>Insurances</h4>`;
ret += `<table data-pdfmake="{'widths':['50%','25%', '25%']}">
<tr>
<th>Coverage</th>
<th>Extension</th>
<th>Focal</th>
</tr>`;
for (const el of option.val) {
ret += `<tr><td>`;
// Coverages
if ((_a = el.coverage) === null || _a === void 0 ? void 0 : _a.reference) {
try {
const id = `${(_b = el.coverage) === null || _b === void 0 ? void 0 : _b.reference}`.substring("Coverage".length + 1);
const coverage = option.coverage.find(el => el.id == id);
if (coverage) {
ret += yield this.coverageToHtml({
addResourceType: false,
patient: option.patient,
payerCode: option.payerCode,
payerName: option.payerName,
body: coverage,
showInsuranceCompany: false,
showPatient: false,
});
}
}
catch (error) {
console.error("Error fetching coverage:", error);
}
}
ret += `</td>`;
// Extension
ret += `<td>`;
if (el.extension) {
ret += el.extension.map(ex => this.extensionToHtml(ex)).join(`<br/>`);
}
ret += `</td>`;
// Focal
ret += `<td>${el.focal || ""}</td>`;
ret += `</tr>`;
}
ret += `</table>`;
}
return ret;
});
}
coverageToHtml(option) {
return __awaiter(this, void 0, void 0, function* () {
const body = option.body;
let ret = "";
if (option.addResourceType) {
ret += `<h1>Coverage</h1>`;
}
if (body.div && body.div.text != "") {
ret += `<h2>Text</h2>`;
ret += `${body.div.text}`;
}
if (option.showPatient) {
ret += `<h3>Patient</h3>`;
ret += `<p>UHID ${option.patient.MRN} Name ${option.patient.name} ${option.patient.mobile || ""}</p>`;
}
if (option.showInsuranceCompany && option.body.insurerOrganizationId) {
ret += `<h3>Insurance</h3>`;
ret += `<p>${option.payerName} ${option.payerCode}</p>`;
ret += `<hr/>`;
}
if (option.body.payor && option.body.payor.length > 0) {
ret += `<h3>Payor</h3>`;
option.body.payor.forEach((el) => {
if (el.display) {
ret += `<i>Display</i> : ${el.display}<br/>`;
}
if (el.resource) {
ret += `<i>Resource Type</i> : ${el.resource} `;
}
if (el.id) {
ret += `<i>Id</i> : ${el.id}`;
}
});
}
ret += `<hr/>`;
if (option.body.status) {
ret += `<b>Coverage Status</b> : ${option.body.status}<br/>`;
}
if (option.body.policyHolder && option.body.policyHolder.id) {
ret += `<b>PolicyHolder</b> : ${option.body.policyHolder.id}<br/>`;
}
if (option.body.subscriberId) {
ret += `<b>Policy Subscriber</b> : ${option.body.subscriberId}<br/>`;
}
if (option.body.relationship) {
ret += `<b>Subscriber Relationship</b> : ${this.codeableConceptToHtml(option.body.relationship)}<br/>`;
}
if (option.body.period) {
ret += `Coverage Period : Start : ${new TimeZone_1.TimeZone().convertTZ(option.body.period.start, "Asia/Kolkata", true)} - End : ${new TimeZone_1.TimeZone().convertTZ(option.body.period.end, "Asia/Kolkata", true)}<br/>`;
}
return ret;
});
}
}
exports.default = ResourceToHTML;
//# sourceMappingURL=ReseorcetToHtml.js.map