gcp-nrces-fhir
Version:
Google cloud healthcare api NRCES FHIR implimenataion
404 lines • 17.8 kB
JavaScript
"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