UNPKG

@ai-ecom/medusa-plugin-patient-record

Version:

A plugin for patient record

589 lines (588 loc) 33.4 kB
"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;