UNPKG

gcp-nrces-fhir

Version:

Google cloud healthcare api NRCES FHIR implimenataion

404 lines 17.8 kB
"use strict"; 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 }); exports.OPConsultRecord = void 0; const _1 = require("."); const gcp_1 = __importDefault(require("../../classess/gcp")); class OPConsultRecord extends _1.Composition { constructor() { super(...arguments); this.create = (options) => __awaiter(this, void 0, void 0, function* () { options.composition.section = []; options.composition.section.push({ title: "Chief complaints", code: { coding: [ { system: "http://snomed.info/sct", code: "422843007", display: "Chief complaint section", }, ], }, entry: [ { reference: `Condition/${options.chiefComplaints.id}`, }, ], }); options.composition.documentDatahtml = `<h6>Chief complaints</h6>${options.chiefComplaints.text.div}`; if (options.allergies) { options.composition.section.push({ title: "Allergies", code: { coding: [ { system: "http://snomed.info/sct", code: "722446000", display: "Allergy record", }, ], }, entry: [ { reference: `AllergyIntolerance/${options.allergies.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Allergies</h6>${options.allergies.text.div}`; } if (options.medicalHistory) { options.composition.section.push({ title: "Medical History", code: { coding: [ { system: "http://snomed.info/sct", code: "371529009", display: "History and physical report", }, ], }, entry: [ { reference: `Condition/${options.medicalHistory.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Medical History</h6>${options.medicalHistory.text.div}`; } if (options.physicalExamination) { options.composition.section.push({ title: "Physical Examination", code: { coding: [ { system: "http://snomed.info/sct", code: "371529009", display: "physical report", }, ], }, entry: [ { reference: `Condition/${options.physicalExamination.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Physical Examination</h6>${options.physicalExamination.text.div}`; } if (options.investigationAdvice) { options.composition.section.push({ title: "Investigation Advice", code: { coding: [ { system: "http://snomed.info/sct", code: "721963009", display: "Order document", }, ], }, entry: [ { reference: `ServiceRequest/${options.investigationAdvice.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Investigation Advice</h6>${options.investigationAdvice.text.div}`; } if (options.procedure) { options.composition.section.push({ title: "Procedure", code: { coding: [ { system: "http://snomed.info/sct", code: "371525003", display: "Clinical procedure report", }, ], }, entry: [ { reference: `Procedure/${options.procedure.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Procedure</h6>${options.procedure.text.div}`; } if (options.followUp) { options.composition.section.push({ title: "Follow Up", code: { coding: [ { system: "http://snomed.info/sct", code: "736271009", display: "Outpatient care plan", }, ], }, entry: [ { reference: `Appointment/${options.followUp.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Follow up</h6>${options.followUp.text.div}`; } if (options.medicationRequest || options.medicationRequest) { let entry = []; if (options.medicationStatement) { entry.push({ reference: `MedicationStatement/${options.medicationStatement.id}`, }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Medication Statement</h6>${options.medicationStatement.text.div}`; } if (options.medicationRequest) { entry.push({ reference: `MedicationRequest/${options.medicationRequest.id}`, }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Prescription</h6>${options.medicationRequest.text.div}`; } options.composition.section.push({ title: "Medications", code: { coding: [ { system: "http://snomed.info/sct", code: "721912009", display: "Medication summary document", }, ], }, entry: entry, }); } const body = this.getFHIR(options.composition); body.section = options.composition.section; const gcpFhirCrud = new gcp_1.default(); const res = yield gcpFhirCrud.createFhirResource(body, "Composition"); return res; }); this.update = (options) => __awaiter(this, void 0, void 0, function* () { options.composition.section = []; options.composition.section.push({ title: "Chief complaints", code: { coding: [ { system: "http://snomed.info/sct", code: "422843007", display: "Chief complaint section", }, ], }, entry: [ { reference: `Condition/${options.chiefComplaints.id}`, }, ], }); options.composition.documentDatahtml = `<h6>Chief Complaints</h6>${options.chiefComplaints.text.div}`; if (options.allergies) { options.composition.section.push({ title: "Allergies", code: { coding: [ { system: "http://snomed.info/sct", code: "722446000", display: "Allergy record", }, ], }, entry: [ { reference: `AllergyIntolerance/${options.allergies.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Allergies</h6>${options.allergies.text.div}`; } if (options.medicalHistory) { options.composition.section.push({ title: "Medical History", code: { coding: [ { system: "http://snomed.info/sct", code: "371529009", display: "History and physical report", }, ], }, entry: [ { reference: `Condition/${options.medicalHistory.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Medical History</h6>${options.medicalHistory.text.div}`; } if (options.physicalExamination) { options.composition.section.push({ title: "Physical Examination", code: { coding: [ { system: "http://snomed.info/sct", code: "371529009", display: " physical report", }, ], }, entry: [ { reference: `Condition/${options.physicalExamination.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Physical Examination</h6>${options.physicalExamination.text.div}`; } if (options.investigationAdvice) { options.composition.section.push({ title: "Investigation Advice", code: { coding: [ { system: "http://snomed.info/sct", code: "721963009", display: "Order document", }, ], }, entry: [ { reference: `ServiceRequest/${options.investigationAdvice.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Investigation Advice</h6> ${options.investigationAdvice.text.div}`; } if (options.procedure) { options.composition.section.push({ title: "Procedure", code: { coding: [ { system: "http://snomed.info/sct", code: "371525003", display: "Clinical procedure report", }, ], }, entry: [ { reference: `Procedure/${options.procedure.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Procedure</h6>${options.procedure.text.div}`; } if (options.followUp) { options.composition.section.push({ title: "Follow Up", code: { coding: [ { system: "http://snomed.info/sct", code: "736271009", display: "Outpatient care plan", }, ], }, entry: [ { reference: `Appointment/${options.followUp.id}`, }, ], }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Follow up</h6>${options.followUp.text.div}`; } if (options.medicationRequest || options.medicationRequest) { let entry = []; if (options.medicationStatement) { entry.push({ reference: `MedicationStatement/${options.medicationStatement.id}`, }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Medication Statement</h6>${options.medicationStatement.text.div}`; } if (options.medicationRequest) { entry.push({ reference: `MedicationRequest/${options.medicationRequest.id}`, }); options.composition.documentDatahtml = options.composition.documentDatahtml + `<h6>Prescription</h6>${options.medicationRequest.text.div}`; } options.composition.section.push({ title: "Medications", code: { coding: [ { system: "http://snomed.info/sct", code: "721912009", display: "Medication summary document", }, ], }, entry: entry, }); } const body = this.getFHIR(options.composition); body.section = options.composition.section; const gcpFhirCrud = new gcp_1.default(); const res = yield gcpFhirCrud.updateFhirResource(body, options.composition.id || "", "Composition"); return res; }); } } exports.OPConsultRecord = OPConsultRecord; //# sourceMappingURL=OPConsultRecord%20copy.js.map