@ai-ecom/medusa-plugin-patient-record
Version:
A plugin for patient record
589 lines (588 loc) • 33.4 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _instanceof2 = _interopRequireDefault(require("@babel/runtime/helpers/instanceof"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _medusa = require("@medusajs/medusa");
var _medusaCoreUtils = require("medusa-core-utils");
var _referenceCondition = require("../models/reference-condition");
var _excluded = ["values", "unit", "conditions"];
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
var ExaminationResultTitleService = /*#__PURE__*/function (_TransactionBaseServi) {
function ExaminationResultTitleService(_ref) {
var _this;
var examinationResultTitleRepository = _ref.examinationResultTitleRepository,
referenceRepository = _ref.referenceRepository,
referenceValueRepository = _ref.referenceValueRepository,
unitRepository = _ref.unitRepository,
eventBusService = _ref.eventBusService,
referenceService = _ref.referenceService,
referenceValueService = _ref.referenceValueService,
referenceConditionRepository = _ref.referenceConditionRepository;
(0, _classCallCheck2["default"])(this, ExaminationResultTitleService);
// eslint-disable-next-line prefer-rest-params
_this = _callSuper(this, ExaminationResultTitleService, [arguments[0]]);
_this.examinationResultTitleRepository_ = examinationResultTitleRepository;
_this.eventBusService_ = eventBusService;
_this.referenceService_ = referenceService;
_this.referenceValueService_ = referenceValueService;
_this.referenceRepository_ = referenceRepository;
_this.referenceValueRepository_ = referenceValueRepository;
_this.unitRepository_ = unitRepository;
_this.referenceConditionRepository_ = referenceConditionRepository;
return _this;
}
(0, _inherits2["default"])(ExaminationResultTitleService, _TransactionBaseServi);
return (0, _createClass2["default"])(ExaminationResultTitleService, [{
key: "list",
value: function () {
var _list = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(selector) {
var config,
_yield$this$listAndCo,
_yield$this$listAndCo2,
examinationResultTitle,
_args = arguments;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
config = _args.length > 1 && _args[1] !== undefined ? _args[1] : {
skip: 0,
take: 50,
relations: []
};
_context.next = 3;
return this.listAndCount(selector, config);
case 3:
_yield$this$listAndCo = _context.sent;
_yield$this$listAndCo2 = (0, _slicedToArray2["default"])(_yield$this$listAndCo, 1);
examinationResultTitle = _yield$this$listAndCo2[0];
return _context.abrupt("return", examinationResultTitle);
case 7:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function list(_x) {
return _list.apply(this, arguments);
}
return list;
}()
}, {
key: "listAndCount",
value: function () {
var _listAndCount = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(selector) {
var config,
examinationResultTitleRepo,
query,
_args2 = arguments;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
config = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {
skip: 0,
take: 50,
relations: []
};
examinationResultTitleRepo = this.activeManager_.withRepository(this.examinationResultTitleRepository_);
query = (0, _medusa.buildQuery)(selector, config);
return _context2.abrupt("return", examinationResultTitleRepo.findAndCount(query));
case 4:
case "end":
return _context2.stop();
}
}, _callee2, this);
}));
function listAndCount(_x2) {
return _listAndCount.apply(this, arguments);
}
return listAndCount;
}()
}, {
key: "retrieve",
value: function () {
var _retrieve = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(examinationResultTitleId, config) {
var examinationResultTitle;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return this.retrieve_({
id: examinationResultTitleId
}, config);
case 2:
examinationResultTitle = _context3.sent;
if (examinationResultTitle) {
_context3.next = 5;
break;
}
throw new _medusaCoreUtils.MedusaError(_medusaCoreUtils.MedusaError.Types.NOT_FOUND, "ExaminationResultTitle with ".concat(examinationResultTitleId, " was not found"));
case 5:
return _context3.abrupt("return", examinationResultTitle);
case 6:
case "end":
return _context3.stop();
}
}, _callee3, this);
}));
function retrieve(_x3, _x4) {
return _retrieve.apply(this, arguments);
}
return retrieve;
}()
}, {
key: "retrieve_",
value: function () {
var _retrieve_ = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(selector, config) {
var examinationResultTitleRepo, query, examinationResultTitle;
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
examinationResultTitleRepo = this.activeManager_.withRepository(this.examinationResultTitleRepository_);
query = (0, _medusa.buildQuery)(selector, config);
_context4.next = 4;
return examinationResultTitleRepo.findOne(query);
case 4:
examinationResultTitle = _context4.sent;
return _context4.abrupt("return", examinationResultTitle);
case 6:
case "end":
return _context4.stop();
}
}, _callee4, this);
}));
function retrieve_(_x5, _x6) {
return _retrieve_.apply(this, arguments);
}
return retrieve_;
}()
}, {
key: "create",
value: function () {
var _create = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(examinationResultTitleObject) {
var _this2 = this;
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return this.atomicPhase_( /*#__PURE__*/function () {
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(manager) {
var examinationResultTitleRepo, examinationResultTitle, result;
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) switch (_context5.prev = _context5.next) {
case 0:
examinationResultTitleRepo = manager.withRepository(_this2.examinationResultTitleRepository_);
_context5.prev = 1;
examinationResultTitle = examinationResultTitleRepo.create(examinationResultTitleObject);
_context5.next = 5;
return examinationResultTitleRepo.save(examinationResultTitle);
case 5:
examinationResultTitle = _context5.sent;
_context5.next = 8;
return _this2.retrieve(examinationResultTitle.id, {
relations: []
});
case 8:
result = _context5.sent;
_context5.next = 11;
return _this2.eventBusService_.withTransaction(manager).emit(ExaminationResultTitleService.Events.CREATED, {
id: result.id
});
case 11:
return _context5.abrupt("return", result);
case 14:
_context5.prev = 14;
_context5.t0 = _context5["catch"](1);
throw (0, _medusa.formatException)(_context5.t0);
case 17:
case "end":
return _context5.stop();
}
}, _callee5, null, [[1, 14]]);
}));
return function (_x8) {
return _ref2.apply(this, arguments);
};
}());
case 2:
return _context6.abrupt("return", _context6.sent);
case 3:
case "end":
return _context6.stop();
}
}, _callee6, this);
}));
function create(_x7) {
return _create.apply(this, arguments);
}
return create;
}()
}, {
key: "isObject",
value: function isObject(variable) {
return (0, _typeof2["default"])(variable) === "object" && variable !== null && !Array.isArray(variable);
}
}, {
key: "upsertBulk",
value: function () {
var _upsertBulk = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(examinationResultTitleObjects) {
var _this3 = this;
var config,
_args10 = arguments;
return _regenerator["default"].wrap(function _callee10$(_context10) {
while (1) switch (_context10.prev = _context10.next) {
case 0:
config = _args10.length > 1 && _args10[1] !== undefined ? _args10[1] : {
emitTransaction: true,
customManager: null
};
_context10.next = 3;
return this.atomicPhase_( /*#__PURE__*/function () {
var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(upsertManager) {
var _config$customManager;
var manager, examinationResultTitleRepo, referenceRepo, referenceValueRepo, unitRepo, referenceConditionRepo, upsertPromises, examinationResultTitles;
return _regenerator["default"].wrap(function _callee9$(_context9) {
while (1) switch (_context9.prev = _context9.next) {
case 0:
manager = (_config$customManager = config === null || config === void 0 ? void 0 : config.customManager) !== null && _config$customManager !== void 0 ? _config$customManager : upsertManager;
examinationResultTitleRepo = manager.withRepository(_this3.examinationResultTitleRepository_);
referenceRepo = manager.withRepository(_this3.referenceRepository_);
referenceValueRepo = manager.withRepository(_this3.referenceValueRepository_);
unitRepo = manager.withRepository(_this3.unitRepository_);
referenceConditionRepo = manager.withRepository(_this3.referenceConditionRepository_);
_context9.prev = 6;
upsertPromises = examinationResultTitleObjects.map( /*#__PURE__*/function () {
var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(examinationResultTitleObject) {
var examinationResultTitle, _conditions$map, _examinationResultTit3, _examinationResultTit, values, unit, conditions, rest, referenceRetrieve, _examinationResultTit2, _reference, _reference2, _reference2$values, _reference$values, unitCreated, conditionsCreated, promiseConditions, reference;
return _regenerator["default"].wrap(function _callee8$(_context8) {
while (1) switch (_context8.prev = _context8.next) {
case 0:
_context8.next = 2;
return examinationResultTitleRepo.upsertExaminationResultTitle({
title: examinationResultTitleObject === null || examinationResultTitleObject === void 0 ? void 0 : examinationResultTitleObject.title,
nature_id: examinationResultTitleObject === null || examinationResultTitleObject === void 0 ? void 0 : examinationResultTitleObject.nature_id
});
case 2:
examinationResultTitle = _context8.sent;
if (!(examinationResultTitleObject !== null && examinationResultTitleObject !== void 0 && examinationResultTitleObject.reference)) {
_context8.next = 38;
break;
}
_examinationResultTit = examinationResultTitleObject.reference, values = _examinationResultTit.values, unit = _examinationResultTit.unit, conditions = _examinationResultTit.conditions, rest = (0, _objectWithoutProperties2["default"])(_examinationResultTit, _excluded);
_context8.next = 7;
return referenceRepo.findReferenceByCustom({
conditions: (_conditions$map = conditions === null || conditions === void 0 ? void 0 : conditions.map(function (condition) {
var _condition$title;
return condition === null || condition === void 0 ? void 0 : (_condition$title = condition.title) === null || _condition$title === void 0 ? void 0 : _condition$title.toLowerCase();
})) !== null && _conditions$map !== void 0 ? _conditions$map : null,
examination_result_title_id: examinationResultTitle.id,
gender: rest.gender,
type: rest.type
});
case 7:
referenceRetrieve = _context8.sent;
if (!((referenceRetrieve === null || referenceRetrieve === void 0 ? void 0 : referenceRetrieve.length) === 1)) {
_context8.next = 23;
break;
}
_context8.next = 11;
return referenceRepo.findOne({
where: {
id: referenceRetrieve === null || referenceRetrieve === void 0 ? void 0 : referenceRetrieve.id
},
relations: ["values"]
});
case 11:
_reference = _context8.sent;
if (!values) {
_context8.next = 18;
break;
}
if (!(((_reference2 = _reference) === null || _reference2 === void 0 ? void 0 : (_reference2$values = _reference2.values) === null || _reference2$values === void 0 ? void 0 : _reference2$values.length) > 0)) {
_context8.next = 16;
break;
}
_context8.next = 16;
return referenceValueRepo["delete"]((_reference$values = _reference.values) === null || _reference$values === void 0 ? void 0 : _reference$values.map(function (referenceValue) {
return referenceValue.id;
}));
case 16:
_reference.values = [];
values.map(function (value) {
var createReferenceValue = referenceValueRepo.create(value);
_reference.values.push(createReferenceValue);
});
case 18:
_context8.next = 20;
return referenceRepo.save(_reference);
case 20:
_reference = _context8.sent;
examinationResultTitle.references = [].concat((0, _toConsumableArray2["default"])((examinationResultTitle === null || examinationResultTitle === void 0 ? void 0 : (_examinationResultTit2 = examinationResultTitle.references) === null || _examinationResultTit2 === void 0 ? void 0 : _examinationResultTit2.filter(function (referenceFil) {
return referenceFil.id !== _reference.id;
})) || []), [_reference]);
return _context8.abrupt("return", examinationResultTitle);
case 23:
if (!unit) {
_context8.next = 27;
break;
}
_context8.next = 26;
return unitRepo.upsertUnit({
denominator_id: unit.denominator,
nominator_id: unit.nominator
});
case 26:
unitCreated = _context8.sent;
case 27:
if (!conditions) {
_context8.next = 32;
break;
}
promiseConditions = conditions.flatMap( /*#__PURE__*/function () {
var _ref5 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(condition) {
return _regenerator["default"].wrap(function _callee7$(_context7) {
while (1) switch (_context7.prev = _context7.next) {
case 0:
if (!((0, _instanceof2["default"])(condition, _referenceCondition.ReferenceCondition) || _this3.isObject(condition))) {
_context7.next = 2;
break;
}
return _context7.abrupt("return", condition);
case 2:
_context7.next = 4;
return referenceConditionRepo.upsertReferenceCondition({
title: condition
});
case 4:
return _context7.abrupt("return", _context7.sent);
case 5:
case "end":
return _context7.stop();
}
}, _callee7);
}));
return function (_x12) {
return _ref5.apply(this, arguments);
};
}());
_context8.next = 31;
return Promise.all(promiseConditions);
case 31:
conditionsCreated = _context8.sent;
case 32:
reference = referenceRepo.create(_objectSpread(_objectSpread({}, rest), {}, {
conditions: conditionsCreated,
unit: unitCreated,
examination_result_title_id: examinationResultTitle.id
}));
if (values) {
reference.values = [];
values.map(function (value) {
var createReferenceValue = referenceValueRepo.create(value);
reference.values.push(createReferenceValue);
});
}
_context8.next = 36;
return referenceRepo.save(reference);
case 36:
reference = _context8.sent;
// Currently handle only one reference
examinationResultTitle.references = [].concat((0, _toConsumableArray2["default"])((_examinationResultTit3 = examinationResultTitle === null || examinationResultTitle === void 0 ? void 0 : examinationResultTitle.references) !== null && _examinationResultTit3 !== void 0 ? _examinationResultTit3 : []), [reference]);
case 38:
return _context8.abrupt("return", examinationResultTitle);
case 39:
case "end":
return _context8.stop();
}
}, _callee8);
}));
return function (_x11) {
return _ref4.apply(this, arguments);
};
}());
_context9.next = 10;
return Promise.all(upsertPromises);
case 10:
examinationResultTitles = _context9.sent;
return _context9.abrupt("return", examinationResultTitles);
case 14:
_context9.prev = 14;
_context9.t0 = _context9["catch"](6);
throw (0, _medusa.formatException)(_context9.t0);
case 17:
case "end":
return _context9.stop();
}
}, _callee9, null, [[6, 14]]);
}));
return function (_x10) {
return _ref3.apply(this, arguments);
};
}());
case 3:
return _context10.abrupt("return", _context10.sent);
case 4:
case "end":
return _context10.stop();
}
}, _callee10, this);
}));
function upsertBulk(_x9) {
return _upsertBulk.apply(this, arguments);
}
return upsertBulk;
}()
}, {
key: "delete",
value: function () {
var _delete2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12(examinationResultTitleId) {
var _this4 = this;
return _regenerator["default"].wrap(function _callee12$(_context12) {
while (1) switch (_context12.prev = _context12.next) {
case 0:
_context12.next = 2;
return this.atomicPhase_( /*#__PURE__*/function () {
var _ref6 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11(manager) {
var examinationResultTitleRepo, examinationResultTitle;
return _regenerator["default"].wrap(function _callee11$(_context11) {
while (1) switch (_context11.prev = _context11.next) {
case 0:
examinationResultTitleRepo = manager.withRepository(_this4.examinationResultTitleRepository_);
_context11.next = 3;
return examinationResultTitleRepo.findOne({
where: {
id: examinationResultTitleId
},
relations: []
});
case 3:
examinationResultTitle = _context11.sent;
if (examinationResultTitle) {
_context11.next = 6;
break;
}
return _context11.abrupt("return");
case 6:
_context11.next = 8;
return examinationResultTitleRepo.softRemove(examinationResultTitle);
case 8:
_context11.next = 10;
return _this4.eventBusService_.withTransaction(manager).emit(ExaminationResultTitleService.Events.DELETED, {
id: examinationResultTitleId
});
case 10:
return _context11.abrupt("return", Promise.resolve());
case 11:
case "end":
return _context11.stop();
}
}, _callee11);
}));
return function (_x14) {
return _ref6.apply(this, arguments);
};
}());
case 2:
return _context12.abrupt("return", _context12.sent);
case 3:
case "end":
return _context12.stop();
}
}, _callee12, this);
}));
function _delete(_x13) {
return _delete2.apply(this, arguments);
}
return _delete;
}()
}, {
key: "update",
value: function () {
var _update2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14(examinationResultTitleId, _update) {
var _this5 = this;
return _regenerator["default"].wrap(function _callee14$(_context14) {
while (1) switch (_context14.prev = _context14.next) {
case 0:
_context14.next = 2;
return this.atomicPhase_( /*#__PURE__*/function () {
var _ref7 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13(manager) {
var examinationResultTitleRepo, examinationResultTitle, rest, _i, _Object$entries, _Object$entries$_i, key, value, result;
return _regenerator["default"].wrap(function _callee13$(_context13) {
while (1) switch (_context13.prev = _context13.next) {
case 0:
examinationResultTitleRepo = manager.withRepository(_this5.examinationResultTitleRepository_);
_context13.next = 3;
return _this5.retrieve(examinationResultTitleId, {});
case 3:
examinationResultTitle = _context13.sent;
rest = (0, _extends2["default"])({}, ((0, _objectDestructuringEmpty2["default"])(_update), _update));
for (_i = 0, _Object$entries = Object.entries(rest); _i < _Object$entries.length; _i++) {
_Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2), key = _Object$entries$_i[0], value = _Object$entries$_i[1];
if ((0, _typeof2["default"])(value) !== "undefined") {
examinationResultTitle[key] = value;
}
}
_context13.next = 8;
return examinationResultTitleRepo.save(examinationResultTitle);
case 8:
result = _context13.sent;
_context13.next = 11;
return _this5.eventBusService_.withTransaction(manager).emit(ExaminationResultTitleService.Events.UPDATED, {
id: result.id,
fields: Object.keys(_update)
});
case 11:
return _context13.abrupt("return", result);
case 12:
case "end":
return _context13.stop();
}
}, _callee13);
}));
return function (_x17) {
return _ref7.apply(this, arguments);
};
}());
case 2:
return _context14.abrupt("return", _context14.sent);
case 3:
case "end":
return _context14.stop();
}
}, _callee14, this);
}));
function update(_x15, _x16) {
return _update2.apply(this, arguments);
}
return update;
}()
}]);
}(_medusa.TransactionBaseService);
// eslint-disable-next-line max-len
// eslint-disable-next-line max-len
(0, _defineProperty2["default"])(ExaminationResultTitleService, "IndexName", "examination-result-titles");
(0, _defineProperty2["default"])(ExaminationResultTitleService, "Events", {
UPDATED: "examination-result-title.updated",
CREATED: "examination-result-title.created",
DELETED: "examination-result-title.deleted"
});
var _default = exports["default"] = ExaminationResultTitleService;