dhpgemrdhs92092 1.250821.11342 → 1.250910.11839
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +505 -493
- package/package.json +1 -1
package/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! [dist-pg-services.js]; ===WEBPACK BUILD: 1.25.
|
1
|
+
/*! [dist-pg-services.js]; ===WEBPACK BUILD: 1.25.0910.1839=== */
|
2
2
|
(() => {
|
3
3
|
var e = {
|
4
4
|
4466: (e, n, t) => {
|
@@ -994,7 +994,7 @@
|
|
994
994
|
}
|
995
995
|
|
996
996
|
function z(e, n, t, o) {
|
997
|
-
var a = n && n.prototype instanceof
|
997
|
+
var a = n && n.prototype instanceof m ? n : m,
|
998
998
|
r = Object.create(a.prototype),
|
999
999
|
p = new S(o || []);
|
1000
1000
|
return i(r, "_invoke", {
|
@@ -1020,9 +1020,9 @@
|
|
1020
1020
|
u = "suspendedYield",
|
1021
1021
|
l = "executing",
|
1022
1022
|
A = "completed",
|
1023
|
-
|
1023
|
+
h = {};
|
1024
1024
|
|
1025
|
-
function
|
1025
|
+
function m() {}
|
1026
1026
|
|
1027
1027
|
function f() {}
|
1028
1028
|
|
@@ -1034,7 +1034,7 @@
|
|
1034
1034
|
var W = Object.getPrototypeOf,
|
1035
1035
|
g = W && W(W(x([])));
|
1036
1036
|
g && g !== a && r.call(g, c) && (_ = g);
|
1037
|
-
var L = q.prototype =
|
1037
|
+
var L = q.prototype = m.prototype = Object.create(_);
|
1038
1038
|
|
1039
1039
|
function y(e) {
|
1040
1040
|
["next", "throw", "return"].forEach((function(n) {
|
@@ -1091,7 +1091,7 @@
|
|
1091
1091
|
if (p) {
|
1092
1092
|
var c = E(p, o);
|
1093
1093
|
if (c) {
|
1094
|
-
if (c ===
|
1094
|
+
if (c === h) continue;
|
1095
1095
|
return c
|
1096
1096
|
}
|
1097
1097
|
}
|
@@ -1103,7 +1103,7 @@
|
|
1103
1103
|
a = l;
|
1104
1104
|
var s = d(n, t, o);
|
1105
1105
|
if ("normal" === s.type) {
|
1106
|
-
if (a = o.done ? A : u, s.arg ===
|
1106
|
+
if (a = o.done ? A : u, s.arg === h) continue;
|
1107
1107
|
return {
|
1108
1108
|
value: s.arg,
|
1109
1109
|
done: o.done
|
@@ -1117,11 +1117,11 @@
|
|
1117
1117
|
function E(n, t) {
|
1118
1118
|
var o = t.method,
|
1119
1119
|
a = n.iterator[o];
|
1120
|
-
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")),
|
1120
|
+
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")), h;
|
1121
1121
|
var r = d(a, n.iterator, t.arg);
|
1122
|
-
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null,
|
1122
|
+
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null, h;
|
1123
1123
|
var i = r.arg;
|
1124
|
-
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null,
|
1124
|
+
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null, h) : i : (t.method = "throw", t.arg = new TypeError("iterator result is not an object"), t.delegate = null, h)
|
1125
1125
|
}
|
1126
1126
|
|
1127
1127
|
function N(e) {
|
@@ -1246,16 +1246,16 @@
|
|
1246
1246
|
}
|
1247
1247
|
a && ("break" === e || "continue" === e) && a.tryLoc <= n && n <= a.finallyLoc && (a = null);
|
1248
1248
|
var i = a ? a.completion : {};
|
1249
|
-
return i.type = e, i.arg = n, a ? (this.method = "next", this.next = a.finallyLoc,
|
1249
|
+
return i.type = e, i.arg = n, a ? (this.method = "next", this.next = a.finallyLoc, h) : this.complete(i)
|
1250
1250
|
},
|
1251
1251
|
complete: function(e, n) {
|
1252
1252
|
if ("throw" === e.type) throw e.arg;
|
1253
|
-
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n),
|
1253
|
+
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n), h
|
1254
1254
|
},
|
1255
1255
|
finish: function(e) {
|
1256
1256
|
for (var n = this.tryEntries.length - 1; n >= 0; --n) {
|
1257
1257
|
var t = this.tryEntries[n];
|
1258
|
-
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t),
|
1258
|
+
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t), h
|
1259
1259
|
}
|
1260
1260
|
},
|
1261
1261
|
catch: function(e) {
|
@@ -1277,7 +1277,7 @@
|
|
1277
1277
|
iterator: x(n),
|
1278
1278
|
resultName: t,
|
1279
1279
|
nextLoc: o
|
1280
|
-
}, "next" === this.method && (this.arg = e),
|
1280
|
+
}, "next" === this.method && (this.arg = e), h
|
1281
1281
|
}
|
1282
1282
|
}, o
|
1283
1283
|
}
|
@@ -1406,7 +1406,7 @@
|
|
1406
1406
|
}
|
1407
1407
|
|
1408
1408
|
function z(e, n, t, o) {
|
1409
|
-
var a = n && n.prototype instanceof
|
1409
|
+
var a = n && n.prototype instanceof m ? n : m,
|
1410
1410
|
r = Object.create(a.prototype),
|
1411
1411
|
p = new S(o || []);
|
1412
1412
|
return i(r, "_invoke", {
|
@@ -1432,9 +1432,9 @@
|
|
1432
1432
|
u = "suspendedYield",
|
1433
1433
|
l = "executing",
|
1434
1434
|
A = "completed",
|
1435
|
-
|
1435
|
+
h = {};
|
1436
1436
|
|
1437
|
-
function
|
1437
|
+
function m() {}
|
1438
1438
|
|
1439
1439
|
function f() {}
|
1440
1440
|
|
@@ -1446,7 +1446,7 @@
|
|
1446
1446
|
var W = Object.getPrototypeOf,
|
1447
1447
|
g = W && W(W(x([])));
|
1448
1448
|
g && g !== t && r.call(g, c) && (_ = g);
|
1449
|
-
var L = q.prototype =
|
1449
|
+
var L = q.prototype = m.prototype = Object.create(_);
|
1450
1450
|
|
1451
1451
|
function y(e) {
|
1452
1452
|
["next", "throw", "return"].forEach((function(n) {
|
@@ -1503,7 +1503,7 @@
|
|
1503
1503
|
if (p) {
|
1504
1504
|
var c = E(p, o);
|
1505
1505
|
if (c) {
|
1506
|
-
if (c ===
|
1506
|
+
if (c === h) continue;
|
1507
1507
|
return c
|
1508
1508
|
}
|
1509
1509
|
}
|
@@ -1515,7 +1515,7 @@
|
|
1515
1515
|
a = l;
|
1516
1516
|
var s = d(n, t, o);
|
1517
1517
|
if ("normal" === s.type) {
|
1518
|
-
if (a = o.done ? A : u, s.arg ===
|
1518
|
+
if (a = o.done ? A : u, s.arg === h) continue;
|
1519
1519
|
return {
|
1520
1520
|
value: s.arg,
|
1521
1521
|
done: o.done
|
@@ -1529,11 +1529,11 @@
|
|
1529
1529
|
function E(n, t) {
|
1530
1530
|
var o = t.method,
|
1531
1531
|
a = n.iterator[o];
|
1532
|
-
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")),
|
1532
|
+
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")), h;
|
1533
1533
|
var r = d(a, n.iterator, t.arg);
|
1534
|
-
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null,
|
1534
|
+
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null, h;
|
1535
1535
|
var i = r.arg;
|
1536
|
-
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null,
|
1536
|
+
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null, h) : i : (t.method = "throw", t.arg = new TypeError("iterator result is not an object"), t.delegate = null, h)
|
1537
1537
|
}
|
1538
1538
|
|
1539
1539
|
function N(e) {
|
@@ -1658,16 +1658,16 @@
|
|
1658
1658
|
}
|
1659
1659
|
a && ("break" === e || "continue" === e) && a.tryLoc <= n && n <= a.finallyLoc && (a = null);
|
1660
1660
|
var i = a ? a.completion : {};
|
1661
|
-
return i.type = e, i.arg = n, a ? (this.method = "next", this.next = a.finallyLoc,
|
1661
|
+
return i.type = e, i.arg = n, a ? (this.method = "next", this.next = a.finallyLoc, h) : this.complete(i)
|
1662
1662
|
},
|
1663
1663
|
complete: function(e, n) {
|
1664
1664
|
if ("throw" === e.type) throw e.arg;
|
1665
|
-
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n),
|
1665
|
+
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n), h
|
1666
1666
|
},
|
1667
1667
|
finish: function(e) {
|
1668
1668
|
for (var n = this.tryEntries.length - 1; n >= 0; --n) {
|
1669
1669
|
var t = this.tryEntries[n];
|
1670
|
-
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t),
|
1670
|
+
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t), h
|
1671
1671
|
}
|
1672
1672
|
},
|
1673
1673
|
catch: function(e) {
|
@@ -1689,7 +1689,7 @@
|
|
1689
1689
|
iterator: x(n),
|
1690
1690
|
resultName: t,
|
1691
1691
|
nextLoc: o
|
1692
|
-
}, "next" === this.method && (this.arg = e),
|
1692
|
+
}, "next" === this.method && (this.arg = e), h
|
1693
1693
|
}
|
1694
1694
|
}, n
|
1695
1695
|
}
|
@@ -1915,15 +1915,15 @@
|
|
1915
1915
|
}
|
1916
1916
|
return "application/json"
|
1917
1917
|
}();
|
1918
|
-
var
|
1918
|
+
var h = (A.url + "").toLowerCase();
|
1919
1919
|
switch (!0) {
|
1920
|
-
case
|
1920
|
+
case h.startsWith("https://api.heroku.com"):
|
1921
1921
|
A.headers.Accept = "application/vnd.heroku+json; version=3";
|
1922
1922
|
break;
|
1923
|
-
case
|
1923
|
+
case h.startsWith("https://api.github.com"):
|
1924
1924
|
A.headers.Accept = "application/vnd.github.v3+json";
|
1925
1925
|
break;
|
1926
|
-
case
|
1926
|
+
case h.startsWith("https://api.ngrok.com"):
|
1927
1927
|
A.headers["Ngrok-Version"] = 2
|
1928
1928
|
}
|
1929
1929
|
A.headers.Authorization = "Authorization" in A.headers ? A.headers.Authorization : p.isStringNonEmpty(o) ? o : p.isStringNonEmpty(s) ? "Basic ".concat(function(e) {
|
@@ -1944,7 +1944,7 @@
|
|
1944
1944
|
}
|
1945
1945
|
throw new Error("No valid method for Base64 encoding found in the current environment.")
|
1946
1946
|
}("".concat(u, ":").concat(s))) : p.isStringNonEmpty(d) ? "Bearer ".concat(d) : void 0;
|
1947
|
-
var
|
1947
|
+
var m = function() {
|
1948
1948
|
switch (M) {
|
1949
1949
|
case b.BROWSER:
|
1950
1950
|
case b.CHROME_EXTENSION:
|
@@ -1957,7 +1957,7 @@
|
|
1957
1957
|
return "body"
|
1958
1958
|
}
|
1959
1959
|
}();
|
1960
|
-
A[
|
1960
|
+
A[m] = function() {
|
1961
1961
|
var e = function() {
|
1962
1962
|
for (var e = ["content-type", "contenttype"], n = 0; n < e.length; n++)
|
1963
1963
|
if (c.getPropertyValueIgnoreCaseForceEmpty(A, "headers.".concat(e[n])).toLowerCase().includes("application/x-www-form-urlencoded")) return !0;
|
@@ -2275,10 +2275,10 @@
|
|
2275
2275
|
},
|
2276
2276
|
logError: u,
|
2277
2277
|
logStarted: function() {
|
2278
|
-
return O("🚀- ".concat(p, "; 🅥:").concat("1.25.
|
2278
|
+
return O("🚀- ".concat(p, "; 🅥:").concat("1.25.0910.1839"))
|
2279
2279
|
},
|
2280
2280
|
logEnded: function() {
|
2281
|
-
return O("🔜 - ".concat(p, "; 🅥:").concat("1.25.
|
2281
|
+
return O("🔜 - ".concat(p, "; 🅥:").concat("1.25.0910.1839", " 🔚"))
|
2282
2282
|
},
|
2283
2283
|
DirectoryPathLogs: c,
|
2284
2284
|
logInfoObject: function(e) {
|
@@ -2381,7 +2381,7 @@
|
|
2381
2381
|
}
|
2382
2382
|
|
2383
2383
|
function z(e, n, t, o) {
|
2384
|
-
var r = n && n.prototype instanceof
|
2384
|
+
var r = n && n.prototype instanceof m ? n : m,
|
2385
2385
|
i = Object.create(r.prototype),
|
2386
2386
|
p = new S(o || []);
|
2387
2387
|
return a(i, "_invoke", {
|
@@ -2407,9 +2407,9 @@
|
|
2407
2407
|
u = "suspendedYield",
|
2408
2408
|
l = "executing",
|
2409
2409
|
A = "completed",
|
2410
|
-
|
2410
|
+
h = {};
|
2411
2411
|
|
2412
|
-
function
|
2412
|
+
function m() {}
|
2413
2413
|
|
2414
2414
|
function f() {}
|
2415
2415
|
|
@@ -2421,7 +2421,7 @@
|
|
2421
2421
|
var W = Object.getPrototypeOf,
|
2422
2422
|
g = W && W(W(x([])));
|
2423
2423
|
g && g !== t && o.call(g, c) && (_ = g);
|
2424
|
-
var L = q.prototype =
|
2424
|
+
var L = q.prototype = m.prototype = Object.create(_);
|
2425
2425
|
|
2426
2426
|
function y(e) {
|
2427
2427
|
["next", "throw", "return"].forEach((function(n) {
|
@@ -2478,7 +2478,7 @@
|
|
2478
2478
|
if (p) {
|
2479
2479
|
var c = E(p, o);
|
2480
2480
|
if (c) {
|
2481
|
-
if (c ===
|
2481
|
+
if (c === h) continue;
|
2482
2482
|
return c
|
2483
2483
|
}
|
2484
2484
|
}
|
@@ -2490,7 +2490,7 @@
|
|
2490
2490
|
a = l;
|
2491
2491
|
var s = d(n, t, o);
|
2492
2492
|
if ("normal" === s.type) {
|
2493
|
-
if (a = o.done ? A : u, s.arg ===
|
2493
|
+
if (a = o.done ? A : u, s.arg === h) continue;
|
2494
2494
|
return {
|
2495
2495
|
value: s.arg,
|
2496
2496
|
done: o.done
|
@@ -2504,11 +2504,11 @@
|
|
2504
2504
|
function E(n, t) {
|
2505
2505
|
var o = t.method,
|
2506
2506
|
a = n.iterator[o];
|
2507
|
-
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")),
|
2507
|
+
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")), h;
|
2508
2508
|
var r = d(a, n.iterator, t.arg);
|
2509
|
-
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null,
|
2509
|
+
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null, h;
|
2510
2510
|
var i = r.arg;
|
2511
|
-
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null,
|
2511
|
+
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null, h) : i : (t.method = "throw", t.arg = new TypeError("iterator result is not an object"), t.delegate = null, h)
|
2512
2512
|
}
|
2513
2513
|
|
2514
2514
|
function N(e) {
|
@@ -2633,16 +2633,16 @@
|
|
2633
2633
|
}
|
2634
2634
|
r && ("break" === e || "continue" === e) && r.tryLoc <= n && n <= r.finallyLoc && (r = null);
|
2635
2635
|
var i = r ? r.completion : {};
|
2636
|
-
return i.type = e, i.arg = n, r ? (this.method = "next", this.next = r.finallyLoc,
|
2636
|
+
return i.type = e, i.arg = n, r ? (this.method = "next", this.next = r.finallyLoc, h) : this.complete(i)
|
2637
2637
|
},
|
2638
2638
|
complete: function(e, n) {
|
2639
2639
|
if ("throw" === e.type) throw e.arg;
|
2640
|
-
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n),
|
2640
|
+
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n), h
|
2641
2641
|
},
|
2642
2642
|
finish: function(e) {
|
2643
2643
|
for (var n = this.tryEntries.length - 1; n >= 0; --n) {
|
2644
2644
|
var t = this.tryEntries[n];
|
2645
|
-
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t),
|
2645
|
+
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t), h
|
2646
2646
|
}
|
2647
2647
|
},
|
2648
2648
|
catch: function(e) {
|
@@ -2664,7 +2664,7 @@
|
|
2664
2664
|
iterator: x(n),
|
2665
2665
|
resultName: t,
|
2666
2666
|
nextLoc: o
|
2667
|
-
}, "next" === this.method && (this.arg = e),
|
2667
|
+
}, "next" === this.method && (this.arg = e), h
|
2668
2668
|
}
|
2669
2669
|
}, n
|
2670
2670
|
}
|
@@ -2864,7 +2864,7 @@
|
|
2864
2864
|
}
|
2865
2865
|
|
2866
2866
|
function z(e, n, t, o) {
|
2867
|
-
var a = n && n.prototype instanceof
|
2867
|
+
var a = n && n.prototype instanceof m ? n : m,
|
2868
2868
|
r = Object.create(a.prototype),
|
2869
2869
|
p = new S(o || []);
|
2870
2870
|
return i(r, "_invoke", {
|
@@ -2890,9 +2890,9 @@
|
|
2890
2890
|
u = "suspendedYield",
|
2891
2891
|
l = "executing",
|
2892
2892
|
A = "completed",
|
2893
|
-
|
2893
|
+
h = {};
|
2894
2894
|
|
2895
|
-
function
|
2895
|
+
function m() {}
|
2896
2896
|
|
2897
2897
|
function f() {}
|
2898
2898
|
|
@@ -2904,7 +2904,7 @@
|
|
2904
2904
|
var W = Object.getPrototypeOf,
|
2905
2905
|
g = W && W(W(x([])));
|
2906
2906
|
g && g !== t && r.call(g, c) && (_ = g);
|
2907
|
-
var L = q.prototype =
|
2907
|
+
var L = q.prototype = m.prototype = Object.create(_);
|
2908
2908
|
|
2909
2909
|
function y(e) {
|
2910
2910
|
["next", "throw", "return"].forEach((function(n) {
|
@@ -2961,7 +2961,7 @@
|
|
2961
2961
|
if (p) {
|
2962
2962
|
var c = E(p, o);
|
2963
2963
|
if (c) {
|
2964
|
-
if (c ===
|
2964
|
+
if (c === h) continue;
|
2965
2965
|
return c
|
2966
2966
|
}
|
2967
2967
|
}
|
@@ -2973,7 +2973,7 @@
|
|
2973
2973
|
a = l;
|
2974
2974
|
var s = d(n, t, o);
|
2975
2975
|
if ("normal" === s.type) {
|
2976
|
-
if (a = o.done ? A : u, s.arg ===
|
2976
|
+
if (a = o.done ? A : u, s.arg === h) continue;
|
2977
2977
|
return {
|
2978
2978
|
value: s.arg,
|
2979
2979
|
done: o.done
|
@@ -2987,11 +2987,11 @@
|
|
2987
2987
|
function E(n, t) {
|
2988
2988
|
var o = t.method,
|
2989
2989
|
a = n.iterator[o];
|
2990
|
-
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")),
|
2990
|
+
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")), h;
|
2991
2991
|
var r = d(a, n.iterator, t.arg);
|
2992
|
-
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null,
|
2992
|
+
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null, h;
|
2993
2993
|
var i = r.arg;
|
2994
|
-
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null,
|
2994
|
+
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null, h) : i : (t.method = "throw", t.arg = new TypeError("iterator result is not an object"), t.delegate = null, h)
|
2995
2995
|
}
|
2996
2996
|
|
2997
2997
|
function N(e) {
|
@@ -3116,16 +3116,16 @@
|
|
3116
3116
|
}
|
3117
3117
|
a && ("break" === e || "continue" === e) && a.tryLoc <= n && n <= a.finallyLoc && (a = null);
|
3118
3118
|
var i = a ? a.completion : {};
|
3119
|
-
return i.type = e, i.arg = n, a ? (this.method = "next", this.next = a.finallyLoc,
|
3119
|
+
return i.type = e, i.arg = n, a ? (this.method = "next", this.next = a.finallyLoc, h) : this.complete(i)
|
3120
3120
|
},
|
3121
3121
|
complete: function(e, n) {
|
3122
3122
|
if ("throw" === e.type) throw e.arg;
|
3123
|
-
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n),
|
3123
|
+
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n), h
|
3124
3124
|
},
|
3125
3125
|
finish: function(e) {
|
3126
3126
|
for (var n = this.tryEntries.length - 1; n >= 0; --n) {
|
3127
3127
|
var t = this.tryEntries[n];
|
3128
|
-
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t),
|
3128
|
+
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t), h
|
3129
3129
|
}
|
3130
3130
|
},
|
3131
3131
|
catch: function(e) {
|
@@ -3147,7 +3147,7 @@
|
|
3147
3147
|
iterator: x(n),
|
3148
3148
|
resultName: t,
|
3149
3149
|
nextLoc: o
|
3150
|
-
}, "next" === this.method && (this.arg = e),
|
3150
|
+
}, "next" === this.method && (this.arg = e), h
|
3151
3151
|
}
|
3152
3152
|
}, n
|
3153
3153
|
}
|
@@ -3374,7 +3374,7 @@
|
|
3374
3374
|
}
|
3375
3375
|
|
3376
3376
|
function z(e, n, t, o) {
|
3377
|
-
var a = n && n.prototype instanceof
|
3377
|
+
var a = n && n.prototype instanceof m ? n : m,
|
3378
3378
|
r = Object.create(a.prototype),
|
3379
3379
|
p = new S(o || []);
|
3380
3380
|
return i(r, "_invoke", {
|
@@ -3400,9 +3400,9 @@
|
|
3400
3400
|
u = "suspendedYield",
|
3401
3401
|
l = "executing",
|
3402
3402
|
A = "completed",
|
3403
|
-
|
3403
|
+
h = {};
|
3404
3404
|
|
3405
|
-
function
|
3405
|
+
function m() {}
|
3406
3406
|
|
3407
3407
|
function f() {}
|
3408
3408
|
|
@@ -3414,7 +3414,7 @@
|
|
3414
3414
|
var W = Object.getPrototypeOf,
|
3415
3415
|
g = W && W(W(x([])));
|
3416
3416
|
g && g !== t && o.call(g, c) && (_ = g);
|
3417
|
-
var L = q.prototype =
|
3417
|
+
var L = q.prototype = m.prototype = Object.create(_);
|
3418
3418
|
|
3419
3419
|
function y(e) {
|
3420
3420
|
["next", "throw", "return"].forEach((function(n) {
|
@@ -3471,7 +3471,7 @@
|
|
3471
3471
|
if (p) {
|
3472
3472
|
var c = E(p, o);
|
3473
3473
|
if (c) {
|
3474
|
-
if (c ===
|
3474
|
+
if (c === h) continue;
|
3475
3475
|
return c
|
3476
3476
|
}
|
3477
3477
|
}
|
@@ -3483,7 +3483,7 @@
|
|
3483
3483
|
a = l;
|
3484
3484
|
var s = d(n, t, o);
|
3485
3485
|
if ("normal" === s.type) {
|
3486
|
-
if (a = o.done ? A : u, s.arg ===
|
3486
|
+
if (a = o.done ? A : u, s.arg === h) continue;
|
3487
3487
|
return {
|
3488
3488
|
value: s.arg,
|
3489
3489
|
done: o.done
|
@@ -3497,11 +3497,11 @@
|
|
3497
3497
|
function E(n, t) {
|
3498
3498
|
var o = t.method,
|
3499
3499
|
a = n.iterator[o];
|
3500
|
-
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")),
|
3500
|
+
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")), h;
|
3501
3501
|
var r = d(a, n.iterator, t.arg);
|
3502
|
-
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null,
|
3502
|
+
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null, h;
|
3503
3503
|
var i = r.arg;
|
3504
|
-
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null,
|
3504
|
+
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null, h) : i : (t.method = "throw", t.arg = new TypeError("iterator result is not an object"), t.delegate = null, h)
|
3505
3505
|
}
|
3506
3506
|
|
3507
3507
|
function N(e) {
|
@@ -3626,16 +3626,16 @@
|
|
3626
3626
|
}
|
3627
3627
|
r && ("break" === e || "continue" === e) && r.tryLoc <= n && n <= r.finallyLoc && (r = null);
|
3628
3628
|
var i = r ? r.completion : {};
|
3629
|
-
return i.type = e, i.arg = n, r ? (this.method = "next", this.next = r.finallyLoc,
|
3629
|
+
return i.type = e, i.arg = n, r ? (this.method = "next", this.next = r.finallyLoc, h) : this.complete(i)
|
3630
3630
|
},
|
3631
3631
|
complete: function(e, n) {
|
3632
3632
|
if ("throw" === e.type) throw e.arg;
|
3633
|
-
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n),
|
3633
|
+
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n), h
|
3634
3634
|
},
|
3635
3635
|
finish: function(e) {
|
3636
3636
|
for (var n = this.tryEntries.length - 1; n >= 0; --n) {
|
3637
3637
|
var t = this.tryEntries[n];
|
3638
|
-
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t),
|
3638
|
+
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t), h
|
3639
3639
|
}
|
3640
3640
|
},
|
3641
3641
|
catch: function(e) {
|
@@ -3657,7 +3657,7 @@
|
|
3657
3657
|
iterator: x(n),
|
3658
3658
|
resultName: t,
|
3659
3659
|
nextLoc: o
|
3660
|
-
}, "next" === this.method && (this.arg = e),
|
3660
|
+
}, "next" === this.method && (this.arg = e), h
|
3661
3661
|
}
|
3662
3662
|
}, n
|
3663
3663
|
}
|
@@ -3699,8 +3699,8 @@
|
|
3699
3699
|
u = t(932),
|
3700
3700
|
l = (t(4916), t(4067)),
|
3701
3701
|
A = t(3854),
|
3702
|
-
|
3703
|
-
|
3702
|
+
h = t(9e3),
|
3703
|
+
m = t(3460),
|
3704
3704
|
f = t(763),
|
3705
3705
|
q = u.env.PGDATA_USER || "",
|
3706
3706
|
_ = u.env.PGDATA_HOST || "",
|
@@ -3745,7 +3745,7 @@
|
|
3745
3745
|
return e.prev = 0, e.next = 3, y.connect();
|
3746
3746
|
case 3:
|
3747
3747
|
return c = e.sent, A.initializePgClient(c), A.initializePgPool(y), t = "", e.next = 9, p(r().mark((function e() {
|
3748
|
-
var n, t, o, a, i, p, z, d, O, A,
|
3748
|
+
var n, t, o, a, i, p, z, d, O, A, m;
|
3749
3749
|
return r().wrap((function(e) {
|
3750
3750
|
for (;;) switch (e.prev = e.next) {
|
3751
3751
|
case 0:
|
@@ -3770,7 +3770,7 @@
|
|
3770
3770
|
force: !0
|
3771
3771
|
})
|
3772
3772
|
} catch (e) {
|
3773
|
-
|
3773
|
+
h.logError(e, "Lỗi xóa file trong checkTable.needDir: ".concat(n))
|
3774
3774
|
}
|
3775
3775
|
})) : b.mkdirSync(t, {
|
3776
3776
|
recursive: !0
|
@@ -3779,11 +3779,11 @@
|
|
3779
3779
|
needDir: t
|
3780
3780
|
}
|
3781
3781
|
} catch (n) {
|
3782
|
-
throw
|
3782
|
+
throw h.logError("Lỗi khi tạo thư mục ".concat(e, ": ").concat(n.message)), n
|
3783
3783
|
}
|
3784
3784
|
}(), t = n.successDir, o = n.needDir, a = function(e) {
|
3785
3785
|
return M.createHash("sha256").update(e).digest("hex")
|
3786
|
-
}, i = l.SQL.initSQLs, p = [],
|
3786
|
+
}, i = l.SQL.initSQLs, p = [], h.logInfo("Đang kiểm tra cấu trúc SQL cần cập nhật: [count: ".concat(i.length, "] ....")), z = r().mark((function e(n) {
|
3787
3787
|
var c, M, z, d;
|
3788
3788
|
return r().wrap((function(e) {
|
3789
3789
|
for (;;) switch (e.prev = e.next) {
|
@@ -3794,7 +3794,7 @@
|
|
3794
3794
|
return new RegExp("^\\d{2}\\.".concat(M, "\\.sql$")).test(e)
|
3795
3795
|
}))
|
3796
3796
|
} catch (e) {
|
3797
|
-
return
|
3797
|
+
return h.logError(e, "Lỗi kiểm tra fileExists[".concat(n, "/").concat(i.length, "]: ").concat(z)), !1
|
3798
3798
|
}
|
3799
3799
|
}()) {
|
3800
3800
|
e.next = 6;
|
@@ -3835,20 +3835,20 @@
|
|
3835
3835
|
e.next = 19;
|
3836
3836
|
break
|
3837
3837
|
}
|
3838
|
-
return
|
3838
|
+
return h.logInfo("Không thực hiện checkTable do EXCUTE_CREATETABLE = ".concat(E)), e.abrupt("return");
|
3839
3839
|
case 19:
|
3840
3840
|
if (0 !== p.length) {
|
3841
3841
|
e.next = 22;
|
3842
3842
|
break
|
3843
3843
|
}
|
3844
|
-
return
|
3844
|
+
return h.logInfo("Đã cập nhật hết cấu trúc!!!"), e.abrupt("return");
|
3845
3845
|
case 22:
|
3846
3846
|
O = p.length, A = r().mark((function e() {
|
3847
3847
|
var n, a, i, M, z, d;
|
3848
3848
|
return r().wrap((function(e) {
|
3849
3849
|
for (;;) switch (e.prev = e.next) {
|
3850
3850
|
case 0:
|
3851
|
-
return n = p[
|
3851
|
+
return n = p[m], a = n.sqlItem, i = n.hashName, M = n.nameFileInNeedDir, z = s.join(t, "".concat(i, ".sql")), d = function() {
|
3852
3852
|
b.writeFileSync(z, a, {
|
3853
3853
|
encoding: "utf8"
|
3854
3854
|
});
|
@@ -3859,9 +3859,9 @@
|
|
3859
3859
|
force: !0
|
3860
3860
|
})
|
3861
3861
|
} catch (n) {
|
3862
|
-
|
3862
|
+
h.logError(n, "Lỗi xóa file trong checkTable.saveSuccessHash: ".concat(e))
|
3863
3863
|
}
|
3864
|
-
}, e.prev = 3,
|
3864
|
+
}, e.prev = 3, h.logInfo("Cập nhật SQL cấu trúc: [".concat(m + 1, "/").concat(O, "] ....")), e.next = 7, c.query(a);
|
3865
3865
|
case 7:
|
3866
3866
|
d(), e.next = 30;
|
3867
3867
|
break;
|
@@ -3870,17 +3870,17 @@
|
|
3870
3870
|
e.next = 22;
|
3871
3871
|
break
|
3872
3872
|
}
|
3873
|
-
return
|
3873
|
+
return h.logWarn("Phát hiện lỗi syntax FUNCTION: ".concat(e.t0.message)), h.logInfo("Thực hiện lại đổi ' EXECUTE FUNCTION '=>' EXECUTE PROCEDURE ' checkTable [".concat(m + 1, "/").concat(O, "]....")), a = a.replace("EXECUTE FUNCTION", "EXECUTE PROCEDURE"), e.next = 19, c.query(a);
|
3874
3874
|
case 19:
|
3875
3875
|
d(), e.next = 24;
|
3876
3876
|
break;
|
3877
3877
|
case 22:
|
3878
|
-
|
3878
|
+
h.logError(e.t0, "Error checkTable"), h.logInfo(a, "Error SQL");
|
3879
3879
|
case 24:
|
3880
3880
|
e.next = 30;
|
3881
3881
|
break;
|
3882
3882
|
case 26:
|
3883
|
-
e.prev = 26, e.t1 = e.catch(12),
|
3883
|
+
e.prev = 26, e.t1 = e.catch(12), h.logError(e.t1, "Child Error checkTable"), h.logInfo(a, "Child Error SQL");
|
3884
3884
|
case 30:
|
3885
3885
|
case "end":
|
3886
3886
|
return e.stop()
|
@@ -3889,15 +3889,15 @@
|
|
3889
3889
|
[3, 10],
|
3890
3890
|
[12, 26]
|
3891
3891
|
])
|
3892
|
-
})),
|
3892
|
+
})), m = 0;
|
3893
3893
|
case 25:
|
3894
|
-
if (!(
|
3894
|
+
if (!(m < p.length)) {
|
3895
3895
|
e.next = 30;
|
3896
3896
|
break
|
3897
3897
|
}
|
3898
3898
|
return e.delegateYield(A(), "t1", 27);
|
3899
3899
|
case 27:
|
3900
|
-
|
3900
|
+
m++, e.next = 25;
|
3901
3901
|
break;
|
3902
3902
|
case 30:
|
3903
3903
|
case "end":
|
@@ -3921,7 +3921,7 @@
|
|
3921
3921
|
t = "--syncAllDanhMuc", e.next = 11;
|
3922
3922
|
break;
|
3923
3923
|
case 8:
|
3924
|
-
e.prev = 8, e.t0 = e.catch(0),
|
3924
|
+
e.prev = 8, e.t0 = e.catch(0), h.logError(e.t0, "syncAllDanhMuc");
|
3925
3925
|
case 11:
|
3926
3926
|
case "end":
|
3927
3927
|
return e.stop()
|
@@ -3946,7 +3946,7 @@
|
|
3946
3946
|
t = "--syncBnnoitru", e.next = 11;
|
3947
3947
|
break;
|
3948
3948
|
case 8:
|
3949
|
-
e.prev = 8, e.t0 = e.catch(0),
|
3949
|
+
e.prev = 8, e.t0 = e.catch(0), h.logError(e.t0, "syncBnnoitru");
|
3950
3950
|
case 11:
|
3951
3951
|
case "end":
|
3952
3952
|
return e.stop()
|
@@ -3973,7 +3973,7 @@
|
|
3973
3973
|
e.next = 12;
|
3974
3974
|
break;
|
3975
3975
|
case 9:
|
3976
|
-
e.prev = 9, e.t0 = e.catch(0),
|
3976
|
+
e.prev = 9, e.t0 = e.catch(0), h.logError(e.t0, "executeExportSQLCreateTable");
|
3977
3977
|
case 12:
|
3978
3978
|
t = "--executeExportSQLCreateTable";
|
3979
3979
|
case 13:
|
@@ -4000,7 +4000,7 @@
|
|
4000
4000
|
t = "--psdangkySyncDCHG", e.next = 11;
|
4001
4001
|
break;
|
4002
4002
|
case 8:
|
4003
|
-
e.prev = 8, e.t0 = e.catch(0),
|
4003
|
+
e.prev = 8, e.t0 = e.catch(0), h.logError(e.t0, "psdangkySyncDCHG");
|
4004
4004
|
case 11:
|
4005
4005
|
case "end":
|
4006
4006
|
return e.stop()
|
@@ -4025,7 +4025,7 @@
|
|
4025
4025
|
t = "--checkHosoEMR", e.next = 11;
|
4026
4026
|
break;
|
4027
4027
|
case 8:
|
4028
|
-
e.prev = 8, e.t0 = e.catch(0),
|
4028
|
+
e.prev = 8, e.t0 = e.catch(0), h.logError(e.t0, "checkHosoEMR");
|
4029
4029
|
case 11:
|
4030
4030
|
case "end":
|
4031
4031
|
return e.stop()
|
@@ -4048,17 +4048,17 @@
|
|
4048
4048
|
case 0:
|
4049
4049
|
return e.prev = 0, e.next = 3, A.processUnprocessedNotifications(v);
|
4050
4050
|
case 3:
|
4051
|
-
|
4051
|
+
h.logInfo('Xử lý thành công, chờ RETRY_INTERVAL:" + '.concat(R, ' + " giây trước khi tiếp tục...')), e.next = 9;
|
4052
4052
|
break;
|
4053
4053
|
case 6:
|
4054
|
-
e.prev = 6, e.t0 = e.catch(0),
|
4054
|
+
e.prev = 6, e.t0 = e.catch(0), h.logError(e.t0, "processUnprocessedNotifications");
|
4055
4055
|
case 9:
|
4056
4056
|
return e.prev = 9, e.next = 12, p(r().mark((function e() {
|
4057
4057
|
var n, t, o;
|
4058
4058
|
return r().wrap((function(e) {
|
4059
4059
|
for (;;) switch (e.prev = e.next) {
|
4060
4060
|
case 0:
|
4061
|
-
return
|
4061
|
+
return h.logInfo("isMainIsLived:::".concat(6e4)), n = "is-lived-".concat(Date.now()), u.send(n), h.logInfo("isMainIsLived.send('".concat(n, "')")), t = new Promise((function(e, n) {
|
4062
4062
|
return setTimeout((function() {
|
4063
4063
|
return n("Timeout")
|
4064
4064
|
}), 6e4)
|
@@ -4070,7 +4070,7 @@
|
|
4070
4070
|
case 10:
|
4071
4071
|
return e.abrupt("return", e.sent);
|
4072
4072
|
case 13:
|
4073
|
-
return e.prev = 13, e.t0 = e.catch(7),
|
4073
|
+
return e.prev = 13, e.t0 = e.catch(7), h.logError(e.t0, "isMainIsLived"), e.abrupt("return", !1);
|
4074
4074
|
case 17:
|
4075
4075
|
case "end":
|
4076
4076
|
return e.stop()
|
@@ -4080,7 +4080,7 @@
|
|
4080
4080
|
])
|
4081
4081
|
})))();
|
4082
4082
|
case 12:
|
4083
|
-
if (t = e.sent,
|
4083
|
+
if (t = e.sent, h.logInfo("isMainIsLived:::".concat(t)), !0 !== t) {
|
4084
4084
|
e.next = 19;
|
4085
4085
|
break
|
4086
4086
|
}
|
@@ -4116,7 +4116,7 @@
|
|
4116
4116
|
a(), e(!1)
|
4117
4117
|
}), n);
|
4118
4118
|
o = function(n) {
|
4119
|
-
|
4119
|
+
h.logInfo("Tiến trình con nhận được thông điệp: ".concat(n)), n === t && (a(), clearTimeout(r), e(!0))
|
4120
4120
|
}, u.on("message", o), u.send(t)
|
4121
4121
|
})));
|
4122
4122
|
case 3:
|
@@ -4136,26 +4136,26 @@
|
|
4136
4136
|
case 0:
|
4137
4137
|
return e.prev = 1, b++, e.next = 5, A.processUnprocessedNotifications(v);
|
4138
4138
|
case 5:
|
4139
|
-
return
|
4139
|
+
return h.logInfo("Đã xử lý processUnprocessedNotifications: ".concat(b)), e.next = 8, i(6e4);
|
4140
4140
|
case 8:
|
4141
|
-
if (n = e.sent,
|
4141
|
+
if (n = e.sent, h.logInfoObject(o(o({
|
4142
4142
|
isAlive: n
|
4143
4143
|
}, "typeof isAlive", a(n)), "countRunning", b), "checkMainProcessAlive"), n) {
|
4144
4144
|
e.next = 13;
|
4145
4145
|
break
|
4146
4146
|
}
|
4147
|
-
return
|
4147
|
+
return h.logInfo("Main process không phản hồi, dừng worker"), e.abrupt("break", 26);
|
4148
4148
|
case 13:
|
4149
4149
|
e.next = 18;
|
4150
4150
|
break;
|
4151
4151
|
case 15:
|
4152
|
-
e.prev = 15, e.t0 = e.catch(1),
|
4152
|
+
e.prev = 15, e.t0 = e.catch(1), h.logError(e.t0, "startNotificationProcessing");
|
4153
4153
|
case 18:
|
4154
|
-
return e.prev = 18,
|
4154
|
+
return e.prev = 18, h.logInfo("Đang chờ ".concat(R, " ms")), e.next = 22, new Promise((function(e) {
|
4155
4155
|
return setTimeout(e, R)
|
4156
4156
|
}));
|
4157
4157
|
case 22:
|
4158
|
-
return
|
4158
|
+
return h.logInfo("Đã chờ ".concat(R, " ms")), e.finish(18);
|
4159
4159
|
case 24:
|
4160
4160
|
e.next = 0;
|
4161
4161
|
break;
|
@@ -4176,12 +4176,12 @@
|
|
4176
4176
|
}
|
4177
4177
|
return e.abrupt("return");
|
4178
4178
|
case 6:
|
4179
|
-
return t = "--processUnprocessedNotifications", b = void 0 === (s = {}.countRunning) ? 0 : s,
|
4179
|
+
return t = "--processUnprocessedNotifications", b = void 0 === (s = {}.countRunning) ? 0 : s, h.logInfo("===execute_process_notifications==="), e.next = 11, c();
|
4180
4180
|
case 11:
|
4181
4181
|
e.next = 16;
|
4182
4182
|
break;
|
4183
4183
|
case 13:
|
4184
|
-
e.prev = 13, e.t0 = e.catch(0),
|
4184
|
+
e.prev = 13, e.t0 = e.catch(0), h.logError(e.t0, "processUnprocessedNotifications");
|
4185
4185
|
case 16:
|
4186
4186
|
case "end":
|
4187
4187
|
return e.stop()
|
@@ -4191,14 +4191,14 @@
|
|
4191
4191
|
])
|
4192
4192
|
})))();
|
4193
4193
|
case 27:
|
4194
|
-
return e.sent, "" !== t && (
|
4194
|
+
return e.sent, "" !== t && (h.logInfo("📴 Exit process by: ".concat(t)), u.exit(0)), e.next = 31, p(r().mark((function e() {
|
4195
4195
|
return r().wrap((function(e) {
|
4196
4196
|
for (;;) switch (e.prev = e.next) {
|
4197
4197
|
case 0:
|
4198
4198
|
try {
|
4199
|
-
|
4199
|
+
m.dotEnvToCodeRun(u.env.CODE_RUN_KEY || "badt")
|
4200
4200
|
} catch (e) {
|
4201
|
-
|
4201
|
+
h.logError(e, "saveCodeRun")
|
4202
4202
|
}
|
4203
4203
|
case 1:
|
4204
4204
|
case "end":
|
@@ -4242,7 +4242,7 @@
|
|
4242
4242
|
return t.apply(this, arguments)
|
4243
4243
|
}, e.next = 4, n();
|
4244
4244
|
case 4:
|
4245
|
-
|
4245
|
+
h.logInfo("pg-services-emr-dhs, version: ".concat(u.env.WEBPACK_BUILD_VERSION)), h.logInfoObject({
|
4246
4246
|
PGDATA_HOST: _,
|
4247
4247
|
PGDATA_DATABASE: W,
|
4248
4248
|
PGDATA_PORT: L
|
@@ -4282,22 +4282,22 @@
|
|
4282
4282
|
var e = O.spawn("node", [__filename, "--psdangkySyncDCHG"], {
|
4283
4283
|
stdio: "pipe"
|
4284
4284
|
});
|
4285
|
-
|
4286
|
-
return
|
4285
|
+
h.logInfo("Execute psdangkySyncDCHG started"), e.stdout.on("data", (function(e) {
|
4286
|
+
return h.logInfoObject({
|
4287
4287
|
stdout: e.toString().trim()
|
4288
4288
|
}, "psdangkySyncDCHG")
|
4289
4289
|
})), e.stderr.on("data", (function(e) {
|
4290
|
-
return
|
4290
|
+
return h.logInfoObject({
|
4291
4291
|
stderr: e.toString().trim()
|
4292
4292
|
}, "psdangkySyncDCHG")
|
4293
4293
|
})), e.on("close", (function(e) {
|
4294
|
-
return
|
4294
|
+
return h.logInfo("psdangkySyncDCHG ".concat(0 === e ? "completed" : "failed", " (").concat(e, ")"))
|
4295
4295
|
})), e.on("error", (function(e) {
|
4296
|
-
return
|
4296
|
+
return h.logError("psdangkySyncDCHG spawn error: ".concat(e.message))
|
4297
4297
|
}));
|
4298
4298
|
var n = 6e5;
|
4299
4299
|
setTimeout((function() {
|
4300
|
-
e.killed || (
|
4300
|
+
e.killed || (h.logInfo("psdangkySyncDCHG timeout after ".concat(n, "(ms), terminating...")), e.kill("SIGTERM"))
|
4301
4301
|
}), n)
|
4302
4302
|
}), {
|
4303
4303
|
scheduled: !0,
|
@@ -4310,24 +4310,24 @@
|
|
4310
4310
|
t = function() {
|
4311
4311
|
n = !1, e = null
|
4312
4312
|
};
|
4313
|
-
|
4313
|
+
h.logInfo("Khởi tạo processUnprocessedNotifications");
|
4314
4314
|
d.schedule("0 */".concat(3, " * * * *"), (function() {
|
4315
|
-
|
4315
|
+
h.logInfo("Khởi động processUnprocessedNotifications sau mỗi ".concat(3, " phút...")), o()
|
4316
4316
|
})), o()
|
4317
4317
|
}
|
4318
4318
|
|
4319
4319
|
function o() {
|
4320
|
-
n && e ?
|
4320
|
+
n && e ? h.logInfo("processUnprocessedNotifications đã đang chạy {".concat(e.pid, "}")) : (n = !0, h.logInfo("Đang khởi động processUnprocessedNotifications..."), (e = O.fork(C.getAppPath(), ["--processUnprocessedNotifications"], {
|
4321
4321
|
stdio: "pipe",
|
4322
4322
|
cwd: u.cwd()
|
4323
4323
|
})).on("message", (function(n) {
|
4324
|
-
|
4324
|
+
h.logInfo("Tiến trình chính nhận được thông điệp: ".concat(n)), n.startsWith("is-lived-") && e && e.send("".concat(n))
|
4325
4325
|
})), e.on("close", (function(e) {
|
4326
|
-
|
4326
|
+
h.logInfo("processUnprocessedNotifications ".concat(0 === e ? "completed" : "failed", " (").concat(e, ")")), t()
|
4327
4327
|
})), e.on("error", (function(e) {
|
4328
|
-
|
4328
|
+
h.logError("processUnprocessedNotifications fork error: ".concat(e.message)), t()
|
4329
4329
|
})), e.on("disconnect", (function() {
|
4330
|
-
|
4330
|
+
h.logInfo("processUnprocessedNotifications disconnected"), t()
|
4331
4331
|
})))
|
4332
4332
|
}
|
4333
4333
|
}()
|
@@ -4410,7 +4410,7 @@
|
|
4410
4410
|
name: "badt_dhs.GetSyncInventory",
|
4411
4411
|
para: ["mahh"],
|
4412
4412
|
returns: "text",
|
4413
|
-
codesql:
|
4413
|
+
codesql: "\n\n\n\n\nCREATE OR REPLACE FUNCTION badt_dhs.GetSyncInventory(mahh text DEFAULT NULL)\nRETURNS text\nLANGUAGE plpgsql\nAS $$\nDECLARE\n-- Lastest commit: author:onghaup; date: 2025-08-21 19:14:39\n-- Thực hiện: NGUYỄN QUỐC HOÀ - 2025-05-22\n-- Hàm: badt_dhs.GetSyncInventory(madv TEXT DEFAULT NULL)\n-- Mô tả: Danh mục thuốc\n-- - Nếu mahh IS NULL hoặc rỗng ('') => trả toàn bộ dữ liệu\n-- - Nếu mahh có giá trị cụ thể => lọc theo mahh\n--\n-- Sử dụng:\n-- SELECT badt_dhs.GetSyncInventory(); -- Trả toàn bộ thuốc\n-- SELECT badt_dhs.GetSyncInventory(''); -- Trả toàn bộ thuốc\n-- SELECT badt_dhs.GetSyncInventory('01'); -- Chỉ thuốc mã '01'\n-- ===============================================================\n--[ÔNG TRIỆU HẬU - 2025-08-21]: Xử lý COALESCE để không null khi gửi lên EMR, \n result text;\n p_mahh ALIAS FOR mahh;\nBEGIN\n SELECT json_agg(row_data)::text\n INTO result\n FROM (\n \tSELECT\n \t COALESCE(th.mahh,'') AS \"InvCode\",\n COALESCE(th.khoql,'') AS \"InvTypeCode\",\n \t COALESCE(th.tenhh,'') AS \"InvName\",\n COALESCE(th.dvt,'') AS \"UOMCode\",\n COALESCE(th.dvt,'') AS \"DoseUOMCode\",\n COALESCE(th.tenhc,'') AS \"ActiveIngredient\",\n COALESCE(th.hamluong,'') AS \"DrugContent\",\n COALESCE(th.madd,'') AS \"MedUsageCode\",\n COALESCE(th.nuocsx,'') AS \"NationCode\",\n COALESCE(th.quicachdg,'') AS \"ModelPacking\",\n CASE WHEN COALESCE(th.xoa,0) = 1 THEN TRUE ELSE FALSE END AS \"IsBlocked\",\n COALESCE(kho.bhyt,0) AS \"IsHI\" --[ÔNG TRIỆU HẬU - 2025-08-01] Bổ sung thêm theo yêu cầu\n FROM current.dmthuoc th\n LEFT JOIN current.dmkho AS kho ON kho.mahh = th.mahh\n WHERE p_mahh IS NULL OR p_mahh = '' OR th.mahh = p_mahh\n ) AS row_data;\n RETURN result;\nEND;\n$$;\n"
|
4414
4414
|
},
|
4415
4415
|
"badt_dhs.getSyncCountry": {
|
4416
4416
|
name: "badt_dhs.getSyncCountry",
|
@@ -4428,7 +4428,7 @@
|
|
4428
4428
|
name: "badt_dhs.insertTreatmentProcess",
|
4429
4429
|
para: ["input_json"],
|
4430
4430
|
returns: "JSONB",
|
4431
|
-
codesql: "\n\nCREATE OR REPLACE FUNCTION badt_dhs.insertTreatmentProcess(input_json JSONB)\nRETURNS JSONB AS $$\nDECLARE\n-- Lastest commit: author:onghaup; date: 2025-08-14 18:32:34\n-- ===============================================================\n-- Thực hiện: NGUYỄN TRIỀU VƯƠNG - 2025-06-19\n-- Hàm: badt_dhs.insertTreatmentProcess_Thuoc_CLS(input_json JSONB)\n-- Mô tả:\n-- - input_json: nội dung file json: quá trình điều trị có thuốc và cls\n-- Sử dụng:\n-- SELECT badt_dhs.insertTreatmentProcess(input_json JSONB); --Insert vào current.qtdieutri từ DHS\n-- Nếu có thuốc gọi hàm insert thuốc (inserttpprescription)\n-- Nếu có cls gọi hàm inser cls(insertcutpparaclinrequest)\n-- ===============================================================\n-- \n--noitru\n-- Phụ: gom chuỗi bằng dấu ;\n-- Biến dùng để bắt lỗi\n-- Xử lý chẩn đoán\n-- [ÔNG TRIỆU HẬU: 2025-08-11] Ưu tiên lấy DiagnosisICDName, nếu không có thì lấy DiagnosisDesc\n-- dt_tenyhct := Diagnosis->>'DiagnosisDesc';\n-- [ÔNG TRIỆU HẬU - 2025-08-14]: Đổi lại lấy theo DiagnosisDesc \n-- [ÔNG TRIỆU HẬU: 2025-08-11] Ưu tiên lấy DiagnosisICDName, nếu không có thì lấy DiagnosisDesc\n-- dt_kqcdoan := Diagnosis->>'DiagnosisDesc';\n--Chẩn đoán phụ \n-- [ÔNG TRIỆU HẬU: 2025-08-11] Ưu tiên lấy DiagnosisICDName, nếu không có thì lấy DiagnosisDesc\n-- dt_kqcdoanp_arr := array_append(dt_kqcdoanp_arr, Diagnosis->>'DiagnosisDesc');\n-- Kiểm tra các cột bắt buộc\n-- Lấy tháng/năm kế toán\n-- Lấy thông tin nội trú\n-- Thực hiện insert/update\n--Update bnnoitru\n--Update ttcon (mã thẻ 2)\n-- Gọi hàm thêm thuốc nếu có\n-- Gọi hàm thêm CLS nếu có\n TPCode TEXT; --Mã tờ điều trị: iddienbien\n PatientCode TEXT;--Mã bệnh nhân: mabn\n AdmissionCode TEXT;--Mã tiếp nhận: makb\n MedicalRecordNo TEXT;--Mã bệnh án\n TPDate TIMESTAMP; --Ngày tờ điều trị: ngaygio\n TreatmentDoctorCode TEXT;--Mã số bs chỉ định điều trị: manv\n DepartmentCode TEXT;--Mã khoa chỉ định điều trị:madv\n ParaClinicalResultCommand TEXT;\n VitalSignCommand TEXT; --Chỉ số sinh hiệu\n RiskOfFalling INT; --Té ngã: 1-Thấp, 2-Cao, 3-Trung bình\n TakeCare INT; --Chế độ chăm sóc: 1-Cấp 1, 2-Cấp 2, 3-Cấp 3\n FollowUpCommand TEXT;--Chăm sóc: chamsoc\n MethodOfTreatmentCommand TEXT;\n NutritionCommand TEXT;\n Infor TEXT; --Diễn biến: dienbien\n DiseaseName TEXT;\n IsNotChange BOOLEAN := FALSE;\n FileDocID TEXT;\n FilePath TEXT;\n SignStatus INT := 0;--Trạng thái\n Reason TEXT;--Lý do hủy\n DiagnosisDesc TEXT; --Chẩn đoán hiện đại: kqcdoan || ',' || kqcdoanp\n DiagnosisICDName TEXT; -- [ÔNG TRIỆU HẬU: 2025-08-11]: Đồng bộ dữ liệu ICD >> Theo HIS đề xuất, EMR có bổ sung 1 field DiagnosisICDName >> HIS lấy field này thay cho DiagnosisDesc như hiện tại\n DiagnosisTraditionalDesc TEXT;--Chẩn đoán YHCT: tenyhct\n DiagnosisOtherDesc TEXT;\n Prescriptions JSONB; --Thông tin thuốc\n ParaClinRequests JSONB; --Thông tin CLS\n Diagnosis JSONB; -- Thông tin chẩn đoán\n\n VitalSign JSONB; -- Dấu hiệu sinh tồn\n VSDate TIMESTAMP; --Ngày giờ ghi nhận dấu hiệu sinh tồn\n ExecutorCode TEXT; --Mã nhân viên thực hiện\n ExecutorName TEXT; --Tên nhân viên thực hiện\n\n Height NUMERIC; --: 120.0, Chiều cao của bệnh nhân (cm)\n Weight NUMERIC; --\": 40.0, Cân nặng của bệnh nhân (kg)\n BMI NUMERIC; --\": 27.8, Chỉ số khối cơ thể (BMI)\n BloodPressureSystolic INT; --\": 140.0, Huyết áp tâm thu (mmHg)\n BloodPressureDiastolic INT;--: 100.0, Huyết áp tâm trương (mmHg)\n BodyTemperature NUMERIC; --\": 37.0,Nhiệt độ cơ thể (°C)\n Pulse NUMERIC; --\": 59.0,Nhịp tim (lần/phút)\n BreathBeat NUMERIC; --\": 20.0, Nhịp thở (lần/phút)\n SpO2 NUMERIC; --\": 99.0, Độ bão hòa oxy trong máu (%)\n Para TEXT;\n I_RHType INT; --Loại Rh máu (1: Rh+, 2: Rh-)\n I_BloodType INT; --Nhóm máu (1: A, 2: B, 3: AB, 4: O, 5: Chưa xác định)\n\n nt_maphong TEXT := NULL;\n nt_sogiuong TEXT := NULL;\n nt_huyetap TEXT := NULL;\n\n thangnam TEXT;\n thangkt_S TEXT; -- thangkt, lấy cho đủ số liệu, toa thuốc mới lên module\n namkt_S TEXT; --namkt, lấy cho đủ số liệu, toa thuốc mới lên module\n\n dt_maicd TEXT := NULL;\n dt_kqcdoan TEXT := NULL;\n\n dt_mayhct TEXT := NULL;\n dt_tenyhct TEXT := NULL;\n \n record_exists BOOLEAN := FALSE;\n insert_success BOOLEAN := TRUE;\n \n dt_maicdp_arr TEXT[] := ARRAY[]::TEXT[];\n dt_kqcdoanp_arr TEXT[] := ARRAY[]::TEXT[];\n dt_maicdp TEXT := NULL;\n dt_kqcdoanp TEXT := NULL;\n \n v_err_context TEXT;\n v_err_msg TEXT;\n\nBEGIN\n TPCode := input_json->>'TPCode';\n PatientCode := input_json->>'PatientCode';\n AdmissionCode := input_json->>'AdmissionCode';\n MedicalRecordNo := input_json->>'MedicalRecordNo';\n\n SELECT EXISTS (\n SELECT 1 FROM current.qtdieutri WHERE iddienbien = TPCode\n ) INTO record_exists;\n\n TPDate := (input_json->>'TPDate')::timestamptz;\n TreatmentDoctorCode := input_json->>'TreatmentDoctorCode';\n DepartmentCode := input_json->>'DepartmentCode';\n ParaClinicalResultCommand := input_json->>'ParaClinicalResultCommand';\n VitalSignCommand := input_json->>'VitalSignCommand';\n RiskOfFalling := input_json->>'RiskOfFalling';\n TakeCare := input_json->>'TakeCare';\n FollowUpCommand := input_json->>'FollowUpCommand';\n MethodOfTreatmentCommand := input_json->>'PatientCode';\n NutritionCommand := input_json->>'NutritionCommand';\n Infor := input_json->>'Infor';\n DiseaseName := input_json->>'DiseaseName';\n IsNotChange := (input_json->>'IsNotChange')::BOOLEAN;\n FileDocID := input_json->>'FileDocID';\n FilePath := input_json->>'FilePath';\n SignStatus := (input_json->>'SignStatus')::INT;\n Reason := input_json->>'Reason';\n DiagnosisDesc := input_json->>'DiagnosisDesc';\n DiagnosisICDName := input_json->>'DiagnosisICDName';\n DiagnosisTraditionalDesc := input_json->>'DiagnosisTraditionalDesc';\n DiagnosisOtherDesc := input_json->>'DiagnosisOtherDesc';\n\n Height := (input_json->'VitalSign'->>'Height')::numeric;\n Weight := (input_json->'VitalSign'->>'Weight')::numeric;\n BMI := (input_json->'VitalSign'->>'BMI')::numeric;\n BloodPressureSystolic := (input_json->'VitalSign'->>'BloodPressureSystolic')::numeric;\n BloodPressureDiastolic := (input_json->'VitalSign'->>'BloodPressureDiastolic')::numeric;\n BodyTemperature := (input_json->'VitalSign'->>'BodyTemperature')::numeric;\n Pulse := (input_json->'VitalSign'->>'Pulse')::numeric;\n BreathBeat := (input_json->'VitalSign'->>'BreathBeat')::numeric;\n SpO2 := (input_json->'VitalSign'->>'SpO2')::numeric;\n Para := (input_json->'VitalSign'->>'Para');\n I_RHType := (input_json->'VitalSign'->>'I_RHType')::numeric;\n I_BloodType := (input_json->'VitalSign'->>'I_BloodType')::numeric;\n\n nt_huyetap := BloodPressureSystolic || '/' || BloodPressureDiastolic;\n\n FOR Diagnosis IN SELECT value FROM jsonb_array_elements(COALESCE(input_json->'Diagnosis','[]')) AS value\n LOOP\n IF (Diagnosis->>'DiagnosisType')::INT = 2 THEN\n dt_mayhct := Diagnosis->>'DiagnosisICDCode';\n dt_tenyhct := COALESCE(\n Diagnosis->>'DiagnosisDesc',\n NULLIF(TRIM(Diagnosis->>'DiagnosisICDName'), '') \n );\n \n ELSE\n IF (Diagnosis->>'IsMain')::BOOLEAN THEN\n dt_maicd := Diagnosis->>'DiagnosisICDCode';\n dt_kqcdoan := COALESCE(\n Diagnosis->>'DiagnosisDesc',\n NULLIF(TRIM(Diagnosis->>'DiagnosisICDName'), '') \n );\n \n ELSE\n dt_maicdp_arr := array_append(dt_maicdp_arr, Diagnosis->>'DiagnosisICDCode');\n dt_kqcdoanp_arr := array_append(dt_kqcdoanp_arr, \n COALESCE(\n Diagnosis->>'DiagnosisDesc',\n NULLIF(TRIM(Diagnosis->>'DiagnosisICDName'), '') \n )\n );\t\t\t\t\n END IF;\n END IF;\n END LOOP;\n\t\n dt_maicdp := array_to_string(dt_maicdp_arr, ';'); \n dt_kqcdoanp := array_to_string(dt_kqcdoanp_arr, ';');\n \n IF NOT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE table_name = 'qtdieutri' AND column_name = 'api'\n ) THEN\n RETURN jsonb_build_object('status', 'error', 'message', 'Bảng qtdieutri chưa có cột api');\n END IF;\n\n IF NOT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE table_name = 'chungtu' AND column_name = 'api'\n ) THEN\n RETURN jsonb_build_object('status', 'error', 'message', 'Bảng chungtu chưa có cột api');\n END IF;\n\n IF NOT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE table_name = 'chidinhcls' AND column_name = 'api'\n ) THEN\n RETURN jsonb_build_object('status', 'error', 'message', 'Bảng chidinhcls chưa có cột api');\n END IF;\n\n SELECT giatri INTO thangnam FROM current.system WHERE tents = 'thanglv';\n thangkt_S := SPLIT_PART(thangnam, '/', 1);\n namkt_S := SPLIT_PART(thangnam, '/', 2);\n\n SELECT maphong, sogiuong INTO nt_maphong, nt_sogiuong -- lấy cho đủ số liệu\n FROM current.bnnoitru\n WHERE mabn = PatientCode AND maba = MedicalRecordNo AND makb = AdmissionCode;\n\n\n BEGIN\n IF record_exists THEN\n UPDATE current.qtdieutri\n SET manv = TreatmentDoctorCode,\n ngaygio = TPDate,\n dienbien = Infor,\n maicd = dt_maicd,\n kqcdoan = dt_kqcdoan,\n maicdp = dt_maicdp,\n kqcdoanp = dt_kqcdoanp,\n madv = DepartmentCode,\n mayhct = dt_mayhct,\n tenyhct = dt_tenyhct,\n chamsoc = FollowUpCommand,\n maphong = nt_maphong,\n sogiuong = nt_sogiuong,\n api = 1\n WHERE iddienbien = TPCode AND mabn = PatientCode and maba = MedicalRecordNo AND makb = AdmissionCode;\n ELSE\n INSERT INTO current.qtdieutri(\n mabn, makb, maba, manv, ngaygio,\n dienbien, maicd, kqcdoan, maicdp, kqcdoanp,\n madv, iddienbien, mayhct, tenyhct, chamsoc, api, thangkt, namkt, maphong, sogiuong\n )\n VALUES (\n PatientCode, AdmissionCode, MedicalRecordNo, TreatmentDoctorCode, TPDate,\n Infor, dt_maicd, dt_kqcdoan, dt_maicdp, dt_kqcdoanp,\n DepartmentCode, TPCode, dt_mayhct, dt_tenyhct, FollowUpCommand, 1, thangkt_S, namkt_S, nt_maphong, nt_sogiuong\n );\n END IF;\n\n UPDATE current.bnnoitru\n SET manv = TreatmentDoctorCode,\n iddienbien = TPCode,\n ngaykcb = TPDate,\n dienbien = Infor,\n maicd = dt_maicd,\n kqcdoan = dt_kqcdoan,\n maicdp = dt_maicdp,\n kqcdoanp = dt_kqcdoanp,\n madv = DepartmentCode,\n mayhct = dt_mayhct,\n tenyhct = dt_tenyhct,\n chamsoc = FollowUpCommand,\n huyetap = nt_huyetap,\n nhiptho = BreathBeat,\n nhietdo = BodyTemperature,\n mach = Pulse,\n chieucao = Height/100.0,\n cannang = Weight,\n maphong = nt_maphong,\n sogiuong = nt_sogiuong\n WHERE mabn = PatientCode and maba = MedicalRecordNo AND makb = AdmissionCode;\n\n UPDATE current.ttcon\n SET manv = TreatmentDoctorCode,\n iddienbien = TPCode,\n maicd = dt_maicd,\n kqcdoan = dt_kqcdoan,\n maicdp = dt_maicdp,\n kqcdoanp = dt_kqcdoanp,\n mayhct = dt_mayhct,\n tenyhct = dt_tenyhct\n WHERE mabnme = PatientCode and mabame = MedicalRecordNo AND COALESCE(loaitt,0) = 1;\n\n IF jsonb_array_length(COALESCE(input_json->'Prescriptions', '[]'::jsonb)) > 0 THEN\n PERFORM badt_dhs.inserttpprescription(input_json);\n END IF;\n\n IF jsonb_array_length(COALESCE(input_json->'ParaClinRequests', '[]'::jsonb)) > 0 THEN\n PERFORM badt_dhs.insertcutpparaclinrequest(input_json);\n END IF;\n\n RETURN jsonb_build_object('status', 'success', 'message', '');\n\n EXCEPTION\n WHEN OTHERS THEN\n GET STACKED DIAGNOSTICS\n v_err_context = PG_EXCEPTION_CONTEXT,\n v_err_msg = MESSAGE_TEXT;\n\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', v_err_msg\n );\n END;\n\nEND;\n$$ LANGUAGE plpgsql;\n\n"
|
4431
|
+
codesql: "\n\nCREATE OR REPLACE FUNCTION badt_dhs.insertTreatmentProcess(input_json JSONB)\nRETURNS JSONB AS $$\nDECLARE\n-- Lastest commit: author:onghaup; date: 2025-09-10 15:53:22\n-- ===============================================================\n-- Thực hiện: NGUYỄN TRIỀU VƯƠNG - 2025-06-19\n-- Hàm: badt_dhs.insertTreatmentProcess_Thuoc_CLS(input_json JSONB)\n-- Mô tả:\n-- - input_json: nội dung file json: quá trình điều trị có thuốc và cls\n-- Sử dụng:\n-- SELECT badt_dhs.insertTreatmentProcess(input_json JSONB); --Insert vào current.qtdieutri từ DHS\n-- Nếu có thuốc gọi hàm insert thuốc (inserttpprescription)\n-- Nếu có cls gọi hàm inser cls(insertcutpparaclinrequest)\n-- ===============================================================\n-- \n--noitru\n-- Phụ: gom chuỗi bằng dấu ;\n-- Biến dùng để bắt lỗi\n-- Biến kiểm tra ICD \n-- Kiểm tra \n--[ÔNG TRIỆU HẬU: 2025-09-10] Kiểm tra tồn tại ICD\n--[ÔNG TRIỆU HẬU: 2025-09-10] Kiểm tra tồn tại macls\n-- Xử lý chẩn đoán\n-- [ÔNG TRIỆU HẬU: 2025-08-11] Ưu tiên lấy DiagnosisICDName, nếu không có thì lấy DiagnosisDesc\n-- dt_tenyhct := Diagnosis->>'DiagnosisDesc';\n-- [ÔNG TRIỆU HẬU - 2025-08-14]: Đổi lại lấy theo DiagnosisDesc \n-- [ÔNG TRIỆU HẬU: 2025-08-11] Ưu tiên lấy DiagnosisICDName, nếu không có thì lấy DiagnosisDesc\n-- dt_kqcdoan := Diagnosis->>'DiagnosisDesc';\n--Chẩn đoán phụ \n-- [ÔNG TRIỆU HẬU: 2025-08-11] Ưu tiên lấy DiagnosisICDName, nếu không có thì lấy DiagnosisDesc\n-- dt_kqcdoanp_arr := array_append(dt_kqcdoanp_arr, Diagnosis->>'DiagnosisDesc');\n-- Kiểm tra các cột bắt buộc\n-- Lấy tháng/năm kế toán\n-- Lấy thông tin nội trú\n-- Thực hiện insert/update\n--Update bnnoitru\n--Update ttcon (mã thẻ 2)\n-- Gọi hàm thêm thuốc nếu có\n-- Gọi hàm thêm CLS nếu có\n TPCode TEXT; --Mã tờ điều trị: iddienbien\n PatientCode TEXT;--Mã bệnh nhân: mabn\n AdmissionCode TEXT;--Mã tiếp nhận: makb\n MedicalRecordNo TEXT;--Mã bệnh án\n TPDate TIMESTAMP; --Ngày tờ điều trị: ngaygio\n TreatmentDoctorCode TEXT;--Mã số bs chỉ định điều trị: manv\n DepartmentCode TEXT;--Mã khoa chỉ định điều trị:madv\n ParaClinicalResultCommand TEXT;\n VitalSignCommand TEXT; --Chỉ số sinh hiệu\n RiskOfFalling INT; --Té ngã: 1-Thấp, 2-Cao, 3-Trung bình\n TakeCare INT; --Chế độ chăm sóc: 1-Cấp 1, 2-Cấp 2, 3-Cấp 3\n FollowUpCommand TEXT;--Chăm sóc: chamsoc\n MethodOfTreatmentCommand TEXT;\n NutritionCommand TEXT;\n Infor TEXT; --Diễn biến: dienbien\n DiseaseName TEXT;\n IsNotChange BOOLEAN := FALSE;\n FileDocID TEXT;\n FilePath TEXT;\n SignStatus INT := 0;--Trạng thái\n Reason TEXT;--Lý do hủy\n DiagnosisDesc TEXT; --Chẩn đoán hiện đại: kqcdoan || ',' || kqcdoanp\n DiagnosisICDName TEXT; -- [ÔNG TRIỆU HẬU: 2025-08-11]: Đồng bộ dữ liệu ICD >> Theo HIS đề xuất, EMR có bổ sung 1 field DiagnosisICDName >> HIS lấy field này thay cho DiagnosisDesc như hiện tại\n DiagnosisTraditionalDesc TEXT;--Chẩn đoán YHCT: tenyhct\n DiagnosisOtherDesc TEXT;\n Prescriptions JSONB; --Thông tin thuốc\n ParaClinRequests JSONB; --Thông tin CLS\n Diagnosis JSONB; -- Thông tin chẩn đoán\n\n VitalSign JSONB; -- Dấu hiệu sinh tồn\n VSDate TIMESTAMP; --Ngày giờ ghi nhận dấu hiệu sinh tồn\n ExecutorCode TEXT; --Mã nhân viên thực hiện\n ExecutorName TEXT; --Tên nhân viên thực hiện\n\n Height NUMERIC; --: 120.0, Chiều cao của bệnh nhân (cm)\n Weight NUMERIC; --\": 40.0, Cân nặng của bệnh nhân (kg)\n BMI NUMERIC; --\": 27.8, Chỉ số khối cơ thể (BMI)\n BloodPressureSystolic INT; --\": 140.0, Huyết áp tâm thu (mmHg)\n BloodPressureDiastolic INT;--: 100.0, Huyết áp tâm trương (mmHg)\n BodyTemperature NUMERIC; --\": 37.0,Nhiệt độ cơ thể (°C)\n Pulse NUMERIC; --\": 59.0,Nhịp tim (lần/phút)\n BreathBeat NUMERIC; --\": 20.0, Nhịp thở (lần/phút)\n SpO2 NUMERIC; --\": 99.0, Độ bão hòa oxy trong máu (%)\n Para TEXT;\n I_RHType INT; --Loại Rh máu (1: Rh+, 2: Rh-)\n I_BloodType INT; --Nhóm máu (1: A, 2: B, 3: AB, 4: O, 5: Chưa xác định)\n\n nt_maphong TEXT := NULL;\n nt_sogiuong TEXT := NULL;\n nt_huyetap TEXT := NULL;\n\n thangnam TEXT;\n thangkt_S TEXT; -- thangkt, lấy cho đủ số liệu, toa thuốc mới lên module\n namkt_S TEXT; --namkt, lấy cho đủ số liệu, toa thuốc mới lên module\n\n dt_maicd TEXT := NULL;\n dt_kqcdoan TEXT := NULL;\n\n dt_mayhct TEXT := NULL;\n dt_tenyhct TEXT := NULL;\n \n record_exists BOOLEAN := FALSE;\n insert_success BOOLEAN := TRUE;\n \n dt_maicdp_arr TEXT[] := ARRAY[]::TEXT[];\n dt_kqcdoanp_arr TEXT[] := ARRAY[]::TEXT[];\n dt_maicdp TEXT := NULL;\n dt_kqcdoanp TEXT := NULL;\n \n v_err_context TEXT;\n v_err_msg TEXT;\n\n missing_icds TEXT[];\n\nBEGIN\n TPCode := input_json->>'TPCode';\n PatientCode := input_json->>'PatientCode';\n AdmissionCode := input_json->>'AdmissionCode';\n MedicalRecordNo := input_json->>'MedicalRecordNo';\n TreatmentDoctorCode := input_json->>'TreatmentDoctorCode';\n \n IF NOT EXISTS (\n SELECT 1 FROM current.dmnhanvien\n WHERE manv = TreatmentDoctorCode\n ) THEN\n RETURN jsonb_build_object('status', 'error', 'message', format('TreatmentDoctorCode: %s không tồn tại trong HIS', TreatmentDoctorCode));\n END IF;\n IF input_json ? 'Diagnosis' AND jsonb_array_length(input_json->'Diagnosis') > 0 THEN\n \n /* Gom tất cả ICD code (DiagnosisType=1) rồi kiểm tra một lần */\n WITH dx AS (\n SELECT DISTINCT\n (d->>'DiagnosisICDCode')::text AS icd_code\n FROM jsonb_array_elements(input_json->'Diagnosis') AS d\n WHERE COALESCE((d->>'DiagnosisType')::int, 0) = 1\n AND NULLIF(d->>'DiagnosisICDCode','') IS NOT NULL\n ),\n missing AS (\n SELECT dx.icd_code\n FROM dx\n LEFT JOIN current.dmicd m\n ON m.maicd = dx.icd_code AND COALESCE(m.xoa,0)=0\n WHERE m.maicd IS NULL\n )\n SELECT ARRAY_AGG(icd_code)\n INTO missing_icds\n FROM missing;\n\n IF missing_icds IS NOT NULL THEN\n RETURN jsonb_build_object('status', 'error', 'message', \n format('ICD code (DiagnosisType=1) không tồn tại hoặc ngưng sử dụng trong current.dmicd: %L', missing_icds));\n END IF;\n\n END IF;\n\n IF input_json ? 'ParaClinRequests' AND jsonb_array_length(input_json->'ParaClinRequests') > 0 THEN\n \n WITH dx AS (\n SELECT DISTINCT\n (d->>'MedSerCode')::text AS macls_code\n FROM jsonb_array_elements(input_json->'ParaClinRequests') AS d\n WHERE NULLIF(d->>'MedSerCode','') IS NOT NULL\n ),\n missing AS (\n SELECT dx.macls_code\n FROM dx\n LEFT JOIN current.dmcls m\n ON m.macls = dx.macls_code AND COALESCE(m.sudung,0)=1 AND COALESCE(m.tt37,0)=1\n WHERE m.macls IS NULL\n )\n SELECT ARRAY_AGG(macls_code)\n INTO missing_icds\n FROM missing;\n\n IF missing_icds IS NOT NULL THEN\n RETURN jsonb_build_object('status', 'error', 'message', \n format('MedSerCode code không tồn tại hoặc ngưng sử dụng trong current.dmcls: %L', missing_icds));\n END IF;\n\n END IF;\n\n SELECT EXISTS (\n SELECT 1 FROM current.qtdieutri WHERE iddienbien = TPCode\n ) INTO record_exists;\n\n TPDate := (input_json->>'TPDate')::timestamptz;\n DepartmentCode := input_json->>'DepartmentCode';\n ParaClinicalResultCommand := input_json->>'ParaClinicalResultCommand';\n VitalSignCommand := input_json->>'VitalSignCommand';\n RiskOfFalling := input_json->>'RiskOfFalling';\n TakeCare := input_json->>'TakeCare';\n FollowUpCommand := input_json->>'FollowUpCommand';\n MethodOfTreatmentCommand := input_json->>'PatientCode';\n NutritionCommand := input_json->>'NutritionCommand';\n Infor := input_json->>'Infor';\n DiseaseName := input_json->>'DiseaseName';\n IsNotChange := (input_json->>'IsNotChange')::BOOLEAN;\n FileDocID := input_json->>'FileDocID';\n FilePath := input_json->>'FilePath';\n SignStatus := (input_json->>'SignStatus')::INT;\n Reason := input_json->>'Reason';\n DiagnosisDesc := input_json->>'DiagnosisDesc';\n DiagnosisICDName := input_json->>'DiagnosisICDName';\n DiagnosisTraditionalDesc := input_json->>'DiagnosisTraditionalDesc';\n DiagnosisOtherDesc := input_json->>'DiagnosisOtherDesc';\n\n Height := (input_json->'VitalSign'->>'Height')::numeric;\n Weight := (input_json->'VitalSign'->>'Weight')::numeric;\n BMI := (input_json->'VitalSign'->>'BMI')::numeric;\n BloodPressureSystolic := (input_json->'VitalSign'->>'BloodPressureSystolic')::numeric;\n BloodPressureDiastolic := (input_json->'VitalSign'->>'BloodPressureDiastolic')::numeric;\n BodyTemperature := (input_json->'VitalSign'->>'BodyTemperature')::numeric;\n Pulse := (input_json->'VitalSign'->>'Pulse')::numeric;\n BreathBeat := (input_json->'VitalSign'->>'BreathBeat')::numeric;\n SpO2 := (input_json->'VitalSign'->>'SpO2')::numeric;\n Para := (input_json->'VitalSign'->>'Para');\n I_RHType := (input_json->'VitalSign'->>'I_RHType')::numeric;\n I_BloodType := (input_json->'VitalSign'->>'I_BloodType')::numeric;\n\n nt_huyetap := BloodPressureSystolic || '/' || BloodPressureDiastolic;\n\n FOR Diagnosis IN SELECT value FROM jsonb_array_elements(COALESCE(input_json->'Diagnosis','[]')) AS value\n LOOP\n IF (Diagnosis->>'DiagnosisType')::INT = 2 THEN\n dt_mayhct := Diagnosis->>'DiagnosisICDCode';\n dt_tenyhct := COALESCE(\n Diagnosis->>'DiagnosisDesc',\n NULLIF(TRIM(Diagnosis->>'DiagnosisICDName'), '') \n );\n \n ELSE\n IF (Diagnosis->>'IsMain')::BOOLEAN THEN\n dt_maicd := Diagnosis->>'DiagnosisICDCode';\n dt_kqcdoan := COALESCE(\n Diagnosis->>'DiagnosisDesc',\n NULLIF(TRIM(Diagnosis->>'DiagnosisICDName'), '') \n );\n \n ELSE\n dt_maicdp_arr := array_append(dt_maicdp_arr, Diagnosis->>'DiagnosisICDCode');\n dt_kqcdoanp_arr := array_append(dt_kqcdoanp_arr, \n COALESCE(\n Diagnosis->>'DiagnosisDesc',\n NULLIF(TRIM(Diagnosis->>'DiagnosisICDName'), '') \n )\n );\t\t\t\t\n END IF;\n END IF;\n END LOOP;\n\t\n dt_maicdp := array_to_string(dt_maicdp_arr, ';'); \n dt_kqcdoanp := array_to_string(dt_kqcdoanp_arr, ';');\n \n IF NOT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE table_name = 'qtdieutri' AND column_name = 'api'\n ) THEN\n RETURN jsonb_build_object('status', 'error', 'message', 'Bảng qtdieutri chưa có cột api');\n END IF;\n\n IF NOT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE table_name = 'chungtu' AND column_name = 'api'\n ) THEN\n RETURN jsonb_build_object('status', 'error', 'message', 'Bảng chungtu chưa có cột api');\n END IF;\n\n IF NOT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE table_name = 'chidinhcls' AND column_name = 'api'\n ) THEN\n RETURN jsonb_build_object('status', 'error', 'message', 'Bảng chidinhcls chưa có cột api');\n END IF;\n\n SELECT giatri INTO thangnam FROM current.system WHERE tents = 'thanglv';\n thangkt_S := SPLIT_PART(thangnam, '/', 1);\n namkt_S := SPLIT_PART(thangnam, '/', 2);\n\n SELECT maphong, sogiuong INTO nt_maphong, nt_sogiuong -- lấy cho đủ số liệu\n FROM current.bnnoitru\n WHERE mabn = PatientCode AND maba = MedicalRecordNo AND makb = AdmissionCode;\n\n\n BEGIN\n IF record_exists THEN\n UPDATE current.qtdieutri\n SET manv = TreatmentDoctorCode,\n ngaygio = TPDate,\n dienbien = Infor,\n maicd = dt_maicd,\n kqcdoan = dt_kqcdoan,\n maicdp = dt_maicdp,\n kqcdoanp = dt_kqcdoanp,\n madv = DepartmentCode,\n mayhct = dt_mayhct,\n tenyhct = dt_tenyhct,\n chamsoc = FollowUpCommand,\n maphong = nt_maphong,\n sogiuong = nt_sogiuong,\n api = 1\n WHERE iddienbien = TPCode AND mabn = PatientCode and maba = MedicalRecordNo AND makb = AdmissionCode;\n ELSE\n INSERT INTO current.qtdieutri(\n mabn, makb, maba, manv, ngaygio,\n dienbien, maicd, kqcdoan, maicdp, kqcdoanp,\n madv, iddienbien, mayhct, tenyhct, chamsoc, api, thangkt, namkt, maphong, sogiuong\n )\n VALUES (\n PatientCode, AdmissionCode, MedicalRecordNo, TreatmentDoctorCode, TPDate,\n Infor, dt_maicd, dt_kqcdoan, dt_maicdp, dt_kqcdoanp,\n DepartmentCode, TPCode, dt_mayhct, dt_tenyhct, FollowUpCommand, 1, thangkt_S, namkt_S, nt_maphong, nt_sogiuong\n );\n END IF;\n\n UPDATE current.bnnoitru\n SET manv = TreatmentDoctorCode,\n iddienbien = TPCode,\n ngaykcb = TPDate,\n dienbien = Infor,\n maicd = dt_maicd,\n kqcdoan = dt_kqcdoan,\n maicdp = dt_maicdp,\n kqcdoanp = dt_kqcdoanp,\n madv = DepartmentCode,\n mayhct = dt_mayhct,\n tenyhct = dt_tenyhct,\n chamsoc = FollowUpCommand,\n huyetap = nt_huyetap,\n nhiptho = BreathBeat,\n nhietdo = BodyTemperature,\n mach = Pulse,\n chieucao = Height/100.0,\n cannang = Weight,\n maphong = nt_maphong,\n sogiuong = nt_sogiuong\n WHERE mabn = PatientCode and maba = MedicalRecordNo AND makb = AdmissionCode;\n\n UPDATE current.ttcon\n SET manv = TreatmentDoctorCode,\n iddienbien = TPCode,\n maicd = dt_maicd,\n kqcdoan = dt_kqcdoan,\n maicdp = dt_maicdp,\n kqcdoanp = dt_kqcdoanp,\n mayhct = dt_mayhct,\n tenyhct = dt_tenyhct\n WHERE mabnme = PatientCode and mabame = MedicalRecordNo AND COALESCE(loaitt,0) = 1;\n\n IF jsonb_array_length(COALESCE(input_json->'Prescriptions', '[]'::jsonb)) > 0 THEN\n PERFORM badt_dhs.inserttpprescription(input_json);\n END IF;\n\n IF jsonb_array_length(COALESCE(input_json->'ParaClinRequests', '[]'::jsonb)) > 0 THEN\n PERFORM badt_dhs.insertcutpparaclinrequest(input_json);\n END IF;\n\n RETURN jsonb_build_object('status', 'success', 'message', '');\n\n EXCEPTION\n WHEN OTHERS THEN\n GET STACKED DIAGNOSTICS\n v_err_context = PG_EXCEPTION_CONTEXT,\n v_err_msg = MESSAGE_TEXT;\n\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', v_err_msg\n );\n END;\n\nEND;\n$$ LANGUAGE plpgsql;\n\n"
|
4432
4432
|
},
|
4433
4433
|
"badt_dhs.GetSyncCityProvince": {
|
4434
4434
|
name: "badt_dhs.GetSyncCityProvince",
|
@@ -4458,13 +4458,13 @@
|
|
4458
4458
|
name: "badt_dhs.insertTPPrescription",
|
4459
4459
|
para: ["input_json"],
|
4460
4460
|
returns: "JSONB",
|
4461
|
-
codesql: "\n\n\nCREATE TABLE IF NOT EXISTS badt_dhs.insert_log (\n id SERIAL PRIMARY KEY,\n tpc_code TEXT, -- Mã tờ điều trị (iddienbien)\n patient_code TEXT, -- Mã bệnh nhân\n admission_code TEXT, -- Mã tiếp nhận\n error_message TEXT, -- Nội dung lỗi\n error_detail TEXT, -- Chi tiết lỗi nếu cần\n log_time TIMESTAMP DEFAULT now(), -- Thời gian lỗi\n raw_json JSONB -- Dữ liệu đầu vào\n);\n\nCREATE OR REPLACE FUNCTION badt_dhs.insertTPPrescription(input_json JSONB)\nRETURNS JSONB AS $$\nDECLARE\n-- Lastest commit: author:onghaup; date: 2025-08-16 17:02:50\n-- ===============================================================\n-- Thực hiện: NGUYỄN TRIỀU VƯƠNG - 2025-06-10\n-- Hàm: badt_dhs.insertTPPrescription(input_json JSONB)\n-- Mô tả:\n-- - input_json: nội dung file json được get về từ ...\n-- Sử dụng:\n-- SELECT badt_dhs.insertTPPrescription(input_json JSONB); --Insert,update vào current.chungtu, current.pshdxn, current.pstonkho từ DHS\n-- ===============================================================\n--json mẫu\n-- ===============================================================\n-- Tạo bảng ghi log lỗi\n--================================================================\n--ngay_uong INT := COALESCE((input_json->>'DatOfUse')::NUMERIC, 0);\n--voucherdate TIMESTAMP:= input_json->>'VoucherDate'; --VoucherDate: Ngày phiếu thuốc. => ngayhd\n-- Kiểm tra IDDienBien\n--RETURN FALSE;\n-- lấy pcchandoan\n-- Lấy madt\n-- Lấy ngày giờ diễn biến\n--Lấy tài khoản bs\n-- Lấy tháng/năm kế toán\n-- Kiểm tra trùng chứng từ\n-- Gọi hàm xóa toa\n-- Duyệt qua từng thuốc trong đơn\n-- Lấy ngày uống\n-- Kiểm tra tất cả thuốc trong toa còn đủ xuất thì mới tiến hành xuất thuốc\n-- soluong := COALESCE((pres_item->>'OriDispenseQty')::NUMERIC, 0);\n-- [ÔNG TRIỆU HẬU - 2025-08-13] Chỉnh lại lấy cột số lượng đúng theo qui ước EMR \n--Lây khochan\n-- Lặp qua các lô tồn kho còn hạn dùng\n--[ÔNG TRIỆU HẬU - 2025-08-16]: Chỉnh lại lấy giá xuất trong pstonkho để không lỗi tính toán tồn kho (có trong pshdxn mà không có trong pstonkho)\n-- đang bị vướng ở Hồng Dân - Bạc Liêu \n-- In dữ liệu từng dòng để kiểm tra\n-- IN số lượng còn lại\n--sl_lay NUMERIC := soluong;\n--sl_lay NUMERIC := LEAST(so_con_lai, r_stock.toncuoi);\n-- Ghi chi tiết vào pshdxh (mỗi lô 1 dòng)\n-- Cập nhật tồn kho\n-- Cộng vào tổng\n--[ÔNG TRIỆU HẬU - 2025-08-16]: Chỉnh lại tính thành tiền theo sl_lay\n-- tong_thanhtien := tong_thanhtien + (r_stock.giaxuat * soluong);\n-- tong_thanhtienbhyt := tong_thanhtienbhyt + (r_stock.giabhyt * soluong);\n-- tong_thanhtienvat := tong_thanhtienvat + (r_stock.giavat * soluong);\n-- In dữ liệu từng dòng để kiểm tra\n-- Trừ số còn lại\n-- Nếu vẫn còn thiếu thuốc, ghi log lỗi\n--RETURN FALSE;\n-- Chèn 1 dòng tổng vào CHUNGTU\n--Lấy chẩn đoán chứng từ\n--[ÔNG TRIỆU HẬU - 2025-08-16]: Dời ra ngoài để hứng toàn bộ Exception đồng thời ghi nhận log\n--[ÔNG TRIỆU HẬU - 2025-08-16]: Gom xử lý lại lỗi, và ghi nhận log để theo dõi.\n TPCode TEXT := input_json->>'TPCode'; --mã tờ điều trị: iddienbien\n AdmissionCode TEXT := input_json->>'AdmissionCode'; --makb\n MedicalRecordNo TEXT := input_json->>'MedicalRecordNo'; -- maba\n PatientCode TEXT := input_json->>'PatientCode'; --mabn\n EmployeeCode TEXT := input_json->>'EmployeeCode'; --manv\n TreatmentDoctorCode TEXT:= input_json->>'TreatmentDoctorCode'; --manv: chỉ định diễn biến\n PresCode TEXT := input_json->>'PresCode'; --sohd\n ngay TIMESTAMP:= input_json->>'Ngay';\n voucherdate_text TEXT:= input_json->>'VoucherDate'; --VoucherDate: Ngày phiếu thuốc. => ngayhd\n isdischarge BOOLEAN:= input_json->>'IsDischarge'; --\x3e> TRUE: Toa xuất viện, FALSE: toa bình thường\n\n madt_nt TEXT; -- mã đối tượng, lấy cho đủ số liệu, toa thuốc mới lên module\n madv_nt TEXT; -- mã khoa, lấy cho đủ số liệu, toa thuốc mới lên module\n maicd_nt TEXT; --maicd, lấy cho đủ số liệu, toa thuốc mới lên module\n kqcdoan_nt TEXT;--kqcdoan, lấy cho đủ số liệu, toa thuốc mới lên module\n maicdp_nt TEXT; --maicdp , lấy cho đủ số liệu, toa thuốc mới lên module\n kqcdoanp_nt TEXT;--kqcdoanp , lấy cho đủ số liệu, toa thuốc mới lên module\n \n mayhct_nt TEXT; --mayhct\n tenyhct_nt TEXT;--tenyhct\n pcchandoan TEXT := ';';\n chandoan_ct TEXT;\n cdoan TEXT := '';\n cdoanp TEXT := '';\n\n thangnam TEXT;\n thangkt_S TEXT; -- thangkt, lấy cho đủ số liệu, toa thuốc mới lên module\n namkt_S TEXT; --namkt, lấy cho đủ số liệu, toa thuốc mới lên module\n\n ngayhd DATE;\n ngaylap DATE;\n giolap TIMESTAMP;\n toaxv NUMERIC := 0;\n\n\n pres JSONB;\n pres_item JSONB;\n idx INT;\n soluong NUMERIC;\n ngay_uong INT:= 0;\n sang NUMERIC := 0;\n trua NUMERIC := 0;\n chieu NUMERIC := 0;\n toi NUMERIC := 0;\n lieu_dung TEXT;\n cachuong TEXT;\n inv_code TEXT; --sohd\n khoCode TEXT; --khole\n khochan_ct TEXT; --khochan\n so_con_lai NUMERIC;\n tong_thanhtien NUMERIC := 0;\n tong_thanhtienbhyt NUMERIC := 0;\n tong_thanhtienvat NUMERIC := 0;\n loaitoa_ct NUMERIC := 0;\n noitru_nt NUMERIC := 1; --noitru, lấy cho đủ số liệu, toa thuốc mới lên module\n loaixn_nt TEXT := 'xbb'; --loaixn, lấy cho đủ số liệu, toa thuốc mới lên module\n\n taikhoan_nt TEXT;--taikhoan: lập phiếu\n manv_nt TEXT;--manv: lập phiếu\n mathe_nt TEXT;--manv: lập phiếu\n\n db_ngaygio TIMESTAMP;\n r_stock RECORD;\n stt_nt INT;\n pres_success BOOLEAN := TRUE;\n ct_thanhtoan TEXT := ''; --'': Toa BH, '1': Toa thu phí\n ishi BOOLEAN := TRUE; --\x3e> TRUE: Toa BHYT, FALSE: Toa thu phí\n\n toncuoi_ps NUMERIC:= 0;\n \nBEGIN\n\n IF NOT EXISTS (SELECT 1 FROM current.qtdieutri WHERE iddienbien = TPCode) THEN\n INSERT INTO badt_dhs.insert_log(tpc_code, patient_code, admission_code,\n error_message, error_detail, raw_json)\n VALUES (TPCode, PatientCode, AdmissionCode,\n 'Không tìm thấy IDdienbien', format('TPCode %s không tồn tại trong qtdieutri', TPCode), input_json);\n \t\t pres_success := FALSE;\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format('IDdienbien %s không tồn tại', TPCode)\n );\n END IF;\n\t\t\n SELECT giatri INTO pcchandoan from current.system where tents = 'pcchandoan';\n SELECT madt, madv, maicd, kqcdoan, maicdp, kqcdoanp, mathe, mayhct, tenyhct INTO madt_nt, madv_nt, maicd_nt, kqcdoan_nt, maicdp_nt, kqcdoanp_nt, mathe_nt, mayhct_nt, tenyhct_nt -- lấy cho đủ số liệu\n FROM current.bnnoitru\n WHERE mabn = PatientCode AND maba = MedicalRecordNo AND makb = AdmissionCode;\n\n /*\n SELECT ngaygio INTO db_ngaygio\n FROM current.qtdieutri\n WHERE iddienbien = TPCode;\n */\n ngayhd := CASE WHEN voucherdate_text = '' THEN ngay::DATE ELSE voucherdate_text::DATE END; --Vuong chỉnh 05/08/2025\n toaxv := CASE WHEN isdischarge::BOOLEAN = FALSE THEN 0 ELSE 1 END; --Toa xuất viện\n ngaylap := ngay::DATE;\n giolap := CASE WHEN voucherdate_text = '' THEN ngay::TIMESTAMP ELSE voucherdate_text::TIMESTAMP END; --Vuong chỉnh 06/08/2025\n SELECT taikhoan, manv INTO taikhoan_nt, manv_nt\n FROM current.dmnhanvien\n WHERE manv = EmployeeCode OR manv = TreatmentDoctorCode;\n\n IF madt_nt IS NULL THEN\n \tpres_success := FALSE;\n RAISE EXCEPTION 'Không tìm thấy mã điều trị';\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format('Không tìm thấy bệnh nhân %s', PatientCode)\n );\n END IF;\n\n SELECT giatri INTO thangnam FROM current.system WHERE tents = 'thanglv';\n thangkt_S := SPLIT_PART(thangnam, '/', 1);\n namkt_S := SPLIT_PART(thangnam, '/', 2);\n\n IF EXISTS (SELECT 1 FROM current.chungtu WHERE sohd = PresCode AND mabn = PatientCode AND makh = MedicalRecordNo AND iddienbien = TPCode) THEN\n PERFORM badt_dhs.deletetpprescription(input_json);\n END IF;\n\n pres := input_json->'Prescriptions';\n ngay_uong := (input_json->'Prescriptions'->0->>'DateOfUse')::INT;\n RAISE NOTICE 'Ngày uống 1: %',\n ngay_uong;\n FOR idx IN 0 .. jsonb_array_length(pres) - 1 LOOP\n pres_item := pres->idx;\n inv_code := pres_item->>'InventoryCode';\n khoCode := pres_item->>'StoreHouse';\n soluong := COALESCE((pres_item->>'DispenseQty')::NUMERIC, 0);\n toncuoi_ps := 0;\n SELECT khocpc INTO khochan_ct FROM current.dmkhocp WHERE khocp = khoCode;\n\n SELECT SUM(COALESCE(tk.toncuoi - tk.tamxuat,0)) as ps_toncuoi INTO toncuoi_ps\n FROM current.pstonkho tk\n WHERE tk.mahh = inv_code\n AND tk.khocp = khoCode\n AND tk.thangkt = thangkt_S\n AND tk.namkt = namkt_S\n AND COALESCE(tk.xoa, 0) = 0 ;\n\n IF toncuoi_ps < soluong THEN\n pres_success := FALSE;\n INSERT INTO badt_dhs.insert_log(tpc_code, patient_code, admission_code,\n error_message, error_detail, raw_json)\n VALUES(TPCode, PatientCode, AdmissionCode,\n format('Số lượng thuốc %s: tồn kho %s không đủ xuất', inv_code, toncuoi_ps), '', input_json);\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format('Số lượng thuốc %s: tồn kho %s không đủ xuất', inv_code,toncuoi_ps));\n END IF;\n END LOOP;\n IF pres_success THEN\n FOR idx IN 0 .. jsonb_array_length(pres) - 1 LOOP\n pres_item := pres->idx;\n ishi := COALESCE((pres_item->>'IsHI')::boolean, true); --True: Toa BH, False: Toa thu phí\n inv_code := pres_item->>'InventoryCode';\n khoCode := pres_item->>'StoreHouse';\n soluong := COALESCE((pres_item->>'DispenseQty')::NUMERIC, 0); -- Đổi từ OriDispenseQty --\x3e DispenseQty\n so_con_lai := soluong;\n stt_nt := COALESCE((pres_item->>'OrderNo')::INT, idx + 1);\n\n sang := COALESCE((pres_item->>'MorningQty')::NUMERIC, 0);\n trua := COALESCE((pres_item->>'MiddayQty')::NUMERIC, 0);\n chieu := COALESCE((pres_item->>'AfternoonQty')::NUMERIC, 0);\n toi := COALESCE((pres_item->>'EveningQty')::NUMERIC, 0);\n\n lieu_dung := pres_item->>'Sudung';\n cachuong := pres_item->>'Cachuong';\n \n\t\t \n IF ishi THEN\n ct_thanhtoan := '';\n loaitoa_ct = 1; --BH\n ELSE\n ct_thanhtoan := '1';\n madt_nt := '06';\n loaitoa_ct = 0; --TP\n END IF;\n \n FOR r_stock IN\n SELECT tk.mahh, tk.handung, tk.solo, tk.visa, tk.toncuoi - tk.tamxuat as toncuoi, \n tk.giavat, tk.giaxuat, k.giabhyt, k.bhyt\n FROM current.pstonkho tk\n JOIN current.dmkho k ON tk.mahh = k.mahh\n WHERE tk.mahh = inv_code\n AND tk.khocp = khoCode\n AND tk.thangkt = thangkt_S\n AND tk.namkt = namkt_S\n AND COALESCE(tk.xoa, 0) = 0\n\t\t AND COALESCE(tk.uutien, '') != '2' --2: Cấm xuất\n AND tk.toncuoi > 0\n AND tk.toncuoi - tk.tamxuat > 0\n ORDER BY tk.uutien ASC, tk.handung DESC\n\n LOOP\n RAISE NOTICE 'Lô: %, Hạn dùng: %, SL tồn: %, Giá xuất: %',\n r_stock.solo, r_stock.handung, r_stock.toncuoi, r_stock.giaxuat;\n RAISE NOTICE 'SL: %',\n soluong;\n\n DECLARE\n sl_lay NUMERIC := LEAST(so_con_lai, r_stock.toncuoi);\n\n BEGIN\n RAISE NOTICE '--SỐ Lượng lấy: %',sl_lay;\n IF pres_success AND sl_lay > 0 THEN\n INSERT INTO current.pshdxn(\n sohd, iddienbien, mabn, makh,\n mahh, ngayhd, ngaylap, giolap, madv,\n soluong, sang, trua, chieu, toi, lieu_dung, cachuong,\n giaban, giavat,giabhyt, thanhtien, thanhtienbhyt, bhyt,\n handung, solo, visa, thangkt, namkt,\n stt, loaixn,noitru,khole, toaxv,\n madt, khochan,theodon,tienvat,tenmay,loaitoa,thanhtoan ) --them 06/08/2025\n VALUES (\n PresCode, tpcode, PatientCode, MedicalRecordNo,\n inv_code, ngayhd, ngaylap, giolap, madv_nt,\n sl_lay, sang, trua, chieu, toi, lieu_dung, cachuong,\n r_stock.giaxuat, r_stock.giavat, r_stock.giabhyt, r_stock.giaxuat * sl_lay, r_stock.giabhyt * sl_lay, r_stock.bhyt,\n r_stock.handung, r_stock.solo, r_stock.visa, thangkt_S, namkt_S,\n stt_nt,loaixn_nt,noitru_nt,khoCode, toaxv,\n madt_nt,khochan_ct,sl_lay,r_stock.giavat * sl_lay,'',loaitoa_ct, ct_thanhtoan --thêm 06/08/2025\n );\n\n RAISE NOTICE 'Tồn kho mahh: %, khocp: %, Giá vat: %, HD: %, số lô:%',\n inv_code, khoCode, r_stock.giavat, r_stock.handung, r_stock.solo;\n\n UPDATE current.pstonkho\n SET tamxuat = COALESCE(tamxuat, 0) + COALESCE(sl_lay,0)\n WHERE COALESCE(mahh,'') = COALESCE(inv_code,'')\n AND COALESCE(giavat,0) = COALESCE(r_stock.giavat,0)\n AND COALESCE(khocp,'') = COALESCE(khoCode,'')\n AND COALESCE(handung,'') = COALESCE(r_stock.handung,'')\n AND COALESCE(solo,'') = COALESCE(r_stock.solo,'')\n\t\t\t AND COALESCE(thangkt,'') = COALESCE(thangkt_S,'')\n AND COALESCE(namkt,'') = COALESCE(namkt_S,'');\n\n RAISE NOTICE '--Tính tổng';\n tong_thanhtien := tong_thanhtien + (r_stock.giaxuat * sl_lay);\n tong_thanhtienbhyt := tong_thanhtienbhyt + (r_stock.giabhyt * sl_lay);\n tong_thanhtienvat := tong_thanhtienvat + (r_stock.giavat * sl_lay);\n\n RAISE NOTICE 'Tổng thành tiền: %, Giá xuất: %, SL: %, SL còn lại: %',\n tong_thanhtien, r_stock.giaxuat, soluong, so_con_lai;\n so_con_lai := so_con_lai - sl_lay;\n RAISE NOTICE '--Cập nhật thành công';\n END IF;\n END;\n END LOOP;\n\n IF so_con_lai > 0 THEN\n pres_success := FALSE;\n INSERT INTO badt_dhs.insert_log(tpc_code, patient_code, admission_code,\n error_message, error_detail, raw_json)\n VALUES(TPCode, PatientCode, AdmissionCode,\n format('Không đủ thuốc %s: thiếu %s đơn vị', inv_code, so_con_lai), '', input_json);\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format('Không đủ thuốc %s: thiếu %s đơn vị', inv_code,so_con_lai)\n );\n END IF;\n END LOOP;\n END IF;\n\n\tBEGIN\n \tIF pres_success THEN\n IF ishi THEN\n ct_thanhtoan := '';\n loaitoa_ct = 1; --BH\n ELSE\n ct_thanhtoan := '1';\n madt_nt := '06';\n loaitoa_ct = 0; --TP\n END IF;\n IF tenyhct_nt != '' THEN\n cdoan := tenyhct_nt || ' [' || kqcdoan_nt || ']';\n cdoanp := CASE WHEN kqcdoanp_nt = '' THEN '' ELSE pcchandoan || kqcdoanp_nt END;\n chandoan_ct := cdoan || cdoanp;\n ELSE\n cdoan := kqcdoan_nt;\n cdoanp := CASE WHEN kqcdoanp_nt = '' THEN '' ELSE pcchandoan || kqcdoanp_nt END;\n chandoan_ct := cdoan || cdoanp;\n END IF;\n \n RAISE NOTICE 'Chứng từ ngày uống: %',\n ngay_uong;\n INSERT INTO current.chungtu(\n sohd, iddienbien, mabn, makh, madt, madv,\n manv, ngayuong, ghichu, khole,\n ngayhd, ngaylap, giolap, thanhtien, thangkt, namkt,\n loaixn,noitru, taikhoan, maicd, kqcdoan, maicdp, kqcdoanp, api, thanhtoan, toaxv,\n khochan,tienvat,tenmay,taikham,loaitoa,mathe,thanhtienbhyt,mayhct, tenyhct) --them 06/08/2025\n VALUES (\n PresCode, tpcode, PatientCode, MedicalRecordNo, madt_nt, madv_nt,\n manv_nt, ngay_uong, '', khoCode,\n ngayhd, ngaylap, giolap, tong_thanhtien, thangkt_S, namkt_S,\n loaixn_nt,noitru_nt,taikhoan_nt,maicd_nt,chandoan_ct,maicdp_nt,kqcdoanp_nt,1, ct_thanhtoan, toaxv,\n khochan_ct,tong_thanhtienvat,'',0,loaitoa_ct,mathe_nt,tong_thanhtienbhyt,mayhct_nt,tenyhct_nt --them 06/08/2025\n );\n\n RETURN jsonb_build_object(\n 'status', 'success',\n 'message', format('Thêm thành công chứng từ %s',PresCode)\n );\n END IF;\nEND;\nEXCEPTION\n WHEN OTHERS THEN\n RAISE NOTICE 'EXCEPTION.OTHERS';\n INSERT INTO badt_dhs.insert_log(tpc_code, patient_code, admission_code,\n error_message, error_detail, raw_json)\n VALUES(TPCode, PatientCode, AdmissionCode,\n format('EXCEPTION: %s', SQLERRM), '', input_json);\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', SQLERRM\n );\n END;\n$$ LANGUAGE plpgsql;\n\n\n\n\n\n\n\n"
|
4461
|
+
codesql: "\n\n\nCREATE TABLE IF NOT EXISTS badt_dhs.insert_log (\n id SERIAL PRIMARY KEY,\n tpc_code TEXT, -- Mã tờ điều trị (iddienbien)\n patient_code TEXT, -- Mã bệnh nhân\n admission_code TEXT, -- Mã tiếp nhận\n error_message TEXT, -- Nội dung lỗi\n error_detail TEXT, -- Chi tiết lỗi nếu cần\n log_time TIMESTAMP DEFAULT now(), -- Thời gian lỗi\n raw_json JSONB -- Dữ liệu đầu vào\n);\n\nCREATE OR REPLACE FUNCTION badt_dhs.insertTPPrescription(input_json JSONB)\nRETURNS JSONB AS $$\nDECLARE\n-- Lastest commit: author:onghaup; date: 2025-09-09 13:53:37\n-- ===============================================================\n-- Thực hiện: NGUYỄN TRIỀU VƯƠNG - 2025-06-10\n-- Hàm: badt_dhs.insertTPPrescription(input_json JSONB)\n-- Mô tả:\n-- - input_json: nội dung file json được get về từ ...\n-- Sử dụng:\n-- SELECT badt_dhs.insertTPPrescription(input_json JSONB); --Insert,update vào current.chungtu, current.pshdxn, current.pstonkho từ DHS\n-- ===============================================================\n--json mẫu\n-- ===============================================================\n-- Tạo bảng ghi log lỗi\n--================================================================\n--ngay_uong INT := COALESCE((input_json->>'DatOfUse')::NUMERIC, 0);\n--voucherdate TIMESTAMP:= input_json->>'VoucherDate'; --VoucherDate: Ngày phiếu thuốc. => ngayhd\n-- Kiểm tra IDDienBien\n--RETURN FALSE;\n-- lấy pcchandoan\n-- Lấy madt\n-- Lấy ngày giờ diễn biến\n--Lấy tài khoản bs\n-- Lấy tháng/năm kế toán\n-- Kiểm tra trùng chứng từ\n-- Gọi hàm xóa toa\n-- Duyệt qua từng thuốc trong đơn\n-- Lấy ngày uống\n-- Kiểm tra tất cả thuốc trong toa còn đủ xuất thì mới tiến hành xuất thuốc\n-- Cách 4: Sử dụng %L thay cho %s (để xử lý NULL an toàn hơn)\n-- soluong := COALESCE((pres_item->>'OriDispenseQty')::NUMERIC, 0);\n-- [ÔNG TRIỆU HẬU - 2025-08-13] Chỉnh lại lấy cột số lượng đúng theo qui ước EMR \n--Lây khochan\n-- Lặp qua các lô tồn kho còn hạn dùng\n--[ÔNG TRIỆU HẬU - 2025-08-16]: Chỉnh lại lấy giá xuất trong pstonkho để không lỗi tính toán tồn kho (có trong pshdxn mà không có trong pstonkho)\n-- đang bị vướng ở Hồng Dân - Bạc Liêu \n-- In dữ liệu từng dòng để kiểm tra\n-- IN số lượng còn lại\n--sl_lay NUMERIC := soluong;\n--sl_lay NUMERIC := LEAST(so_con_lai, r_stock.toncuoi);\n-- Ghi chi tiết vào pshdxh (mỗi lô 1 dòng)\n-- Cập nhật tồn kho\n--[ÔNG TRIỆU HẬU - 2025-09-09]: Chỉnh lỗi cập nhật giá trị bị sai, đối với kho, khi đưa vào xử lý chung với tủ trực pstonkho_check_toncuoi_dh_chk3\n-- Cộng vào tổng\n--[ÔNG TRIỆU HẬU - 2025-08-16]: Chỉnh lại tính thành tiền theo sl_lay\n-- tong_thanhtien := tong_thanhtien + (r_stock.giaxuat * soluong);\n-- tong_thanhtienbhyt := tong_thanhtienbhyt + (r_stock.giabhyt * soluong);\n-- tong_thanhtienvat := tong_thanhtienvat + (r_stock.giavat * soluong);\n-- In dữ liệu từng dòng để kiểm tra\n-- Trừ số còn lại\n-- Nếu vẫn còn thiếu thuốc, ghi log lỗi\n--RETURN FALSE;\n-- Chèn 1 dòng tổng vào CHUNGTU\n--Lấy chẩn đoán chứng từ\n--[ÔNG TRIỆU HẬU - 2025-08-16]: Dời ra ngoài để hứng toàn bộ Exception đồng thời ghi nhận log\n--[ÔNG TRIỆU HẬU - 2025-08-16]: Gom xử lý lại lỗi, và ghi nhận log để theo dõi.\n TPCode TEXT := input_json->>'TPCode'; --mã tờ điều trị: iddienbien\n AdmissionCode TEXT := input_json->>'AdmissionCode'; --makb\n MedicalRecordNo TEXT := input_json->>'MedicalRecordNo'; -- maba\n PatientCode TEXT := input_json->>'PatientCode'; --mabn\n EmployeeCode TEXT := input_json->>'EmployeeCode'; --manv\n TreatmentDoctorCode TEXT:= input_json->>'TreatmentDoctorCode'; --manv: chỉ định diễn biến\n PresCode TEXT := input_json->>'PresCode'; --sohd\n ngay TIMESTAMP:= input_json->>'Ngay';\n voucherdate_text TEXT:= input_json->>'VoucherDate'; --VoucherDate: Ngày phiếu thuốc. => ngayhd\n isdischarge BOOLEAN:= input_json->>'IsDischarge'; --\x3e> TRUE: Toa xuất viện, FALSE: toa bình thường\n\n madt_nt TEXT; -- mã đối tượng, lấy cho đủ số liệu, toa thuốc mới lên module\n madv_nt TEXT; -- mã khoa, lấy cho đủ số liệu, toa thuốc mới lên module\n maicd_nt TEXT; --maicd, lấy cho đủ số liệu, toa thuốc mới lên module\n kqcdoan_nt TEXT;--kqcdoan, lấy cho đủ số liệu, toa thuốc mới lên module\n maicdp_nt TEXT; --maicdp , lấy cho đủ số liệu, toa thuốc mới lên module\n kqcdoanp_nt TEXT;--kqcdoanp , lấy cho đủ số liệu, toa thuốc mới lên module\n \n mayhct_nt TEXT; --mayhct\n tenyhct_nt TEXT;--tenyhct\n pcchandoan TEXT := ';';\n chandoan_ct TEXT;\n cdoan TEXT := '';\n cdoanp TEXT := '';\n\n thangnam TEXT;\n thangkt_S TEXT; -- thangkt, lấy cho đủ số liệu, toa thuốc mới lên module\n namkt_S TEXT; --namkt, lấy cho đủ số liệu, toa thuốc mới lên module\n\n ngayhd DATE;\n ngaylap DATE;\n giolap TIMESTAMP;\n toaxv NUMERIC := 0;\n\n\n pres JSONB;\n pres_item JSONB;\n idx INT;\n soluong NUMERIC;\n ngay_uong INT:= 0;\n sang NUMERIC := 0;\n trua NUMERIC := 0;\n chieu NUMERIC := 0;\n toi NUMERIC := 0;\n lieu_dung TEXT;\n cachuong TEXT;\n inv_code TEXT; --sohd\n khoCode TEXT; --khole\n khochan_ct TEXT; --khochan\n so_con_lai NUMERIC;\n tong_thanhtien NUMERIC := 0;\n tong_thanhtienbhyt NUMERIC := 0;\n tong_thanhtienvat NUMERIC := 0;\n loaitoa_ct NUMERIC := 0;\n noitru_nt NUMERIC := 1; --noitru, lấy cho đủ số liệu, toa thuốc mới lên module\n loaixn_nt TEXT := 'xbb'; --loaixn, lấy cho đủ số liệu, toa thuốc mới lên module\n\n taikhoan_nt TEXT;--taikhoan: lập phiếu\n manv_nt TEXT;--manv: lập phiếu\n mathe_nt TEXT;--manv: lập phiếu\n\n db_ngaygio TIMESTAMP;\n r_stock RECORD;\n stt_nt INT;\n pres_success BOOLEAN := TRUE;\n ct_thanhtoan TEXT := ''; --'': Toa BH, '1': Toa thu phí\n ishi BOOLEAN := TRUE; --\x3e> TRUE: Toa BHYT, FALSE: Toa thu phí\n\n toncuoi_ps NUMERIC:= 0;\n Matutruc TEXT:= ''; --[ÔNG TRIỆU HẬU - 2025-09-08]: Xử lý toa tủ trực\n dain NUMERIC:= 0;\n \nBEGIN\n\n IF NOT EXISTS (SELECT 1 FROM current.qtdieutri WHERE iddienbien = TPCode) THEN\n INSERT INTO badt_dhs.insert_log(tpc_code, patient_code, admission_code,\n error_message, error_detail, raw_json)\n VALUES (TPCode, PatientCode, AdmissionCode,\n 'Không tìm thấy IDdienbien', format('TPCode %s không tồn tại trong qtdieutri', TPCode), input_json);\n \t\t pres_success := FALSE;\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format('IDdienbien %s không tồn tại', TPCode)\n );\n END IF;\n\t\t\n SELECT giatri INTO pcchandoan from current.system where tents = 'pcchandoan';\n SELECT madt, madv, maicd, kqcdoan, maicdp, kqcdoanp, mathe, mayhct, tenyhct INTO madt_nt, madv_nt, maicd_nt, kqcdoan_nt, maicdp_nt, kqcdoanp_nt, mathe_nt, mayhct_nt, tenyhct_nt -- lấy cho đủ số liệu\n FROM current.bnnoitru\n WHERE mabn = PatientCode AND maba = MedicalRecordNo AND makb = AdmissionCode;\n\n /*\n SELECT ngaygio INTO db_ngaygio\n FROM current.qtdieutri\n WHERE iddienbien = TPCode;\n */\n ngayhd := CASE WHEN voucherdate_text = '' THEN ngay::DATE ELSE voucherdate_text::DATE END; --Vuong chỉnh 05/08/2025\n toaxv := CASE WHEN isdischarge::BOOLEAN = FALSE THEN 0 ELSE 1 END; --Toa xuất viện\n ngaylap := ngay::DATE;\n giolap := CASE WHEN voucherdate_text = '' THEN ngay::TIMESTAMP ELSE voucherdate_text::TIMESTAMP END; --Vuong chỉnh 06/08/2025\n SELECT taikhoan, manv INTO taikhoan_nt, manv_nt\n FROM current.dmnhanvien\n WHERE manv = EmployeeCode OR manv = TreatmentDoctorCode;\n\n IF madt_nt IS NULL THEN\n \tpres_success := FALSE;\n RAISE EXCEPTION 'Không tìm thấy mã điều trị';\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format('Không tìm thấy bệnh nhân %s', PatientCode)\n );\n END IF;\n\n SELECT giatri INTO thangnam FROM current.system WHERE tents = 'thanglv';\n thangkt_S := SPLIT_PART(thangnam, '/', 1);\n namkt_S := SPLIT_PART(thangnam, '/', 2);\n\n IF EXISTS (SELECT 1 FROM current.chungtu WHERE sohd = PresCode AND mabn = PatientCode AND makh = MedicalRecordNo AND iddienbien = TPCode) THEN\n PERFORM badt_dhs.deletetpprescription(input_json);\n END IF;\n\n pres := input_json->'Prescriptions';\n ngay_uong := (input_json->'Prescriptions'->0->>'DateOfUse')::INT;\n RAISE NOTICE 'Ngày uống 1: %',\n ngay_uong;\n FOR idx IN 0 .. jsonb_array_length(pres) - 1 LOOP\n pres_item := pres->idx;\n inv_code := COALESCE(pres_item->>'InventoryCode','');\n khoCode := COALESCE(pres_item->>'StoreHouse','');\n Matutruc := COALESCE(pres_item->>'Matutruc','');\n\n IF khoCode<>'' AND Matutruc<>'' THEN\n pres_success := FALSE;\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format('StoreHouse=%L và Matutruc=%L Không thể đồng thời khác rỗng.', khoCode, Matutruc)\n );\n END IF;\n\n RAISE NOTICE 'khoCode: %, Matutruc:%', khoCode, Matutruc;\n IF khoCode='' AND Matutruc<>'' THEN\n SELECT khocp INTO khoCode FROM current.dmdonvi WHERE COALESCE(madv,'')=Matutruc AND COALESCE(loaidv,0)=3;\n dain=1;\n END IF;\n \n soluong := COALESCE((pres_item->>'DispenseQty')::NUMERIC, 0);\n toncuoi_ps := 0;\n SELECT khocpc INTO khochan_ct FROM current.dmkhocp WHERE khocp = khoCode;\n\n RAISE NOTICE 'khoCode: %, Matutruc:%, khochan_ct: %', khoCode, Matutruc, khochan_ct;\n\n SELECT SUM(COALESCE(tk.toncuoi,0) - COALESCE(tk.tamxuat,0)) as ps_toncuoi INTO toncuoi_ps\n FROM current.pstonkho tk\n WHERE tk.mahh = inv_code\n AND CASE WHEN Matutruc<>'' THEN tk.madv = Matutruc ELSE tk.khocp = khoCode END --[ÔNG TRIỆU HẬU - 2025-09-08]: Xử lý toa tủ trực\n AND tk.thangkt = thangkt_S\n AND tk.namkt = namkt_S\n AND COALESCE(tk.xoa, 0) = 0 ;\n\n IF toncuoi_ps < soluong THEN\n pres_success := FALSE;\n INSERT INTO badt_dhs.insert_log(tpc_code, patient_code, admission_code,\n error_message, error_detail, raw_json)\n VALUES(TPCode, PatientCode, AdmissionCode,\n format('Số lượng thuốc %s: tồn kho %s không đủ xuất', inv_code, toncuoi_ps), '', input_json);\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format('Số lượng thuốc %s: tồn kho %s không đủ xuất', inv_code,toncuoi_ps));\n END IF;\n END LOOP;\n IF pres_success THEN\n FOR idx IN 0 .. jsonb_array_length(pres) - 1 LOOP\n pres_item := pres->idx;\n ishi := COALESCE((pres_item->>'IsHI')::boolean, true); --True: Toa BH, False: Toa thu phí\n inv_code := pres_item->>'InventoryCode';\n khoCode := COALESCE(pres_item->>'StoreHouse','');\n Matutruc := COALESCE(pres_item->>'Matutruc','');\n\n RAISE NOTICE 'khoCode: %, Matutruc:%', khoCode, Matutruc;\n IF khoCode='' AND Matutruc<>'' THEN\n SELECT khocp INTO khoCode FROM current.dmdonvi WHERE COALESCE(madv,'')=Matutruc AND COALESCE(loaidv,0)=3;\n SELECT khocpc INTO khochan_ct FROM current.dmkhocp WHERE khocp = khoCode;\n dain=1;\n END IF;\n\n soluong := COALESCE((pres_item->>'DispenseQty')::NUMERIC, 0); -- Đổi từ OriDispenseQty --\x3e DispenseQty\n so_con_lai := soluong;\n stt_nt := COALESCE((pres_item->>'OrderNo')::INT, idx + 1);\n\n sang := COALESCE((pres_item->>'MorningQty')::NUMERIC, 0);\n trua := COALESCE((pres_item->>'MiddayQty')::NUMERIC, 0);\n chieu := COALESCE((pres_item->>'AfternoonQty')::NUMERIC, 0);\n toi := COALESCE((pres_item->>'EveningQty')::NUMERIC, 0);\n\n lieu_dung := pres_item->>'Sudung';\n cachuong := pres_item->>'Cachuong';\n \n\t\t \n IF ishi THEN\n ct_thanhtoan := '';\n loaitoa_ct = 1; --BH\n ELSE\n ct_thanhtoan := '1';\n madt_nt := '06';\n loaitoa_ct = 0; --TP\n END IF;\n \n FOR r_stock IN\n SELECT tk.mahh, tk.handung, tk.solo, tk.visa, COALESCE(tk.toncuoi,0) - COALESCE(tk.tamxuat,0) as toncuoi, \n tk.giavat, tk.giaxuat, k.giabhyt, k.bhyt, tk.khocp, tk.madv\n FROM current.pstonkho tk\n JOIN current.dmkho k ON tk.mahh = k.mahh\n WHERE tk.mahh = inv_code\n AND CASE WHEN Matutruc<>'' THEN tk.madv = Matutruc ELSE tk.khocp = khoCode END --[ÔNG TRIỆU HẬU - 2025-09-08]: Xử lý toa tủ trực\n AND tk.thangkt = thangkt_S\n AND tk.namkt = namkt_S\n AND COALESCE(tk.xoa, 0) = 0\n\t\t AND COALESCE(tk.uutien, '') != '2' --2: Cấm xuất\n AND COALESCE(tk.toncuoi,0) > 0\n AND COALESCE(tk.toncuoi,0) - COALESCE(tk.tamxuat,0) > 0\n ORDER BY tk.uutien ASC, tk.handung DESC\n\n LOOP\n RAISE NOTICE 'Lô: %, Hạn dùng: %, SL tồn: %, Giá xuất: %, khocp: %, madv: %',\n r_stock.solo, r_stock.handung, r_stock.toncuoi, r_stock.giaxuat, r_stock.khocp, r_stock.madv;\n RAISE NOTICE 'SL: %',\n soluong;\n\n DECLARE\n sl_lay NUMERIC := LEAST(so_con_lai, r_stock.toncuoi);\n\n BEGIN\n RAISE NOTICE '--SỐ Lượng lấy: %',sl_lay;\n IF pres_success AND sl_lay > 0 THEN\n INSERT INTO current.pshdxn(\n sohd, iddienbien, mabn, makh,\n mahh, ngayhd, ngaylap, giolap, madv,\n soluong, sang, trua, chieu, toi, lieu_dung, cachuong,\n giaban, giavat,giabhyt, thanhtien, thanhtienbhyt, bhyt,\n handung, solo, visa, thangkt, namkt,\n stt, loaixn,noitru,khole, toaxv,\n madt, khochan,theodon,tienvat,tenmay,loaitoa,thanhtoan,\n dain,toatutruc,tutruc\n ) --them 06/08/2025\n VALUES (\n PresCode, tpcode, PatientCode, MedicalRecordNo,\n inv_code, ngayhd, ngaylap, giolap, madv_nt,\n sl_lay, sang, trua, chieu, toi, lieu_dung, cachuong,\n r_stock.giaxuat, r_stock.giavat, r_stock.giabhyt, r_stock.giaxuat * sl_lay, r_stock.giabhyt * sl_lay, r_stock.bhyt,\n r_stock.handung, r_stock.solo, r_stock.visa, thangkt_S, namkt_S,\n stt_nt,loaixn_nt,noitru_nt,khoCode, toaxv,\n madt_nt,khochan_ct,sl_lay,r_stock.giavat * sl_lay,'',loaitoa_ct, ct_thanhtoan, --thêm 06/08/2025\n dain, CASE WHEN dain=0 THEN 0 ELSE 1 END, Matutruc --[ÔNG TRIỆU HẬU - 2025-09-08]: Xử lý toa tủ trực\n );\n\n RAISE NOTICE 'Tồn kho mahh: %, khocp: %, Giá vat: %, HD: %, số lô:%, sl_lay: %',\n inv_code, khoCode, r_stock.giavat, r_stock.handung, r_stock.solo, sl_lay;\n\n UPDATE current.pstonkho\n SET \n tamxuat = COALESCE(tamxuat, 0) + (CASE WHEN Matutruc<>'' THEN 0 ELSE COALESCE(sl_lay,0) END) ,\n toncuoi = COALESCE(toncuoi, 0) - (CASE WHEN Matutruc<>'' THEN COALESCE(sl_lay,0) ELSE 0 END),\n xuat = COALESCE(xuat, 0) + (CASE WHEN Matutruc<>'' THEN COALESCE(sl_lay,0) ELSE 0 END)\n WHERE COALESCE(mahh,'') = COALESCE(inv_code,'')\n AND COALESCE(giavat,0) = COALESCE(r_stock.giavat,0)\n AND CASE WHEN Matutruc<>'' THEN madv = Matutruc ELSE COALESCE(khocp,'') = COALESCE(khoCode,'') END \n AND COALESCE(handung,'') = COALESCE(r_stock.handung,'')\n AND COALESCE(solo,'') = COALESCE(r_stock.solo,'')\n\t\t\t AND COALESCE(thangkt,'') = COALESCE(thangkt_S,'')\n AND COALESCE(namkt,'') = COALESCE(namkt_S,'');\n\n RAISE NOTICE '--Tính tổng';\n tong_thanhtien := tong_thanhtien + (r_stock.giaxuat * sl_lay);\n tong_thanhtienbhyt := tong_thanhtienbhyt + (r_stock.giabhyt * sl_lay);\n tong_thanhtienvat := tong_thanhtienvat + (r_stock.giavat * sl_lay);\n\n RAISE NOTICE 'Tổng thành tiền: %, Giá xuất: %, SL: %, SL còn lại: %',\n tong_thanhtien, r_stock.giaxuat, soluong, so_con_lai;\n so_con_lai := so_con_lai - sl_lay;\n RAISE NOTICE '--Cập nhật thành công';\n END IF;\n END;\n END LOOP;\n\n IF so_con_lai > 0 THEN\n pres_success := FALSE;\n INSERT INTO badt_dhs.insert_log(tpc_code, patient_code, admission_code,\n error_message, error_detail, raw_json)\n VALUES(TPCode, PatientCode, AdmissionCode,\n format('Không đủ thuốc %s: thiếu %s đơn vị', inv_code, so_con_lai), '', input_json);\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format('Không đủ thuốc %s: thiếu %s đơn vị', inv_code,so_con_lai)\n );\n END IF;\n END LOOP;\n END IF;\n\n\tBEGIN\n \tIF pres_success THEN\n IF ishi THEN\n ct_thanhtoan := '';\n loaitoa_ct = 1; --BH\n ELSE\n ct_thanhtoan := '1';\n madt_nt := '06';\n loaitoa_ct = 0; --TP\n END IF;\n IF tenyhct_nt != '' THEN\n cdoan := tenyhct_nt || ' [' || kqcdoan_nt || ']';\n cdoanp := CASE WHEN kqcdoanp_nt = '' THEN '' ELSE pcchandoan || kqcdoanp_nt END;\n chandoan_ct := cdoan || cdoanp;\n ELSE\n cdoan := kqcdoan_nt;\n cdoanp := CASE WHEN kqcdoanp_nt = '' THEN '' ELSE pcchandoan || kqcdoanp_nt END;\n chandoan_ct := cdoan || cdoanp;\n END IF;\n \n RAISE NOTICE 'Chứng từ ngày uống: %',\n ngay_uong;\n INSERT INTO current.chungtu(\n sohd, iddienbien, mabn, makh, madt, madv,\n manv, ngayuong, ghichu, khole,\n ngayhd, ngaylap, giolap, thanhtien, thangkt, namkt,\n loaixn,noitru, taikhoan, maicd, kqcdoan, maicdp, kqcdoanp, api, thanhtoan, toaxv,\n khochan,tienvat,tenmay,taikham,loaitoa,mathe,thanhtienbhyt,mayhct, tenyhct,\n dain,toatutruc,tutruc\n ) --them 06/08/2025\n VALUES (\n PresCode, tpcode, PatientCode, MedicalRecordNo, madt_nt, madv_nt,\n manv_nt, ngay_uong, '', khoCode,\n ngayhd, ngaylap, giolap, tong_thanhtien, thangkt_S, namkt_S,\n loaixn_nt,noitru_nt,taikhoan_nt,maicd_nt,chandoan_ct,maicdp_nt,kqcdoanp_nt,1, ct_thanhtoan, toaxv,\n khochan_ct,tong_thanhtienvat,'',0,loaitoa_ct,mathe_nt,tong_thanhtienbhyt,mayhct_nt,tenyhct_nt, --them 06/08/2025\n dain, CASE WHEN dain=0 THEN 0 ELSE 1 END, Matutruc --[ÔNG TRIỆU HẬU - 2025-09-08]: Xử lý toa tủ trực\n );\n\n RETURN jsonb_build_object(\n 'status', 'success',\n 'message', format('Thêm thành công chứng từ %s',PresCode)\n );\n END IF;\nEND;\nEXCEPTION\n WHEN OTHERS THEN\n RAISE NOTICE 'EXCEPTION.OTHERS';\n INSERT INTO badt_dhs.insert_log(tpc_code, patient_code, admission_code,\n error_message, error_detail, raw_json)\n VALUES(TPCode, PatientCode, AdmissionCode,\n format('EXCEPTION: %s', SQLERRM), '', input_json);\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', SQLERRM\n );\n END;\n$$ LANGUAGE plpgsql;\n\n\n\n\n\n\n\n"
|
4462
4462
|
},
|
4463
4463
|
"badt_dhs.GetSyncDepartment": {
|
4464
4464
|
name: "badt_dhs.GetSyncDepartment",
|
4465
4465
|
para: ["madv"],
|
4466
4466
|
returns: "text",
|
4467
|
-
codesql: "\n\n\nCREATE OR REPLACE FUNCTION badt_dhs.GetSyncDepartment(madv text DEFAULT NULL)\nRETURNS text\nLANGUAGE plpgsql\nAS $$\nDECLARE\n-- Lastest commit: author:onghaup; date: 2025-08-09
|
4467
|
+
codesql: "\n\n\nCREATE OR REPLACE FUNCTION badt_dhs.GetSyncDepartment(madv text DEFAULT NULL)\nRETURNS text\nLANGUAGE plpgsql\nAS $$\nDECLARE\n-- Lastest commit: author:onghaup; date: 2025-08-22 09:40:22\n-- Thực hiện: NGUYỄN QUỐC HOÀ - 2025-05-22\n-- Hàm: badt_dhs.GetSyncDepartment(madv TEXT DEFAULT NULL)\n-- Mô tả: Danh mục khoa\n-- - Nếu madv IS NULL hoặc rỗng ('') => trả toàn bộ dữ liệu\n-- - Nếu madv có giá trị cụ thể => lọc theo madv\n--\n-- Sử dụng:\n-- SELECT badt_dhs.GetSyncDepartment(); -- Trả toàn bộ khoa\n-- SELECT badt_dhs.GetSyncDepartment(''); -- Trả toàn bộ khoa\n-- SELECT badt_dhs.GetSyncDepartment('10'); -- Chỉ khoa mã '10'\n-- ===============================================================\n-- Gửi thành công [](https://i.ibb.co/KjC5D19D/Postman-PU6-Cx-Wm0-F8.png)\n--[ÔNG TRIỆU HẬU - 2025-08-22]: Chỉnh lại Active theo trạng thái sử dụng (xoa)\n result text;\n p_madv ALIAS FOR madv;\nBEGIN\n SELECT json_agg(row_data)::text\n INTO result\n FROM (\n SELECT\n '' AS \"ParentDepartmentCode\",\t\t\t\t\t\t\t--Mã cha\n COALESCE(dv.madv,'') AS \"DepartmentCode\",\t\t\t\t\t\t\t\t--Mã phòng khoa \n COALESCE(dv.tendv,'') AS \"DepartmentName\",\t\t\t\t\t\t\t\t--Tên phòng khoa\n COALESCE(dv.vietngan,'') AS \"DepartmentShortName\",\t\t\t\t\t\t\t--Tên viết tắt \n '' AS \"Description\",\t\t\t\t\t\t\t\t\t--Diễn giải\n '' AS \"Note\",\t\t\t\t\t\t\t\t\t\t--Ghi chú\n CASE WHEN COALESCE(dv.khoaduoc,0) = 3 THEN 'OEXM'\n\t WHEN COALESCE(dv.khoaduoc,0) = 4 THEN 'INUN'\n WHEN COALESCE(dv.khoaduoc,0) = 5 THEN 'PACL' ELSE 'FUDE' END AS \"DepartmentType\", \t--Loại phòng khoa : OEXM -Khám bệnh ngoại trú; INUN - Nội trú; PACL - Cận lâm sàng; FUDE -Phòng chức năng\n '' AS \"MHDepartmentCode\",\t\t\t\t\t\t\t\t\t--Mã phòng khoa của bộ y tế \n COALESCE(dv.ma_khoa_cv2348, '') AS \"MHSpecialCode\",\t\t\t\t\t--Mã chuyên khoa của bộ y tế\n CASE WHEN COALESCE(dv.xoa,0) = 0 THEN TRUE ELSE FALSE END AS \"Active\" \t\t--Sử dụng \n FROM current.dmdonvi dv\n WHERE dv.loaidv = 1 AND \n (p_madv IS NULL OR p_madv = '' OR dv.madv = p_madv) \n ) AS row_data;\n RETURN result;\nEND;\n$$;\n\n"
|
4468
4468
|
},
|
4469
4469
|
"badt_dhs.GetSyncEthnic": {
|
4470
4470
|
name: "badt_dhs.GetSyncEthnic",
|
@@ -4500,7 +4500,7 @@
|
|
4500
4500
|
name: "badt_dhs.cancelTPPrescription",
|
4501
4501
|
para: ["input_json"],
|
4502
4502
|
returns: "JSONB",
|
4503
|
-
codesql: "\n\nCREATE OR REPLACE FUNCTION badt_dhs.cancelTPPrescription(input_json JSONB)\nRETURNS JSONB AS $$\nDECLARE\n-- Lastest commit: author:Nguyễn Triều Vương; date: 2025-08-12 09:04:53\n-- ===============================================================\n-- Thực hiện: NGUYỄN TRIỀU VƯƠNG - 2025-08-11\n-- Hàm: badt_dhs.cancelTPPrescription(input_json JSONB)\n-- Mô tả: Hủy 1 thuốc trong toa\n-- input_json: nội dung file json: thông tin bệnh nhân và toa thuốc\n-- Sử dụng:\n-- SELECT badt_dhs.cancelTPPrescription(input_json JSONB);\n-- Nếu thuốc đã tổng hơp --\x3e tạo toa trả với thông tin thuốc trong json --\x3e theo tháng năm kế toán hiện tại\n-- Nếu thuốc thuốc chưa tổng hợp --\x3e xóa thuốc trong pshdxn --\x3e tăng pstonkho.tamnhap --\x3e xóa chungtu hoặc điều chỉnh theo thuốc còn lại trong pshdxn\n-- ===============================================================\n-- 0. Kiểm tra chứng từ tồn tại\n-- 2. Kiểm tra đã in chứng từ hay chưa\n-- Lấy tháng/năm kế toán\n-- 1. Kiểm tra còn đủ số lượng để trả\n-- Lấy chi tiết thuốc trả\n-- Ghi vào pshdxn\n-- Cập nhật tồn kho\n-- Cộng tổng\n-- Ghi chứng từ\n-- Lấy chi tiết thuốc trả\n-- UPDATE\n-- Cập nhật tồn kho\n-- Cộng tổng\n-- Ghi chứng từ\n-- UPDATE\n p_mabn TEXT := input_json->>'PatientCode'; --Mã bệnh nhân\n p_makh TEXT := input_json->>'MedicalRecordNo'; -- Mã bệnh án\n p_makb TEXT := input_json->>'AdmissionCode'; -- Mã khám bệnh\n p_iddienbien TEXT := input_json->>'TPCode'; -- ID diễn biến\n p_sohd TEXT := input_json->>'PresCode'; -- Số hd\n p_mahh TEXT := input_json->>'PresDtlCode'; --Mã hàng hóa\n\n tong_thanhtien NUMERIC := 0;\n tong_thanhtienbhyt NUMERIC := 0;\n tong_thanhtienvat NUMERIC := 0;\n tong NUMERIC := 0;\n so_mahh NUMERIC := 0;\n\n r_hd RECORD;\n r_ct RECORD;\n\n thangnam TEXT;\n thangkt_S TEXT;\n namkt_S TEXT;\n v_code TEXT;\n v_exists BOOLEAN;\n v_dain_exists BOOLEAN;\nBEGIN\n SELECT EXISTS (\n SELECT 1\n FROM current.chungtu ct\n WHERE ct.sohd = p_sohd\n AND ct.mabn = p_mabn\n AND ct.makh = p_makh\n AND COALESCE(xoa, 0) = 0\n ) INTO v_exists;\n\n IF NOT v_exists THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Hóa đơn %s (iddienbien=%s) không tồn tại', p_sohd, p_iddienbien)\n );\n END IF;\n SELECT EXISTS (\n SELECT 1\n FROM current.pshdxn\n WHERE mabn = p_mabn\n AND makh = p_makh\n AND sohd = p_sohd\n AND COALESCE(xoa, 0) = 0\n AND COALESCE(dain, 0) = 1\n ) INTO v_dain_exists;\n\n IF v_dain_exists THEN\n SELECT giatri INTO thangnam FROM current.system WHERE tents = 'thanglv';\n thangkt_S := SPLIT_PART(thangnam, '/', 1);\n namkt_S := SPLIT_PART(thangnam, '/', 2);\n\n v_code := CASE WHEN length(p_sohd) > 14 THEN LEFT(p_sohd, 14) ELSE p_sohd END;\n v_code := v_code || to_char(NOW(), 'HH24MISS');\n\n SELECT SUM(CASE WHEN loaixn = 'xbb' AND COALESCE(dain,0) = 1 THEN soluong ELSE 0 END)\n - SUM(CASE WHEN loaixn = 'nkt' THEN soluong ELSE 0 END)\n INTO tong\n FROM current.pshdxn\n WHERE mabn = p_mabn\n AND makh = p_makh\n AND mahh = p_mahh\n AND COALESCE(xoa, 0) = 0;\n\n IF tong <= 0 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Thuốc/vật tư %s đã trả đủ số lượng, không thể trả thêm', p_mahh)\n );\n END IF;\n\n FOR r_hd IN\n SELECT *\n FROM current.pshdxn hd\n WHERE hd.mahh = p_mahh\n AND hd.sohd = p_sohd\n AND hd.mabn = p_mabn\n AND hd.makh = p_makh\n AND COALESCE(hd.xoa, 0) = 0\n LOOP\n IF COALESCE(r_hd.soluong, 0) > 0 THEN\n INSERT INTO current.pshdxn(\n sohd, sohdx, iddienbien, mabn, makh,\n mahh, ngayhd, ngaylap, giolap, madv,\n soluong, sang, trua, chieu, toi, lieu_dung, cachuong,\n giaban, giavat, giabhyt, thanhtien, thanhtienbhyt, bhyt,\n handung, solo, visa, thangkt, namkt,\n stt, loaixn, noitru, khole, toaxv,\n madt, khochan, theodon, tienvat, tenmay, loaitoa, thanhtoan\n )\n VALUES (\n v_code, r_hd.sohd, r_hd.iddienbien, r_hd.mabn, r_hd.makh,\n r_hd.mahh, r_hd.ngayhd, r_hd.ngaylap, now(), r_hd.madv,\n r_hd.soluong, r_hd.sang, r_hd.trua, r_hd.chieu, r_hd.toi, r_hd.lieu_dung, r_hd.cachuong,\n r_hd.giaban, r_hd.giavat, r_hd.giabhyt, r_hd.thanhtien, r_hd.thanhtienbhyt, r_hd.bhyt,\n r_hd.handung, r_hd.solo, r_hd.visa, thangkt_S, namkt_S,\n r_hd.stt, 'nkt', r_hd.noitru, r_hd.khole, 0,\n r_hd.madt, r_hd.khochan, r_hd.theodon, r_hd.tienvat, r_hd.tenmay, r_hd.loaitoa, r_hd.thanhtoan\n );\n\n UPDATE current.pstonkho\n SET tamnhap = COALESCE(tamnhap, 0) + COALESCE(r_hd.soluong, 0)\n WHERE COALESCE(mahh, '') = COALESCE(r_hd.mahh, '')\n AND COALESCE(giavat, 0) = COALESCE(r_hd.giavat, 0)\n AND COALESCE(khocp, '') = COALESCE(r_hd.khole, '')\n AND COALESCE(handung, '') = COALESCE(r_hd.handung, '')\n AND COALESCE(solo, '') = COALESCE(r_hd.solo, '')\n AND COALESCE(thangkt, '') = COALESCE(thangkt_S, '')\n AND COALESCE(namkt, '') = COALESCE(namkt_S, '');\n\n tong_thanhtien := tong_thanhtien + COALESCE(r_hd.thanhtien, 0);\n tong_thanhtienbhyt := tong_thanhtienbhyt + COALESCE(r_hd.thanhtienbhyt, 0);\n tong_thanhtienvat := tong_thanhtienvat + COALESCE(r_hd.tienvat, 0);\n END IF;\n END LOOP;\n\n FOR r_ct IN\n SELECT *\n FROM current.chungtu ct\n WHERE ct.sohd = p_sohd\n AND ct.mabn = p_mabn\n AND ct.makh = p_makh\n AND COALESCE(ct.xoa, 0) = 0\n LOOP\n INSERT INTO current.chungtu(\n sohd, sohdx, iddienbien, mabn, makh, madt, madv,\n manv, ngayuong, ghichu, khole,\n ngayhd, ngaylap, giolap, thanhtien, thangkt, namkt,\n loaixn, noitru, taikhoan, maicd, kqcdoan, maicdp, kqcdoanp, api, thanhtoan, toaxv,\n khochan, tienvat, tenmay, taikham, loaitoa, mathe, thanhtienbhyt, mayhct, tenyhct\n )\n VALUES (\n v_code, r_ct.sohd, r_ct.iddienbien, r_ct.mabn, r_ct.makh, r_ct.madt, r_ct.madv,\n r_ct.manv, r_ct.ngayuong, r_ct.ghichu, r_ct.khole,\n r_ct.ngayhd, r_ct.ngaylap, now(), tong_thanhtien, thangkt_S, namkt_S,\n 'nkt', r_ct.noitru, r_ct.taikhoan, r_ct.maicd, r_ct.kqcdoan, r_ct.maicdp, r_ct.kqcdoanp, r_ct.api, r_ct.thanhtoan, r_ct.toaxv,\n r_ct.khochan, tong_thanhtienvat, r_ct.tenmay, r_ct.taikham, r_ct.loaitoa, r_ct.mathe, tong_thanhtienbhyt, r_ct.mayhct, r_ct.tenyhct\n );\n END LOOP;\n\n RETURN jsonb_build_object(\n 'status', 'success',\n 'message', format('Thêm thành công chứng từ trả %s', v_code)\n );\n\n ELSE -- Thuốc chưa tổng hợp\n\t\tSELECT COUNT(DISTINCT mahh) INTO so_mahh\n FROM current.pshdxn\n WHERE mabn = p_mabn\n AND makh = p_makh\n AND sohd = p_sohd\n AND COALESCE(xoa,0) = 0\n AND COALESCE(dain,0) = 0;\n\n FOR r_hd IN\n SELECT *\n FROM current.pshdxn hd\n WHERE hd.mahh = p_mahh\n AND hd.sohd = p_sohd\n AND hd.mabn = p_mabn\n AND hd.makh = p_makh\n AND COALESCE(hd.xoa, 0) = 0\n AND COALESCE(hd.dain, 0) = 0\n LOOP\n IF COALESCE(r_hd.soluong, 0) > 0 THEN\n UPDATE CURRENT.pshdxn SET xoa = 1, ngayxoa = NOW()\n WHERE mahh = p_mahh\n AND sohd = p_sohd\n AND mabn = p_mabn\n AND makh = p_makh;\n UPDATE current.pstonkho\n SET tamnhap = COALESCE(tamnhap, 0) + COALESCE(r_hd.soluong, 0)\n WHERE COALESCE(mahh, '') = COALESCE(r_hd.mahh, '')\n AND COALESCE(giavat, 0) = COALESCE(r_hd.giavat, 0)\n AND COALESCE(khocp, '') = COALESCE(r_hd.khole, '')\n AND COALESCE(handung, '') = COALESCE(r_hd.handung, '')\n AND COALESCE(solo, '') = COALESCE(r_hd.solo, '')\n AND COALESCE(thangkt, '') = COALESCE(thangkt_S, '')\n AND COALESCE(namkt, '') = COALESCE(namkt_S, '');\n\n tong_thanhtien := tong_thanhtien + COALESCE(r_hd.thanhtien, 0);\n tong_thanhtienbhyt := tong_thanhtienbhyt + COALESCE(r_hd.thanhtienbhyt, 0);\n tong_thanhtienvat := tong_thanhtienvat + COALESCE(r_hd.tienvat, 0);\n END IF;\n END LOOP;\n\n FOR r_ct IN\n SELECT *\n FROM current.chungtu ct\n WHERE ct.sohd = p_sohd\n AND ct.mabn = p_mabn\n AND ct.makh = p_makh\n AND COALESCE(ct.xoa, 0) = 0\n LOOP\n IF so_mahh = 1 THEN --xóa chưng từ\n UPDATE CURRENT.chungtu SET xoa = 1, ngayxoa = NOW()\n WHERE sohd = p_sohd\n AND mabn = p_mabn\n AND makh = p_makh;\n ELSE -- cập nhật chứng từ theo tiền còn lại lại\n \tUPDATE CURRENT.chungtu SET\n \tthanhtien = tong_thanhtien,\n tienvat = tong_thanhtienvat,\n thanhtienbhyt = tong_thanhtienbhyt\n WHERE sohd = p_sohd\n AND mabn = p_mabn\n AND makh = p_makh;\n\n END IF;\n\n END LOOP;\n\n RETURN jsonb_build_object(\n 'status', 'success',\n 'message', format('Cập nhật thành công chứng từ trả %s', p_sohd)\n );\n END IF;\n\nEXCEPTION\n WHEN OTHERS THEN\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', SQLERRM\n );\nEND;\n$$ LANGUAGE plpgsql;\n\n"
|
4503
|
+
codesql: "\n\nCREATE OR REPLACE FUNCTION badt_dhs.cancelTPPrescription(input_json JSONB)\nRETURNS JSONB AS $$\nDECLARE\n-- Lastest commit: author:Nguyễn Triều Vương; date: 2025-09-10 11:20:02\n-- ===============================================================\n-- Thực hiện: NGUYỄN TRIỀU VƯƠNG - 2025-08-11\n-- Hàm: badt_dhs.cancelTPPrescription(input_json JSONB)\n-- Mô tả: Hủy 1 thuốc trong toa\n-- input_json: nội dung file json: thông tin bệnh nhân và toa thuốc\n-- Sử dụng:\n-- SELECT badt_dhs.cancelTPPrescription(input_json JSONB);\n-- Nếu thuốc đã tổng hơp --\x3e tạo toa trả với thông tin thuốc trong json --\x3e theo tháng năm kế toán hiện tại\n-- Nếu thuốc thuốc chưa tổng hợp --\x3e xóa thuốc trong pshdxn --\x3e tăng pstonkho.tamnhap --\x3e xóa chungtu hoặc điều chỉnh theo thuốc còn lại trong pshdxn\n-- ===============================================================\n--Số lượng thuốc ngưng sử dụng\n-- Lấy tháng năm kế toán\n--Kiểm tra số lượng xuất - trả\n--TUTRUC\n-- Lấy chi tiết thuốc trả\n-- Ghi vào pshdxn\n-- Cập nhật tồn kho tủ trưc\n-- Cộng tổng\n-- Ghi chứng từ\n--ENDTUTRUC\n-- 2. Kiểm tra đã in chứng từ hay chưa\n--\n-- 1. Kiểm tra còn đủ số lượng để trả\n-- Lấy chi tiết thuốc trả\n-- Ghi vào pshdxn\n-- Cập nhật tồn kho\n-- Cộng tổng\n-- Ghi chứng từ\n-- Lấy chi tiết thuốc trả\n-- UPDATE\n-- Cập nhật tồn kho\n-- Cộng tổng\n-- Ghi chứng từ\n-- UPDATE\n p_mabn TEXT := input_json->>'PatientCode'; --Mã bệnh nhân\n p_makh TEXT := input_json->>'MedicalRecordNo'; -- Mã bệnh án\n p_makb TEXT := input_json->>'AdmissionCode'; -- Mã khám bệnh\n p_iddienbien TEXT := input_json->>'TPCode'; -- ID diễn biến\n p_sohd TEXT := input_json->>'PresCode'; -- Số hd\n p_mahh TEXT := input_json->>'PresDtlCode'; --Mã hàng hóa\n\n p_sang NUMERIC := input_json->>'CancelMorningQty'; --Số lượng thuốc ngưng sáng\n p_trua NUMERIC := input_json->>'CancelMiddayQty'; --Số lượng thuốc ngưng trưa\n p_chieu NUMERIC := input_json->>'CancelAfternoonQty'; --Số lượng thuốc chiều\n p_toi NUMERIC := input_json->>'CancelEveningQty'; --Số lượng thuốc tối\n\n p_soluong NUMERIC := input_json->>'CancelDispenseQty'; --Tổng số lượng thuốc ngưng\n p_matutruc TEXT := COALESCE(input_json->>'Matutruc',''); --Mã tủ trực\n\n tong_thanhtien NUMERIC := 0;\n tong_thanhtienbhyt NUMERIC := 0;\n tong_thanhtienvat NUMERIC := 0;\n tong NUMERIC := 0;\n so_mahh NUMERIC := 0;\n tong_tien_tra NUMERIC := 0;\n sl_xuat_tutruc NUMERIC := 0;\n\n r_hd RECORD;\n r_ct RECORD;\n\n thangnam TEXT;\n thangkt_S TEXT;\n namkt_S TEXT;\n v_code TEXT;\n \n r_mahh TEXT;\n r_sohd TEXT;\n r_matutuc TEXT;\n \n v_dain_exists BOOLEAN;\n v_matutruc_exists BOOLEAN;\n v_toatutruc_exists BOOLEAN;\n \nBEGIN\n SELECT giatri INTO thangnam FROM current.system WHERE tents = 'thanglv';\n \tthangkt_S := SPLIT_PART(thangnam, '/', 1);\n namkt_S := SPLIT_PART(thangnam, '/', 2);\n\n SELECT COALESCE(sohd,''), COALESCE(mahh,''), COALESCE(tutruc,'') INTO r_sohd, r_mahh, r_matutuc\n FROM current.pshdxn\n WHERE mabn = p_mabn\n AND makh = p_makh\n AND sohd = p_sohd\n AND mahh = p_mahh\n AND COALESCE(xoa, 0) = 0 ;\n\n IF r_mahh = '' THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('PresDtlCode: %s không tồn tại', p_mahh)\n );\n END IF;\n\n IF r_sohd = '' THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Hóa đơn %s (iddienbien=%s) không tồn tại', p_sohd, p_iddienbien)\n );\n END IF;\n\n\n IF r_matutuc != '' THEN -- toa tủ trực\n \tSELECT EXISTS (\n SELECT 1 FROM current.dmdonvi WHERE madv = p_matutruc AND COALESCE(xoa, 0) = 0\n ) INTO v_matutruc_exists;\n\n IF NOT v_matutruc_exists THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Mã tủ trực: %s không tồn tại', p_matutruc)\n );\n END IF;\n\n SELECT EXISTS (\n SELECT 1\n FROM current.pshdxn\n WHERE mabn = p_mabn\n AND makh = p_makh\n AND sohd = p_sohd\n AND mahh = p_mahh\n AND tutruc = p_matutruc\n AND COALESCE(xoa, 0) = 0\n ) INTO v_toatutruc_exists;\n\n IF NOT v_toatutruc_exists THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Toa tủ trực : %s không tồn tại', p_sohd)\n );\n END IF;\n\n v_code := CASE WHEN length(p_sohd) > 14 THEN LEFT(p_sohd, 14) ELSE p_sohd END;\n v_code := v_code || to_char(NOW(), 'HH24MISS');\n\n SELECT Sum(toncuoi) AS toncuoi INTO sl_xuat_tutruc\n FROM\n ( SELECT Sum(soluong) AS toncuoi\n FROM CURRENT.pshdxn\n WHERE mahh = p_mahh\n AND makh = p_makh\n AND COALESCE(tutruc,'') = p_matutruc\n AND sohd = p_sohd\n AND loaixn = 'xbb'\n AND toatutruc IN (1,2)\n AND COALESCE(noitru,0) = 1\n AND COALESCE(xoa,0) = 0\n AND COALESCE(toacon, 0) = 0\n AND COALESCE(kyhieu,'')=''\n UNION\n SELECT Sum(-soluong) AS toncuoi\n FROM CURRENT.pshdxn\n WHERE mahh = p_mahh\n AND makh = p_makh\n AND COALESCE(tutruc,'') = p_matutruc\n AND sohdx = p_sohd\n AND loaixn = 'ttt'\n AND COALESCE(noitru,0) = 1\n AND COALESCE(xoa,0) = 0\n AND COALESCE(toacon, 0) = 0\n AND COALESCE(kyhieu,'')=''\n AND COALESCE(thanhtoan, '') = ''\n ) AS tam;\n \n IF p_soluong > sl_xuat_tutruc THEN\n \tRETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Số lượng trả lớn hơn số lượng xuất: trả %s, xuất %s', p_soluong,sl_xuat_tutruc)\n );\n END IF;\n FOR r_hd IN\n SELECT *, p_soluong as soluong_tra\n FROM current.pshdxn hd\n WHERE hd.mahh = p_mahh\n AND hd.sohd = p_sohd\n AND hd.mabn = p_mabn\n AND hd.makh = p_makh\n AND hd.tutruc = p_matutruc\n AND COALESCE(hd.xoa, 0) = 0\n LOOP\n IF COALESCE(r_hd.soluong, 0) > 0 THEN\n INSERT INTO current.pshdxn(\n sohd, sohdx, iddienbien, mabn, makh,\n mahh, ngayhd, ngaylap, giolap, madv,\n soluong, sang, trua, chieu, toi, lieu_dung, cachuong,\n giaban, giavat, giabhyt, thanhtien, thanhtienbhyt, bhyt,\n handung, solo, visa, thangkt, namkt,\n stt, loaixn, noitru, khole, toaxv,\n madt, khochan, theodon, tienvat, tenmay, loaitoa, thanhtoan, \n tutruc, dain, toatutruc\n )\n VALUES (\n v_code, r_hd.sohd, r_hd.iddienbien, r_hd.mabn, r_hd.makh,\n r_hd.mahh, r_hd.ngayhd, r_hd.ngaylap, now(), r_hd.madv,\n r_hd.soluong_tra, r_hd.sang, r_hd.trua, r_hd.chieu, r_hd.toi, r_hd.lieu_dung, r_hd.cachuong,\n r_hd.giaban, r_hd.giavat, r_hd.giabhyt, r_hd.thanhtien, r_hd.thanhtienbhyt, r_hd.bhyt,\n r_hd.handung, r_hd.solo, r_hd.visa, thangkt_S, namkt_S,\n r_hd.stt, 'ttt', r_hd.noitru, r_hd.khole, 0,\n r_hd.madt, r_hd.khochan, r_hd.theodon, r_hd.tienvat, r_hd.tenmay, r_hd.loaitoa, r_hd.thanhtoan,\n r_hd.tutruc, 1,1\n );\n\n UPDATE current.pstonkho\n SET nhap = COALESCE(nhap, 0) + COALESCE(r_hd.soluong_tra,0),\n toncuoi = COALESCE(toncuoi, 0) + COALESCE(r_hd.soluong_tra,0)\n WHERE COALESCE(mahh, '') = COALESCE(r_hd.mahh, '')\n AND COALESCE(giavat, 0) = COALESCE(r_hd.giavat, 0)\n AND COALESCE(madv, '') = COALESCE(r_hd.tutruc, '')\n AND COALESCE(handung, '') = COALESCE(r_hd.handung, '')\n AND COALESCE(thangkt, '') = COALESCE(thangkt_S, '')\n AND COALESCE(namkt, '') = COALESCE(namkt_S, '');\n\n tong_thanhtien := tong_thanhtien + COALESCE(r_hd.thanhtien, 0);\n tong_thanhtienbhyt := tong_thanhtienbhyt + COALESCE(r_hd.thanhtienbhyt, 0);\n tong_thanhtienvat := tong_thanhtienvat + COALESCE(r_hd.tienvat, 0);\n tong_tien_tra := tong_tien_tra + COALESCE(r_hd.giavat, 0) * COALESCE(r_hd.soluong_tra, 0);\n END IF;\n END LOOP;\n\n FOR r_ct IN\n SELECT *\n FROM current.chungtu ct\n WHERE ct.sohd = p_sohd\n AND ct.mabn = p_mabn\n AND ct.makh = p_makh\n AND ct.tutruc = p_matutruc\n AND COALESCE(ct.xoa, 0) = 0\n LOOP\n INSERT INTO current.chungtu(\n sohd, sohdx, iddienbien, mabn, makh, madt, madv,\n manv, ngayuong, ghichu, khole,\n ngayhd, ngaylap, giolap, thanhtien, thangkt, namkt,\n loaixn, noitru, taikhoan, maicd, kqcdoan, maicdp, kqcdoanp, api, thanhtoan, toaxv,\n khochan, tienvat, tenmay, taikham, loaitoa, mathe, thanhtienbhyt, mayhct, tenyhct,\n tutruc, dain, toatutruc\n )\n VALUES (\n v_code, r_ct.sohd, r_ct.iddienbien, r_ct.mabn, r_ct.makh, r_ct.madt, r_ct.madv,\n r_ct.manv, r_ct.ngayuong, r_ct.ghichu, r_ct.khole,\n r_ct.ngayhd, r_ct.ngaylap, now(), tong_thanhtien, thangkt_S, namkt_S,\n 'ttt', r_ct.noitru, r_ct.taikhoan, r_ct.maicd, r_ct.kqcdoan, r_ct.maicdp, r_ct.kqcdoanp, r_ct.api, r_ct.thanhtoan, r_ct.toaxv,\n r_ct.khochan, tong_thanhtienvat, r_ct.tenmay, r_ct.taikham, r_ct.loaitoa, r_ct.mathe, tong_thanhtienbhyt, r_ct.mayhct, r_ct.tenyhct,\n r_ct.tutruc, 1,1\n );\n END LOOP;\n\n RETURN jsonb_build_object(\n 'status', 'success',\n 'message', format('Thêm thành công chứng từ trả tủ trực %s, chứng từ mới: %s',p_matutruc, v_code)\n );\n ELSE --toa thường\n SELECT EXISTS (\n SELECT 1\n FROM current.pshdxn\n WHERE mabn = p_mabn\n AND makh = p_makh\n AND sohd = p_sohd\n AND mahh = p_mahh\n AND COALESCE(xoa, 0) = 0\n AND COALESCE(dain, 0) = 1\n ) INTO v_dain_exists;\n\n \tIF v_dain_exists THEN\n\n v_code := CASE WHEN length(p_sohd) > 14 THEN LEFT(p_sohd, 14) ELSE p_sohd END;\n v_code := v_code || to_char(NOW(), 'HH24MISS');\n\n SELECT SUM(CASE WHEN loaixn = 'xbb' AND COALESCE(dain,0) = 1 THEN soluong ELSE 0 END)\n - SUM(CASE WHEN loaixn = 'nkt' THEN soluong ELSE 0 END)\n INTO tong\n FROM current.pshdxn\n WHERE mabn = p_mabn\n AND makh = p_makh\n AND mahh = p_mahh\n AND COALESCE(xoa, 0) = 0;\n\n IF tong <= 0 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Thuốc/vật tư %s đã trả đủ số lượng, không thể trả thêm', p_mahh)\n );\n END IF;\n\n FOR r_hd IN\n SELECT *, p_soluong as soluong_tra\n FROM current.pshdxn hd\n WHERE hd.mahh = p_mahh\n AND hd.sohd = p_sohd\n AND hd.mabn = p_mabn\n AND hd.makh = p_makh\n AND COALESCE(hd.xoa, 0) = 0\n LOOP\n IF COALESCE(r_hd.soluong, 0) > 0 THEN\n INSERT INTO current.pshdxn(\n sohd, sohdx, iddienbien, mabn, makh,\n mahh, ngayhd, ngaylap, giolap, madv,\n soluong, sang, trua, chieu, toi, lieu_dung, cachuong,\n giaban, giavat, giabhyt, thanhtien, thanhtienbhyt, bhyt,\n handung, solo, visa, thangkt, namkt,\n stt, loaixn, noitru, khole, toaxv,\n madt, khochan, theodon, tienvat, tenmay, loaitoa, thanhtoan\n )\n VALUES (\n v_code, r_hd.sohd, r_hd.iddienbien, r_hd.mabn, r_hd.makh,\n r_hd.mahh, r_hd.ngayhd, r_hd.ngaylap, now(), r_hd.madv,\n r_hd.soluong_tra, r_hd.sang, r_hd.trua, r_hd.chieu, r_hd.toi, r_hd.lieu_dung, r_hd.cachuong,\n r_hd.giaban, r_hd.giavat, r_hd.giabhyt, r_hd.thanhtien, r_hd.thanhtienbhyt, r_hd.bhyt,\n r_hd.handung, r_hd.solo, r_hd.visa, thangkt_S, namkt_S,\n r_hd.stt, 'nkt', r_hd.noitru, r_hd.khole, 0,\n r_hd.madt, r_hd.khochan, r_hd.theodon, r_hd.tienvat, r_hd.tenmay, r_hd.loaitoa, r_hd.thanhtoan\n );\n\n UPDATE current.pstonkho\n SET tamnhap = COALESCE(tamnhap, 0) + COALESCE(r_hd.soluong_tra, 0)\n WHERE COALESCE(mahh, '') = COALESCE(r_hd.mahh, '')\n AND COALESCE(giavat, 0) = COALESCE(r_hd.giavat, 0)\n AND COALESCE(khocp, '') = COALESCE(r_hd.khole, '')\n AND COALESCE(handung, '') = COALESCE(r_hd.handung, '')\n AND COALESCE(thangkt, '') = COALESCE(thangkt_S, '')\n AND COALESCE(namkt, '') = COALESCE(namkt_S, '');\n\n tong_thanhtien := tong_thanhtien + COALESCE(r_hd.thanhtien, 0);\n tong_thanhtienbhyt := tong_thanhtienbhyt + COALESCE(r_hd.thanhtienbhyt, 0);\n tong_thanhtienvat := tong_thanhtienvat + COALESCE(r_hd.tienvat, 0);\n tong_tien_tra := tong_tien_tra + COALESCE(r_hd.giavat, 0) * COALESCE(r_hd.soluong_tra, 0);\n END IF;\n END LOOP;\n\n FOR r_ct IN\n SELECT *\n FROM current.chungtu ct\n WHERE ct.sohd = p_sohd\n AND ct.mabn = p_mabn\n AND ct.makh = p_makh\n AND COALESCE(ct.xoa, 0) = 0\n LOOP\n INSERT INTO current.chungtu(\n sohd, sohdx, iddienbien, mabn, makh, madt, madv,\n manv, ngayuong, ghichu, khole,\n ngayhd, ngaylap, giolap, thanhtien, thangkt, namkt,\n loaixn, noitru, taikhoan, maicd, kqcdoan, maicdp, kqcdoanp, api, thanhtoan, toaxv,\n khochan, tienvat, tenmay, taikham, loaitoa, mathe, thanhtienbhyt, mayhct, tenyhct\n )\n VALUES (\n v_code, r_ct.sohd, r_ct.iddienbien, r_ct.mabn, r_ct.makh, r_ct.madt, r_ct.madv,\n r_ct.manv, r_ct.ngayuong, r_ct.ghichu, r_ct.khole,\n r_ct.ngayhd, r_ct.ngaylap, now(), tong_thanhtien, thangkt_S, namkt_S,\n 'nkt', r_ct.noitru, r_ct.taikhoan, r_ct.maicd, r_ct.kqcdoan, r_ct.maicdp, r_ct.kqcdoanp, r_ct.api, r_ct.thanhtoan, r_ct.toaxv,\n r_ct.khochan, tong_thanhtienvat, r_ct.tenmay, r_ct.taikham, r_ct.loaitoa, r_ct.mathe, tong_thanhtienbhyt, r_ct.mayhct, r_ct.tenyhct\n );\n END LOOP;\n\n RETURN jsonb_build_object(\n 'status', 'success',\n 'message', format('Thêm thành công chứng từ trả %s', v_code)\n );\n\n ELSE -- Thuốc chưa tổng hợp ---cập nhật [08/09/2025]\n\t\tSELECT COUNT(DISTINCT mahh) INTO so_mahh\n FROM current.pshdxn\n WHERE mabn = p_mabn\n AND makh = p_makh\n AND sohd = p_sohd\n AND COALESCE(xoa,0) = 0\n AND COALESCE(dain,0) = 0;\n\n FOR r_hd IN\n SELECT *, p_soluong as soluong_tra\n FROM current.pshdxn hd\n WHERE hd.mahh = p_mahh\n AND hd.sohd = p_sohd\n AND hd.mabn = p_mabn\n AND hd.makh = p_makh\n AND hd.soluong >= p_soluong --[VUONG] them theo yeu cầu\n AND COALESCE(hd.xoa, 0) = 0\n AND COALESCE(hd.dain, 0) = 0\n LOOP\n RAISE NOTICE 'soluong_tra: %',\n p_soluong;\n IF COALESCE(r_hd.soluong_tra, 0) > 0 THEN --soluong --\x3e soluong_tra\n IF COALESCE(r_hd.soluong_tra, 0) = COALESCE(r_hd.soluong, 0) THEN\n RAISE NOTICE 'soluong=nhau --\x3exóa: %',\n r_hd.soluong;\n UPDATE CURRENT.pshdxn SET xoa = 1, ngayxoa = NOW()\n WHERE mahh = p_mahh\n AND sohd = p_sohd\n AND mabn = p_mabn\n AND makh = p_makh\n AND soluong = r_hd.soluong_tra;\n ELSE --So luong tra < soluong\n RAISE NOTICE 'soluong > hơn --\x3egiảm: %', r_hd.soluong;\n UPDATE CURRENT.pshdxn SET\n \tsang = sang - p_sang,\n trua = trua - p_trua,\n chieu = chieu - p_chieu,\n toi = toi - p_toi,\n soluong = soluong - r_hd.soluong_tra,\n thanhtien = (r_hd.soluong - r_hd.soluong_tra) * r_hd.giavat,\n thanhtienbhyt = (r_hd.soluong - r_hd.soluong_tra) * r_hd.giavat\n WHERE mahh = p_mahh\n AND sohd = p_sohd\n AND mabn = p_mabn\n AND makh = p_makh\n AND soluong > r_hd.soluong_tra;\n END IF;\n\n RAISE NOTICE 'Cập nhật tồn kho, chưa tổng hợp: %', r_hd.soluong_tra;\n UPDATE current.pstonkho\n SET tamxuat = COALESCE(tamxuat, 0) - COALESCE(r_hd.soluong_tra, 0)\n WHERE COALESCE(mahh, '') = COALESCE(r_hd.mahh, '')\n AND COALESCE(giavat, 0) = COALESCE(r_hd.giavat, 0)\n AND COALESCE(khocp, '') = COALESCE(r_hd.khole, '')\n AND COALESCE(handung, '') = COALESCE(r_hd.handung, '')\n AND COALESCE(thangkt, '') = COALESCE(thangkt_S, '')\n AND COALESCE(namkt, '') = COALESCE(namkt_S, '');\n\n tong_thanhtien := tong_thanhtien + COALESCE(r_hd.thanhtien, 0);\n tong_thanhtienbhyt := tong_thanhtienbhyt + COALESCE(r_hd.thanhtienbhyt, 0);\n tong_thanhtienvat := tong_thanhtienvat + COALESCE(r_hd.tienvat, 0);\n tong_tien_tra := tong_tien_tra + COALESCE(r_hd.giavat, 0) * COALESCE(r_hd.soluong_tra, 0);\n\n RAISE NOTICE 'tong_thanhtien: %', tong_thanhtien;\n RAISE NOTICE 'tong_thanhtienbhyt: %', tong_thanhtienbhyt;\n RAISE NOTICE 'tong_thanhtienvat: %', tong_thanhtienvat;\n RAISE NOTICE 'tong_tien_tra: %', tong_tien_tra;\n END IF;\n END LOOP;\n\n FOR r_ct IN\n SELECT *\n FROM current.chungtu ct\n WHERE ct.sohd = p_sohd\n AND ct.mabn = p_mabn\n AND ct.makh = p_makh\n AND COALESCE(ct.xoa, 0) = 0\n LOOP\n IF so_mahh = 1 THEN --xóa chưng từ\n RAISE NOTICE 'Tổng tiền chứng từ %', r_ct.thanhtien;\n IF r_ct.thanhtien = tong_tien_tra THEN\n RAISE NOTICE 'Xoa chứng từ %', r_ct.sohd;\n UPDATE CURRENT.chungtu SET xoa = 1, ngayxoa = NOW()\n WHERE sohd = p_sohd\n AND mabn = p_mabn\n AND makh = p_makh;\n ELSE\n RAISE NOTICE 'Cập nhật chứng từ %', r_ct.sohd;\n \tUPDATE CURRENT.chungtu SET\n thanhtien = thanhtien - tong_tien_tra,\n tienvat = tienvat - tong_tien_tra,\n thanhtienbhyt = thanhtienbhyt - tong_tien_tra\n WHERE sohd = p_sohd\n AND mabn = p_mabn\n AND makh = p_makh;\n END IF;\n ELSE -- cập nhật chứng từ theo tiền còn lại lại\n RAISE NOTICE 'Cập nhật chứng từ, còn lại %', r_ct.sohd;\n \tUPDATE CURRENT.chungtu SET\n \tthanhtien = thanhtien - tong_tien_tra,\n tienvat = tienvat - tong_tien_tra,\n thanhtienbhyt = thanhtienbhyt - tong_tien_tra\n WHERE sohd = p_sohd\n AND mabn = p_mabn\n AND makh = p_makh;\n\n END IF;\n\n END LOOP;\n\n RETURN jsonb_build_object(\n 'status', 'success',\n 'message', format('Cập nhật thành công chứng từ trả %s', p_sohd)\n );\n END IF;\n END IF; \n\nEXCEPTION\n WHEN OTHERS THEN\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', SQLERRM\n );\nEND;\n$$ LANGUAGE plpgsql;\n\n"
|
4504
4504
|
},
|
4505
4505
|
"badt_dhs.getCUTPParaClinRequest": {
|
4506
4506
|
name: "badt_dhs.getCUTPParaClinRequest",
|
@@ -4528,9 +4528,9 @@
|
|
4528
4528
|
},
|
4529
4529
|
"badt_dhs.getInventoryMedicalRecordNo": {
|
4530
4530
|
name: "badt_dhs.getInventoryMedicalRecordNo",
|
4531
|
-
para: ["mahh", "mabn", "maba", "IsTuTruc", "IsNhaThuoc"],
|
4531
|
+
para: ["mahh", "mabn", "maba", "IsTuTruc", "IsNhaThuoc", "IsDongYThanhPham", "IsDongYThuocThang"],
|
4532
4532
|
returns: "text",
|
4533
|
-
codesql: "\n\n\n\nCREATE OR REPLACE FUNCTION badt_dhs.getInventoryMedicalRecordNo(mahh TEXT,mabn TEXT, maba TEXT, IsTuTruc BOOLEAN, IsNhaThuoc BOOLEAN)\nRETURNS text\nLANGUAGE plpgsql\nAS $$\nDECLARE\n-- Lastest commit: author:onghaup; date: 2025-08
|
4533
|
+
codesql: "\n\n\n\nCREATE OR REPLACE FUNCTION badt_dhs.getInventoryMedicalRecordNo(mahh TEXT,mabn TEXT, maba TEXT, IsTuTruc BOOLEAN, IsNhaThuoc BOOLEAN, IsDongYThanhPham BOOLEAN, IsDongYThuocThang BOOLEAN)\nRETURNS text\nLANGUAGE plpgsql\nAS $$\nDECLARE\n-- Lastest commit: author:onghaup; date: 2025-09-08 14:34:33\n-- ===============================================================\n-- Thực hiện: NGUYỄN TRIỀU VƯƠNG - 2025-06-17\n-- Hàm: badt_dhs.getInventoryMedicalRecordNo(mahh TEXT DEFAULT NULL, mabn TEXT, maba TEXT)\n-- Mô tả:\n-- - Nếu mahh IS NULL hoặc rỗng ('') => lấy toàn bộ dữ liệu, theo khocp, thangt, namkt: lấy từ bnnoitru, dmdoituongkhocp và system\n--\n-- Sử dụng:\n-- SELECT badt_dhs.getInventoryMedicalRecordNo('','2023031755','017517'); -- Lấy toàn bộ tồn kho\n-- SELECT badt_dhs.getInventoryMedicalRecordNo('3B08','2023031755','017517'); -- Lấy tồn kho, theo mahh='3B08'\n-- ===============================================================\n--Thêm chức năng lấy kho Đông y Thuốc thang, tạo sẵn, chưa xử lý\n-- Lấy madt\n--NTVUONG 2025-08-25 : Kiểm tra thông tin bệnh\n-- Xử lý trường hợp p_isDongYThuocThang = true trả về dữ liệu trống\n-- Lấy khocp theo đối tượng\n-- ÔNG TRIỆU HẬU - 2025-09-08 : Lấy khocp cho Đông y Thành phẩm\n-- Logic gốc cho các trường hợp khác\n-- -- Lấy khocp theo đối tượng\n-- SELECT khocp INTO khocp_dt FROM current.dmdoituongkhocp WHERE madt= madt_nt and (noitru = 1 or noitru = 2) ORDER BY noitru LIMIT 1; \n-- Lấy list mã tủ trực thuộc khoa\n-- Lấy tháng/năm kế toán\n--[ÔNG TRIỆU HẬU - 2025-08-04]: Chỉnh COALESCE để tránh kết quả null\n--[ÔNG TRIỆU HẬU 2025-07-14]: Chỉ loại trừ 04, VTYT \n result text;\n p_mahh ALIAS FOR mahh;\n p_mabn ALIAS FOR mabn;\n p_maba ALIAS FOR maba;\n p_istutruc ALIAS FOR IsTuTruc;\t\t --NQHOA 2025-07-25 : bổ sung nhận biết lấy thuốc từ tủ trực => ưu tiên nếu p_istutruc = true\n p_isnhathuoc ALIAS FOR IsNhaThuoc;\t --NQHOA 2025-07-25 : bổ sung nhận biết lấy thuốc từ nhà thuốc => IsTuTruc = false và IsNhaThuoc = true\n p_isDongYThanhPham ALIAS FOR IsDongYThanhPham;\t --ÔNG TRIỆU HẬU - 2025-09-08 : Thêm chức năng lấy kho Đông y Thành phẩm\n p_isDongYThuocThang ALIAS FOR IsDongYThuocThang;\t--ÔNG TRIỆU HẬU - 2025-09-08 : \n\n \t\t\t\t\t\t\t\t\n madt_nt TEXT;\n madv_nt TEXT;\n maicd_nt TEXT;\n kqcdoan_nt TEXT;\n maicdp_nt TEXT;\n kqcdoanp_nt TEXT;\n\n thangnam TEXT;\n thangkt_S TEXT; \t-- thangkt, lấy cho đủ số liệu, toa thuốc mới lên module\n namkt_S TEXT; \t--namkt, lấy cho đủ số liệu, toa thuốc mới lên module\n\n khocp_dt TEXT; \t--khocp theo đối tượng\n kho_tutruc TEXT[]; --kho tủ trực\nBEGIN\n SELECT madt, madv, maicd, kqcdoan, maicdp, kqcdoanp INTO madt_nt, madv_nt, maicd_nt, kqcdoan_nt, maicdp_nt, kqcdoanp_nt -- lấy cho đủ số liệu\n FROM current.bnnoitru nt\n WHERE nt.mabn = p_mabn AND nt.maba = p_maba\n\t LIMIT 1 ;\n\n IF NOT FOUND THEN\n RETURN json_build_object(\n 'status', 'error',\n 'message', format('Không tìm thấy bệnh nhân với PatientCode = %s, MedicalRecordNo = %s', p_mabn, p_maba)\n )::text;\n END IF;\n\n IF p_isDongYThuocThang = TRUE THEN\n RETURN '[]'::text;\n END IF;\n \n\n IF p_isDongYThanhPham = TRUE THEN\n SELECT khocp INTO khocp_dt FROM current.dmkhocp WHERE loai = 2 AND dongy = 1 LIMIT 1;\n ELSE\n SELECT khocp INTO khocp_dt FROM current.dmdoituongkhocp WHERE madt= madt_nt and (noitru = 1 or noitru = 2) ORDER BY noitru LIMIT 1;\n END IF;\n \n SELECT array_agg(madv)::TEXT[] INTO kho_tutruc\t\t\t\t\t\t\t\t--NQHOA 2025-07-25 : đổ kết quả tủ trực thuộc bnnoitru.madv để tìm kiếm tồn kho nếu lấy thuốc từ tủ trực (IsTuTruc = true)\n\t\tFROM current.dmdonvi \n\t\tWHERE loaidv = 3 AND COALESCE(vietngan, '') = madv_nt;\n SELECT giatri INTO thangnam FROM current.system WHERE tents = 'thanglv';\n thangkt_S := SPLIT_PART(thangnam, '/', 1);\n namkt_S := SPLIT_PART(thangnam, '/', 2);\n\n \n\n SELECT json_agg(row_data)::text\n INTO result\n FROM (\n SELECT tk.mahh, --as InvCode, --mahh\n th.tenhh,-- as InvName, --tenhh\n th.tenhc,-- as ActiveIngredient, --Hoạc chất\n th.hamluong,-- as DrugContent, -- Hàm lượng\n th.dvt,-- as UOMCode, --dvt,\n tk.giavat,-- as PriceVAT, --giá vat,\n tk.giaxuat,-- as Price, -- giá xuất,\n tk.giabhyt,-- as PriceHI, --giá bh ,\n tk.handung,-- as expDate, --Hạn dùng\n tk.visa,\n tk.solo,-- as lotNumber, -- Số lô\n tk.toncuoi - COALESCE(tk.tamxuat,0) as toncuoi,-- as Stock, --tồn kho (tồn cuối) --NQHOA 2025-07-25 : điều chỉnh trả về tồn kho đã trừ tạm xuất\n COALESCE(k.bhyt,0) AS bhyt,-- as IsHI, --thanh bh: 0 không thanh, 1: thanh\n tk.khocp,-- as StoreHouseCode, --mã khoa (khocp)\n COALESCE(tk.madv,'') AS madv,-- as CabinetCode, --Mã tủ trực (madv)\n tk.thangkt,-- as sMonth, --Tháng kết toán\n tk.namkt-- as sYear --Năm kế toán\n FROM current.pstonkho tk\n INNER JOIN current.dmthuoc th ON tk.mahh = th.mahh\n INNER JOIN current.dmkho k ON tk.mahh = k.mahh\n INNER JOIN current.dmloaikhoql lk ON th.kho = lk.kho AND lk.kho <> '04' --[ÔNG TRIỆU HẬU 2025-07-14: Thêm các kho khác: '05','06','09' ] \n WHERE (p_mahh IS NULL OR p_mahh = '' OR tk.mahh = p_mahh) \n AND tk.thangkt = thangkt_S\n AND tk.namkt = namkt_S\n AND COALESCE(tk.uutien,'') != '2'\n AND (COALESCE(tk.toncuoi,0) - COALESCE(tk.tamxuat,0)) > 0\n AND (\n \t p_istutruc = FALSE AND p_isnhathuoc = FALSE AND COALESCE(tk.khocp, '') = COALESCE(khocp_dt, '')\n OR p_istutruc = TRUE AND (COALESCE(tk.khocp, '') = '') AND (COALESCE(tk.madv, '') = ANY(kho_tutruc))\t\t--NQHOA 2025-07-25 : Bổ sung kiểm tra nếu lấy thuốc từ tủ trực sẽ where theo madv\n OR p_istutruc = FALSE AND p_isnhathuoc = TRUE AND (COALESCE(tk.khocp, '') = '13')\n \t )\t\n \t \n ORDER BY tk.mahh, tk.handung, tk.uutien\n ) AS row_data;\n RETURN result;\nEND;\n$$;\n\n\n\n\n"
|
4534
4534
|
},
|
4535
4535
|
"badt_dhs.getSyncMedicalServiceItem": {
|
4536
4536
|
name: "badt_dhs.getSyncMedicalServiceItem",
|
@@ -4548,13 +4548,25 @@
|
|
4548
4548
|
name: "badt_dhs.InsertCUTPParaClinRequest",
|
4549
4549
|
para: ["p_json"],
|
4550
4550
|
returns: "JSONB",
|
4551
|
-
codesql: "\n\n\n\n\n\n\nCREATE OR REPLACE FUNCTION badt_dhs.InsertCUTPParaClinRequest(p_json JSONB)\nRETURNS JSONB AS\n$$\nDECLARE\n-- Lastest commit: author:nqhoa1005; date: 2025-08-07 11:14:58\n-- Thực hiện: NGUYỄN QUỐC HOÀ - 2025-06-11\n-- Hàm: badt_dhs.InsertCUTPParaClinRequest(p_json JSONB)\n-- Mô tả: nhận json DHS insert vào chidinhcls\n-- ===============================================================\n--Các trường đang bỏ trống :\n--taikhoan (chưa có field từ json truyền vào)\n--tenmay (chưa có field từ jsontruyền vào)\n--toacon (chưa có field từ jsontruyền vào)\n--macon (chưa có field từ jsontruyền vào)\n-- ===============================================================\n--Lấy thông tin bệnh nhân\n--Lấy thông tin điều trị\n--Group các CLS cha gôm tổng số lượng\n--Thêm các CLS con, dùng cùng số lượng với CLS cha\n--Kiểm tra CLS đã xoá từ EMR\n--Kiểm tra CLS thay đổi thông tin\n--Cập nhật lại các CLS đã xoá từ EMR\n--Tạo bảng đầy đủ dữ liệu đã group có cả cha và con\n--UPDATE các dòng đã có\n--INSERT các dòng mới\n v_tpcode TEXT := TRIM(p_json->>'TPCode');\n v_admissioncode TEXT := TRIM(p_json->>'AdmissionCode');\n v_medicalrecordno TEXT := TRIM(p_json->>'MedicalRecordNo');\n v_paraclinreqcode TEXT := TRIM(p_json->>'ParaClinReqCode');\n v_patientcode TEXT := TRIM(p_json->>'PatientCode');\n v_employeecode TEXT := TRIM(p_json->>'EmployeeCode');\n\n r_bnnoitru RECORD;\n r_qtdieutri RECORD;\n sys_laygiadan TEXT;\nBEGIN\n SELECT nt.madt, nt.madv, nt.mathe, dt.bhyt, nt.tinhtrangvv, \n \t\tCOALESCE(bn.gioitinh,0)::NUMERIC AS gioitinh\n INTO r_bnnoitru\n FROM current.bnnoitru nt\n LEFT JOIN current.dmdoituong dt ON dt.madt = nt.madt\n LEFT JOIN current.dmbenhnhan bn ON bn.mabn = nt.mabn\n WHERE nt.ravien = 0\n AND TRIM(nt.mabn) = v_patientcode\n AND TRIM(nt.makb) = v_admissioncode\n AND TRIM(nt.maba) = v_medicalrecordno;\n\n IF NOT FOUND THEN\n RETURN jsonb_build_object('status', 'error', 'message', 'Không tìm thấy thông tin bệnh nhân');\n END IF;\n\n SELECT qt.iddienbien, qt.madv, qt.maphong, qt.maicd, qt.kqcdoan, qt.maicdp, qt.kqcdoanp,\n qt.mayhct, qt.tenyhct, qt.thangkt, qt.namkt, qt.sogiuong, qt.ngaygio, qt.manv, nv.taikhoan\n INTO r_qtdieutri\n FROM current.qtdieutri qt\n LEFT JOIN current.dmnhanvien nv ON nv.manv = qt.manv\n WHERE qt.iddienbien = v_tpcode;\n\n IF NOT FOUND THEN\n RETURN jsonb_build_object('status', 'error', 'message', 'Không tìm thấy thông tin điều trị');\n END IF;\n\n SELECT COALESCE(giatri, '0') INTO sys_laygiadan\n FROM current.system WHERE tents = 'laygiadan';\n \n CREATE TEMP TABLE ClsData ON COMMIT DROP AS\n SELECT *\n FROM current.chidinhcls cls\n WHERE cls.idchidinh = v_paraclinreqcode\n AND cls.xoa = 0\n AND cls.mabn = v_patientcode\n AND cls.makb = v_admissioncode\n AND cls.maba = v_medicalrecordno\n AND cls.thangkt = r_qtdieutri.thangkt\n AND cls.namkt = r_qtdieutri.namkt\n AND (\n cls.dathu != 0 \n OR COALESCE(cls.soctvpcl, '') != '' \n OR COALESCE(cls.soctvpbltong, '') != ''\n OR cls.dath != 0 \n OR cls.dalappttt != 0\n );\n \n\n CREATE TEMP TABLE tmp_grouped_requests ON COMMIT DROP AS\n SELECT\n item->>'MedSerCode' AS medser_code,\n SUM(COALESCE((item->>'ParaClinQty')::NUMERIC, 1)) AS para_qty,\n COALESCE((item->>'IsHI')::BOOLEAN::INT, NULL) AS bhyt,\n COALESCE((item->>'Urgent')::INT, NULL) AS tinhtrang,\t--Bổ sung cột tình trạng : 0 : Cấp cứu-Khẩn cấp; 1 : bình thường\n COALESCE((item->>'thuphi')::NUMERIC, 0) AS thuphi,\n COALESCE((item->>'dichvu')::NUMERIC, 0) AS dichvu,\n COALESCE((item->>'miengiam')::NUMERIC, 0) AS miengiam,\n COALESCE((item->>'ptmiengiam')::NUMERIC, 0) AS ptmiengiam_input,\n COALESCE((item->>'thanhtienmiengiam')::NUMERIC, 0) AS thanhtienmg,\n (CASE WHEN ((item->>'FromDate')::TIMESTAMP)::TIME = '00:00:00'::TIME \n THEN ((item->>'FromDate')::DATE + LOCALTIMESTAMP::TIME)\n ELSE (item->>'FromDate')::TIMESTAMP END) AS ngaykcb,\n FALSE AS is_child\n FROM jsonb_array_elements(p_json->'ParaClinRequests') AS item\n GROUP BY item->>'MedSerCode', item->>'thuphi', item->>'dichvu', item->>'miengiam', item->>'ptmiengiam', item->>'thanhtienmiengiam',item->>'FromDate',item->>'IsHI',item->>'Urgent';\n\n INSERT INTO tmp_grouped_requests (\n medser_code, para_qty, bhyt, tinhtrang, thuphi, dichvu, miengiam, ptmiengiam_input, thanhtienmg, ngaykcb, is_child\n )\n SELECT\n clscon.macls,\n grp.para_qty, COALESCE(grp.bhyt,0) AS bhyt, grp.tinhtrang, CASE WHEN COALESCE(grp.bhyt,0) = 1 THEN 0 ELSE 1 END AS thuphi,\n 0, 0, 0, 0, grp.ngaykcb,\n TRUE\n FROM tmp_grouped_requests grp\n JOIN current.dmcls clscon ON clscon.macha = grp.medser_code\n WHERE COALESCE(clscon.sudung,0) = 1 \n \tAND (COALESCE(clscon.gioitinh,0) = r_bnnoitru.gioitinh OR COALESCE(clscon.gioitinh,0) = 2)\n \tAND clscon.macls NOT IN (\n SELECT medser_code FROM tmp_grouped_requests\n );\n IF EXISTS (\n SELECT 1\n FROM ClsData c\n WHERE NOT EXISTS (\n SELECT 1\n FROM tmp_grouped_requests t\n WHERE t.medser_code = c.macls\n )\n ) THEN\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', 'Cận lâm sàng đã thực hiện hoặc đã thu tiền, không thể xoá',\n 'MedSerCode',\n COALESCE((\n SELECT jsonb_agg(c.macls)\n FROM ClsData c\n WHERE NOT EXISTS (\n SELECT 1\n FROM tmp_grouped_requests t\n WHERE TRIM(t.medser_code) = TRIM(c.macls)\n )\n ), '[]'::jsonb)\n );\n END IF;\n \n IF EXISTS (\n SELECT 1\n FROM ClsData c\n JOIN tmp_grouped_requests t ON t.medser_code = c.macls\n WHERE (\n COALESCE(t.para_qty, 0) != COALESCE(c.soluong, 0)\n OR COALESCE(t.bhyt, 0) != COALESCE(c.bhyt, 0)\n OR COALESCE(t.thuphi, 0) != COALESCE(c.thuphi, 0)\n OR COALESCE(t.dichvu, 0) != COALESCE(c.dichvu, 0)\n OR COALESCE(t.miengiam, 0) != COALESCE(c.miengiam, 0)\n OR COALESCE(t.ptmiengiam_input, 0) != COALESCE(c.ptmiengiam, 0) \n )\n AND (\n c.dathu != 0 OR \n COALESCE(c.soctvpcl, '') != '' OR \n c.dath != 0 OR \n c.dalappttt != 0\n )\n ) THEN\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', 'Cận lâm sàng đã thực hiện hoặc đã thu tiền, không thể cập nhật',\n 'MedSerCode', COALESCE((\n SELECT jsonb_agg(c.macls)\n FROM ClsData c\n JOIN tmp_grouped_requests t ON t.medser_code = c.macls\n WHERE (\n COALESCE(t.para_qty, 0) != COALESCE(c.soluong, 0)\n OR COALESCE(t.bhyt, 0) != COALESCE(c.bhyt, 0)\n OR COALESCE(t.thuphi, 0) != COALESCE(c.thuphi, 0)\n OR COALESCE(t.dichvu, 0) != COALESCE(c.dichvu, 0)\n OR COALESCE(t.miengiam, 0) != COALESCE(c.miengiam, 0)\n OR COALESCE(t.ptmiengiam_input, 0) != COALESCE(c.ptmiengiam, 0)\n )\n AND (\n c.dathu != 0 OR \n COALESCE(c.soctvpcl, '') != '' OR \n c.dath != 0 OR \n c.dalappttt != 0\n )\n ),'[]'::jsonb)\n );\n END IF;\n \n UPDATE current.chidinhcls cls\n SET xoa = 1,\n ngayxoa = r_qtdieutri.ngaygio\n WHERE cls.idchidinh = v_paraclinreqcode\n AND cls.mabn = v_patientcode\n AND cls.makb = v_admissioncode\n AND cls.maba = v_medicalrecordno\n AND cls.xoa = 0\n AND cls.thangkt = r_qtdieutri.thangkt\n AND cls.namkt = r_qtdieutri.namkt\n AND NOT EXISTS (\n SELECT 1\n FROM tmp_grouped_requests req\n WHERE TRIM(req.medser_code) = TRIM(cls.macls)\n );\n \n CREATE TEMP TABLE tmp_data_ready ON COMMIT DROP AS\n\tSELECT\n req.medser_code,\n req.para_qty,\n COALESCE(req.bhyt,0) AS bhyt,\n req.tinhtrang AS tinhtrang,\n CASE WHEN COALESCE(req.bhyt,0) = 1 THEN 0 ELSE 1 END AS thuphi,\n req.dichvu,\n req.miengiam,\n req.ptmiengiam_input,\n req.thanhtienmg, \n req.ngaykcb,\n req.is_child,\n CASE WHEN r_bnnoitru.bhyt IN ('1','2') \n \t\tTHEN\n CASE\n WHEN req.thuphi = 1 THEN cat.giadan07\n WHEN req.dichvu = 1 THEN cat.giadv07\n ELSE CASE WHEN sys_laygiadan = '1' THEN cat.giadan07 ELSE cat.giabh07 END\n END\n ELSE cat.giabh07\n END AS dongia,\n cat.giabh07 AS giabh,\n CASE\n WHEN req.dichvu = 1 AND cat.giadv07 > cat.giabh07 THEN cat.giadv07 - cat.giabh07\n WHEN sys_laygiadan = '1' AND cat.giadan07 > cat.giabh07 THEN cat.giadan07 - cat.giabh07\n ELSE 0\n END AS chenhlech,\n CASE\n WHEN req.miengiam = 1 AND req.thanhtienmg > 0 THEN\n ROUND(req.thanhtienmg / NULLIF(\n CASE\n WHEN r_bnnoitru.bhyt IN ('1','2') THEN\n CASE\n WHEN req.thuphi = 1 THEN cat.giadan07\n WHEN req.dichvu = 1 THEN cat.giadv07\n ELSE CASE WHEN sys_laygiadan = '1' THEN cat.giadan07 ELSE cat.giabh07 END\n END\n ELSE cat.giabh07\n END, 0\n ) * 100, 2)\n ELSE 0\n END AS ptmiengiam,\n (\n COALESCE(\n CASE\n WHEN r_bnnoitru.bhyt IN ('1','2') THEN\n CASE\n WHEN req.thuphi = 1 THEN cat.giadan07\n WHEN req.dichvu = 1 THEN cat.giadv07\n ELSE CASE WHEN sys_laygiadan = '1' THEN cat.giadan07 ELSE cat.giabh07 END\n END\n ELSE cat.giabh07\n END, 0\n ) * req.para_qty\n ) AS thanhtien,\n cat.ktcao, cat.ldanh, cat.tyle_tt, cat.giabhdm, cat.nguonkhac, cat.chiphint\nFROM tmp_grouped_requests req\nJOIN (\n SELECT macls, giabh07, giadv07, giadan07, tyle_tt, nguonkhac,\n ktcao, ldanh, giabh07 AS giabhdm, bhyt, COALESCE(chiphint,0) AS chiphint\n FROM current.dmcls\n) cat ON cat.macls = req.medser_code;\n\n UPDATE current.chidinhcls cls\n SET soluong = d.para_qty,\n thuphi = d.thuphi,\n dongia = d.dongia,\n giabh = d.giabh,\n chenhlech = d.chenhlech,\n dichvu = d.dichvu,\n miengiam = d.miengiam,\n ptmiengiam = d.ptmiengiam,\n thanhtien = d.thanhtien,\n thanhtienmg = d.thanhtienmg,\n ngaycd = LOCALTIMESTAMP,\n ngaykcb = d.ngaykcb,\n taikhoan = r_qtdieutri.taikhoan,\n maphong = r_qtdieutri.maphong,\n ktcao = d.ktcao,\n ldanh = d.ldanh,\n tile = d.tyle_tt,\n bhyt = d.bhyt,\n tinhtrang = COALESCE((CASE WHEN d.tinhtrang ISNULL \n THEN (CASE WHEN r_bnnoitru.tinhtrangvv::NUMERIC = 0 THEN 1 ELSE 0 END)\n ELSE d.tinhtrang END),0)\n FROM tmp_data_ready d\n\tWHERE cls.idchidinh = v_paraclinreqcode\n \tAND cls.macls = d.medser_code\n AND cls.mabn = v_patientcode\n AND cls.makb = v_admissioncode\n AND cls.maba = v_medicalrecordno\n AND cls.thangkt = r_qtdieutri.thangkt\n AND cls.namkt = r_qtdieutri.namkt\n \tAND cls.xoa = 0;\n\n INSERT INTO current.chidinhcls (\n mabn, maba, makb, noitru, madt, madv, madv_dichvu, maphong,\n ngaykcb, manv, macls, soluong, thuphi, dongia, giabh, chenhlech,\n dichvu, miengiam, ptmiengiam, thanhtien, dath, dain, dathu, taikhoan,\n tenmay, xoa, thangkt, namkt, maicd, kqcdoan, mathe, thanhtienmg,\n iddienbien, tinhtrang, ngaycd, travedieutri, buong, sogiuong,\n toacon, macon, dongiausd, thanhtienusd, tygia, bhyt, ktcao, ldanh,\n pttraituyen, idchidinh, chiphint, tenclsphu, tile, giabhdm, maicdp,\n kqcdoanp, sophong, stt_led, dinhsuat, sdnguonkhac, ngaykq,\n mayhct, tenyhct, api\n )\n SELECT\n v_patientcode, -- mabn\n v_medicalrecordno, -- maba\n v_admissioncode, -- makb\n 1, -- noitru\n r_bnnoitru.madt, -- madt\n r_bnnoitru.madv, -- madv\n NULL, -- madv_dichvu\n r_qtdieutri.maphong, -- maphong\n d.ngaykcb, \t\t -- ngaykcb\n r_qtdieutri.manv, -- manv\n d.medser_code, -- macls\n d.para_qty, -- soluong\n d.thuphi, -- thuphi\n d.dongia, -- dongia\n d.giabh, -- giabh\n d.chenhlech, -- chenhlech\n d.dichvu, -- dichvu\n d.miengiam, -- miengiam\n d.ptmiengiam, -- ptmiengiam\n d.thanhtien, -- thanhtien\n 0, -- dath\n 0, -- dain\n 0, -- dathu\n r_qtdieutri.taikhoan, -- taikhoan\n 'EMR.DHS', -- tenmay\n 0, -- xoa\n r_qtdieutri.thangkt, -- thangkt\n r_qtdieutri.namkt, -- namkt\n r_qtdieutri.maicd, -- maicd\n r_qtdieutri.kqcdoan, -- kqcdoan\n r_bnnoitru.mathe, -- mathe\n d.thanhtienmg, -- thanhtienmg\n v_tpcode, -- iddienbien\n CASE WHEN d.tinhtrang ISNULL \n THEN (CASE WHEN r_bnnoitru.tinhtrangvv::NUMERIC = 0 THEN 1 ELSE 0 END)\n ELSE d.tinhtrang END, \t\t\t -- tinhtrang\n LOCALTIMESTAMP, \t -- ngaycd\n 0, -- travedieutri\n r_qtdieutri.maphong, -- buong\n r_qtdieutri.sogiuong, -- sogiuong\n 0, -- toacon\n '', -- macon\n 0, -- dongiausd\n 0, -- thanhtienusd\n 0, -- tygia\n d.bhyt, -- bhyt\n d.ktcao, -- ktcao\n d.ldanh, -- ldanh\n d.tyle_tt, -- pttraituyen\n v_paraclinreqcode, -- idchidinh\n d.chiphint, -- chiphint\n NULL, -- tenclsphu\n d.tyle_tt, -- tile\n d.giabhdm, -- giabhdm\n r_qtdieutri.maicdp, -- maicdp\n r_qtdieutri.kqcdoanp, -- kqcdoanp\n NULL, -- sophong\n NULL, -- stt_led\n 0, -- dinhsuat\n d.nguonkhac, -- sdnguonkhac\n NULL, -- ngaykq \n r_qtdieutri.mayhct, -- mayhct\n r_qtdieutri.tenyhct, -- tenyhct\n 1 -- api\n FROM tmp_data_ready d\n WHERE NOT EXISTS (\n SELECT 1 FROM current.chidinhcls cls\n WHERE cls.idchidinh = v_paraclinreqcode\n AND cls.macls = d.medser_code\n AND cls.mabn = v_patientcode\n AND cls.makb = v_admissioncode\n AND cls.maba = v_medicalrecordno\n AND cls.thangkt = r_qtdieutri.thangkt\n AND cls.namkt = r_qtdieutri.namkt\n AND cls.xoa = 0);\n\n RETURN jsonb_build_object('status', 'success', 'message', 'Ok');\n\nEXCEPTION WHEN OTHERS THEN\n RETURN jsonb_build_object('status', 'error', 'message', SQLERRM);\nEND;\n$$ LANGUAGE plpgsql;\n\n\n\n\n\n\n\n\n"
|
4551
|
+
codesql: "\n\n\n\n\n\n\nCREATE OR REPLACE FUNCTION badt_dhs.InsertCUTPParaClinRequest(p_json JSONB)\nRETURNS JSONB AS\n$$\nDECLARE\n-- Lastest commit: author:nqhoa1005; date: 2025-09-08 15:45:01\n-- Thực hiện: NGUYỄN QUỐC HOÀ - 2025-06-11\n-- Hàm: badt_dhs.InsertCUTPParaClinRequest(p_json JSONB)\n-- Mô tả: nhận json DHS insert vào chidinhcls\n-- ===============================================================\n--Các trường đang bỏ trống :\n--taikhoan (chưa có field từ json truyền vào)\n--tenmay (chưa có field từ jsontruyền vào)\n--toacon (chưa có field từ jsontruyền vào)\n--macon (chưa có field từ jsontruyền vào)\n-- ===============================================================\n--Lấy thông tin bệnh nhân\n--Lấy thông tin điều trị\n--Group các CLS cha gôm tổng số lượng\n--Thêm các CLS con, dùng cùng số lượng với CLS cha\n--Kiểm tra CLS đã xoá từ EMR\n--Kiểm tra CLS thay đổi thông tin\n--Cập nhật lại các CLS đã xoá từ EMR\n--Tạo bảng đầy đủ dữ liệu đã group có cả cha và con\n--UPDATE các dòng đã có\n--INSERT các dòng mới\n v_tpcode TEXT := TRIM(p_json->>'TPCode');\n v_admissioncode TEXT := TRIM(p_json->>'AdmissionCode');\n v_medicalrecordno TEXT := TRIM(p_json->>'MedicalRecordNo');\n v_paraclinreqcode TEXT := TRIM(p_json->>'ParaClinReqCode');\n v_patientcode TEXT := TRIM(p_json->>'PatientCode');\n v_employeecode TEXT := TRIM(p_json->>'EmployeeCode');\n\n r_bnnoitru RECORD;\n r_qtdieutri RECORD;\n sys_laygiadan TEXT;\n sys_laygiadv TEXT;\nBEGIN\n SELECT nt.madt, nt.madv, nt.mathe, dt.bhyt, nt.tinhtrangvv, \n \t\tCOALESCE(bn.gioitinh,0)::NUMERIC AS gioitinh\n INTO r_bnnoitru\n FROM current.bnnoitru nt\n LEFT JOIN current.dmdoituong dt ON dt.madt = nt.madt\n LEFT JOIN current.dmbenhnhan bn ON bn.mabn = nt.mabn\n WHERE nt.ravien = 0\n AND TRIM(nt.mabn) = v_patientcode\n AND TRIM(nt.makb) = v_admissioncode\n AND TRIM(nt.maba) = v_medicalrecordno;\n\n IF NOT FOUND THEN\n RETURN jsonb_build_object('status', 'error', 'message', 'Không tìm thấy thông tin bệnh nhân');\n END IF;\n\n SELECT qt.iddienbien, qt.madv, qt.maphong, qt.maicd, qt.kqcdoan, qt.maicdp, qt.kqcdoanp,\n qt.mayhct, qt.tenyhct, qt.thangkt, qt.namkt, qt.sogiuong, qt.ngaygio, qt.manv, nv.taikhoan\n INTO r_qtdieutri\n FROM current.qtdieutri qt\n LEFT JOIN current.dmnhanvien nv ON nv.manv = qt.manv\n WHERE qt.iddienbien = v_tpcode;\n\n IF NOT FOUND THEN\n RETURN jsonb_build_object('status', 'error', 'message', 'Không tìm thấy thông tin điều trị');\n END IF;\n\n SELECT COALESCE(giatri, '0') INTO sys_laygiadan\n FROM current.system WHERE tents = 'laygiadan';\n \n SELECT COALESCE(giatri, '0') INTO sys_laygiadv\n FROM current.system WHERE tents = 'laygiadv';\n \n CREATE TEMP TABLE ClsData ON COMMIT DROP AS\n SELECT *\n FROM current.chidinhcls cls\n WHERE cls.idchidinh = v_paraclinreqcode\n AND cls.xoa = 0\n AND cls.mabn = v_patientcode\n AND cls.makb = v_admissioncode\n AND cls.maba = v_medicalrecordno\n AND cls.thangkt = r_qtdieutri.thangkt\n AND cls.namkt = r_qtdieutri.namkt\n AND (\n cls.dathu != 0 \n OR COALESCE(cls.soctvpcl, '') != '' \n OR COALESCE(cls.soctvpbltong, '') != ''\n OR cls.dath != 0 \n OR cls.dalappttt != 0\n );\n \n\n CREATE TEMP TABLE tmp_grouped_requests ON COMMIT DROP AS\n SELECT\n item->>'MedSerCode' AS medser_code,\n SUM(COALESCE((item->>'ParaClinQty')::NUMERIC, 1)) AS para_qty,\n COALESCE((item->>'IsHI')::BOOLEAN::INT, NULL) AS bhyt,\n COALESCE((item->>'Urgent')::INT, NULL) AS tinhtrang,\t--Bổ sung cột tình trạng : 0 : Cấp cứu-Khẩn cấp; 1 : bình thường\n COALESCE((item->>'thuphi')::NUMERIC, 0) AS thuphi,\n COALESCE((item->>'dichvu')::NUMERIC, 0) AS dichvu,\n COALESCE((item->>'miengiam')::NUMERIC, 0) AS miengiam,\n COALESCE((item->>'ptmiengiam')::NUMERIC, 0) AS ptmiengiam_input,\n COALESCE((item->>'thanhtienmiengiam')::NUMERIC, 0) AS thanhtienmg,\n (CASE WHEN ((item->>'FromDate')::TIMESTAMP)::TIME = '00:00:00'::TIME \n THEN ((item->>'FromDate')::DATE + LOCALTIMESTAMP::TIME)\n ELSE (item->>'FromDate')::TIMESTAMP END) AS ngaykcb,\n FALSE AS is_child\n FROM jsonb_array_elements(p_json->'ParaClinRequests') AS item\n GROUP BY item->>'MedSerCode', item->>'thuphi', item->>'dichvu', item->>'miengiam', item->>'ptmiengiam', item->>'thanhtienmiengiam',item->>'FromDate',item->>'IsHI',item->>'Urgent';\n\n INSERT INTO tmp_grouped_requests (\n medser_code, para_qty, bhyt, tinhtrang, thuphi, dichvu, miengiam, ptmiengiam_input, thanhtienmg, ngaykcb, is_child\n )\n SELECT\n clscon.macls,\n grp.para_qty, COALESCE(grp.bhyt,0) AS bhyt, grp.tinhtrang, CASE WHEN COALESCE(grp.bhyt,0) = 1 THEN 0 ELSE 1 END AS thuphi,\n 0, 0, 0, 0, grp.ngaykcb,\n TRUE\n FROM tmp_grouped_requests grp\n JOIN current.dmcls clscon ON clscon.macha = grp.medser_code\n WHERE COALESCE(clscon.sudung,0) = 1 \n \tAND (COALESCE(clscon.gioitinh,0) = r_bnnoitru.gioitinh OR COALESCE(clscon.gioitinh,0) = 2)\n \tAND clscon.macls NOT IN (\n SELECT medser_code FROM tmp_grouped_requests\n );\n IF EXISTS (\n SELECT 1\n FROM ClsData c\n WHERE NOT EXISTS (\n SELECT 1\n FROM tmp_grouped_requests t\n WHERE t.medser_code = c.macls\n )\n ) THEN\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', 'Cận lâm sàng đã thực hiện hoặc đã thu tiền, không thể xoá',\n 'MedSerCode',\n COALESCE((\n SELECT jsonb_agg(c.macls)\n FROM ClsData c\n WHERE NOT EXISTS (\n SELECT 1\n FROM tmp_grouped_requests t\n WHERE TRIM(t.medser_code) = TRIM(c.macls)\n )\n ), '[]'::jsonb)\n );\n END IF;\n \n IF EXISTS (\n SELECT 1\n FROM ClsData c\n JOIN tmp_grouped_requests t ON t.medser_code = c.macls\n WHERE (\n COALESCE(t.para_qty, 0) != COALESCE(c.soluong, 0)\n OR COALESCE(t.bhyt, 0) != COALESCE(c.bhyt, 0)\n OR COALESCE(t.thuphi, 0) != COALESCE(c.thuphi, 0)\n OR COALESCE(t.dichvu, 0) != COALESCE(c.dichvu, 0)\n OR COALESCE(t.miengiam, 0) != COALESCE(c.miengiam, 0)\n OR COALESCE(t.ptmiengiam_input, 0) != COALESCE(c.ptmiengiam, 0) \n )\n AND (\n c.dathu != 0 OR \n COALESCE(c.soctvpcl, '') != '' OR \n c.dath != 0 OR \n c.dalappttt != 0\n )\n ) THEN\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', 'Cận lâm sàng đã thực hiện hoặc đã thu tiền, không thể cập nhật',\n 'MedSerCode', COALESCE((\n SELECT jsonb_agg(c.macls)\n FROM ClsData c\n JOIN tmp_grouped_requests t ON t.medser_code = c.macls\n WHERE (\n COALESCE(t.para_qty, 0) != COALESCE(c.soluong, 0)\n OR COALESCE(t.bhyt, 0) != COALESCE(c.bhyt, 0)\n OR COALESCE(t.thuphi, 0) != COALESCE(c.thuphi, 0)\n OR COALESCE(t.dichvu, 0) != COALESCE(c.dichvu, 0)\n OR COALESCE(t.miengiam, 0) != COALESCE(c.miengiam, 0)\n OR COALESCE(t.ptmiengiam_input, 0) != COALESCE(c.ptmiengiam, 0)\n )\n AND (\n c.dathu != 0 OR \n COALESCE(c.soctvpcl, '') != '' OR \n c.dath != 0 OR \n c.dalappttt != 0\n )\n ),'[]'::jsonb)\n );\n END IF;\n \n UPDATE current.chidinhcls cls\n SET xoa = 1,\n ngayxoa = r_qtdieutri.ngaygio\n WHERE cls.idchidinh = v_paraclinreqcode\n AND cls.mabn = v_patientcode\n AND cls.makb = v_admissioncode\n AND cls.maba = v_medicalrecordno\n AND cls.xoa = 0\n AND cls.thangkt = r_qtdieutri.thangkt\n AND cls.namkt = r_qtdieutri.namkt\n AND NOT EXISTS (\n SELECT 1\n FROM tmp_grouped_requests req\n WHERE TRIM(req.medser_code) = TRIM(cls.macls)\n );\n \n CREATE TEMP TABLE tmp_data_ready ON COMMIT DROP AS\n\tSELECT\n req.medser_code,\n req.para_qty,\n COALESCE(req.bhyt,0) AS bhyt,\n req.tinhtrang AS tinhtrang,\n CASE WHEN COALESCE(req.bhyt,0) = 1 THEN 0 ELSE 1 END AS thuphi,\n req.dichvu,\n req.miengiam,\n req.ptmiengiam_input,\n req.thanhtienmg, \n req.ngaykcb,\n req.is_child,\n CASE WHEN r_bnnoitru.bhyt IN ('1','2') \n \t\tTHEN\n (CASE\n WHEN req.thuphi = 1 THEN cat.giadan07\n WHEN req.dichvu = 1 THEN cat.giadv07\n ELSE CASE WHEN sys_laygiadan::NUMERIC = 1 THEN cat.giadan07 ELSE cat.giabh07 END\n END)\n ELSE \n \t (CASE WHEN sys_laygiadv::NUMERIC = 0 THEN cat.giadan07 ELSE cat.giadv07 END)\n END AS dongia,\n cat.giabh07 AS giabh,\n CASE WHEN r_bnnoitru.bhyt IN ('1','2')\n \tTHEN\n (CASE\n WHEN req.dichvu = 1 AND cat.giadv07 > cat.giabh07 THEN cat.giadv07 - cat.giabh07\n WHEN sys_laygiadan = '1' AND cat.giadan07 > cat.giabh07 THEN cat.giadan07 - cat.giabh07\n ELSE 0\n END) ELSE 0 END AS chenhlech,\n CASE\n WHEN req.miengiam = 1 AND req.thanhtienmg > 0 THEN\n ROUND(req.thanhtienmg / NULLIF(\n CASE\n WHEN r_bnnoitru.bhyt IN ('1','2') THEN\n CASE\n WHEN req.thuphi = 1 THEN cat.giadan07\n WHEN req.dichvu = 1 THEN cat.giadv07\n ELSE CASE WHEN sys_laygiadan = '1' THEN cat.giadan07 ELSE cat.giabh07 END\n END\n ELSE cat.giabh07\n END, 0\n ) * 100, 2)\n ELSE 0\n END AS ptmiengiam,\n (\n COALESCE(\n CASE\n WHEN r_bnnoitru.bhyt IN ('1','2') THEN\n CASE\n WHEN req.thuphi = 1 THEN cat.giadan07\n WHEN req.dichvu = 1 THEN cat.giadv07\n ELSE (CASE WHEN sys_laygiadan::NUMERIC = 1 THEN cat.giadan07 ELSE cat.giabh07 END)\n END\n ELSE (CASE WHEN sys_laygiadv::NUMERIC = 0 THEN cat.giadan07 ELSE cat.giadv07 END)\n END, 0\n ) * req.para_qty\n ) AS thanhtien,\n cat.ktcao, cat.ldanh, cat.tyle_tt, cat.giabhdm, cat.nguonkhac, cat.chiphint\nFROM tmp_grouped_requests req\nJOIN (\n SELECT macls, giabh07, giadv07, giadan07, tyle_tt, nguonkhac,\n ktcao, ldanh, giabh07 AS giabhdm, bhyt, COALESCE(chiphint,0) AS chiphint\n FROM current.dmcls\n) cat ON cat.macls = req.medser_code;\n\n UPDATE current.chidinhcls cls\n SET soluong = d.para_qty,\n thuphi = d.thuphi,\n dongia = d.dongia,\n giabh = d.giabh,\n chenhlech = d.chenhlech,\n dichvu = d.dichvu,\n miengiam = d.miengiam,\n ptmiengiam = d.ptmiengiam,\n thanhtien = d.thanhtien,\n thanhtienmg = d.thanhtienmg,\n ngaycd = LOCALTIMESTAMP,\n ngaykcb = d.ngaykcb,\n taikhoan = r_qtdieutri.taikhoan,\n maphong = r_qtdieutri.maphong,\n ktcao = d.ktcao,\n ldanh = d.ldanh,\n tile = d.tyle_tt,\n bhyt = d.bhyt,\n tinhtrang = COALESCE((CASE WHEN d.tinhtrang ISNULL \n THEN (CASE WHEN r_bnnoitru.tinhtrangvv::NUMERIC = 0 THEN 1 ELSE 0 END)\n ELSE d.tinhtrang END),0)\n FROM tmp_data_ready d\n\tWHERE cls.idchidinh = v_paraclinreqcode\n \tAND cls.macls = d.medser_code\n AND cls.mabn = v_patientcode\n AND cls.makb = v_admissioncode\n AND cls.maba = v_medicalrecordno\n AND cls.thangkt = r_qtdieutri.thangkt\n AND cls.namkt = r_qtdieutri.namkt\n \tAND cls.xoa = 0;\n\n INSERT INTO current.chidinhcls (\n mabn, maba, makb, noitru, madt, madv, madv_dichvu, maphong,\n ngaykcb, manv, macls, soluong, thuphi, dongia, giabh, chenhlech,\n dichvu, miengiam, ptmiengiam, thanhtien, dath, dain, dathu, taikhoan,\n tenmay, xoa, thangkt, namkt, maicd, kqcdoan, mathe, thanhtienmg,\n iddienbien, tinhtrang, ngaycd, travedieutri, buong, sogiuong,\n toacon, macon, dongiausd, thanhtienusd, tygia, bhyt, ktcao, ldanh,\n pttraituyen, idchidinh, chiphint, tenclsphu, tile, giabhdm, maicdp,\n kqcdoanp, sophong, stt_led, dinhsuat, sdnguonkhac, ngaykq,\n mayhct, tenyhct, api\n )\n SELECT\n v_patientcode, -- mabn\n v_medicalrecordno, -- maba\n v_admissioncode, -- makb\n 1, -- noitru\n r_bnnoitru.madt, -- madt\n r_bnnoitru.madv, -- madv\n NULL, -- madv_dichvu\n r_qtdieutri.maphong, -- maphong\n d.ngaykcb, \t\t -- ngaykcb\n r_qtdieutri.manv, -- manv\n d.medser_code, -- macls\n d.para_qty, -- soluong\n d.thuphi, -- thuphi\n d.dongia, -- dongia\n d.giabh, -- giabh\n d.chenhlech, -- chenhlech\n d.dichvu, -- dichvu\n d.miengiam, -- miengiam\n d.ptmiengiam, -- ptmiengiam\n d.thanhtien, -- thanhtien\n 0, -- dath\n 0, -- dain\n 0, -- dathu\n r_qtdieutri.taikhoan, -- taikhoan\n 'EMR.DHS', -- tenmay\n 0, -- xoa\n r_qtdieutri.thangkt, -- thangkt\n r_qtdieutri.namkt, -- namkt\n r_qtdieutri.maicd, -- maicd\n r_qtdieutri.kqcdoan, -- kqcdoan\n r_bnnoitru.mathe, -- mathe\n d.thanhtienmg, -- thanhtienmg\n v_tpcode, -- iddienbien\n CASE WHEN d.tinhtrang ISNULL \n THEN (CASE WHEN r_bnnoitru.tinhtrangvv::NUMERIC = 0 THEN 1 ELSE 0 END)\n ELSE d.tinhtrang END, \t\t\t -- tinhtrang\n LOCALTIMESTAMP, \t -- ngaycd\n 0, -- travedieutri\n r_qtdieutri.maphong, -- buong\n r_qtdieutri.sogiuong, -- sogiuong\n 0, -- toacon\n '', -- macon\n 0, -- dongiausd\n 0, -- thanhtienusd\n 0, -- tygia\n d.bhyt, -- bhyt\n d.ktcao, -- ktcao\n d.ldanh, -- ldanh\n d.tyle_tt, -- pttraituyen\n v_paraclinreqcode, -- idchidinh\n d.chiphint, -- chiphint\n NULL, -- tenclsphu\n d.tyle_tt, -- tile\n d.giabhdm, -- giabhdm\n r_qtdieutri.maicdp, -- maicdp\n r_qtdieutri.kqcdoanp, -- kqcdoanp\n NULL, -- sophong\n NULL, -- stt_led\n 0, -- dinhsuat\n d.nguonkhac, -- sdnguonkhac\n NULL, -- ngaykq \n r_qtdieutri.mayhct, -- mayhct\n r_qtdieutri.tenyhct, -- tenyhct\n 1 -- api\n FROM tmp_data_ready d\n WHERE NOT EXISTS (\n SELECT 1 FROM current.chidinhcls cls\n WHERE cls.idchidinh = v_paraclinreqcode\n AND cls.macls = d.medser_code\n AND cls.mabn = v_patientcode\n AND cls.makb = v_admissioncode\n AND cls.maba = v_medicalrecordno\n AND cls.thangkt = r_qtdieutri.thangkt\n AND cls.namkt = r_qtdieutri.namkt\n AND cls.xoa = 0);\n\n RETURN jsonb_build_object('status', 'success', 'message', 'Ok');\n\nEXCEPTION WHEN OTHERS THEN\n RETURN jsonb_build_object('status', 'error', 'message', SQLERRM);\nEND;\n$$ LANGUAGE plpgsql;\n\n\n\n\n\n\n\n\n\n"
|
4552
4552
|
},
|
4553
4553
|
"badt_dhs.InsertDiagnose": {
|
4554
4554
|
name: "badt_dhs.InsertDiagnose",
|
4555
4555
|
para: ["p_json"],
|
4556
4556
|
returns: "JSONB",
|
4557
|
-
codesql: "\n\n\nCREATE OR REPLACE FUNCTION badt_dhs.InsertDiagnose(p_json JSONB)\nRETURNS JSONB AS\n$$\nDECLARE\n-- Lastest commit: author:nqhoa1005; date: 2025-
|
4557
|
+
codesql: "\n\n\nCREATE OR REPLACE FUNCTION badt_dhs.InsertDiagnose(p_json JSONB)\nRETURNS JSONB AS\n$$\nDECLARE\n-- Lastest commit: author:nqhoa1005; date: 2025-09-10 14:08:23\n-- Thực hiện: NGUYỄN QUỐC HOÀ - 2025-05-22\n-- Hàm: badt_dhs.badt_dhs.InsertDiagnose(p_json JSONB)\n-- Mô tả: Nhận dữ liệu Json thêm vào dữ liệu\n-- Bổ sung so với file mẫu:\n-- \"NGAYTH\"\n-- \"MAKB\"\n-- \"MABA\"\n-- \"MA_BSDOC\"\n-- \"MABSDT\"\n-- \"MAKP\"\n-- \"MAPHONG\"\n-- Chưa rõ thông tin :\n-- \"NGAY_CD\" và \"NGAYCD\" => Chưa rõ ngày chỉ định hay ngày chẩn đoán\n-- ===============================================================\n-- Lấy dữ liệu từ JSON\n-- Tham số hệ thống\n-- Bước 1: Kiểm tra tồn tại trong chidinhcls\n-- Bước 2: Kiểm tra nhân viên thực hiện\n-- Bước 3: Kiểm tra nhân viên trả kết quả\n-- Bước 4: Kiểm tra mã máy thực hiện\n-- Bước 5: Lấy tham số thời gian từ bảng system\n-- Kiểm tra khoảng thời gian thực hiện y lệnh\n-- Kiểm tra khoảng thời gian trả kết quả\n-- Kiểm tra tồn tại dòng trong pskhamha\n-- Cập nhật\n v_iddienbien TEXT := p_json->>'TPCode';\n v_idchidinh TEXT := p_json->>'ParaClinReqCode';\n v_mabn TEXT := p_json->>'PatientCode';\n v_makb TEXT := p_json->>'AdmissionCode';\n v_maba TEXT := p_json->>'MedicalRecordNo';\n v_macls TEXT := p_json->>'MedSerCode';\n v_ngaycd TIMESTAMP := (p_json->>'NgayChiDinh')::TIMESTAMP;\n v_ngayth TIMESTAMP := (p_json->>'NgayThucHien')::TIMESTAMP;\n v_ngaykq TIMESTAMP := (p_json->>'NgayKetQua')::TIMESTAMP;\n v_madv\t\t TEXT \t := p_json->>'MaDonViThucHien';\n v_phong\t\t TEXT \t := p_json->>'MaPhongThucHien';\n\n v_manv_thuchien TEXT := p_json->>'MaNhanVienThucHien';\n v_manv_ketqua TEXT := p_json->>'MaNhanVienTraKQ';\n v_mamay TEXT := p_json->>'MaMayThucHien';\n \n v_ketluan TEXT := p_json->>'KetLuan';\n v_mota \tTEXT := p_json->>'MoTa';\n v_ghicchu \tTEXT := p_json->>'GhiChu';\n v_filepath TEXT := p_json->>'filePath';\n\n v_chidinhcls RECORD;\n v_exists_nv_thuchien INT;\n v_exists_nv_ketqua INT;\n v_exists_mamay INT;\n v_exists_pskhamha\t INT;\n\n v_sophuttoithieu INT;\n v_sophuttraketqua INT;\n \n cchn_thuchien \tTEXT;\n tk_thuchien \tTEXT;\n tk_traketqua \tTEXT;\n\n v_checktgthuchien NUMERIC; \n v_checktgketqua NUMERIC; \n \n cd_thangkt\t\tTEXT;\n cd_namkt\t\tTEXT;\n v_ngaycd_lui1thang TIMESTAMP := v_ngaycd - INTERVAL '1 month';\n \nBEGIN\n SELECT ngaykcb, thangkt, namkt, dath, dathu, dalappttt\n INTO v_chidinhcls\n FROM current.chidinhcls\n WHERE xoa = 0\n AND macls = v_macls\n AND iddienbien = v_iddienbien\n AND idchidinh = v_idchidinh\n AND ngaykcb = v_ngaycd\n AND (namkt||thangkt) >= to_char(v_ngaycd_lui1thang,'YYYYMM')\n LIMIT 1;\n\n IF NOT FOUND THEN\n RETURN jsonb_build_object(\n 'success', false,\n 'message', format(\n 'Không tìm thấy chỉ định với macls=%s, iddienbien=%s, idchidinh=%s, ngaykcb=%s',\n v_macls, v_iddienbien, v_idchidinh, v_ngaycd\n )\n );\n END IF;\n\n SELECT COUNT(*) INTO v_exists_nv_thuchien\n FROM current.dmnhanvien\n WHERE manv = v_manv_thuchien\n AND COALESCE(macc_hanhnghe_cv2348,'') != ''\n AND COALESCE(trangthai,'0') = '1';\n\n IF v_exists_nv_thuchien = 0 THEN\n RETURN jsonb_build_object(\n 'success', false,\n 'message', format(\n 'Nhân viên %s không có chứng chỉ hành nghề hoặc đã nghỉ việc',\n v_manv_thuchien\n )\n );\n END IF;\n\n SELECT COUNT(*) INTO v_exists_nv_ketqua\n FROM current.dmnhanvien\n WHERE manv = v_manv_ketqua\n AND COALESCE(macc_hanhnghe_cv2348,'') != ''\n AND COALESCE(trangthai,'0') = '1';\n\n IF v_exists_nv_ketqua = 0 THEN\n RETURN jsonb_build_object(\n 'success', false,\n 'message', format(\n 'Nhân viên %s không có chứng chỉ hành nghề hoặc đã nghỉ việc',\n v_manv_ketqua\n )\n );\n END IF;\n\n SELECT COUNT(*) INTO v_exists_mamay\n FROM current.dmmamay\n WHERE mamay = v_mamay;\n\n IF v_exists_mamay = 0 THEN\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format(\n 'Không tìm thấy mã máy thực hiện: %s',\n v_mamay\n )\n );\n END IF;\n\n SELECT CAST(giatri AS INT) INTO v_sophuttoithieu\n FROM current.system\n WHERE tents = 'ha.sophuttoithieu';\n\n SELECT CAST(giatri AS INT) INTO v_sophuttraketqua\n FROM current.system\n WHERE tents = 'ha.sophuttraketqua';\n\n v_checktgthuchien := EXTRACT(EPOCH FROM (v_ngayth - v_ngaycd)) / 60.0;\n IF v_checktgthuchien <= v_sophuttoithieu THEN\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format(\n 'Thời gian thực hiện y lệnh phải tối thiểu %s phút đối với thời gian chỉ định',\n v_sophuttoithieu\n )\n );\n END IF;\n\n v_checktgketqua := EXTRACT(EPOCH FROM (v_ngaykq - v_ngayth)) / 60.0;\n IF v_checktgketqua <= v_sophuttraketqua THEN\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', format(\n 'Thời gian trả kết quả phải tối thiểu %s phút kể từ thời gian thực hiện',\n v_sophuttraketqua\n )\n );\n END IF;\n \n SELECT taikhoan, macc_hanhnghe_cv2348\n INTO tk_thuchien, cchn_thuchien\n FROM current.dmnhanvien\n WHERE manv = v_manv_thuchien; \n \n SELECT taikhoan\n INTO tk_traketqua\n FROM current.dmnhanvien\n WHERE manv = v_manv_ketqua; \n\n SELECT COUNT(*) INTO v_exists_pskhamha\n FROM current.pskhamha\n WHERE mabn = v_mabn\n AND makb = v_makb\n AND maba = v_maba\n AND macls = v_macls\n AND ngaykcb = v_ngaycd;\n\n IF v_exists_pskhamha > 0 THEN\n UPDATE current.pskhamha\n SET\n tenmay = 'EMR',\n taikhoan = 'EMR',\n taikhoan_traketqua = tk_thuchien,\n manv = v_manv_ketqua,\n madv = v_madv,\n maphong = v_phong,\n ngaycd = v_ngaykq::TIMESTAMP,\n mamay = v_mamay,\n ketluan_plaintext = v_ketluan,\n mota_text = v_mota,\n ghichu = v_mota, \n filepath = v_filepath\n WHERE\n mabn = v_mabn\n AND makb = v_makb\n AND maba = v_maba\n AND macls = v_macls\n AND ngaykcb = v_ngaycd;\n ELSE\n INSERT INTO current.pskhamha (\n mabn, makb, maba, macls, tenmay,\n taikhoan, manv, madv, maphong, ngaykcb, soluong,\n ngaycd, mamay,ketluan, ketluan_plaintext, mota_text, ghichu,\n dakhoa, mabl, thangkt, namkt, phienban,\n taikhoan_traketqua, hinhthuctraketqua, api, filepath\n )\n VALUES (\n v_mabn, v_makb, v_maba, v_macls, 'EMR',\n tk_thuchien, v_manv_ketqua, v_madv, v_phong, v_ngaycd::TIMESTAMP, 1,\n v_ngaykq::TIMESTAMP, v_mamay,v_ketluan, v_ketluan, v_mota, v_mota, 1, '',\n to_char(v_ngaykq::date,'MM'),to_char(v_ngaykq::date,'YYYY'), 'EMR.API',\n tk_traketqua,0, 1, v_filepath\n );\n END IF;\n\n UPDATE current.chidinhcls\n SET dath = 1,\n giolaymau = v_ngayth::TIMESTAMP,\n ngaykq = v_ngaykq::TIMESTAMP,\n nguoi_thuc_hien = cchn_thuchien\n WHERE mabn = v_mabn\n AND makb = v_makb\n AND COALESCE(maba,'') = COALESCE(v_maba,'')\n AND macls = v_macls\n AND ngaykcb = v_ngaycd::TIMESTAMP\n AND thangkt = v_chidinhcls.thangkt\n AND namkt = v_chidinhcls.namkt\n AND COALESCE(xoa, 0) = 0;\n\n RETURN jsonb_build_object(\n 'status', 'success',\n 'message', 'OK' \n );\n\n EXCEPTION\n WHEN OTHERS THEN\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', 'Lỗi xử lý: ' || SQLERRM\n );\nEND;\n$$ LANGUAGE plpgsql;\n\n\n"
|
4558
|
+
},
|
4559
|
+
"badt_dhs.IsCancelCUTPParaClinRequest": {
|
4560
|
+
name: "badt_dhs.IsCancelCUTPParaClinRequest",
|
4561
|
+
para: ["input_json"],
|
4562
|
+
returns: "JSONB",
|
4563
|
+
codesql: "\n\n/*\nSELECT badt_dhs.IsCancelCUTPParaClinRequest('{\n \"PresCode\": \"DH3.20250810.093546\",\n \"PatientCode\": \"2025019850\",\n \"AdmissionCode\": \"2506012221\",\n \"MedicalRecordNo\": \"2025007154\",\n \"ParaClinReqCode\": \"2025007154_20250810095736\",\n \"PCReqDltVoucherNo\": \"BE05\"\n}':: JSONB);\n*/\nCREATE OR REPLACE FUNCTION badt_dhs.IsCancelCUTPParaClinRequest(input_json JSONB)\nRETURNS JSONB AS $$\nDECLARE\n-- Lastest commit: author:Nguyễn Triều Vương; date: 2025-08-22 10:46:17\n-- ===============================================================\n-- Thực hiện: NGUYỄN TRIỀU VƯƠNG - 2025-08-22\n-- Hàm: badt_dhs.IsCancelCUTPParaClinRequest(input_json JSONB)\n-- Mô tả: Hủy 1 thuốc trong toa\n-- input_json: nội dung file json: thông tin bệnh nhân và toa thuốc\n-- Sử dụng:\n-- SELECT badt_dhs.IsCancelCUTPParaClinRequest(input_json JSONB);\n-- Kiểm tra cls có đủ điều kiện xóa hay không\n-- ===============================================================\n-- Kiểm tra bn xuất viện\n--Kiểm tra điệu kiện cận lâm sàng\n-- Kiểm tra điều kiện lỗi chi tiết\n--Kiểm trả CLS có kèm toa vật tư không?\n-- Nếu không có lỗi\n p_mabn TEXT := input_json->>'PatientCode'; --Mã bệnh nhân\n p_maba TEXT := input_json->>'MedicalRecordNo'; -- Mã bệnh án\n p_makb TEXT := input_json->>'AdmissionCode'; -- Mã khám bệnh\n p_iddienbien TEXT := input_json->>'TPCode'; -- ID diễn biến\n p_idchidinh TEXT := input_json->>'ParaClinReqCode'; -- ID chỉ định\n p_macls TEXT := input_json->>'PCReqDltVoucherNo'; --Mã CLS\n\n v_exists BOOLEAN;\n v_ravien BOOLEAN;\n v_dain INT;\n v_dath INT;\n v_dathu INT;\n v_dalappttt INT;\n v_tongtien NUMERIC;\nBEGIN\n SELECT EXISTS (\n SELECT 1\n FROM current.bnnoitru\n WHERE mabn = p_mabn\n AND maba = p_maba\n AND makb = p_makb\n AND COALESCE(ravien, 0) > 0\n ) INTO v_ravien;\n\n IF v_ravien THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Bệnh nhân %s đã xuất viện', p_maba)\n );\n END IF;\n\n SELECT EXISTS (\n SELECT 1\n FROM current.chidinhcls\n WHERE mabn = p_mabn\n AND maba = p_maba\n AND makb = p_makb\n AND idchidinh = p_idchidinh\n AND COALESCE(xoa, 0) = 0\n ) INTO v_exists;\n\n IF NOT v_exists THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('ID chỉ định %s không tồn tại', p_idchidinh)\n );\n END IF;\n\n SELECT COALESCE(dain,0), COALESCE(dath,0), COALESCE(dathu,0), COALESCE(dalappttt,0)\n INTO v_dain, v_dath, v_dathu, v_dalappttt\n FROM current.chidinhcls\n WHERE mabn = p_mabn\n AND maba = p_maba\n AND makb = p_makb\n AND idchidinh = p_idchidinh\n AND macls = p_macls\n AND COALESCE(xoa,0) = 0;\n\n IF v_dain != 0 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Cận lâm sàng %s đã in, không thể xóa', p_macls)\n );\n ELSIF v_dathu = 1 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Cận lâm sàng %s đã thu tiền, không thể xóa', p_macls)\n );\n ELSIF v_dath = 1 OR v_dalappttt > 0 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Cận lâm sàng %s đã thực hiện, không thể xóa', p_macls)\n );\n ELSIF v_dath = 2 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Cận lâm sàng %s đã lấy mẫu/lấy số, không thể xóa', p_macls)\n );\n ELSIF v_dath = 3 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Cận lâm sàng %s đang thực hiện, không thể xóa', p_macls)\n );\n ELSIF v_dath >= 4 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Cận lâm sàng %s đã thực hiện, không thể xóa', p_macls)\n );\n END IF;\n\n SELECT COALESCE(sum(tien),0) as tien\n INTO v_tongtien\n FROM (\n SELECT COALESCE(idchidinh,'') as id,\n CASE when loaixn = 'xbb' then thanhtien\n when (loaixn = 'tto' or loaixn = 'ttt') and COALESCE(dain,0)= 1 then - thanhtien\n else 0 end as tien\n FROM current.chungtu\n WHERE idchidinh = p_idchidinh\n AND mabn = p_mabn\n AND makh = p_maba\n AND macls = p_macls\n AND COALESCE(xoa,0) = 0\n ) as tam;\n\n IF v_tongtien > 0 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Cận lâm sàng %s có vật tư hoặc thuốc kèm theo, không thể xóa', p_macls)\n );\n END IF;\n RETURN jsonb_build_object(\n 'status', 'success',\n 'message', format('Cận lâm sàng %s được phép xóa', p_macls)\n );\n\nEXCEPTION\n WHEN OTHERS THEN\n RETURN jsonb_build_object(\n 'status', 'error',\n 'message', SQLERRM\n );\nEND;\n$$ LANGUAGE plpgsql;\n"
|
4564
|
+
},
|
4565
|
+
"badt_dhs.IsCancelTPPrescription": {
|
4566
|
+
name: "badt_dhs.IsCancelTPPrescription",
|
4567
|
+
para: ["input_json"],
|
4568
|
+
returns: "JSONB",
|
4569
|
+
codesql: "\n\n/*\nSELECT badt_dhs.IsCancelTPPrescription('{\n \"PatientCode\": \"2025019850\",\n \"MedicalRecordNo\": \"2025007154\",\n \"AdmissionCode\": \"2506012221\",\n \"PresCode\": \"DH3.X25.0822.075624\",\n \"TPCode\": \"DH3.20250812.081748\",\n \"PresDtlCode\": \"A597\"\n}':: JSONB);\n*/\n\nCREATE OR REPLACE FUNCTION badt_dhs.IsCancelTPPrescription(input_json JSONB)\nRETURNS JSONB AS\n$$\nDECLARE\n-- Lastest commit: author:Nguyễn Triều Vương; date: 2025-08-22 10:44:58\n-- ===============================================================\n-- Thực hiện: NGUYỄN TRIỀU VƯƠNG - 2025-08-22\n-- Hàm: badt_dhs.IsCancelTPPrescription(input_json JSONB)\n-- Mô tả: Kiểm tra chứng từ xem có được phép xóa hay khong\n-- input_json: nội dung file json: thông tin bệnh nhân và toa thuốc\n-- Sử dụng:\n-- SELECT badt_dhs.IsCancelTPPrescription(input_json JSONB);\n-- Kiểm tra bn xuất viện\n-- Lấy thông tin từ bảng chungtu\n-- Kiểm tra điều kiện lỗi chi tiết\n-- Nếu không có lỗi\n TPCode TEXT := input_json->>'TPCode'; -- mã tờ điều trị: iddienbien\n AdmissionCode TEXT := input_json->>'AdmissionCode'; -- makb\n MedicalRecordNo TEXT := input_json->>'MedicalRecordNo'; -- maba\n PatientCode TEXT := input_json->>'PatientCode'; -- mabn\n PresCode TEXT := input_json->>'PresCode'; -- sohd\n\n v_dain INT;\n v_dathu INT;\n v_ttchinhtoa INT;\n v_ravien BOOLEAN;\nBEGIN\n SELECT EXISTS (\n SELECT 1\n FROM current.bnnoitru\n WHERE mabn = PatientCode\n AND maba = MedicalRecordNo\n AND makb = AdmissionCode\n AND COALESCE(ravien, 0) > 0\n ) INTO v_ravien;\n\n IF v_ravien THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Bệnh nhân %s đã xuất viện, không thể xóa toa', MedicalRecordNo)\n );\n END IF;\n\n SELECT\n COALESCE(dain,0),\n COALESCE(dathu,0),\n COALESCE(ttchinhtoa,0)\n INTO v_dain, v_dathu, v_ttchinhtoa\n FROM current.chungtu\n WHERE mabn = PatientCode\n AND makh = MedicalRecordNo\n AND sohd = PresCode\n AND COALESCE(xoa,0) = 0\n LIMIT 1;\n\n IF v_dain != 0 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Số chứng từ %s đã in, không thể xóa', PresCode)\n );\n ELSIF v_dathu = 1 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Số chứng từ %s đã thu tiền, không thể xóa', PresCode)\n );\n ELSIF v_ttchinhtoa = 1 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Số chứng từ %s đang chỉnh, không thể xóa', PresCode)\n );\n ELSIF v_ttchinhtoa = 4 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Số chứng từ %s đang tổng hợp, không thể xóa', PresCode)\n );\n ELSIF v_ttchinhtoa = 5 THEN\n RETURN jsonb_build_object(\n 'status', 'warning',\n 'message', format('Số chứng từ %s đã tổng hợp, không thể xóa', PresCode)\n );\n END IF;\n\n RETURN jsonb_build_object(\n 'status', 'success',\n 'message', format('Số chứng từ %s được phép xóa', PresCode)\n );\n\nEND;\n$$ LANGUAGE plpgsql;\n\n"
|
4558
4570
|
},
|
4559
4571
|
notify_payload_on_insert: {
|
4560
4572
|
name: "notify_payload_on_insert",
|
@@ -4641,7 +4653,7 @@
|
|
4641
4653
|
schema: "current",
|
4642
4654
|
table_name: "dmdonvi",
|
4643
4655
|
TG_ARGV0: "madv",
|
4644
|
-
TG_ARGV1: "tendv,vietngan,khoaduoc,ma_khoa_cv2348,trangthai"
|
4656
|
+
TG_ARGV1: "tendv,vietngan,khoaduoc,ma_khoa_cv2348,trangthai,xoa"
|
4645
4657
|
}),
|
4646
4658
|
"current.dmphong": r(r({}, p["badt_dhs.GetSyncRoom"]), {}, {
|
4647
4659
|
schema: "current",
|
@@ -4946,7 +4958,7 @@
|
|
4946
4958
|
}
|
4947
4959
|
|
4948
4960
|
function z(e, n, t, o) {
|
4949
|
-
var r = n && n.prototype instanceof
|
4961
|
+
var r = n && n.prototype instanceof m ? n : m,
|
4950
4962
|
i = Object.create(r.prototype),
|
4951
4963
|
p = new S(o || []);
|
4952
4964
|
return a(i, "_invoke", {
|
@@ -4972,9 +4984,9 @@
|
|
4972
4984
|
u = "suspendedYield",
|
4973
4985
|
l = "executing",
|
4974
4986
|
A = "completed",
|
4975
|
-
|
4987
|
+
h = {};
|
4976
4988
|
|
4977
|
-
function
|
4989
|
+
function m() {}
|
4978
4990
|
|
4979
4991
|
function f() {}
|
4980
4992
|
|
@@ -4986,7 +4998,7 @@
|
|
4986
4998
|
var W = Object.getPrototypeOf,
|
4987
4999
|
g = W && W(W(x([])));
|
4988
5000
|
g && g !== t && o.call(g, i) && (_ = g);
|
4989
|
-
var L = q.prototype =
|
5001
|
+
var L = q.prototype = m.prototype = Object.create(_);
|
4990
5002
|
|
4991
5003
|
function y(e) {
|
4992
5004
|
["next", "throw", "return"].forEach((function(n) {
|
@@ -5043,7 +5055,7 @@
|
|
5043
5055
|
if (p) {
|
5044
5056
|
var c = E(p, o);
|
5045
5057
|
if (c) {
|
5046
|
-
if (c ===
|
5058
|
+
if (c === h) continue;
|
5047
5059
|
return c
|
5048
5060
|
}
|
5049
5061
|
}
|
@@ -5055,7 +5067,7 @@
|
|
5055
5067
|
a = l;
|
5056
5068
|
var s = d(n, t, o);
|
5057
5069
|
if ("normal" === s.type) {
|
5058
|
-
if (a = o.done ? A : u, s.arg ===
|
5070
|
+
if (a = o.done ? A : u, s.arg === h) continue;
|
5059
5071
|
return {
|
5060
5072
|
value: s.arg,
|
5061
5073
|
done: o.done
|
@@ -5069,11 +5081,11 @@
|
|
5069
5081
|
function E(n, t) {
|
5070
5082
|
var o = t.method,
|
5071
5083
|
a = n.iterator[o];
|
5072
|
-
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")),
|
5084
|
+
if (a === e) return t.delegate = null, "throw" === o && n.iterator.return && (t.method = "return", t.arg = e, E(n, t), "throw" === t.method) || "return" !== o && (t.method = "throw", t.arg = new TypeError("The iterator does not provide a '" + o + "' method")), h;
|
5073
5085
|
var r = d(a, n.iterator, t.arg);
|
5074
|
-
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null,
|
5086
|
+
if ("throw" === r.type) return t.method = "throw", t.arg = r.arg, t.delegate = null, h;
|
5075
5087
|
var i = r.arg;
|
5076
|
-
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null,
|
5088
|
+
return i ? i.done ? (t[n.resultName] = i.value, t.next = n.nextLoc, "return" !== t.method && (t.method = "next", t.arg = e), t.delegate = null, h) : i : (t.method = "throw", t.arg = new TypeError("iterator result is not an object"), t.delegate = null, h)
|
5077
5089
|
}
|
5078
5090
|
|
5079
5091
|
function N(e) {
|
@@ -5198,16 +5210,16 @@
|
|
5198
5210
|
}
|
5199
5211
|
r && ("break" === e || "continue" === e) && r.tryLoc <= n && n <= r.finallyLoc && (r = null);
|
5200
5212
|
var i = r ? r.completion : {};
|
5201
|
-
return i.type = e, i.arg = n, r ? (this.method = "next", this.next = r.finallyLoc,
|
5213
|
+
return i.type = e, i.arg = n, r ? (this.method = "next", this.next = r.finallyLoc, h) : this.complete(i)
|
5202
5214
|
},
|
5203
5215
|
complete: function(e, n) {
|
5204
5216
|
if ("throw" === e.type) throw e.arg;
|
5205
|
-
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n),
|
5217
|
+
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && n && (this.next = n), h
|
5206
5218
|
},
|
5207
5219
|
finish: function(e) {
|
5208
5220
|
for (var n = this.tryEntries.length - 1; n >= 0; --n) {
|
5209
5221
|
var t = this.tryEntries[n];
|
5210
|
-
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t),
|
5222
|
+
if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), T(t), h
|
5211
5223
|
}
|
5212
5224
|
},
|
5213
5225
|
catch: function(e) {
|
@@ -5229,7 +5241,7 @@
|
|
5229
5241
|
iterator: x(n),
|
5230
5242
|
resultName: t,
|
5231
5243
|
nextLoc: o
|
5232
|
-
}, "next" === this.method && (this.arg = e),
|
5244
|
+
}, "next" === this.method && (this.arg = e), h
|
5233
5245
|
}
|
5234
5246
|
}, n
|
5235
5247
|
}
|
@@ -5266,8 +5278,8 @@
|
|
5266
5278
|
u = t(6928),
|
5267
5279
|
l = t(1596),
|
5268
5280
|
A = l.Pool,
|
5269
|
-
|
5270
|
-
|
5281
|
+
h = l.Client,
|
5282
|
+
m = t(9e3),
|
5271
5283
|
f = t(4800),
|
5272
5284
|
q = t(4067),
|
5273
5285
|
_ = t(5627),
|
@@ -5275,7 +5287,7 @@
|
|
5275
5287
|
g = t(6758),
|
5276
5288
|
L = t(6989),
|
5277
5289
|
y = new A,
|
5278
|
-
R = new
|
5290
|
+
R = new h,
|
5279
5291
|
v = g.createSequentialQueue(),
|
5280
5292
|
E = function() {
|
5281
5293
|
function e() {
|
@@ -5330,7 +5342,7 @@
|
|
5330
5342
|
case 5:
|
5331
5343
|
return e.abrupt("return", e.sent);
|
5332
5344
|
case 8:
|
5333
|
-
e.prev = 8, e.t0 = e.catch(2),
|
5345
|
+
e.prev = 8, e.t0 = e.catch(2), m.logError(e.t0, "insertBenhNhanSynced");
|
5334
5346
|
case 11:
|
5335
5347
|
case "end":
|
5336
5348
|
return e.stop()
|
@@ -5400,7 +5412,7 @@
|
|
5400
5412
|
}(e), "'")
|
5401
5413
|
})),
|
5402
5414
|
b = "SELECT ".concat(a, "(").concat(s.join(","), ")");
|
5403
|
-
return
|
5415
|
+
return m.logInfoObject({
|
5404
5416
|
para: i,
|
5405
5417
|
payload: n,
|
5406
5418
|
sql: b,
|
@@ -5431,15 +5443,15 @@
|
|
5431
5443
|
},
|
5432
5444
|
S = function() {
|
5433
5445
|
var e = d(M().mark((function e(n) {
|
5434
|
-
var t, o, a, r, i, p, s, z, O, u, l, A,
|
5446
|
+
var t, o, a, r, i, p, s, z, O, u, l, A, h, q, g, L, y, v, S, x, k, w, D, C, B, X, Y, I, j, P, H, F, U, G, V, J, K, $, Q, Z, ee, ne, te, oe, ae, re, ie;
|
5435
5447
|
return M().wrap((function(e) {
|
5436
5448
|
for (;;) switch (e.prev = e.next) {
|
5437
5449
|
case 0:
|
5438
|
-
if (t = JSON.parse(n.payload), o = t.channel, r = (a = {}).data, i = a.pathApi, p = a.pgFunctionName, z = void 0 === (s = a.method) ? "POST" : s, u = void 0 === (O = a.mutiRequests) ? [] : O, l = t.operation, t.bant, A = t.maba,
|
5450
|
+
if (t = JSON.parse(n.payload), o = t.channel, r = (a = {}).data, i = a.pathApi, p = a.pgFunctionName, z = void 0 === (s = a.method) ? "POST" : s, u = void 0 === (O = a.mutiRequests) ? [] : O, l = t.operation, t.bant, A = t.maba, h = t.mabn, q = t.makb, t.namvien, t.makh, y = void 0 === (L = (g = {}).EmployeeCode) ? "" : L, S = void 0 === (v = g.ParaClinReqCode) ? "" : v, w = void 0 !== (k = (x = {}).isCancelHandleNotification) && k, void 0 !== (D = x.iddienbienByAPIEmr) && D, e.prev = 6, "current.dmbenhnhan" !== o) {
|
5439
5451
|
e.next = 13;
|
5440
5452
|
break
|
5441
5453
|
}
|
5442
|
-
return e.next = 10, R.query(" SELECT badt_dhs.getSyncADM_ByDmbenhnhan('".concat(
|
5454
|
+
return e.next = 10, R.query(" SELECT badt_dhs.getSyncADM_ByDmbenhnhan('".concat(h, "'); "));
|
5443
5455
|
case 10:
|
5444
5456
|
return e.next = 12, E.markProcessed(t.notification_id);
|
5445
5457
|
case 12:
|
@@ -5464,7 +5476,7 @@
|
|
5464
5476
|
case 7:
|
5465
5477
|
return a = e.sent, r = (null === (o = a.rows[0]) || void 0 === o ? void 0 : o.exists) || !1, e.abrupt("return", r);
|
5466
5478
|
case 12:
|
5467
|
-
throw e.prev = 12, e.t0 = e.catch(1),
|
5479
|
+
throw e.prev = 12, e.t0 = e.catch(1), m.logError(e.t0, "Error checking iddienbien by EMR:"), e.t0;
|
5468
5480
|
case 16:
|
5469
5481
|
case "end":
|
5470
5482
|
return e.stop()
|
@@ -5482,7 +5494,7 @@
|
|
5482
5494
|
i = T.pathApi, p = T.pgFunctionName, e.t1 = l, e.next = "UPDATE" === e.t1 ? 23 : 33;
|
5483
5495
|
break;
|
5484
5496
|
case 23:
|
5485
|
-
if (
|
5497
|
+
if (0 === Number(W.getPropertyValueIgnoreCaseForceEmpty(t, "changed_fields.ravien.new"))) {
|
5486
5498
|
e.next = 28;
|
5487
5499
|
break
|
5488
5500
|
}
|
@@ -5506,7 +5518,7 @@
|
|
5506
5518
|
case 41:
|
5507
5519
|
return e.abrupt("return");
|
5508
5520
|
case 42:
|
5509
|
-
return B(), Y = W.getPropertyValueIgnoreCaseForceEmpty(t, "senddata.pathApi"), y = W.getPropertyValueIgnoreCaseForceEmpty(t, "senddata.EmployeeCode"), S = W.getPropertyValueIgnoreCaseForceEmpty(t, "senddata.ParaClinReqCode"), "string" == typeof Y && "" !== Y && (i = Y), "UPDATE" === l && 1 === (
|
5521
|
+
return B(), Y = W.getPropertyValueIgnoreCaseForceEmpty(t, "senddata.pathApi"), y = W.getPropertyValueIgnoreCaseForceEmpty(t, "senddata.EmployeeCode"), S = W.getPropertyValueIgnoreCaseForceEmpty(t, "senddata.ParaClinReqCode"), "string" == typeof Y && "" !== Y && (i = Y), "UPDATE" === l && 1 === (I = Number(W.getPropertyValueIgnoreCaseForceEmpty(t, "changed_fields.xoa.new"))) && (j = W.getPropertyValueIgnoreCaseForceEmpty(t, "senddata.ParaClinReqCode"), P = W.getPropertyValueIgnoreCaseForceEmpty(t, "senddata.ParaClinRequests.0.PCReqDltVoucherNo"), i = "server/his-server/api/Connect/DTPParaClinReqDtl?ParaClinReqCode=".concat(j, "&PCReqDltVoucherNo=").concat(P), z = "DELETE", "string" == typeof Y && "" !== Y && (i = "server/his-server/api/Connect/DTPParaClinRequestOUT?ParaClinReqCode=".concat(j, "&PCReqDltVoucherNo=").concat(P)), m.logInfo("current.chidinhcls.xoaNEW === 1:".concat(JSON.stringify({
|
5510
5522
|
pathApi: i,
|
5511
5523
|
method: z,
|
5512
5524
|
payloadPathApi: Y
|
@@ -5530,7 +5542,7 @@
|
|
5530
5542
|
case 65:
|
5531
5543
|
return e.abrupt("return");
|
5532
5544
|
case 66:
|
5533
|
-
return B(), "UPDATE" === l && (
|
5545
|
+
return B(), "UPDATE" === l && (I = Number(W.getPropertyValueIgnoreCaseForceEmpty(t, "changed_fields.xoa.new")), G = (U = {}).pshxhdXoaRows, V = U.sql, 1 === I && (J = W.getPropertyValueIgnoreCaseForceEmpty(t, "sohd"), i = "server/his-server/api/Connect/DTPPrescription?PresCode=".concat(J), z = "DELETE"), m.logInfo("current.chungtu.xoaNEW === 1:".concat(JSON.stringify({
|
5534
5546
|
mutiRequests: u,
|
5535
5547
|
pshxhdXoaRows: G,
|
5536
5548
|
sql: V,
|
@@ -5544,7 +5556,7 @@
|
|
5544
5556
|
})), ee = (null == t ? void 0 : t.changed_fields) && ["loaiqh", "hotenqh", "cmndqh", "diachiqh", "dienthoaiqh"].some((function(e) {
|
5545
5557
|
var n;
|
5546
5558
|
return void 0 !== (null === (n = t.changed_fields[e]) || void 0 === n ? void 0 : n.new)
|
5547
|
-
})), !0 === Z ? (i = T.pathApi, p = "badt_dhs.getSyncADM_Ngoai") : !0 === ee ? (i = T.pathApi, p = "badt_dhs.getSyncADM") : w = !0) : (i = "server/his-server/api/SyncData/SyncDCHG", p = "badt_dhs.getSyncDCHG_Ngoai_Khambenh"),
|
5559
|
+
})), !0 === Z ? (i = T.pathApi, p = "badt_dhs.getSyncADM_Ngoai") : !0 === ee ? (i = T.pathApi, p = "badt_dhs.getSyncADM") : w = !0) : (i = "server/his-server/api/SyncData/SyncDCHG", p = "badt_dhs.getSyncDCHG_Ngoai_Khambenh"), m.logInfoObject({
|
5548
5560
|
madv_inphieuNEW: Q,
|
5549
5561
|
ngayinphieuNEW: K,
|
5550
5562
|
ngayinphieuOLD: $,
|
@@ -5614,7 +5626,7 @@
|
|
5614
5626
|
}
|
5615
5627
|
return e.next = 13, E.markRetry(t.notification_id);
|
5616
5628
|
case 13:
|
5617
|
-
|
5629
|
+
m.logError("dataSyncADM null", "dataSyncADM");
|
5618
5630
|
case 14:
|
5619
5631
|
return e.next = 16, f.sendData({
|
5620
5632
|
pathApi: T.pathApi,
|
@@ -5633,14 +5645,14 @@
|
|
5633
5645
|
case 20:
|
5634
5646
|
C = e.sent;
|
5635
5647
|
case 21:
|
5636
|
-
|
5648
|
+
m.logInfoObject({
|
5637
5649
|
apiResult: C,
|
5638
5650
|
dataSyncADM: n,
|
5639
5651
|
apiResultSyncADM: o
|
5640
5652
|
}, "Retry: Không tìm thấy người bệnh"), e.next = 27;
|
5641
5653
|
break;
|
5642
5654
|
case 24:
|
5643
|
-
e.prev = 24, e.t0 = e.catch(0),
|
5655
|
+
e.prev = 24, e.t0 = e.catch(0), m.logError(e.t0, "ERROR_ReTry_SyncADM");
|
5644
5656
|
case 27:
|
5645
5657
|
case "end":
|
5646
5658
|
return e.stop()
|
@@ -5699,7 +5711,7 @@
|
|
5699
5711
|
e.t5 = e.sent, e.t4.push.call(e.t4, e.t5), e.next = 112;
|
5700
5712
|
break;
|
5701
5713
|
case 108:
|
5702
|
-
e.prev = 108, e.t6 = e.catch(100),
|
5714
|
+
e.prev = 108, e.t6 = e.catch(100), m.logError(e.t6, "mutiRequests"), null !== e.t6 && void 0 !== e.t6 && null !== (ae = e.t6.response) && void 0 !== ae && ae.data ? C.push(e.t6.response.data) : C.push(e.t6.message);
|
5703
5715
|
case 112:
|
5704
5716
|
oe++, e.next = 99;
|
5705
5717
|
break;
|
@@ -5750,7 +5762,7 @@
|
|
5750
5762
|
case 143:
|
5751
5763
|
return e.next = 145, E.markRetry(t.notification_id);
|
5752
5764
|
case 145:
|
5753
|
-
(C + "").includes("DOCTYPE html") && (C = "ERROR:HTML"),
|
5765
|
+
(C + "").includes("DOCTYPE html") && (C = "ERROR:HTML"), m.logInfoObject({
|
5754
5766
|
apiResult: C,
|
5755
5767
|
data: r,
|
5756
5768
|
pathApi: i,
|
@@ -5760,7 +5772,7 @@
|
|
5760
5772
|
}), e.next = 152;
|
5761
5773
|
break;
|
5762
5774
|
case 149:
|
5763
|
-
e.prev = 149, e.t8 = e.catch(6),
|
5775
|
+
e.prev = 149, e.t8 = e.catch(6), m.logError(e.t8, "handleNotification");
|
5764
5776
|
case 152:
|
5765
5777
|
return e.prev = 152, !0 !== w && (ie = {
|
5766
5778
|
table_name: o,
|
@@ -5771,7 +5783,7 @@
|
|
5771
5783
|
pathApi: i,
|
5772
5784
|
resultApi: C,
|
5773
5785
|
maba: A,
|
5774
|
-
mabn:
|
5786
|
+
mabn: h,
|
5775
5787
|
makb: q,
|
5776
5788
|
type: "HISEMR"
|
5777
5789
|
}, E.insertBenhNhanSynced(ie)), e.finish(152);
|
@@ -5803,15 +5815,15 @@
|
|
5803
5815
|
}
|
5804
5816
|
return e.abrupt("return");
|
5805
5817
|
case 4:
|
5806
|
-
return x = !0,
|
5818
|
+
return x = !0, m.logInfo("Checking for unprocessed notifications..."), e.next = 9, y.query("\n SELECT payload, table_name, id \n FROM badt_dhs.notifications \n WHERE COALESCE(processed, false) = false \n AND retry_count < $1 \n ORDER BY created_at ASC \n LIMIT 10;\n ", [n]);
|
5807
5819
|
case 9:
|
5808
|
-
if (t = e.sent,
|
5820
|
+
if (t = e.sent, m.logInfoObject({
|
5809
5821
|
"rows.length": t.rows.length
|
5810
5822
|
}, "processUnprocessedNotifications"), 0 !== t.rows.length) {
|
5811
5823
|
e.next = 14;
|
5812
5824
|
break
|
5813
5825
|
}
|
5814
|
-
return
|
5826
|
+
return m.logInfo("No unprocessed notifications found."), e.abrupt("return");
|
5815
5827
|
case 14:
|
5816
5828
|
o = a(t.rows), e.prev = 15, o.s();
|
5817
5829
|
case 17:
|
@@ -5826,7 +5838,7 @@
|
|
5826
5838
|
e.next = 30;
|
5827
5839
|
break;
|
5828
5840
|
case 27:
|
5829
|
-
e.prev = 27, e.t0 = e.catch(19),
|
5841
|
+
e.prev = 27, e.t0 = e.catch(19), m.logError(e.t0, "Error - For handleNotification");
|
5830
5842
|
case 30:
|
5831
5843
|
e.next = 17;
|
5832
5844
|
break;
|
@@ -5841,7 +5853,7 @@
|
|
5841
5853
|
e.next = 45;
|
5842
5854
|
break;
|
5843
5855
|
case 42:
|
5844
|
-
e.prev = 42, e.t2 = e.catch(0),
|
5856
|
+
e.prev = 42, e.t2 = e.catch(0), m.logError(e.t2);
|
5845
5857
|
case 45:
|
5846
5858
|
return e.prev = 45, x = !1, e.finish(45);
|
5847
5859
|
case 48:
|
@@ -5861,7 +5873,7 @@
|
|
5861
5873
|
w = function() {
|
5862
5874
|
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "syncAllDanhMuc",
|
5863
5875
|
n = "E:/CLOUDCODE/dh-hos-code/dh-javascript-sources/src/EMR-DHS-PG/.gitignore/sync-omon";
|
5864
|
-
return !0 !== O.existsSync(n) && (n = u.join(process.cwd(), e),
|
5876
|
+
return !0 !== O.existsSync(n) && (n = u.join(process.cwd(), e), m.logInfo("Đang tạo thư mục ".concat(e, ": ").concat(n)), !0 !== O.existsSync(n) && O.mkdirSync(n, {
|
5865
5877
|
recursive: !0
|
5866
5878
|
})), n
|
5867
5879
|
},
|
@@ -5872,7 +5884,7 @@
|
|
5872
5884
|
for (;;) switch (e.prev = e.next) {
|
5873
5885
|
case 0:
|
5874
5886
|
e.prev = 0, n = ["current.dmdonvi", "current.dmnhanvien", "current.dmphong", "current.dmgiuongbenh", "current.dmloaicls", "current.dmcls", "current.dmkhocp", "current.dmkhoql", "current.dmthuoc", "current.dmxa4750-tinh", "current.dmxa4750-huyen", "current.dmxa4750-xa", "current.dmdantoc", "current.dmnghe"], t = {}, o = w("syncAllDanhMuc"), a = M().mark((function e() {
|
5875
|
-
var a, i, p, c, s, b, z, d, l, A,
|
5887
|
+
var a, i, p, c, s, b, z, d, l, A, h, g, L, y, v;
|
5876
5888
|
return M().wrap((function(e) {
|
5877
5889
|
for (;;) switch (e.prev = e.next) {
|
5878
5890
|
case 0:
|
@@ -5881,11 +5893,11 @@
|
|
5881
5893
|
if (!Number.isInteger(n) || n <= 0) throw new Error("Size phải là số nguyên dương");
|
5882
5894
|
for (var t = [], o = 0; o < e.length; o += n) t.push(e.slice(o, o + n));
|
5883
5895
|
return t
|
5884
|
-
}, a = n[r],
|
5896
|
+
}, a = n[r], m.logInfo("➡️ Sync danh mục: ".concat(a)), c = void 0 === (p = (i = {}).functionName) ? "" : p, b = void 0 === (s = i.pathApi) ? "" : s, "current.dmxa4750-tinh" === a ? (c = "badt_dhs.GetSyncCityProvince", void(b = "server/his-server/api/SyncData/SyncCityProvince")) : "current.dmxa4750-huyen" === a ? (c = "badt_dhs.GetSyncDistrict", void(b = "server/his-server/api/SyncData/SyncDistrict")) : "current.dmxa4750-xa" === a ? (c = "badt_dhs.GetSyncWard", void(b = "server/his-server/api/SyncData/SyncWard")) : (c = q.pgTableListener[a].name, void(b = _[a])), l = u.join(o, "".concat(a, ".success.json")), e.prev = 6, !0 === O.existsSync(l)) {
|
5885
5897
|
e.next = 45;
|
5886
5898
|
break
|
5887
5899
|
}
|
5888
|
-
return
|
5900
|
+
return m.logInfo("➡️ GetData: ".concat(a)), e.next = 11, R.query("SELECT ".concat(c, "();")).then((function(e) {
|
5889
5901
|
var n = e.rows[0];
|
5890
5902
|
return JSON.parse(n[Object.keys(n)[0]])
|
5891
5903
|
}));
|
@@ -5894,7 +5906,7 @@
|
|
5894
5906
|
return n === t.findIndex((function(n) {
|
5895
5907
|
return JSON.stringify(n) === JSON.stringify(e)
|
5896
5908
|
}))
|
5897
|
-
})), O.writeFileSync(u.join(o, "".concat(a, ".rawdata.json")), JSON.stringify(d, null, 2)),
|
5909
|
+
})), O.writeFileSync(u.join(o, "".concat(a, ".rawdata.json")), JSON.stringify(d, null, 2)), m.logInfo("➡️ SendData: ".concat(a)), (h = parseInt(process.env.SYNCDATA_ITEM, 10) || 2e3) <= 0 && (h = 2e3), 1 !== (g = A(d, h)).length) {
|
5898
5910
|
e.next = 24;
|
5899
5911
|
break
|
5900
5912
|
}
|
@@ -5919,7 +5931,7 @@
|
|
5919
5931
|
e.next = 37;
|
5920
5932
|
break
|
5921
5933
|
}
|
5922
|
-
return
|
5934
|
+
return m.logInfo("➡️ SendData (chunks: ".concat(h, ") [").concat(L + 1, "/").concat(g.length, "]: ").concat(a)), e.next = 30, f.sendData({
|
5923
5935
|
pathApi: b,
|
5924
5936
|
data: g[L]
|
5925
5937
|
});
|
@@ -5961,7 +5973,7 @@
|
|
5961
5973
|
error: W.stringifyForceEmpty(e.t0)
|
5962
5974
|
}, null, 2));
|
5963
5975
|
case 54:
|
5964
|
-
return e.prev = 54,
|
5976
|
+
return e.prev = 54, m.logInfo(t[a]), e.finish(54);
|
5965
5977
|
case 57:
|
5966
5978
|
case "end":
|
5967
5979
|
return e.stop()
|
@@ -5980,7 +5992,7 @@
|
|
5980
5992
|
r++, e.next = 6;
|
5981
5993
|
break;
|
5982
5994
|
case 11:
|
5983
|
-
|
5995
|
+
m.logInfoObject(t, "syncAllDanhMuc"), e.next = 17;
|
5984
5996
|
break;
|
5985
5997
|
case 14:
|
5986
5998
|
throw e.prev = 14, e.t1 = e.catch(0), e.t1;
|
@@ -6007,8 +6019,8 @@
|
|
6007
6019
|
success: 0,
|
6008
6020
|
fail: 0,
|
6009
6021
|
dsFails: []
|
6010
|
-
} : p, s = n.err, b = w("syncBnnoitru"), e.prev = 2,
|
6011
|
-
var n, t, a, p, s, z, l, A,
|
6022
|
+
} : p, s = n.err, b = w("syncBnnoitru"), e.prev = 2, m.logInfo("➡️ GetPgData: Bnnoitru"), e.next = 6, d(M().mark((function e() {
|
6023
|
+
var n, t, a, p, s, z, l, A, h, q, _;
|
6012
6024
|
return M().wrap((function(e) {
|
6013
6025
|
for (;;) switch (e.prev = e.next) {
|
6014
6026
|
case 0:
|
@@ -6023,7 +6035,7 @@
|
|
6023
6035
|
case 4:
|
6024
6036
|
return e.abrupt("return", e.sent);
|
6025
6037
|
case 7:
|
6026
|
-
return e.prev = 7, e.t0 = e.catch(1),
|
6038
|
+
return e.prev = 7, e.t0 = e.catch(1), m.logError(e.t0, "songaylui"), e.abrupt("return", n);
|
6027
6039
|
case 11:
|
6028
6040
|
case "end":
|
6029
6041
|
return e.stop()
|
@@ -6037,7 +6049,7 @@
|
|
6037
6049
|
return e.rows
|
6038
6050
|
}));
|
6039
6051
|
case 13:
|
6040
|
-
if (i = e.sent,
|
6052
|
+
if (i = e.sent, m.logInfoObject({
|
6041
6053
|
countRow: i.length,
|
6042
6054
|
songaylui: n,
|
6043
6055
|
sql: t
|
@@ -6051,7 +6063,7 @@
|
|
6051
6063
|
e.next = 42;
|
6052
6064
|
break
|
6053
6065
|
}
|
6054
|
-
if (p = i[a], s = p.mabn, z = p.makb, l = p.maba, A = "".concat(s, "-").concat(z, "-").concat(l),
|
6066
|
+
if (p = i[a], s = p.mabn, z = p.makb, l = p.maba, A = "".concat(s, "-").concat(z, "-").concat(l), h = u.join(b, "".concat(A, ".success.json")), m.logInfo("➡️ SyncData: Bnnoitru [".concat(a + 1, "/").concat(i.length, "]:").concat(A)), !0 !== O.existsSync(h)) {
|
6055
6067
|
e.next = 25;
|
6056
6068
|
break
|
6057
6069
|
}
|
@@ -6072,7 +6084,7 @@
|
|
6072
6084
|
case 35:
|
6073
6085
|
e.prev = 35, e.t0 = e.catch(29), q = null !== e.t0 && void 0 !== e.t0 && null !== (_ = e.t0.response) && void 0 !== _ && _.data ? e.t0.response.data : e.t0;
|
6074
6086
|
case 38:
|
6075
|
-
!0 === f.ResOK(q) ? (c.success++, O.writeFileSync(
|
6087
|
+
!0 === f.ResOK(q) ? (c.success++, O.writeFileSync(h, JSON.stringify({
|
6076
6088
|
apiResult: q,
|
6077
6089
|
pgData: i[a]
|
6078
6090
|
}, null, 2))) : (c.fail++, c.dsFails.push({
|
@@ -6102,7 +6114,7 @@
|
|
6102
6114
|
error: W.stringifyForceEmpty(s),
|
6103
6115
|
pathApi: o,
|
6104
6116
|
pgFunctionName: r
|
6105
|
-
}, null, 2)),
|
6117
|
+
}, null, 2)), m.logInfoObject(c, "🔚 Sync Bnnoitru 🔚"), e.finish(13);
|
6106
6118
|
case 17:
|
6107
6119
|
case "end":
|
6108
6120
|
return e.stop()
|
@@ -6127,7 +6139,7 @@
|
|
6127
6139
|
success: 0,
|
6128
6140
|
fail: 0,
|
6129
6141
|
dsFails: []
|
6130
|
-
} : p, s = n.err, b = w("psdangkySyncDCHG"), e.prev = 2,
|
6142
|
+
} : p, s = n.err, b = w("psdangkySyncDCHG"), e.prev = 2, m.logInfo("➡️ GetPgData: psdangkySyncDCHG"), e.next = 6, d(M().mark((function e() {
|
6131
6143
|
return M().wrap((function(e) {
|
6132
6144
|
for (;;) switch (e.prev = e.next) {
|
6133
6145
|
case 0:
|
@@ -6137,7 +6149,7 @@
|
|
6137
6149
|
case 5:
|
6138
6150
|
return e.abrupt("return", e.sent);
|
6139
6151
|
case 8:
|
6140
|
-
return e.prev = 8, e.t0 = e.catch(0),
|
6152
|
+
return e.prev = 8, e.t0 = e.catch(0), m.logError(e.t0, "NGAYDK"), e.abrupt("return", "");
|
6141
6153
|
case 12:
|
6142
6154
|
case "end":
|
6143
6155
|
return e.stop()
|
@@ -6156,7 +6168,7 @@
|
|
6156
6168
|
return e.rows
|
6157
6169
|
}));
|
6158
6170
|
case 10:
|
6159
|
-
if (i = e.sent,
|
6171
|
+
if (i = e.sent, m.logInfoObject({
|
6160
6172
|
countRow: i.length,
|
6161
6173
|
ngaydk: c.NGAYDK,
|
6162
6174
|
sql: n
|
@@ -6170,7 +6182,7 @@
|
|
6170
6182
|
e.next = 36;
|
6171
6183
|
break
|
6172
6184
|
}
|
6173
|
-
return a = i[t], p = a.mabn, s = a.makb, b = "".concat(p, "-").concat(s),
|
6185
|
+
return a = i[t], p = a.mabn, s = a.makb, b = "".concat(p, "-").concat(s), m.logInfo("➡️ SyncData: psdangkySyncDCHG [".concat(t + 1, "/").concat(i.length, "]:").concat(b)), e.next = 21, R.query("SELECT ".concat(r, "('").concat(p, "','").concat(s, "');")).then((function(e) {
|
6174
6186
|
var n = e.rows[0];
|
6175
6187
|
return JSON.parse(n[Object.keys(n)[0]])
|
6176
6188
|
}));
|
@@ -6212,7 +6224,7 @@
|
|
6212
6224
|
error: W.stringifyForceEmpty(s),
|
6213
6225
|
pathApi: o,
|
6214
6226
|
pgFunctionName: r
|
6215
|
-
}, null, 2)),
|
6227
|
+
}, null, 2)), m.logInfoObject(c, "🔚 Sync psdangkySyncDCHG 🔚"), e.finish(16);
|
6216
6228
|
case 20:
|
6217
6229
|
case "end":
|
6218
6230
|
return e.stop()
|
@@ -6227,7 +6239,7 @@
|
|
6227
6239
|
}(),
|
6228
6240
|
X = function() {
|
6229
6241
|
var e = d(M().mark((function e() {
|
6230
|
-
var n, t, a, r, i, p, c, s, b, z, l, A,
|
6242
|
+
var n, t, a, r, i, p, c, s, b, z, l, A, h, q, _, g, y, v, E, N;
|
6231
6243
|
return M().wrap((function(e) {
|
6232
6244
|
for (;;) switch (e.prev = e.next) {
|
6233
6245
|
case 0:
|
@@ -6235,7 +6247,7 @@
|
|
6235
6247
|
songaylui: 0,
|
6236
6248
|
dsDonvi: [],
|
6237
6249
|
dsHIS: []
|
6238
|
-
} : t, r = n.err, i = w("checkHosoEMR"), e.prev = 2,
|
6250
|
+
} : t, r = n.err, i = w("checkHosoEMR"), e.prev = 2, m.logInfo("➡️ GetPgData: checkHosoEMR"), e.next = 6, d(M().mark((function e() {
|
6239
6251
|
return M().wrap((function(e) {
|
6240
6252
|
for (;;) switch (e.prev = e.next) {
|
6241
6253
|
case 0:
|
@@ -6266,7 +6278,7 @@
|
|
6266
6278
|
case 4:
|
6267
6279
|
return e.abrupt("return", e.sent);
|
6268
6280
|
case 7:
|
6269
|
-
return e.prev = 7, e.t0 = e.catch(1),
|
6281
|
+
return e.prev = 7, e.t0 = e.catch(1), m.logError(e.t0, "songaylui"), e.abrupt("return", n);
|
6270
6282
|
case 11:
|
6271
6283
|
case "end":
|
6272
6284
|
return e.stop()
|
@@ -6366,7 +6378,7 @@
|
|
6366
6378
|
})))();
|
6367
6379
|
case 10:
|
6368
6380
|
return a[t].countHIS = e.sent, e.next = 13, d(M().mark((function e() {
|
6369
|
-
var n, o, i, p, c, s, b, z, d, O, u, l, A,
|
6381
|
+
var n, o, i, p, c, s, b, z, d, O, u, l, A, h;
|
6370
6382
|
return M().wrap((function(e) {
|
6371
6383
|
for (;;) switch (e.prev = e.next) {
|
6372
6384
|
case 0:
|
@@ -6376,7 +6388,7 @@
|
|
6376
6388
|
e.next = 36;
|
6377
6389
|
break
|
6378
6390
|
}
|
6379
|
-
return o = a[t].dsEMR[n], i = o.mabn, p = o.makb, c = o.maba, s = o.PatientName,
|
6391
|
+
return o = a[t].dsEMR[n], i = o.mabn, p = o.makb, c = o.maba, s = o.PatientName, m.logInfo("Xử lý [".concat(t, "-").concat(r, "] [").concat(n + 1, "/").concat(a[t].dsEMR.length, "]: ").concat(c, " - ").concat(s, " ")), b = "", b += " SELECT COALESCE(nt.ravien,0) AS ravien ", b += " FROM current.bnnoitru AS nt ", b += " WHERE COALESCE(xoa,0) = 0 ", b += " AND COALESCE(namvien,0) = 1 ", b += " AND mabn = '".concat(i, "' "), b += " AND makb = '".concat(p, "' "), b += " AND maba = '".concat(c, "' "), e.next = 14, R.query(b).then((function(e) {
|
6380
6392
|
var n, t;
|
6381
6393
|
return null !== (n = null === (t = e.rows[0]) || void 0 === t ? void 0 : t.ravien) && void 0 !== n ? n : ""
|
6382
6394
|
}));
|
@@ -6398,7 +6410,7 @@
|
|
6398
6410
|
u = e.sent, e.next = 32;
|
6399
6411
|
break;
|
6400
6412
|
case 29:
|
6401
|
-
e.prev = 29, e.t0 = e.catch(23), u = null !== e.t0 && void 0 !== e.t0 && null !== (
|
6413
|
+
e.prev = 29, e.t0 = e.catch(23), u = null !== e.t0 && void 0 !== e.t0 && null !== (h = e.t0.response) && void 0 !== h && h.data ? e.t0.response.data : e.t0;
|
6402
6414
|
case 32:
|
6403
6415
|
!0 === f.ResOK(u) ? (a[t].dsEMR[n].apiResult = !0, a[t].countRavienEMRSuccess = parseInt(a[t].countRavienEMRSuccess || 0) + 1) : (a[t].dsEMR[n].apiResult = {
|
6404
6416
|
data: O,
|
@@ -6556,7 +6568,7 @@
|
|
6556
6568
|
e.next = 62;
|
6557
6569
|
break
|
6558
6570
|
}
|
6559
|
-
return b = a.dsOnEMR[s], z = b.PatientCode, l = b.AdmissionCode, A = b.MedicalRecordNo,
|
6571
|
+
return b = a.dsOnEMR[s], z = b.PatientCode, l = b.AdmissionCode, A = b.MedicalRecordNo, h = "", h += " SELECT COALESCE(nt.ravien,0) AS ravien ", h += " FROM current.bnnoitru AS nt ", h += " WHERE COALESCE(xoa,0) = 0 ", h += " AND COALESCE(namvien,0) = 1 ", h += " AND mabn = '".concat(z, "' "), h += " AND makb = '".concat(l, "' "), h += " AND maba = '".concat(A, "' "), e.next = 41, R.query(h).then((function(e) {
|
6560
6572
|
var n, t;
|
6561
6573
|
return null !== (n = null === (t = e.rows[0]) || void 0 === t ? void 0 : t.ravien) && void 0 !== n ? n : ""
|
6562
6574
|
}));
|
@@ -6583,7 +6595,7 @@
|
|
6583
6595
|
!0 === f.ResOK(y) ? a.success++ : (a.fail++, a.dsFails.push({
|
6584
6596
|
data: g,
|
6585
6597
|
apiResult: y
|
6586
|
-
})),
|
6598
|
+
})), m.logInfoObject({
|
6587
6599
|
mabn: z,
|
6588
6600
|
makb: l,
|
6589
6601
|
maba: A,
|
@@ -6606,7 +6618,7 @@
|
|
6606
6618
|
return e.rows
|
6607
6619
|
}));
|
6608
6620
|
case 10:
|
6609
|
-
if (pgData = e.sent,
|
6621
|
+
if (pgData = e.sent, m.logInfoObject({
|
6610
6622
|
countRow: pgData.length,
|
6611
6623
|
ngaydk: a.NGAYDK,
|
6612
6624
|
sql: n
|
@@ -6620,7 +6632,7 @@
|
|
6620
6632
|
e.next = 36;
|
6621
6633
|
break
|
6622
6634
|
}
|
6623
|
-
return o = pgData[t], r = o.mabn, i = o.makb, p = "".concat(r, "-").concat(i),
|
6635
|
+
return o = pgData[t], r = o.mabn, i = o.makb, p = "".concat(r, "-").concat(i), m.logInfo("➡️ SyncData: psdangkySyncDCHG [".concat(t + 1, "/").concat(pgData.length, "]:").concat(p)), e.next = 21, R.query("SELECT ".concat(pgFunctionName, "('").concat(r, "','").concat(i, "');")).then((function(e) {
|
6624
6636
|
var n = e.rows[0];
|
6625
6637
|
return JSON.parse(n[Object.keys(n)[0]])
|
6626
6638
|
}));
|
@@ -6659,7 +6671,7 @@
|
|
6659
6671
|
return e.prev = 75, O.writeFileSync(u.join(i, "checkHosoEMR.json"), JSON.stringify({
|
6660
6672
|
status: a,
|
6661
6673
|
error: W.stringifyForceEmpty(r)
|
6662
|
-
}, null, 2)),
|
6674
|
+
}, null, 2)), m.logInfoObject(a, "🔚 checkHosoEMR 🔚"), e.finish(75);
|
6663
6675
|
case 79:
|
6664
6676
|
case "end":
|
6665
6677
|
return e.stop()
|
@@ -6683,7 +6695,7 @@
|
|
6683
6695
|
if ("current.psdangky" === n) return !0;
|
6684
6696
|
if ("current.chidinhcls" === n) return !0
|
6685
6697
|
} catch (e) {
|
6686
|
-
|
6698
|
+
m.logError(e, "directHandled")
|
6687
6699
|
}
|
6688
6700
|
return !1
|
6689
6701
|
}() ? S(e) : v.add(e, S)
|
@@ -7362,16 +7374,16 @@
|
|
7362
7374
|
A = function(e) {
|
7363
7375
|
return e.replace(/[|\\{()[^$+*?.-]/g, "\\$&")
|
7364
7376
|
},
|
7365
|
-
|
7377
|
+
h = function(e, n) {
|
7366
7378
|
for (void 0 === n && (n = 2), e = String(e); e.length < n;) e = "0" + e;
|
7367
7379
|
return e
|
7368
7380
|
},
|
7369
|
-
|
7381
|
+
m = {
|
7370
7382
|
D: function(e) {
|
7371
7383
|
return String(e.getDate())
|
7372
7384
|
},
|
7373
7385
|
DD: function(e) {
|
7374
|
-
return
|
7386
|
+
return h(e.getDate())
|
7375
7387
|
},
|
7376
7388
|
Do: function(e, n) {
|
7377
7389
|
return n.DoFn(e.getDate())
|
@@ -7380,7 +7392,7 @@
|
|
7380
7392
|
return String(e.getDay())
|
7381
7393
|
},
|
7382
7394
|
dd: function(e) {
|
7383
|
-
return
|
7395
|
+
return h(e.getDay())
|
7384
7396
|
},
|
7385
7397
|
ddd: function(e, n) {
|
7386
7398
|
return n.dayNamesShort[e.getDay()]
|
@@ -7392,7 +7404,7 @@
|
|
7392
7404
|
return String(e.getMonth() + 1)
|
7393
7405
|
},
|
7394
7406
|
MM: function(e) {
|
7395
|
-
return
|
7407
|
+
return h(e.getMonth() + 1)
|
7396
7408
|
},
|
7397
7409
|
MMM: function(e, n) {
|
7398
7410
|
return n.monthNamesShort[e.getMonth()]
|
@@ -7401,43 +7413,43 @@
|
|
7401
7413
|
return n.monthNames[e.getMonth()]
|
7402
7414
|
},
|
7403
7415
|
YY: function(e) {
|
7404
|
-
return
|
7416
|
+
return h(String(e.getFullYear()), 4).substr(2)
|
7405
7417
|
},
|
7406
7418
|
YYYY: function(e) {
|
7407
|
-
return
|
7419
|
+
return h(e.getFullYear(), 4)
|
7408
7420
|
},
|
7409
7421
|
h: function(e) {
|
7410
7422
|
return String(e.getHours() % 12 || 12)
|
7411
7423
|
},
|
7412
7424
|
hh: function(e) {
|
7413
|
-
return
|
7425
|
+
return h(e.getHours() % 12 || 12)
|
7414
7426
|
},
|
7415
7427
|
H: function(e) {
|
7416
7428
|
return String(e.getHours())
|
7417
7429
|
},
|
7418
7430
|
HH: function(e) {
|
7419
|
-
return
|
7431
|
+
return h(e.getHours())
|
7420
7432
|
},
|
7421
7433
|
m: function(e) {
|
7422
7434
|
return String(e.getMinutes())
|
7423
7435
|
},
|
7424
7436
|
mm: function(e) {
|
7425
|
-
return
|
7437
|
+
return h(e.getMinutes())
|
7426
7438
|
},
|
7427
7439
|
s: function(e) {
|
7428
7440
|
return String(e.getSeconds())
|
7429
7441
|
},
|
7430
7442
|
ss: function(e) {
|
7431
|
-
return
|
7443
|
+
return h(e.getSeconds())
|
7432
7444
|
},
|
7433
7445
|
S: function(e) {
|
7434
7446
|
return String(Math.round(e.getMilliseconds() / 100))
|
7435
7447
|
},
|
7436
7448
|
SS: function(e) {
|
7437
|
-
return
|
7449
|
+
return h(Math.round(e.getMilliseconds() / 10), 2)
|
7438
7450
|
},
|
7439
7451
|
SSS: function(e) {
|
7440
|
-
return
|
7452
|
+
return h(e.getMilliseconds(), 3)
|
7441
7453
|
},
|
7442
7454
|
a: function(e, n) {
|
7443
7455
|
return e.getHours() < 12 ? n.amPm[0] : n.amPm[1]
|
@@ -7447,11 +7459,11 @@
|
|
7447
7459
|
},
|
7448
7460
|
ZZ: function(e) {
|
7449
7461
|
var n = e.getTimezoneOffset();
|
7450
|
-
return (n > 0 ? "-" : "+") +
|
7462
|
+
return (n > 0 ? "-" : "+") + h(100 * Math.floor(Math.abs(n) / 60) + Math.abs(n) % 60, 4)
|
7451
7463
|
},
|
7452
7464
|
Z: function(e) {
|
7453
7465
|
var n = e.getTimezoneOffset();
|
7454
|
-
return (n > 0 ? "-" : "+") +
|
7466
|
+
return (n > 0 ? "-" : "+") + h(Math.floor(Math.abs(n) / 60), 2) + ":" + h(Math.abs(n) % 60, 2)
|
7455
7467
|
}
|
7456
7468
|
},
|
7457
7469
|
f = function(e) {
|
@@ -7534,7 +7546,7 @@
|
|
7534
7546
|
}));
|
7535
7547
|
var r = b(b({}, u), t);
|
7536
7548
|
return (n = n.replace(o, (function(n) {
|
7537
|
-
return
|
7549
|
+
return m[n](e, r)
|
7538
7550
|
}))).replace(/@@@/g, (function() {
|
7539
7551
|
return a.shift()
|
7540
7552
|
}))
|
@@ -7576,12 +7588,12 @@
|
|
7576
7588
|
var z = e.match(new RegExp(c, "i"));
|
7577
7589
|
if (!z) return null;
|
7578
7590
|
for (var d, O = b(b({}, u), t), l = 1; l < z.length; l++) {
|
7579
|
-
var
|
7580
|
-
|
7581
|
-
f =
|
7591
|
+
var h = r[l - 1],
|
7592
|
+
m = h[0],
|
7593
|
+
f = h[2],
|
7582
7594
|
q = f ? f(z[l], O) : +z[l];
|
7583
7595
|
if (null == q) return null;
|
7584
|
-
a[
|
7596
|
+
a[m] = q
|
7585
7597
|
}
|
7586
7598
|
if (1 === a.isPm && null != a.hour && 12 != +a.hour ? a.hour = +a.hour + 12 : 0 === a.isPm && 12 == +a.hour && (a.hour = 0), null == a.timezoneOffset) {
|
7587
7599
|
d = new Date(a.year, a.month, a.day, a.hour, a.minute, a.second, a.millisecond);
|
@@ -7764,12 +7776,12 @@
|
|
7764
7776
|
l = 0,
|
7765
7777
|
A = 0;
|
7766
7778
|
e.size && (u = c.parseFileSize(e.size));
|
7767
|
-
var
|
7768
|
-
n && "daily" == n.type && (e.date_format || (
|
7769
|
-
var
|
7779
|
+
var h = e.date_format || b;
|
7780
|
+
n && "daily" == n.type && (e.date_format || (h = "YYYY-MM-DD"), r().format(h) == r().endOf("day").format(h) && r().format(h) != r().add(1, "day").format(h) || (M.verbose && console.log(new Date, "[FileStreamRotator] Changing type to custom as date format changes more often than once a day or not every day"), n.type = "custom")), n && (i = e.frequency ? M.getDate(n, h, e.utc) : ""), e.create_symlink = e.create_symlink || !1, e.extension = e.extension || "";
|
7781
|
+
var m = e.filename,
|
7770
7782
|
f = null,
|
7771
|
-
q =
|
7772
|
-
if (
|
7783
|
+
q = m + (i ? "." + i : "");
|
7784
|
+
if (m.match(/%DATE%/) && (q = m.replace(/%DATE%/g, i || M.getDate(null, h, e.utc))), u) {
|
7773
7785
|
var _ = null,
|
7774
7786
|
W = q;
|
7775
7787
|
if (O && O.files && O.files instanceof Array && O.files.length > 0) {
|
@@ -7838,10 +7850,10 @@
|
|
7838
7850
|
v && "function" == v.end && v.end(), v = o.createWriteStream(e, R), N.emit("new", e), d(v, N)
|
7839
7851
|
}
|
7840
7852
|
})), N.write = function(a, r) {
|
7841
|
-
var p = n ? this.getDate(n,
|
7853
|
+
var p = n ? this.getDate(n, h, e.utc) : i;
|
7842
7854
|
if (p != i || u && A > u) {
|
7843
|
-
var c =
|
7844
|
-
|
7855
|
+
var c = m + (i && n ? "." + p : "");
|
7856
|
+
m.match(/%DATE%/) && i && (c = m.replace(/%DATE%/g, p)), u && A > u ? c += "." + ++l + e.extension : (l = 0, c += e.extension), A = 0, M.verbose && console.log(new Date, t(9023).format("[FileStreamRotator] Changing logs from %s to %s", q, c)), i = p, f = q, q = c, !0 === e.end_stream ? v.end() : v.destroy(), z(q), v = o.createWriteStream(c, R), N.emit("new", c), N.emit("rotate", f, c), d(v, N)
|
7845
7857
|
}
|
7846
7858
|
v.write(a, r), A += Buffer.byteLength(a, r)
|
7847
7859
|
}.bind(this), process.nextTick((function() {
|
@@ -7922,8 +7934,8 @@
|
|
7922
7934
|
}
|
7923
7935
|
}));
|
7924
7936
|
var A = N("ERR_INVALID_URL", "Invalid URL", TypeError),
|
7925
|
-
|
7926
|
-
|
7937
|
+
h = N("ERR_FR_REDIRECTION_FAILURE", "Redirected request failed"),
|
7938
|
+
m = N("ERR_FR_TOO_MANY_REDIRECTS", "Maximum number of redirects exceeded", h),
|
7927
7939
|
f = N("ERR_FR_MAX_BODY_LENGTH_EXCEEDED", "Request body larger than maxBodyLength limit"),
|
7928
7940
|
q = N("ERR_STREAM_WRITE_AFTER_END", "write after end"),
|
7929
7941
|
_ = b.prototype.destroy || L;
|
@@ -7935,7 +7947,7 @@
|
|
7935
7947
|
try {
|
7936
7948
|
t._processResponse(e)
|
7937
7949
|
} catch (e) {
|
7938
|
-
t.emit("error", e instanceof
|
7950
|
+
t.emit("error", e instanceof h ? e : new h({
|
7939
7951
|
cause: e
|
7940
7952
|
}))
|
7941
7953
|
}
|
@@ -8129,7 +8141,7 @@
|
|
8129
8141
|
});
|
8130
8142
|
var t, o = e.headers.location;
|
8131
8143
|
if (!o || !1 === this._options.followRedirects || n < 300 || n >= 400) return e.responseUrl = this._currentUrl, e.redirects = this._redirects, this.emit("response", e), void(this._requestBodyBuffers = []);
|
8132
|
-
if (T(this._currentRequest), e.destroy(), ++this._redirectCount > this._options.maxRedirects) throw new
|
8144
|
+
if (T(this._currentRequest), e.destroy(), ++this._redirectCount > this._options.maxRedirects) throw new m;
|
8133
8145
|
var a = this._options.beforeRedirect;
|
8134
8146
|
a && (t = Object.assign({
|
8135
8147
|
Host: e.req.getHeader("host")
|
@@ -8148,7 +8160,7 @@
|
|
8148
8160
|
var t = e.length - n.length - 1;
|
8149
8161
|
return t > 0 && "." === e[t] && e.endsWith(n)
|
8150
8162
|
}(A.host, u)) && E(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers), x(a)) {
|
8151
|
-
var
|
8163
|
+
var h = {
|
8152
8164
|
headers: e.headers,
|
8153
8165
|
statusCode: n
|
8154
8166
|
},
|
@@ -8157,7 +8169,7 @@
|
|
8157
8169
|
method: r,
|
8158
8170
|
headers: t
|
8159
8171
|
};
|
8160
|
-
a(this._options,
|
8172
|
+
a(this._options, h, f), this._sanitizeOptions(this._options)
|
8161
8173
|
}
|
8162
8174
|
this._performRequest()
|
8163
8175
|
}, e.exports = g({
|
@@ -8351,11 +8363,11 @@
|
|
8351
8363
|
u = t(8002),
|
8352
8364
|
l = t(5880),
|
8353
8365
|
A = t(414),
|
8354
|
-
|
8355
|
-
|
8366
|
+
h = t(3093),
|
8367
|
+
m = Function,
|
8356
8368
|
f = function(e) {
|
8357
8369
|
try {
|
8358
|
-
return
|
8370
|
+
return m('"use strict"; return (' + e + ").constructor;")()
|
8359
8371
|
} catch (e) {}
|
8360
8372
|
},
|
8361
8373
|
q = t(5795),
|
@@ -8411,7 +8423,7 @@
|
|
8411
8423
|
"%Float32Array%": "undefined" == typeof Float32Array ? o : Float32Array,
|
8412
8424
|
"%Float64Array%": "undefined" == typeof Float64Array ? o : Float64Array,
|
8413
8425
|
"%FinalizationRegistry%": "undefined" == typeof FinalizationRegistry ? o : FinalizationRegistry,
|
8414
|
-
"%Function%":
|
8426
|
+
"%Function%": m,
|
8415
8427
|
"%GeneratorFunction%": T,
|
8416
8428
|
"%Int8Array%": "undefined" == typeof Int8Array ? o : Int8Array,
|
8417
8429
|
"%Int16Array%": "undefined" == typeof Int16Array ? o : Int16Array,
|
@@ -8462,7 +8474,7 @@
|
|
8462
8474
|
"%Math.min%": u,
|
8463
8475
|
"%Math.pow%": l,
|
8464
8476
|
"%Math.round%": A,
|
8465
|
-
"%Math.sign%":
|
8477
|
+
"%Math.sign%": h,
|
8466
8478
|
"%Reflect.getPrototypeOf%": v
|
8467
8479
|
};
|
8468
8480
|
if (y) try {
|
@@ -8543,9 +8555,9 @@
|
|
8543
8555
|
B = t(9957),
|
8544
8556
|
X = C.call(N, Array.prototype.concat),
|
8545
8557
|
Y = C.call(E, Array.prototype.splice),
|
8546
|
-
|
8547
|
-
|
8548
|
-
|
8558
|
+
I = C.call(N, String.prototype.replace),
|
8559
|
+
j = C.call(N, String.prototype.slice),
|
8560
|
+
P = C.call(N, RegExp.prototype.exec),
|
8549
8561
|
H = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,
|
8550
8562
|
F = /\\(\\)?/g,
|
8551
8563
|
U = function(e, n) {
|
@@ -8564,15 +8576,15 @@
|
|
8564
8576
|
e.exports = function(e, n) {
|
8565
8577
|
if ("string" != typeof e || 0 === e.length) throw new b("intrinsic name must be a non-empty string");
|
8566
8578
|
if (arguments.length > 1 && "boolean" != typeof n) throw new b('"allowMissing" argument must be a boolean');
|
8567
|
-
if (null ===
|
8579
|
+
if (null === P(/^%?[^%]*%?$/, e)) throw new s("`%` may not be present anywhere but at the beginning and end of the intrinsic name");
|
8568
8580
|
var t = function(e) {
|
8569
|
-
var n =
|
8570
|
-
t =
|
8581
|
+
var n = j(e, 0, 1),
|
8582
|
+
t = j(e, -1);
|
8571
8583
|
if ("%" === n && "%" !== t) throw new s("invalid intrinsic syntax, expected closing `%`");
|
8572
8584
|
if ("%" === t && "%" !== n) throw new s("invalid intrinsic syntax, expected opening `%`");
|
8573
8585
|
var o = [];
|
8574
|
-
return
|
8575
|
-
o[o.length] = t ?
|
8586
|
+
return I(e, H, (function(e, n, t, a) {
|
8587
|
+
o[o.length] = t ? I(a, F, "$1") : n || e
|
8576
8588
|
})), o
|
8577
8589
|
}(e),
|
8578
8590
|
o = t.length > 0 ? t[0] : "",
|
@@ -8584,8 +8596,8 @@
|
|
8584
8596
|
c && (o = c[0], Y(t, X([0, 1], c)));
|
8585
8597
|
for (var M = 1, z = !0; M < t.length; M += 1) {
|
8586
8598
|
var d = t[M],
|
8587
|
-
O =
|
8588
|
-
u =
|
8599
|
+
O = j(d, 0, 1),
|
8600
|
+
u = j(d, -1);
|
8589
8601
|
if (('"' === O || "'" === O || "`" === O || '"' === u || "'" === u || "`" === u) && O !== u) throw new s("property names with quotes must have matching quotes");
|
8590
8602
|
if ("constructor" !== d && z || (p = !0), B(x, r = "%" + (o += "." + d) + "%")) i = x[r];
|
8591
8603
|
else if (null != i) {
|
@@ -9270,11 +9282,11 @@
|
|
9270
9282
|
"GMT" === (t = t && t[0] ? (t = t[0].match(/[A-Z]/g)) ? t.join("") : void 0 : (t = n.match(/[A-Z]{3,5}/g)) ? t[0] : void 0) && (t = void 0), this.at = +e, this.abbr = t, this.offset = e.getTimezoneOffset()
|
9271
9283
|
}
|
9272
9284
|
|
9273
|
-
function
|
9285
|
+
function h(e) {
|
9274
9286
|
this.zone = e, this.offsetScore = 0, this.abbrScore = 0
|
9275
9287
|
}
|
9276
9288
|
|
9277
|
-
function
|
9289
|
+
function m(e, n) {
|
9278
9290
|
for (var t, o; o = 6e4 * ((n.at - e.at) / 12e4 | 0);)(t = new A(new Date(e.at + o))).offset === e.offset ? e = t : n = t;
|
9279
9291
|
return e
|
9280
9292
|
}
|
@@ -9315,7 +9327,7 @@
|
|
9315
9327
|
r = new A(new Date(a, 0, 1)),
|
9316
9328
|
i = r.offset,
|
9317
9329
|
p = [r];
|
9318
|
-
for (o = 1; o < 48; o++)(t = new Date(a, o, 1).getTimezoneOffset()) !== i && (e =
|
9330
|
+
for (o = 1; o < 48; o++)(t = new Date(a, o, 1).getTimezoneOffset()) !== i && (e = m(r, n = new A(new Date(a, o, 1))), p.push(e), p.push(new A(new Date(e.at + 6e4))), r = n, i = t);
|
9319
9331
|
for (o = 0; o < 4; o++) p.push(new A(new Date(a + o, 0, 1))), p.push(new A(new Date(a + o, 6, 1)));
|
9320
9332
|
return p
|
9321
9333
|
}(),
|
@@ -9323,7 +9335,7 @@
|
|
9323
9335
|
c = _(i),
|
9324
9336
|
s = [];
|
9325
9337
|
for (o = 0; o < c.length; o++) {
|
9326
|
-
for (t = new
|
9338
|
+
for (t = new h(y(c[o]), p), a = 0; a < p; a++) t.scoreOffsetAt(i[a]);
|
9327
9339
|
s.push(t)
|
9328
9340
|
}
|
9329
9341
|
return s.sort(f), s.length > 0 ? s[0].zone.name : void 0
|
@@ -9402,7 +9414,7 @@
|
|
9402
9414
|
utcOffset: function(e) {
|
9403
9415
|
return this.offsets[this._index(e)]
|
9404
9416
|
}
|
9405
|
-
},
|
9417
|
+
}, h.prototype.scoreOffsetAt = function(e) {
|
9406
9418
|
this.offsetScore += Math.abs(this.zone.utcOffset(e.at) - e.offset), this.zone.abbr(e.at).replace(/[^A-Z]/g, "") !== e.abbr && this.abbrScore++
|
9407
9419
|
}, N.version = "0.5.45", N.dataVersion = "", N._zones = t, N._links = o, N._names = r, N._countries = a, N.add = L, N.link = R, N.load = function(e) {
|
9408
9420
|
L(e.zones), R(e.links),
|
@@ -19862,7 +19874,7 @@
|
|
19862
19874
|
return null == e._pf && (e._pf = l()), e._pf
|
19863
19875
|
}
|
19864
19876
|
|
19865
|
-
function
|
19877
|
+
function h(e) {
|
19866
19878
|
var n = null,
|
19867
19879
|
t = !1,
|
19868
19880
|
a = e._d && !isNaN(e._d.getTime());
|
@@ -19871,7 +19883,7 @@
|
|
19871
19883
|
})), a = n.overflow < 0 && !n.empty && !n.invalidEra && !n.invalidMonth && !n.invalidWeekday && !n.weekdayMismatch && !n.nullInput && !n.invalidFormat && !n.userInvalidated && (!n.meridiem || n.meridiem && t), e._strict && (a = a && 0 === n.charsLeftOver && 0 === n.unusedTokens.length && void 0 === n.bigHour)), null != Object.isFrozen && Object.isFrozen(e) ? a : (e._isValid = a, e._isValid)
|
19872
19884
|
}
|
19873
19885
|
|
19874
|
-
function
|
19886
|
+
function m(e) {
|
19875
19887
|
var n = u(NaN);
|
19876
19888
|
return null != e ? O(A(n), e) : A(n).userInvalidated = !0, n
|
19877
19889
|
}
|
@@ -19977,7 +19989,7 @@
|
|
19977
19989
|
X = {},
|
19978
19990
|
Y = {};
|
19979
19991
|
|
19980
|
-
function
|
19992
|
+
function I(e, n, t, o) {
|
19981
19993
|
var a = o;
|
19982
19994
|
"string" == typeof o && (a = function() {
|
19983
19995
|
return this[o]()
|
@@ -19988,13 +20000,13 @@
|
|
19988
20000
|
})
|
19989
20001
|
}
|
19990
20002
|
|
19991
|
-
function
|
20003
|
+
function j(e) {
|
19992
20004
|
return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, "")
|
19993
20005
|
}
|
19994
20006
|
|
19995
|
-
function
|
20007
|
+
function P(e) {
|
19996
20008
|
var n, t, o = e.match(C);
|
19997
|
-
for (n = 0, t = o.length; n < t; n++) Y[o[n]] ? o[n] = Y[o[n]] : o[n] =
|
20009
|
+
for (n = 0, t = o.length; n < t; n++) Y[o[n]] ? o[n] = Y[o[n]] : o[n] = j(o[n]);
|
19998
20010
|
return function(n) {
|
19999
20011
|
var a, r = "";
|
20000
20012
|
for (a = 0; a < t; a++) r += N(o[a]) ? o[a].call(n, e) : o[a];
|
@@ -20003,7 +20015,7 @@
|
|
20003
20015
|
}
|
20004
20016
|
|
20005
20017
|
function H(e, n) {
|
20006
|
-
return e.isValid() ? (n = F(n, e.localeData()), X[n] = X[n] ||
|
20018
|
+
return e.isValid() ? (n = F(n, e.localeData()), X[n] = X[n] || P(n), X[n](e)) : e.localeData().invalidDate()
|
20007
20019
|
}
|
20008
20020
|
|
20009
20021
|
function F(e, n) {
|
@@ -20169,8 +20181,8 @@
|
|
20169
20181
|
ue = /\d\d\d\d\d\d?/,
|
20170
20182
|
le = /\d{1,3}/,
|
20171
20183
|
Ae = /\d{1,4}/,
|
20172
|
-
|
20173
|
-
|
20184
|
+
he = /[+-]?\d{1,6}/,
|
20185
|
+
me = /\d+/,
|
20174
20186
|
fe = /[+-]?\d+/,
|
20175
20187
|
qe = /Z|[+-]\d\d:?\d\d/gi,
|
20176
20188
|
_e = /Z|[+-]\d\d(?::?\d\d)?/gi,
|
@@ -20234,9 +20246,9 @@
|
|
20234
20246
|
var Be = 0,
|
20235
20247
|
Xe = 1,
|
20236
20248
|
Ye = 2,
|
20237
|
-
|
20238
|
-
|
20239
|
-
|
20249
|
+
Ie = 3,
|
20250
|
+
je = 4,
|
20251
|
+
Pe = 5,
|
20240
20252
|
He = 6,
|
20241
20253
|
Fe = 7,
|
20242
20254
|
Ue = 8;
|
@@ -20244,12 +20256,12 @@
|
|
20244
20256
|
function Ge(e) {
|
20245
20257
|
return Ce(e) ? 366 : 365
|
20246
20258
|
}
|
20247
|
-
|
20259
|
+
I("Y", 0, 0, (function() {
|
20248
20260
|
var e = this.year();
|
20249
20261
|
return e <= 9999 ? D(e, 4) : "+" + e
|
20250
|
-
})),
|
20262
|
+
})), I(0, ["YY", 2], 0, (function() {
|
20251
20263
|
return this.year() % 100
|
20252
|
-
})),
|
20264
|
+
})), I(0, ["YYYY", 4], 0, "year"), I(0, ["YYYYY", 5], 0, "year"), I(0, ["YYYYYY", 6, !0], 0, "year"), Re("Y", fe), Re("YY", de, se), Re("YYYY", Ae, Me), Re("YYYYY", he, ze), Re("YYYYYY", he, ze), ke(["YYYYY", "YYYYYY"], Be), ke("YYYY", (function(e, n) {
|
20253
20265
|
n[Be] = 2 === e.length ? a.parseTwoDigitYear(e) : Se(e)
|
20254
20266
|
})), ke("YY", (function(e, n) {
|
20255
20267
|
n[Be] = a.parseTwoDigitYear(e)
|
@@ -20346,11 +20358,11 @@
|
|
20346
20358
|
for (n = 0; n < this.length; ++n)
|
20347
20359
|
if (this[n] === e) return n;
|
20348
20360
|
return -1
|
20349
|
-
},
|
20361
|
+
}, I("M", ["MM", 2], "Mo", (function() {
|
20350
20362
|
return this.month() + 1
|
20351
|
-
})),
|
20363
|
+
})), I("MMM", 0, 0, (function(e) {
|
20352
20364
|
return this.localeData().monthsShort(this, e)
|
20353
|
-
})),
|
20365
|
+
})), I("MMMM", 0, 0, (function(e) {
|
20354
20366
|
return this.localeData().months(this, e)
|
20355
20367
|
})), Re("M", de, Le), Re("MM", de, se), Re("MMM", (function(e, n) {
|
20356
20368
|
return n.monthsShortRegex(e)
|
@@ -20412,14 +20424,14 @@
|
|
20412
20424
|
}
|
20413
20425
|
|
20414
20426
|
function An(e) {
|
20415
|
-
return this._monthsParseExact ? (c(this, "_monthsRegex") ||
|
20427
|
+
return this._monthsParseExact ? (c(this, "_monthsRegex") || mn.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (c(this, "_monthsShortRegex") || (this._monthsShortRegex = cn), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex)
|
20416
20428
|
}
|
20417
20429
|
|
20418
|
-
function
|
20419
|
-
return this._monthsParseExact ? (c(this, "_monthsRegex") ||
|
20430
|
+
function hn(e) {
|
20431
|
+
return this._monthsParseExact ? (c(this, "_monthsRegex") || mn.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (c(this, "_monthsRegex") || (this._monthsRegex = sn), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex)
|
20420
20432
|
}
|
20421
20433
|
|
20422
|
-
function
|
20434
|
+
function mn() {
|
20423
20435
|
function e(e, n) {
|
20424
20436
|
return n.length - e.length
|
20425
20437
|
}
|
@@ -20471,7 +20483,7 @@
|
|
20471
20483
|
function yn(e) {
|
20472
20484
|
return gn(e, this._week.dow, this._week.doy).week
|
20473
20485
|
}
|
20474
|
-
|
20486
|
+
I("w", ["ww", 2], "wo", "week"), I("W", ["WW", 2], "Wo", "isoWeek"), Re("w", de, Le), Re("ww", de, se), Re("W", de, Le), Re("WW", de, se), we(["w", "ww", "W", "WW"], (function(e, n, t, o) {
|
20475
20487
|
n[o.substr(0, 1)] = Se(e)
|
20476
20488
|
}));
|
20477
20489
|
var Rn = {
|
@@ -20508,13 +20520,13 @@
|
|
20508
20520
|
function kn(e, n) {
|
20509
20521
|
return e.slice(n, 7).concat(e.slice(0, n))
|
20510
20522
|
}
|
20511
|
-
|
20523
|
+
I("d", 0, "do", "day"), I("dd", 0, 0, (function(e) {
|
20512
20524
|
return this.localeData().weekdaysMin(this, e)
|
20513
|
-
})),
|
20525
|
+
})), I("ddd", 0, 0, (function(e) {
|
20514
20526
|
return this.localeData().weekdaysShort(this, e)
|
20515
|
-
})),
|
20527
|
+
})), I("dddd", 0, 0, (function(e) {
|
20516
20528
|
return this.localeData().weekdays(this, e)
|
20517
|
-
})),
|
20529
|
+
})), I("e", 0, 0, "weekday"), I("E", 0, 0, "isoWeekday"), Re("d", de), Re("e", de), Re("E", de), Re("dd", (function(e, n) {
|
20518
20530
|
return n.weekdaysMinRegex(e)
|
20519
20531
|
})), Re("ddd", (function(e, n) {
|
20520
20532
|
return n.weekdaysShortRegex(e)
|
@@ -20533,16 +20545,16 @@
|
|
20533
20545
|
Xn = ge,
|
20534
20546
|
Yn = ge;
|
20535
20547
|
|
20536
|
-
function
|
20548
|
+
function In(e, n) {
|
20537
20549
|
var t = i(this._weekdays) ? this._weekdays : this._weekdays[e && !0 !== e && this._weekdays.isFormat.test(n) ? "format" : "standalone"];
|
20538
20550
|
return !0 === e ? kn(t, this._week.dow) : e ? t[e.day()] : t
|
20539
20551
|
}
|
20540
20552
|
|
20541
|
-
function
|
20553
|
+
function jn(e) {
|
20542
20554
|
return !0 === e ? kn(this._weekdaysShort, this._week.dow) : e ? this._weekdaysShort[e.day()] : this._weekdaysShort
|
20543
20555
|
}
|
20544
20556
|
|
20545
|
-
function
|
20557
|
+
function Pn(e) {
|
20546
20558
|
return !0 === e ? kn(this._weekdaysMin, this._week.dow) : e ? this._weekdaysMin[e.day()] : this._weekdaysMin
|
20547
20559
|
}
|
20548
20560
|
|
@@ -20618,7 +20630,7 @@
|
|
20618
20630
|
}
|
20619
20631
|
|
20620
20632
|
function nt(e, n) {
|
20621
|
-
|
20633
|
+
I(e, 0, 0, (function() {
|
20622
20634
|
return this.localeData().meridiem(this.hours(), this.minutes(), n)
|
20623
20635
|
}))
|
20624
20636
|
}
|
@@ -20630,35 +20642,35 @@
|
|
20630
20642
|
function ot(e) {
|
20631
20643
|
return "p" === (e + "").toLowerCase().charAt(0)
|
20632
20644
|
}
|
20633
|
-
|
20645
|
+
I("H", ["HH", 2], 0, "hour"), I("h", ["hh", 2], 0, Zn), I("k", ["kk", 2], 0, et), I("hmm", 0, 0, (function() {
|
20634
20646
|
return "" + Zn.apply(this) + D(this.minutes(), 2)
|
20635
|
-
})),
|
20647
|
+
})), I("hmmss", 0, 0, (function() {
|
20636
20648
|
return "" + Zn.apply(this) + D(this.minutes(), 2) + D(this.seconds(), 2)
|
20637
|
-
})),
|
20649
|
+
})), I("Hmm", 0, 0, (function() {
|
20638
20650
|
return "" + this.hours() + D(this.minutes(), 2)
|
20639
|
-
})),
|
20651
|
+
})), I("Hmmss", 0, 0, (function() {
|
20640
20652
|
return "" + this.hours() + D(this.minutes(), 2) + D(this.seconds(), 2)
|
20641
|
-
})), nt("a", !0), nt("A", !1), Re("a", tt), Re("A", tt), Re("H", de, ye), Re("h", de, Le), Re("k", de, Le), Re("HH", de, se), Re("hh", de, se), Re("kk", de, se), Re("hmm", Oe), Re("hmmss", ue), Re("Hmm", Oe), Re("Hmmss", ue), ke(["H", "HH"],
|
20653
|
+
})), nt("a", !0), nt("A", !1), Re("a", tt), Re("A", tt), Re("H", de, ye), Re("h", de, Le), Re("k", de, Le), Re("HH", de, se), Re("hh", de, se), Re("kk", de, se), Re("hmm", Oe), Re("hmmss", ue), Re("Hmm", Oe), Re("Hmmss", ue), ke(["H", "HH"], Ie), ke(["k", "kk"], (function(e, n, t) {
|
20642
20654
|
var o = Se(e);
|
20643
|
-
n[
|
20655
|
+
n[Ie] = 24 === o ? 0 : o
|
20644
20656
|
})), ke(["a", "A"], (function(e, n, t) {
|
20645
20657
|
t._isPm = t._locale.isPM(e), t._meridiem = e
|
20646
20658
|
})), ke(["h", "hh"], (function(e, n, t) {
|
20647
|
-
n[
|
20659
|
+
n[Ie] = Se(e), A(t).bigHour = !0
|
20648
20660
|
})), ke("hmm", (function(e, n, t) {
|
20649
20661
|
var o = e.length - 2;
|
20650
|
-
n[
|
20662
|
+
n[Ie] = Se(e.substr(0, o)), n[je] = Se(e.substr(o)), A(t).bigHour = !0
|
20651
20663
|
})), ke("hmmss", (function(e, n, t) {
|
20652
20664
|
var o = e.length - 4,
|
20653
20665
|
a = e.length - 2;
|
20654
|
-
n[
|
20666
|
+
n[Ie] = Se(e.substr(0, o)), n[je] = Se(e.substr(o, 2)), n[Pe] = Se(e.substr(a)), A(t).bigHour = !0
|
20655
20667
|
})), ke("Hmm", (function(e, n, t) {
|
20656
20668
|
var o = e.length - 2;
|
20657
|
-
n[
|
20669
|
+
n[Ie] = Se(e.substr(0, o)), n[je] = Se(e.substr(o))
|
20658
20670
|
})), ke("Hmmss", (function(e, n, t) {
|
20659
20671
|
var o = e.length - 4,
|
20660
20672
|
a = e.length - 2;
|
20661
|
-
n[
|
20673
|
+
n[Ie] = Se(e.substr(0, o)), n[je] = Se(e.substr(o, 2)), n[Pe] = Se(e.substr(a))
|
20662
20674
|
}));
|
20663
20675
|
var at = /[ap]\.?m?\.?/i,
|
20664
20676
|
rt = $e("Hours", !0);
|
@@ -20723,7 +20735,7 @@
|
|
20723
20735
|
|
20724
20736
|
function lt(e, n) {
|
20725
20737
|
var t;
|
20726
|
-
return e && ((t = b(n) ?
|
20738
|
+
return e && ((t = b(n) ? mt(e) : At(e, n)) ? pt = t : "undefined" != typeof console && console.warn && console.warn("Locale " + e + " not found. Did you forget to load it?")), pt._abbr
|
20727
20739
|
}
|
20728
20740
|
|
20729
20741
|
function At(e, n) {
|
@@ -20745,7 +20757,7 @@
|
|
20745
20757
|
return delete st[e], null
|
20746
20758
|
}
|
20747
20759
|
|
20748
|
-
function
|
20760
|
+
function ht(e, n) {
|
20749
20761
|
if (null != n) {
|
20750
20762
|
var t, o, a = ct;
|
20751
20763
|
null != st[e] && null != st[e].parentLocale ? st[e].set(S(st[e]._config, n)) : (null != (o = ut(e)) && (a = o._config), n = S(a, n), null == o && (n.abbr = e), (t = new x(n)).parentLocale = st[e], st[e] = t), lt(e)
|
@@ -20753,7 +20765,7 @@
|
|
20753
20765
|
return st[e]
|
20754
20766
|
}
|
20755
20767
|
|
20756
|
-
function
|
20768
|
+
function mt(e) {
|
20757
20769
|
var n;
|
20758
20770
|
if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return pt;
|
20759
20771
|
if (!i(e)) {
|
@@ -20769,7 +20781,7 @@
|
|
20769
20781
|
|
20770
20782
|
function qt(e) {
|
20771
20783
|
var n, t = e._a;
|
20772
|
-
return t && -2 === A(e).overflow && (n = t[Xe] < 0 || t[Xe] > 11 ? Xe : t[Ye] < 1 || t[Ye] > on(t[Be], t[Xe]) ? Ye : t[
|
20784
|
+
return t && -2 === A(e).overflow && (n = t[Xe] < 0 || t[Xe] > 11 ? Xe : t[Ye] < 1 || t[Ye] > on(t[Be], t[Xe]) ? Ye : t[Ie] < 0 || t[Ie] > 24 || 24 === t[Ie] && (0 !== t[je] || 0 !== t[Pe] || 0 !== t[He]) ? Ie : t[je] < 0 || t[je] > 59 ? je : t[Pe] < 0 || t[Pe] > 59 ? Pe : t[He] < 0 || t[He] > 999 ? He : -1, A(e)._overflowDayOfYear && (n < Be || n > Ye) && (n = Ye), A(e)._overflowWeeks && -1 === n && (n = Fe), A(e)._overflowWeekday && -1 === n && (n = Ue), A(e).overflow = n), e
|
20773
20785
|
}
|
20774
20786
|
var _t = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
|
20775
20787
|
Wt = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
|
@@ -20838,7 +20850,7 @@
|
|
20838
20850
|
if (!gt.exec(c[4])) return void(e._isValid = !1);
|
20839
20851
|
i = "Z"
|
20840
20852
|
}
|
20841
|
-
e._f = a + (r || "") + (i || ""),
|
20853
|
+
e._f = a + (r || "") + (i || ""), jt(e)
|
20842
20854
|
} else e._isValid = !1
|
20843
20855
|
}
|
20844
20856
|
|
@@ -20893,18 +20905,18 @@
|
|
20893
20905
|
function Yt(e) {
|
20894
20906
|
var n, t, o, a, r, i = [];
|
20895
20907
|
if (!e._d) {
|
20896
|
-
for (o = Xt(e), e._w && null == e._a[Ye] && null == e._a[Xe] &&
|
20908
|
+
for (o = Xt(e), e._w && null == e._a[Ye] && null == e._a[Xe] && It(e), null != e._dayOfYear && (r = Bt(e._a[Be], o[Be]), (e._dayOfYear > Ge(r) || 0 === e._dayOfYear) && (A(e)._overflowDayOfYear = !0), t = qn(r, 0, e._dayOfYear), e._a[Xe] = t.getUTCMonth(), e._a[Ye] = t.getUTCDate()), n = 0; n < 3 && null == e._a[n]; ++n) e._a[n] = i[n] = o[n];
|
20897
20909
|
for (; n < 7; n++) e._a[n] = i[n] = null == e._a[n] ? 2 === n ? 1 : 0 : e._a[n];
|
20898
|
-
24 === e._a[
|
20910
|
+
24 === e._a[Ie] && 0 === e._a[je] && 0 === e._a[Pe] && 0 === e._a[He] && (e._nextDay = !0, e._a[Ie] = 0), e._d = (e._useUTC ? qn : fn).apply(null, i), a = e._useUTC ? e._d.getUTCDay() : e._d.getDay(), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[Ie] = 24), e._w && void 0 !== e._w.d && e._w.d !== a && (A(e).weekdayMismatch = !0)
|
20899
20911
|
}
|
20900
20912
|
}
|
20901
20913
|
|
20902
|
-
function
|
20914
|
+
function It(e) {
|
20903
20915
|
var n, t, o, a, r, i, p, c, s;
|
20904
20916
|
null != (n = e._w).GG || null != n.W || null != n.E ? (r = 1, i = 4, t = Bt(n.GG, e._a[Be], gn(Kt(), 1, 4).year), o = Bt(n.W, 1), ((a = Bt(n.E, 1)) < 1 || a > 7) && (c = !0)) : (r = e._locale._week.dow, i = e._locale._week.doy, s = gn(Kt(), r, i), t = Bt(n.gg, e._a[Be], s.year), o = Bt(n.w, s.week), null != n.d ? ((a = n.d) < 0 || a > 6) && (c = !0) : null != n.e ? (a = n.e + r, (n.e < 0 || n.e > 6) && (c = !0)) : a = r), o < 1 || o > Ln(t, r, i) ? A(e)._overflowWeeks = !0 : null != c ? A(e)._overflowWeekday = !0 : (p = Wn(t, o, a, r, i), e._a[Be] = p.year, e._dayOfYear = p.dayOfYear)
|
20905
20917
|
}
|
20906
20918
|
|
20907
|
-
function
|
20919
|
+
function jt(e) {
|
20908
20920
|
if (e._f !== a.ISO_8601)
|
20909
20921
|
if (e._f !== a.RFC_2822) {
|
20910
20922
|
e._a = [], A(e).empty = !0;
|
@@ -20912,12 +20924,12 @@
|
|
20912
20924
|
b = s.length,
|
20913
20925
|
M = 0;
|
20914
20926
|
for (c = (o = F(e._f, e._locale).match(C) || []).length, n = 0; n < c; n++) r = o[n], (t = (s.match(ve(r, e)) || [])[0]) && ((i = s.substr(0, s.indexOf(t))).length > 0 && A(e).unusedInput.push(i), s = s.slice(s.indexOf(t) + t.length), M += t.length), Y[r] ? (t ? A(e).empty = !1 : A(e).unusedTokens.push(r), De(r, t, e)) : e._strict && !t && A(e).unusedTokens.push(r);
|
20915
|
-
A(e).charsLeftOver = b - M, s.length > 0 && A(e).unusedInput.push(s), e._a[
|
20927
|
+
A(e).charsLeftOver = b - M, s.length > 0 && A(e).unusedInput.push(s), e._a[Ie] <= 12 && !0 === A(e).bigHour && e._a[Ie] > 0 && (A(e).bigHour = void 0), A(e).parsedDateParts = e._a.slice(0), A(e).meridiem = e._meridiem, e._a[Ie] = Pt(e._locale, e._a[Ie], e._meridiem), null !== (p = A(e).era) && (e._a[Be] = e._locale.erasConvertYear(p, e._a[Be])), Yt(e), qt(e)
|
20916
20928
|
} else Dt(e);
|
20917
20929
|
else Nt(e)
|
20918
20930
|
}
|
20919
20931
|
|
20920
|
-
function
|
20932
|
+
function Pt(e, n, t) {
|
20921
20933
|
var o;
|
20922
20934
|
return null == t ? n : null != e.meridiemHour ? e.meridiemHour(n, t) : null != e.isPM ? ((o = e.isPM(t)) && n < 12 && (n += 12), o || 12 !== n || (n = 0), n) : n
|
20923
20935
|
}
|
@@ -20926,7 +20938,7 @@
|
|
20926
20938
|
var n, t, o, a, r, i, p = !1,
|
20927
20939
|
c = e._f.length;
|
20928
20940
|
if (0 === c) return A(e).invalidFormat = !0, void(e._d = new Date(NaN));
|
20929
|
-
for (a = 0; a < c; a++) r = 0, i = !1, n = _({}, e), null != e._useUTC && (n._useUTC = e._useUTC), n._f = e._f[a],
|
20941
|
+
for (a = 0; a < c; a++) r = 0, i = !1, n = _({}, e), null != e._useUTC && (n._useUTC = e._useUTC), n._f = e._f[a], jt(n), h(n) && (i = !0), r += A(n).charsLeftOver, r += 10 * A(n).unusedTokens.length, A(n).score = r, p ? r < o && (o = r, t = n) : (null == o || r < o || i) && (o = r, t = n, i && (p = !0));
|
20930
20942
|
O(e, t || n)
|
20931
20943
|
}
|
20932
20944
|
|
@@ -20948,9 +20960,9 @@
|
|
20948
20960
|
function Gt(e) {
|
20949
20961
|
var n = e._i,
|
20950
20962
|
t = e._f;
|
20951
|
-
return e._locale = e._locale ||
|
20963
|
+
return e._locale = e._locale || mt(e._l), null === n || void 0 === t && "" === n ? m({
|
20952
20964
|
nullInput: !0
|
20953
|
-
}) : ("string" == typeof n && (e._i = n = e._locale.preparse(n)), g(n) ? new W(qt(n)) : (z(n) ? e._d = n : i(t) ? Ht(e) : t ?
|
20965
|
+
}) : ("string" == typeof n && (e._i = n = e._locale.preparse(n)), g(n) ? new W(qt(n)) : (z(n) ? e._d = n : i(t) ? Ht(e) : t ? jt(e) : Vt(e), h(e) || (e._d = null), e))
|
20954
20966
|
}
|
20955
20967
|
|
20956
20968
|
function Vt(e) {
|
@@ -20973,11 +20985,11 @@
|
|
20973
20985
|
})), a.ISO_8601 = function() {}, a.RFC_2822 = function() {};
|
20974
20986
|
var $t = y("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", (function() {
|
20975
20987
|
var e = Kt.apply(null, arguments);
|
20976
|
-
return this.isValid() && e.isValid() ? e < this ? this : e :
|
20988
|
+
return this.isValid() && e.isValid() ? e < this ? this : e : m()
|
20977
20989
|
})),
|
20978
20990
|
Qt = y("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", (function() {
|
20979
20991
|
var e = Kt.apply(null, arguments);
|
20980
|
-
return this.isValid() && e.isValid() ? e > this ? this : e :
|
20992
|
+
return this.isValid() && e.isValid() ? e > this ? this : e : m()
|
20981
20993
|
}));
|
20982
20994
|
|
20983
20995
|
function Zt(e, n) {
|
@@ -21030,7 +21042,7 @@
|
|
21030
21042
|
c = n.minute || 0,
|
21031
21043
|
s = n.second || 0,
|
21032
21044
|
b = n.millisecond || 0;
|
21033
|
-
this._isValid = ao(n), this._milliseconds = +b + 1e3 * s + 6e4 * c + 1e3 * p * 60 * 60, this._days = +i + 7 * r, this._months = +a + 3 * o + 12 * t, this._data = {}, this._locale =
|
21045
|
+
this._isValid = ao(n), this._milliseconds = +b + 1e3 * s + 6e4 * c + 1e3 * p * 60 * 60, this._days = +i + 7 * r, this._months = +a + 3 * o + 12 * t, this._data = {}, this._locale = mt(), this._bubble()
|
21034
21046
|
}
|
21035
21047
|
|
21036
21048
|
function co(e) {
|
@@ -21050,7 +21062,7 @@
|
|
21050
21062
|
}
|
21051
21063
|
|
21052
21064
|
function Mo(e, n) {
|
21053
|
-
|
21065
|
+
I(e, 0, 0, (function() {
|
21054
21066
|
var e = this.utcOffset(),
|
21055
21067
|
t = "+";
|
21056
21068
|
return e < 0 && (e = -e, t = "-"), t + D(~~(e / 60), 2) + n + D(~~e % 60, 2)
|
@@ -21087,11 +21099,11 @@
|
|
21087
21099
|
return this._isUTC ? r : lo(this)
|
21088
21100
|
}
|
21089
21101
|
|
21090
|
-
function
|
21102
|
+
function ho(e, n) {
|
21091
21103
|
return null != e ? ("string" != typeof e && (e = -e), this.utcOffset(e, n), this) : -this.utcOffset()
|
21092
21104
|
}
|
21093
21105
|
|
21094
|
-
function
|
21106
|
+
function mo(e) {
|
21095
21107
|
return this.utcOffset(0, e)
|
21096
21108
|
}
|
21097
21109
|
|
@@ -21147,9 +21159,9 @@
|
|
21147
21159
|
} : M(e) || !isNaN(+e) ? (r = {}, n ? r[n] = +e : r.milliseconds = +e) : (i = vo.exec(e)) ? (t = "-" === i[1] ? -1 : 1, r = {
|
21148
21160
|
y: 0,
|
21149
21161
|
d: Se(i[Ye]) * t,
|
21150
|
-
h: Se(i[
|
21151
|
-
m: Se(i[
|
21152
|
-
s: Se(i[
|
21162
|
+
h: Se(i[Ie]) * t,
|
21163
|
+
m: Se(i[je]) * t,
|
21164
|
+
s: Se(i[Pe]) * t,
|
21153
21165
|
ms: Se(so(1e3 * i[He])) * t
|
21154
21166
|
}) : (i = Eo.exec(e)) ? (t = "-" === i[1] ? -1 : 1, r = {
|
21155
21167
|
y: To(i[2], t),
|
@@ -21202,7 +21214,7 @@
|
|
21202
21214
|
}
|
21203
21215
|
|
21204
21216
|
function Xo(e) {
|
21205
|
-
return g(e) || z(e) || Bo(e) || M(e) ||
|
21217
|
+
return g(e) || z(e) || Bo(e) || M(e) || Io(e) || Yo(e) || null == e
|
21206
21218
|
}
|
21207
21219
|
|
21208
21220
|
function Yo(e) {
|
@@ -21214,7 +21226,7 @@
|
|
21214
21226
|
return o && a
|
21215
21227
|
}
|
21216
21228
|
|
21217
|
-
function
|
21229
|
+
function Io(e) {
|
21218
21230
|
var n = i(e),
|
21219
21231
|
t = !1;
|
21220
21232
|
return n && (t = 0 === e.filter((function(n) {
|
@@ -21222,7 +21234,7 @@
|
|
21222
21234
|
})).length), n && t
|
21223
21235
|
}
|
21224
21236
|
|
21225
|
-
function
|
21237
|
+
function jo(e) {
|
21226
21238
|
var n, t, o = p(e) && !s(e),
|
21227
21239
|
a = !1,
|
21228
21240
|
r = ["sameDay", "nextDay", "lastDay", "nextWeek", "lastWeek", "sameElse"];
|
@@ -21230,13 +21242,13 @@
|
|
21230
21242
|
return o && a
|
21231
21243
|
}
|
21232
21244
|
|
21233
|
-
function
|
21245
|
+
function Po(e, n) {
|
21234
21246
|
var t = e.diff(n, "days", !0);
|
21235
21247
|
return t < -6 ? "sameElse" : t < -1 ? "lastWeek" : t < 0 ? "lastDay" : t < 1 ? "sameDay" : t < 2 ? "nextDay" : t < 7 ? "nextWeek" : "sameElse"
|
21236
21248
|
}
|
21237
21249
|
|
21238
21250
|
function Ho(e, n) {
|
21239
|
-
1 === arguments.length && (arguments[0] ? Xo(arguments[0]) ? (e = arguments[0], n = void 0) :
|
21251
|
+
1 === arguments.length && (arguments[0] ? Xo(arguments[0]) ? (e = arguments[0], n = void 0) : jo(arguments[0]) && (n = arguments[0], e = void 0) : (e = void 0, n = void 0));
|
21240
21252
|
var t = e || Kt(),
|
21241
21253
|
o = uo(t, this).startOf("day"),
|
21242
21254
|
r = a.calendarFormat(this, o) || "sameElse",
|
@@ -21367,7 +21379,7 @@
|
|
21367
21379
|
|
21368
21380
|
function ca(e) {
|
21369
21381
|
var n;
|
21370
|
-
return void 0 === e ? this._locale._abbr : (null != (n =
|
21382
|
+
return void 0 === e ? this._locale._abbr : (null != (n = mt(e)) && (this._locale = n), this)
|
21371
21383
|
}
|
21372
21384
|
a.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", a.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
|
21373
21385
|
var sa = y("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", (function(e) {
|
@@ -21394,7 +21406,7 @@
|
|
21394
21406
|
return e < 100 && e >= 0 ? Date.UTC(e + 400, n, t) - Oa : Date.UTC(e, n, t)
|
21395
21407
|
}
|
21396
21408
|
|
21397
|
-
function
|
21409
|
+
function ha(e) {
|
21398
21410
|
var n, t;
|
21399
21411
|
if (void 0 === (e = oe(e)) || "millisecond" === e || !this.isValid()) return this;
|
21400
21412
|
switch (t = this._isUTC ? Aa : la, e) {
|
@@ -21429,7 +21441,7 @@
|
|
21429
21441
|
return this._d.setTime(n), a.updateOffset(this, !0), this
|
21430
21442
|
}
|
21431
21443
|
|
21432
|
-
function
|
21444
|
+
function ma(e) {
|
21433
21445
|
var n, t;
|
21434
21446
|
if (void 0 === (e = oe(e)) || "millisecond" === e || !this.isValid()) return this;
|
21435
21447
|
switch (t = this._isUTC ? Aa : la, e) {
|
@@ -21499,7 +21511,7 @@
|
|
21499
21511
|
}
|
21500
21512
|
|
21501
21513
|
function ya() {
|
21502
|
-
return
|
21514
|
+
return h(this)
|
21503
21515
|
}
|
21504
21516
|
|
21505
21517
|
function Ra() {
|
@@ -21521,7 +21533,7 @@
|
|
21521
21533
|
}
|
21522
21534
|
|
21523
21535
|
function Na(e, n) {
|
21524
|
-
var t, o, r, i = this._eras ||
|
21536
|
+
var t, o, r, i = this._eras || mt("en")._eras;
|
21525
21537
|
for (t = 0, o = i.length; t < o; ++t) switch ("string" == typeof i[t].since && (r = a(i[t].since).startOf("day"), i[t].since = r.valueOf()), typeof i[t].until) {
|
21526
21538
|
case "undefined":
|
21527
21539
|
i[t].until = 1 / 0;
|
@@ -21604,16 +21616,16 @@
|
|
21604
21616
|
return n.erasAbbrRegex(e)
|
21605
21617
|
}
|
21606
21618
|
|
21607
|
-
function
|
21619
|
+
function Ia(e, n) {
|
21608
21620
|
return n.erasNameRegex(e)
|
21609
21621
|
}
|
21610
21622
|
|
21611
|
-
function
|
21623
|
+
function ja(e, n) {
|
21612
21624
|
return n.erasNarrowRegex(e)
|
21613
21625
|
}
|
21614
21626
|
|
21615
|
-
function
|
21616
|
-
return n._eraYearOrdinalRegex ||
|
21627
|
+
function Pa(e, n) {
|
21628
|
+
return n._eraYearOrdinalRegex || me
|
21617
21629
|
}
|
21618
21630
|
|
21619
21631
|
function Ha() {
|
@@ -21627,7 +21639,7 @@
|
|
21627
21639
|
}
|
21628
21640
|
|
21629
21641
|
function Fa(e, n) {
|
21630
|
-
|
21642
|
+
I(0, [e, e.length], 0, n)
|
21631
21643
|
}
|
21632
21644
|
|
21633
21645
|
function Ua(e) {
|
@@ -21670,23 +21682,23 @@
|
|
21670
21682
|
function er(e) {
|
21671
21683
|
return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3)
|
21672
21684
|
}
|
21673
|
-
|
21685
|
+
I("N", 0, 0, "eraAbbr"), I("NN", 0, 0, "eraAbbr"), I("NNN", 0, 0, "eraAbbr"), I("NNNN", 0, 0, "eraName"), I("NNNNN", 0, 0, "eraNarrow"), I("y", ["y", 1], "yo", "eraYear"), I("y", ["yy", 2], 0, "eraYear"), I("y", ["yyy", 3], 0, "eraYear"), I("y", ["yyyy", 4], 0, "eraYear"), Re("N", Ya), Re("NN", Ya), Re("NNN", Ya), Re("NNNN", Ia), Re("NNNNN", ja), ke(["N", "NN", "NNN", "NNNN", "NNNNN"], (function(e, n, t, o) {
|
21674
21686
|
var a = t._locale.erasParse(e, o, t._strict);
|
21675
21687
|
a ? A(t).era = a : A(t).invalidEra = e
|
21676
|
-
})), Re("y",
|
21688
|
+
})), Re("y", me), Re("yy", me), Re("yyy", me), Re("yyyy", me), Re("yo", Pa), ke(["y", "yy", "yyy", "yyyy"], Be), ke(["yo"], (function(e, n, t, o) {
|
21677
21689
|
var a;
|
21678
21690
|
t._locale._eraYearOrdinalRegex && (a = e.match(t._locale._eraYearOrdinalRegex)), t._locale.eraYearOrdinalParse ? n[Be] = t._locale.eraYearOrdinalParse(e, a) : n[Be] = parseInt(e, 10)
|
21679
|
-
})),
|
21691
|
+
})), I(0, ["gg", 2], 0, (function() {
|
21680
21692
|
return this.weekYear() % 100
|
21681
|
-
})),
|
21693
|
+
})), I(0, ["GG", 2], 0, (function() {
|
21682
21694
|
return this.isoWeekYear() % 100
|
21683
|
-
})), Fa("gggg", "weekYear"), Fa("ggggg", "weekYear"), Fa("GGGG", "isoWeekYear"), Fa("GGGGG", "isoWeekYear"), Re("G", fe), Re("g", fe), Re("GG", de, se), Re("gg", de, se), Re("GGGG", Ae, Me), Re("gggg", Ae, Me), Re("GGGGG",
|
21695
|
+
})), Fa("gggg", "weekYear"), Fa("ggggg", "weekYear"), Fa("GGGG", "isoWeekYear"), Fa("GGGGG", "isoWeekYear"), Re("G", fe), Re("g", fe), Re("GG", de, se), Re("gg", de, se), Re("GGGG", Ae, Me), Re("gggg", Ae, Me), Re("GGGGG", he, ze), Re("ggggg", he, ze), we(["gggg", "ggggg", "GGGG", "GGGGG"], (function(e, n, t, o) {
|
21684
21696
|
n[o.substr(0, 2)] = Se(e)
|
21685
21697
|
})), we(["gg", "GG"], (function(e, n, t, o) {
|
21686
21698
|
n[o] = a.parseTwoDigitYear(e)
|
21687
|
-
})),
|
21699
|
+
})), I("Q", 0, "Qo", "quarter"), Re("Q", ce), ke("Q", (function(e, n) {
|
21688
21700
|
n[Xe] = 3 * (Se(e) - 1)
|
21689
|
-
})),
|
21701
|
+
})), I("D", ["DD", 2], "Do", "date"), Re("D", de, Le), Re("DD", de, se), Re("Do", (function(e, n) {
|
21690
21702
|
return e ? n._dayOfMonthOrdinalParse || n._ordinalParse : n._dayOfMonthOrdinalParseLenient
|
21691
21703
|
})), ke(["D", "DD"], Ye), ke("Do", (function(e, n) {
|
21692
21704
|
n[Ye] = Se(e.match(de)[0])
|
@@ -21697,29 +21709,29 @@
|
|
21697
21709
|
var n = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
|
21698
21710
|
return null == e ? n : this.add(e - n, "d")
|
21699
21711
|
}
|
21700
|
-
|
21712
|
+
I("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), Re("DDD", le), Re("DDDD", be), ke(["DDD", "DDDD"], (function(e, n, t) {
|
21701
21713
|
t._dayOfYear = Se(e)
|
21702
|
-
})),
|
21714
|
+
})), I("m", ["mm", 2], 0, "minute"), Re("m", de, ye), Re("mm", de, se), ke(["m", "mm"], je);
|
21703
21715
|
var or = $e("Minutes", !1);
|
21704
|
-
|
21716
|
+
I("s", ["ss", 2], 0, "second"), Re("s", de, ye), Re("ss", de, se), ke(["s", "ss"], Pe);
|
21705
21717
|
var ar, rr, ir = $e("Seconds", !1);
|
21706
|
-
for (
|
21718
|
+
for (I("S", 0, 0, (function() {
|
21707
21719
|
return ~~(this.millisecond() / 100)
|
21708
|
-
})),
|
21720
|
+
})), I(0, ["SS", 2], 0, (function() {
|
21709
21721
|
return ~~(this.millisecond() / 10)
|
21710
|
-
})),
|
21722
|
+
})), I(0, ["SSS", 3], 0, "millisecond"), I(0, ["SSSS", 4], 0, (function() {
|
21711
21723
|
return 10 * this.millisecond()
|
21712
|
-
})),
|
21724
|
+
})), I(0, ["SSSSS", 5], 0, (function() {
|
21713
21725
|
return 100 * this.millisecond()
|
21714
|
-
})),
|
21726
|
+
})), I(0, ["SSSSSS", 6], 0, (function() {
|
21715
21727
|
return 1e3 * this.millisecond()
|
21716
|
-
})),
|
21728
|
+
})), I(0, ["SSSSSSS", 7], 0, (function() {
|
21717
21729
|
return 1e4 * this.millisecond()
|
21718
|
-
})),
|
21730
|
+
})), I(0, ["SSSSSSSS", 8], 0, (function() {
|
21719
21731
|
return 1e5 * this.millisecond()
|
21720
|
-
})),
|
21732
|
+
})), I(0, ["SSSSSSSSS", 9], 0, (function() {
|
21721
21733
|
return 1e6 * this.millisecond()
|
21722
|
-
})), Re("S", le, ce), Re("SS", le, se), Re("SSS", le, be), ar = "SSSS"; ar.length <= 9; ar += "S") Re(ar,
|
21734
|
+
})), Re("S", le, ce), Re("SS", le, se), Re("SSS", le, be), ar = "SSSS"; ar.length <= 9; ar += "S") Re(ar, me);
|
21723
21735
|
|
21724
21736
|
function pr(e, n) {
|
21725
21737
|
n[He] = Se(1e3 * ("0." + e))
|
@@ -21733,7 +21745,7 @@
|
|
21733
21745
|
function sr() {
|
21734
21746
|
return this._isUTC ? "Coordinated Universal Time" : ""
|
21735
21747
|
}
|
21736
|
-
rr = $e("Milliseconds", !1),
|
21748
|
+
rr = $e("Milliseconds", !1), I("z", 0, 0, "zoneAbbr"), I("zz", 0, 0, "zoneName");
|
21737
21749
|
var br = W.prototype;
|
21738
21750
|
|
21739
21751
|
function Mr(e) {
|
@@ -21747,13 +21759,13 @@
|
|
21747
21759
|
function dr(e) {
|
21748
21760
|
return e
|
21749
21761
|
}
|
21750
|
-
br.add = Do, br.calendar = Ho, br.clone = Fo, br.diff = Qo, br.endOf =
|
21762
|
+
br.add = Do, br.calendar = Ho, br.clone = Fo, br.diff = Qo, br.endOf = ma, br.format = oa, br.from = aa, br.fromNow = ra, br.to = ia, br.toNow = pa, br.get = en, br.invalidAt = va, br.isAfter = Uo, br.isBefore = Go, br.isBetween = Vo, br.isSame = Jo, br.isSameOrAfter = Ko, br.isSameOrBefore = $o, br.isValid = ya, br.lang = sa, br.locale = ca, br.localeData = ba, br.max = Qt, br.min = $t, br.parsingFlags = Ra, br.set = nn, br.startOf = ha, br.subtract = Co, br.toArray = Wa, br.toObject = ga, br.toDate = _a, br.toISOString = na, br.inspect = ta, "undefined" != typeof Symbol && null != Symbol.for && (br[Symbol.for("nodejs.util.inspect.custom")] = function() {
|
21751
21763
|
return "Moment<" + this.format() + ">"
|
21752
|
-
}), br.toJSON = La, br.toString = ea, br.unix = qa, br.valueOf = fa, br.creationData = Ea, br.eraName = xa, br.eraNarrow = ka, br.eraAbbr = wa, br.eraYear = Da, br.year = Je, br.isLeapYear = Ke, br.weekYear = Ua, br.isoWeekYear = Ga, br.quarter = br.quarters = er, br.month = un, br.daysInMonth = ln, br.week = br.weeks = Nn, br.isoWeek = br.isoWeeks = Tn, br.weeksInYear = Ka, br.weeksInWeekYear = $a, br.isoWeeksInYear = Va, br.isoWeeksInISOWeekYear = Ja, br.date = nr, br.day = br.days = Un, br.weekday = Gn, br.isoWeekday = Vn, br.dayOfYear = tr, br.hour = br.hours = rt, br.minute = br.minutes = or, br.second = br.seconds = ir, br.millisecond = br.milliseconds = rr, br.utcOffset = Ao, br.utc =
|
21764
|
+
}), br.toJSON = La, br.toString = ea, br.unix = qa, br.valueOf = fa, br.creationData = Ea, br.eraName = xa, br.eraNarrow = ka, br.eraAbbr = wa, br.eraYear = Da, br.year = Je, br.isLeapYear = Ke, br.weekYear = Ua, br.isoWeekYear = Ga, br.quarter = br.quarters = er, br.month = un, br.daysInMonth = ln, br.week = br.weeks = Nn, br.isoWeek = br.isoWeeks = Tn, br.weeksInYear = Ka, br.weeksInWeekYear = $a, br.isoWeeksInYear = Va, br.isoWeeksInISOWeekYear = Ja, br.date = nr, br.day = br.days = Un, br.weekday = Gn, br.isoWeekday = Vn, br.dayOfYear = tr, br.hour = br.hours = rt, br.minute = br.minutes = or, br.second = br.seconds = ir, br.millisecond = br.milliseconds = rr, br.utcOffset = Ao, br.utc = mo, br.local = fo, br.parseZone = qo, br.hasAlignedHourOffset = _o, br.isDST = Wo, br.isLocal = Lo, br.isUtcOffset = yo, br.isUtc = Ro, br.isUTC = Ro, br.zoneAbbr = cr, br.zoneName = sr, br.dates = y("dates accessor is deprecated. Use date instead.", nr), br.months = y("months accessor is deprecated. Use month instead", un), br.years = y("years accessor is deprecated. Use year instead", Je), br.zone = y("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", ho), br.isDSTShifted = y("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", go);
|
21753
21765
|
var Or = x.prototype;
|
21754
21766
|
|
21755
21767
|
function ur(e, n, t, o) {
|
21756
|
-
var a =
|
21768
|
+
var a = mt(),
|
21757
21769
|
r = u().set(o, n);
|
21758
21770
|
return a[t](r, e)
|
21759
21771
|
}
|
@@ -21767,7 +21779,7 @@
|
|
21767
21779
|
|
21768
21780
|
function Ar(e, n, t, o) {
|
21769
21781
|
"boolean" == typeof e ? (M(n) && (t = n, n = void 0), n = n || "") : (t = n = e, e = !1, M(n) && (t = n, n = void 0), n = n || "");
|
21770
|
-
var a, r =
|
21782
|
+
var a, r = mt(),
|
21771
21783
|
i = e ? r._week.dow : 0,
|
21772
21784
|
p = [];
|
21773
21785
|
if (null != t) return ur(n, (t + i) % 7, o, "day");
|
@@ -21775,11 +21787,11 @@
|
|
21775
21787
|
return p
|
21776
21788
|
}
|
21777
21789
|
|
21778
|
-
function
|
21790
|
+
function hr(e, n) {
|
21779
21791
|
return lr(e, n, "months")
|
21780
21792
|
}
|
21781
21793
|
|
21782
|
-
function
|
21794
|
+
function mr(e, n) {
|
21783
21795
|
return lr(e, n, "monthsShort")
|
21784
21796
|
}
|
21785
21797
|
|
@@ -21794,7 +21806,7 @@
|
|
21794
21806
|
function _r(e, n, t) {
|
21795
21807
|
return Ar(e, n, t, "weekdaysMin")
|
21796
21808
|
}
|
21797
|
-
Or.calendar = w, Or.longDateFormat = G, Or.invalidDate = J, Or.ordinal = Q, Or.preparse = dr, Or.postformat = dr, Or.relativeTime = ee, Or.pastFuture = ne, Or.set = T, Or.eras = Na, Or.erasParse = Ta, Or.erasConvertYear = Sa, Or.erasAbbrRegex = Ba, Or.erasNameRegex = Ca, Or.erasNarrowRegex = Xa, Or.months = bn, Or.monthsShort = Mn, Or.monthsParse = dn, Or.monthsRegex =
|
21809
|
+
Or.calendar = w, Or.longDateFormat = G, Or.invalidDate = J, Or.ordinal = Q, Or.preparse = dr, Or.postformat = dr, Or.relativeTime = ee, Or.pastFuture = ne, Or.set = T, Or.eras = Na, Or.erasParse = Ta, Or.erasConvertYear = Sa, Or.erasAbbrRegex = Ba, Or.erasNameRegex = Ca, Or.erasNarrowRegex = Xa, Or.months = bn, Or.monthsShort = Mn, Or.monthsParse = dn, Or.monthsRegex = hn, Or.monthsShortRegex = An, Or.week = yn, Or.firstDayOfYear = En, Or.firstDayOfWeek = vn, Or.weekdays = In, Or.weekdaysMin = Pn, Or.weekdaysShort = jn, Or.weekdaysParse = Fn, Or.weekdaysRegex = Jn, Or.weekdaysShortRegex = Kn, Or.weekdaysMinRegex = $n, Or.isPM = ot, Or.meridiem = it, lt("en", {
|
21798
21810
|
eras: [{
|
21799
21811
|
since: "0001-01-01",
|
21800
21812
|
until: 1 / 0,
|
@@ -21815,7 +21827,7 @@
|
|
21815
21827
|
var n = e % 10;
|
21816
21828
|
return e + (1 === Se(e % 100 / 10) ? "th" : 1 === n ? "st" : 2 === n ? "nd" : 3 === n ? "rd" : "th")
|
21817
21829
|
}
|
21818
|
-
}), a.lang = y("moment.lang is deprecated. Use moment.locale instead.", lt), a.langData = y("moment.langData is deprecated. Use moment.localeData instead.",
|
21830
|
+
}), a.lang = y("moment.lang is deprecated. Use moment.locale instead.", lt), a.langData = y("moment.langData is deprecated. Use moment.localeData instead.", mt);
|
21819
21831
|
var Wr = Math.abs;
|
21820
21832
|
|
21821
21833
|
function gr() {
|
@@ -21896,9 +21908,9 @@
|
|
21896
21908
|
Br = xr("d"),
|
21897
21909
|
Xr = xr("w"),
|
21898
21910
|
Yr = xr("M"),
|
21899
|
-
|
21900
|
-
|
21901
|
-
|
21911
|
+
Ir = xr("Q"),
|
21912
|
+
jr = xr("y"),
|
21913
|
+
Pr = kr;
|
21902
21914
|
|
21903
21915
|
function Hr() {
|
21904
21916
|
return No(this)
|
@@ -21981,11 +21993,11 @@
|
|
21981
21993
|
return M ? (e = Te(c / 60), n = Te(e / 60), c %= 60, e %= 60, t = Te(b / 12), b %= 12, o = c ? c.toFixed(3).replace(/\.?0+$/, "") : "", a = M < 0 ? "-" : "", r = si(this._months) !== si(M) ? "-" : "", i = si(this._days) !== si(M) ? "-" : "", p = si(this._milliseconds) !== si(M) ? "-" : "", a + "P" + (t ? r + t + "Y" : "") + (b ? r + b + "M" : "") + (s ? i + s + "D" : "") + (n || e || c ? "T" : "") + (n ? p + n + "H" : "") + (e ? p + e + "M" : "") + (c ? p + o + "S" : "")) : "P0D"
|
21982
21994
|
}
|
21983
21995
|
var Mi = po.prototype;
|
21984
|
-
return Mi.isValid = ro, Mi.abs = gr, Mi.add = yr, Mi.subtract = Rr, Mi.as = Sr, Mi.asMilliseconds = kr, Mi.asSeconds = wr, Mi.asMinutes = Dr, Mi.asHours = Cr, Mi.asDays = Br, Mi.asWeeks = Xr, Mi.asMonths = Yr, Mi.asQuarters =
|
21996
|
+
return Mi.isValid = ro, Mi.abs = gr, Mi.add = yr, Mi.subtract = Rr, Mi.as = Sr, Mi.asMilliseconds = kr, Mi.asSeconds = wr, Mi.asMinutes = Dr, Mi.asHours = Cr, Mi.asDays = Br, Mi.asWeeks = Xr, Mi.asMonths = Yr, Mi.asQuarters = Ir, Mi.asYears = jr, Mi.valueOf = Pr, Mi._bubble = Er, Mi.clone = Hr, Mi.get = Fr, Mi.milliseconds = Gr, Mi.seconds = Vr, Mi.minutes = Jr, Mi.hours = Kr, Mi.days = $r, Mi.weeks = ei, Mi.months = Qr, Mi.years = Zr, Mi.humanize = pi, Mi.toISOString = bi, Mi.toString = bi, Mi.toJSON = bi, Mi.locale = ca, Mi.localeData = ba, Mi.toIsoString = y("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", bi), Mi.lang = sa, I("X", 0, 0, "unix"), I("x", 0, 0, "valueOf"), Re("x", fe), Re("X", We), ke("X", (function(e, n, t) {
|
21985
21997
|
t._d = new Date(1e3 * parseFloat(e))
|
21986
21998
|
})), ke("x", (function(e, n, t) {
|
21987
21999
|
t._d = new Date(Se(e))
|
21988
|
-
})), a.version = "2.30.1", r(Kt), a.fn = br, a.min = eo, a.max = no, a.now = to, a.utc = u, a.unix = Mr, a.months =
|
22000
|
+
})), a.version = "2.30.1", r(Kt), a.fn = br, a.min = eo, a.max = no, a.now = to, a.utc = u, a.unix = Mr, a.months = hr, a.isDate = z, a.locale = lt, a.invalid = m, a.duration = No, a.isMoment = g, a.weekdays = fr, a.parseZone = zr, a.localeData = mt, a.isDuration = co, a.monthsShort = mr, a.weekdaysMin = _r, a.defineLocale = At, a.updateLocale = ht, a.locales = ft, a.weekdaysShort = qr, a.normalizeUnits = oe, a.relativeTimeRounding = ri, a.relativeTimeThreshold = ii, a.calendarFormat = Po, a.prototype = br, a.HTML5_FMT = {
|
21989
22001
|
DATETIME_LOCAL: "YYYY-MM-DDTHH:mm",
|
21990
22002
|
DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss",
|
21991
22003
|
DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS",
|
@@ -22086,7 +22098,7 @@
|
|
22086
22098
|
parse: () => A,
|
22087
22099
|
stringify: () => M,
|
22088
22100
|
v1: () => l,
|
22089
|
-
v3: () =>
|
22101
|
+
v3: () => m,
|
22090
22102
|
v4: () => f,
|
22091
22103
|
v5: () => q,
|
22092
22104
|
validate: () => s,
|
@@ -22141,7 +22153,7 @@
|
|
22141
22153
|
return t[0] = (n = parseInt(e.slice(0, 8), 16)) >>> 24, t[1] = n >>> 16 & 255, t[2] = n >>> 8 & 255, t[3] = 255 & n, t[4] = (n = parseInt(e.slice(9, 13), 16)) >>> 8, t[5] = 255 & n, t[6] = (n = parseInt(e.slice(14, 18), 16)) >>> 8, t[7] = 255 & n, t[8] = (n = parseInt(e.slice(19, 23), 16)) >>> 8, t[9] = 255 & n, t[10] = (n = parseInt(e.slice(24, 36), 16)) / 1099511627776 & 255, t[11] = n / 4294967296 & 255, t[12] = n >>> 24 & 255, t[13] = n >>> 16 & 255, t[14] = n >>> 8 & 255, t[15] = 255 & n, t
|
22142
22154
|
};
|
22143
22155
|
|
22144
|
-
function
|
22156
|
+
function h(e, n, t) {
|
22145
22157
|
function o(e, o, a, r) {
|
22146
22158
|
if ("string" == typeof e && (e = function(e) {
|
22147
22159
|
e = unescape(encodeURIComponent(e));
|
@@ -22162,7 +22174,7 @@
|
|
22162
22174
|
} catch (e) {}
|
22163
22175
|
return o.DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8", o.URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8", o
|
22164
22176
|
}
|
22165
|
-
const
|
22177
|
+
const m = h("v3", 48, (function(e) {
|
22166
22178
|
return Array.isArray(e) ? e = Buffer.from(e) : "string" == typeof e && (e = Buffer.from(e, "utf8")), a().createHash("md5").update(e).digest()
|
22167
22179
|
}));
|
22168
22180
|
const f = function(e, n, t) {
|
@@ -22174,7 +22186,7 @@
|
|
22174
22186
|
}
|
22175
22187
|
return M(o)
|
22176
22188
|
};
|
22177
|
-
const q =
|
22189
|
+
const q = h("v5", 80, (function(e) {
|
22178
22190
|
return Array.isArray(e) ? e = Buffer.from(e) : "string" == typeof e && (e = Buffer.from(e, "utf8")), a().createHash("sha1").update(e).digest()
|
22179
22191
|
})),
|
22180
22192
|
_ = "00000000-0000-0000-0000-000000000000";
|
@@ -23828,12 +23840,12 @@
|
|
23828
23840
|
return null !== e && (e = r(e)), e
|
23829
23841
|
})).parse() : null
|
23830
23842
|
},
|
23831
|
-
|
23843
|
+
h = function(e) {
|
23832
23844
|
return e ? a.create(e, (function(e) {
|
23833
23845
|
return null !== e && (e = i(e)), e
|
23834
23846
|
})).parse() : null
|
23835
23847
|
},
|
23836
|
-
|
23848
|
+
m = function(e) {
|
23837
23849
|
return e ? o.parse(e, c(p)) : null
|
23838
23850
|
},
|
23839
23851
|
f = function(e) {
|
@@ -23860,7 +23872,7 @@
|
|
23860
23872
|
};
|
23861
23873
|
e.exports = {
|
23862
23874
|
init: function(e) {
|
23863
|
-
e(20, q), e(21, f), e(23, f), e(26, f), e(700, parseFloat), e(701, parseFloat), e(16, s), e(1082, r), e(1114, r), e(1184, r), e(600, W), e(651, l), e(718, g), e(1e3, b), e(1001,
|
23875
|
+
e(20, q), e(21, f), e(23, f), e(26, f), e(700, parseFloat), e(701, parseFloat), e(16, s), e(1082, r), e(1114, r), e(1184, r), e(600, W), e(651, l), e(718, g), e(1e3, b), e(1001, m), e(1005, z), e(1007, z), e(1028, z), e(1016, d), e(1017, O), e(1021, u), e(1022, u), e(1231, u), e(1014, l), e(1015, l), e(1008, l), e(1009, l), e(1040, l), e(1041, l), e(1115, A), e(1182, A), e(1185, A), e(1186, i), e(1187, h), e(17, p), e(114, JSON.parse.bind(JSON)), e(3802, JSON.parse.bind(JSON)), e(199, _), e(3807, _), e(3907, l), e(2951, l), e(791, l), e(1183, l), e(1270, l)
|
23864
23876
|
}
|
23865
23877
|
}
|
23866
23878
|
},
|
@@ -24388,8 +24400,8 @@
|
|
24388
24400
|
return Buffer.from(e.map(((t, o) => e[o] ^ n[o])))
|
24389
24401
|
}(Buffer.from(d), Buffer.from(u)).toString("base64"),
|
24390
24402
|
A = await o.hmacSha256(z, "Server Key"),
|
24391
|
-
|
24392
|
-
e.message = "SASLResponse", e.serverSignature = Buffer.from(
|
24403
|
+
h = await o.hmacSha256(A, b);
|
24404
|
+
e.message = "SASLResponse", e.serverSignature = Buffer.from(h).toString("base64"), e.response = s + ",p=" + l
|
24393
24405
|
},
|
24394
24406
|
finalizeSession: function(e, n) {
|
24395
24407
|
if ("SASLResponse" !== e.message) throw new Error("SASL: Last message was not SASLResponse");
|
@@ -25476,61 +25488,61 @@
|
|
25476
25488
|
O = b(e, "maximumBreadth");
|
25477
25489
|
|
25478
25490
|
function u(e, t, s, b, l, A) {
|
25479
|
-
let
|
25480
|
-
switch ("object" == typeof
|
25491
|
+
let h = t[e];
|
25492
|
+
switch ("object" == typeof h && null !== h && "function" == typeof h.toJSON && (h = h.toJSON(e)), h = b.call(t, e, h), typeof h) {
|
25481
25493
|
case "string":
|
25482
|
-
return r(
|
25494
|
+
return r(h);
|
25483
25495
|
case "object": {
|
25484
|
-
if (null ===
|
25485
|
-
if (-1 !== s.indexOf(
|
25496
|
+
if (null === h) return "null";
|
25497
|
+
if (-1 !== s.indexOf(h)) return o;
|
25486
25498
|
let e = "",
|
25487
25499
|
n = ",";
|
25488
25500
|
const t = A;
|
25489
|
-
if (Array.isArray(
|
25490
|
-
if (0 ===
|
25501
|
+
if (Array.isArray(h)) {
|
25502
|
+
if (0 === h.length) return "[]";
|
25491
25503
|
if (d < s.length + 1) return '"[Array]"';
|
25492
|
-
s.push(
|
25493
|
-
const o = Math.min(
|
25504
|
+
s.push(h), "" !== l && (e += `\n${A+=l}`, n = `,\n${A}`);
|
25505
|
+
const o = Math.min(h.length, O);
|
25494
25506
|
let a = 0;
|
25495
25507
|
for (; a < o - 1; a++) {
|
25496
|
-
const t = u(String(a),
|
25508
|
+
const t = u(String(a), h, s, b, l, A);
|
25497
25509
|
e += void 0 !== t ? t : "null", e += n
|
25498
25510
|
}
|
25499
|
-
const r = u(String(a),
|
25500
|
-
if (e += void 0 !== r ? r : "null",
|
25501
|
-
e += `${n}"... ${M(
|
25511
|
+
const r = u(String(a), h, s, b, l, A);
|
25512
|
+
if (e += void 0 !== r ? r : "null", h.length - 1 > O) {
|
25513
|
+
e += `${n}"... ${M(h.length-O-1)} not stringified"`
|
25502
25514
|
}
|
25503
25515
|
return "" !== l && (e += `\n${t}`), s.pop(), `[${e}]`
|
25504
25516
|
}
|
25505
|
-
let a = Object.keys(
|
25506
|
-
const
|
25507
|
-
if (0 ===
|
25517
|
+
let a = Object.keys(h);
|
25518
|
+
const m = a.length;
|
25519
|
+
if (0 === m) return "{}";
|
25508
25520
|
if (d < s.length + 1) return '"[Object]"';
|
25509
25521
|
let f = "",
|
25510
25522
|
q = "";
|
25511
25523
|
"" !== l && (n = `,\n${A+=l}`, f = " ");
|
25512
|
-
const _ = Math.min(
|
25513
|
-
p && !c(
|
25524
|
+
const _ = Math.min(m, O);
|
25525
|
+
p && !c(h) && (a = i(a, z)), s.push(h);
|
25514
25526
|
for (let t = 0; t < _; t++) {
|
25515
25527
|
const o = a[t],
|
25516
|
-
i = u(o,
|
25528
|
+
i = u(o, h, s, b, l, A);
|
25517
25529
|
void 0 !== i && (e += `${q}${r(o)}:${f}${i}`, q = n)
|
25518
25530
|
}
|
25519
|
-
if (
|
25520
|
-
e += `${q}"...":${f}"${M(
|
25531
|
+
if (m > O) {
|
25532
|
+
e += `${q}"...":${f}"${M(m-O)} not stringified"`, q = n
|
25521
25533
|
}
|
25522
25534
|
return "" !== l && q.length > 1 && (e = `\n${A}${e}\n${t}`), s.pop(), `{${e}}`
|
25523
25535
|
}
|
25524
25536
|
case "number":
|
25525
|
-
return isFinite(
|
25537
|
+
return isFinite(h) ? String(h) : n ? n(h) : "null";
|
25526
25538
|
case "boolean":
|
25527
|
-
return !0 ===
|
25539
|
+
return !0 === h ? "true" : "false";
|
25528
25540
|
case "undefined":
|
25529
25541
|
return;
|
25530
25542
|
case "bigint":
|
25531
|
-
if (a) return String(
|
25543
|
+
if (a) return String(h);
|
25532
25544
|
default:
|
25533
|
-
return n ? n(
|
25545
|
+
return n ? n(h) : void 0
|
25534
25546
|
}
|
25535
25547
|
}
|
25536
25548
|
|
@@ -25614,21 +25626,21 @@
|
|
25614
25626
|
return e += `\n${n}`, b.pop(), `[${e}]`
|
25615
25627
|
}
|
25616
25628
|
let a = Object.keys(t);
|
25617
|
-
const
|
25618
|
-
if (0 ===
|
25629
|
+
const h = a.length;
|
25630
|
+
if (0 === h) return "{}";
|
25619
25631
|
if (d < b.length + 1) return '"[Object]"';
|
25620
|
-
const
|
25632
|
+
const m = `,\n${l+=u}`;
|
25621
25633
|
let f = "",
|
25622
25634
|
q = "",
|
25623
|
-
_ = Math.min(
|
25624
|
-
c(t) && (f += s(t,
|
25635
|
+
_ = Math.min(h, O);
|
25636
|
+
c(t) && (f += s(t, m, O), a = a.slice(t.length), _ -= t.length, q = m), p && (a = i(a, z)), b.push(t);
|
25625
25637
|
for (let e = 0; e < _; e++) {
|
25626
25638
|
const n = a[e],
|
25627
25639
|
o = A(n, t[n], b, u, l);
|
25628
|
-
void 0 !== o && (f += `${q}${r(n)}: ${o}`, q =
|
25640
|
+
void 0 !== o && (f += `${q}${r(n)}: ${o}`, q = m)
|
25629
25641
|
}
|
25630
|
-
if (
|
25631
|
-
f += `${q}"...": "${M(
|
25642
|
+
if (h > O) {
|
25643
|
+
f += `${q}"...": "${M(h-O)} not stringified"`, q = m
|
25632
25644
|
}
|
25633
25645
|
return "" !== q && (f = `\n${l}${f}\n${n}`), b.pop(), `{${f}}`
|
25634
25646
|
}
|
@@ -25645,14 +25657,14 @@
|
|
25645
25657
|
}
|
25646
25658
|
}
|
25647
25659
|
|
25648
|
-
function
|
25660
|
+
function h(e, t, b) {
|
25649
25661
|
switch (typeof t) {
|
25650
25662
|
case "string":
|
25651
25663
|
return r(t);
|
25652
25664
|
case "object": {
|
25653
25665
|
if (null === t) return "null";
|
25654
25666
|
if ("function" == typeof t.toJSON) {
|
25655
|
-
if ("object" != typeof(t = t.toJSON(e))) return
|
25667
|
+
if ("object" != typeof(t = t.toJSON(e))) return h(e, t, b);
|
25656
25668
|
if (null === t) return "null"
|
25657
25669
|
}
|
25658
25670
|
if (-1 !== b.indexOf(t)) return o;
|
@@ -25665,10 +25677,10 @@
|
|
25665
25677
|
const e = Math.min(t.length, O);
|
25666
25678
|
let o = 0;
|
25667
25679
|
for (; o < e - 1; o++) {
|
25668
|
-
const e =
|
25680
|
+
const e = h(String(o), t[o], b);
|
25669
25681
|
n += void 0 !== e ? e : "null", n += ","
|
25670
25682
|
}
|
25671
|
-
const a =
|
25683
|
+
const a = h(String(o), t[o], b);
|
25672
25684
|
if (n += void 0 !== a ? a : "null", t.length - 1 > O) {
|
25673
25685
|
n += `,"... ${M(t.length-O-1)} not stringified"`
|
25674
25686
|
}
|
@@ -25679,11 +25691,11 @@
|
|
25679
25691
|
if (0 === l) return "{}";
|
25680
25692
|
if (d < b.length + 1) return '"[Object]"';
|
25681
25693
|
let A = "",
|
25682
|
-
|
25683
|
-
a && c(t) && (n += s(t, ",", O), u = u.slice(t.length),
|
25684
|
-
for (let e = 0; e <
|
25694
|
+
m = Math.min(l, O);
|
25695
|
+
a && c(t) && (n += s(t, ",", O), u = u.slice(t.length), m -= t.length, A = ","), p && (u = i(u, z)), b.push(t);
|
25696
|
+
for (let e = 0; e < m; e++) {
|
25685
25697
|
const o = u[e],
|
25686
|
-
a =
|
25698
|
+
a = h(o, t[o], b);
|
25687
25699
|
void 0 !== a && (n += `${A}${r(o)}:${a}`, A = ",")
|
25688
25700
|
}
|
25689
25701
|
if (l > O) {
|
@@ -25718,7 +25730,7 @@
|
|
25718
25730
|
}
|
25719
25731
|
if (0 !== o.length) return A("", e, [], o, "")
|
25720
25732
|
}
|
25721
|
-
return
|
25733
|
+
return h("", e, [])
|
25722
25734
|
}
|
25723
25735
|
}
|
25724
25736
|
},
|
@@ -26551,8 +26563,8 @@
|
|
26551
26563
|
u = t(6969).getHighWaterMark,
|
26552
26564
|
l = t(223).F,
|
26553
26565
|
A = l.ERR_INVALID_ARG_TYPE,
|
26554
|
-
|
26555
|
-
|
26566
|
+
h = l.ERR_STREAM_PUSH_AFTER_EOF,
|
26567
|
+
m = l.ERR_METHOD_NOT_IMPLEMENTED,
|
26556
26568
|
f = l.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;
|
26557
26569
|
t(2017)(g, r);
|
26558
26570
|
var q = O.errorOrDestroy,
|
@@ -26590,7 +26602,7 @@
|
|
26590
26602
|
if ("string" == typeof n || s.objectMode || Object.getPrototypeOf(n) === i.prototype || (n = function(e) {
|
26591
26603
|
return i.from(e)
|
26592
26604
|
}(n)), o) s.endEmitted ? q(e, new f) : y(e, s, n, !0);
|
26593
|
-
else if (s.ended) q(e, new
|
26605
|
+
else if (s.ended) q(e, new h);
|
26594
26606
|
else {
|
26595
26607
|
if (s.destroyed) return !1;
|
26596
26608
|
s.reading = !1, s.decoder && !t ? (n = s.decoder.write(n), s.objectMode || 0 !== n.length ? y(e, s, n, !1) : T(e, s)) : y(e, s, n, !1)
|
@@ -26704,7 +26716,7 @@
|
|
26704
26716
|
var o, a = n.needReadable;
|
26705
26717
|
return c("need readable", a), (0 === n.length || n.length - e < n.highWaterMark) && c("length less than watermark", a = !0), n.ended || n.reading ? c("reading or ended", a = !1) : a && (c("do read"), n.reading = !0, n.sync = !0, 0 === n.length && (n.needReadable = !0), this._read(n.highWaterMark), n.sync = !1, n.reading || (e = v(t, n))), null === (o = e > 0 ? C(e, n) : null) ? (n.needReadable = n.length <= n.highWaterMark, e = 0) : (n.length -= e, n.awaitDrain = 0), 0 === n.length && (n.ended || (n.needReadable = !0), t !== e && n.ended && B(this)), null !== o && this.emit("data", o), o
|
26706
26718
|
}, g.prototype._read = function(e) {
|
26707
|
-
q(this, new
|
26719
|
+
q(this, new m("_read()"))
|
26708
26720
|
}, g.prototype.pipe = function(e, n) {
|
26709
26721
|
var t = this,
|
26710
26722
|
o = this._readableState;
|
@@ -26882,8 +26894,8 @@
|
|
26882
26894
|
u = z.ERR_MULTIPLE_CALLBACK,
|
26883
26895
|
l = z.ERR_STREAM_CANNOT_PIPE,
|
26884
26896
|
A = z.ERR_STREAM_DESTROYED,
|
26885
|
-
|
26886
|
-
|
26897
|
+
h = z.ERR_STREAM_NULL_VALUES,
|
26898
|
+
m = z.ERR_STREAM_WRITE_AFTER_END,
|
26887
26899
|
f = z.ERR_UNKNOWN_ENCODING,
|
26888
26900
|
q = b.errorOrDestroy;
|
26889
26901
|
|
@@ -26996,11 +27008,11 @@
|
|
26996
27008
|
return i && !p.isBuffer(e) && (e = function(e) {
|
26997
27009
|
return p.from(e)
|
26998
27010
|
}(e)), "function" == typeof n && (t = n, n = null), i ? n = "buffer" : n || (n = a.defaultEncoding), "function" != typeof t && (t = _), a.ending ? function(e, n) {
|
26999
|
-
var t = new
|
27011
|
+
var t = new m;
|
27000
27012
|
q(e, t), process.nextTick(n, t)
|
27001
27013
|
}(this, t) : (i || function(e, n, t, o) {
|
27002
27014
|
var a;
|
27003
|
-
return null === t ? a = new
|
27015
|
+
return null === t ? a = new h : "string" == typeof t || n.objectMode || (a = new d("chunk", ["string", "Buffer"], t)), !a || (q(e, a), process.nextTick(o, a), !1)
|
27004
27016
|
}(this, a, e, t)) && (a.pendingcb++, r = function(e, n, t, o, a, r) {
|
27005
27017
|
if (!t) {
|
27006
27018
|
var i = function(e, n, t) {
|
@@ -27852,10 +27864,10 @@
|
|
27852
27864
|
rewriters: u,
|
27853
27865
|
stripColors: l,
|
27854
27866
|
exceptionHandlers: A,
|
27855
|
-
rejectionHandlers:
|
27867
|
+
rejectionHandlers: h
|
27856
27868
|
} = {}) {
|
27857
27869
|
if (this.transports.length && this.clear(), this.silent = e, this.format = n || this.format || t(1049)(), this.defaultMeta = o || null, this.levels = a || this.levels || O.npm.levels, this.level = r, this.exceptions && this.exceptions.unhandle(), this.rejections && this.rejections.unhandle(), this.exceptions = new s(this), this.rejections = new b(this), this.profilers = {}, this.exitOnError = i, p && (p = Array.isArray(p) ? p : [p]).forEach((e => this.add(e))), c || M || z || d || u || l) throw new Error(["{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.", "Use a custom winston.format(function) instead.", "See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md"].join("\n"));
|
27858
|
-
A && this.exceptions.handle(A),
|
27870
|
+
A && this.exceptions.handle(A), h && this.rejections.handle(h)
|
27859
27871
|
}
|
27860
27872
|
isLevelEnabled(e) {
|
27861
27873
|
const n = l(this.levels, e);
|
@@ -28703,8 +28715,8 @@
|
|
28703
28715
|
u = t(2365).getHighWaterMark,
|
28704
28716
|
l = t(3291).F,
|
28705
28717
|
A = l.ERR_INVALID_ARG_TYPE,
|
28706
|
-
|
28707
|
-
|
28718
|
+
h = l.ERR_STREAM_PUSH_AFTER_EOF,
|
28719
|
+
m = l.ERR_METHOD_NOT_IMPLEMENTED,
|
28708
28720
|
f = l.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;
|
28709
28721
|
t(2017)(g, r);
|
28710
28722
|
var q = O.errorOrDestroy,
|
@@ -28742,7 +28754,7 @@
|
|
28742
28754
|
if ("string" == typeof n || s.objectMode || Object.getPrototypeOf(n) === i.prototype || (n = function(e) {
|
28743
28755
|
return i.from(e)
|
28744
28756
|
}(n)), o) s.endEmitted ? q(e, new f) : y(e, s, n, !0);
|
28745
|
-
else if (s.ended) q(e, new
|
28757
|
+
else if (s.ended) q(e, new h);
|
28746
28758
|
else {
|
28747
28759
|
if (s.destroyed) return !1;
|
28748
28760
|
s.reading = !1, s.decoder && !t ? (n = s.decoder.write(n), s.objectMode || 0 !== n.length ? y(e, s, n, !1) : T(e, s)) : y(e, s, n, !1)
|
@@ -28856,7 +28868,7 @@
|
|
28856
28868
|
var o, a = n.needReadable;
|
28857
28869
|
return c("need readable", a), (0 === n.length || n.length - e < n.highWaterMark) && c("length less than watermark", a = !0), n.ended || n.reading ? c("reading or ended", a = !1) : a && (c("do read"), n.reading = !0, n.sync = !0, 0 === n.length && (n.needReadable = !0), this._read(n.highWaterMark), n.sync = !1, n.reading || (e = v(t, n))), null === (o = e > 0 ? C(e, n) : null) ? (n.needReadable = n.length <= n.highWaterMark, e = 0) : (n.length -= e, n.awaitDrain = 0), 0 === n.length && (n.ended || (n.needReadable = !0), t !== e && n.ended && B(this)), null !== o && this.emit("data", o), o
|
28858
28870
|
}, g.prototype._read = function(e) {
|
28859
|
-
q(this, new
|
28871
|
+
q(this, new m("_read()"))
|
28860
28872
|
}, g.prototype.pipe = function(e, n) {
|
28861
28873
|
var t = this,
|
28862
28874
|
o = this._readableState;
|
@@ -29098,8 +29110,8 @@
|
|
29098
29110
|
u = z.ERR_MULTIPLE_CALLBACK,
|
29099
29111
|
l = z.ERR_STREAM_CANNOT_PIPE,
|
29100
29112
|
A = z.ERR_STREAM_DESTROYED,
|
29101
|
-
|
29102
|
-
|
29113
|
+
h = z.ERR_STREAM_NULL_VALUES,
|
29114
|
+
m = z.ERR_STREAM_WRITE_AFTER_END,
|
29103
29115
|
f = z.ERR_UNKNOWN_ENCODING,
|
29104
29116
|
q = b.errorOrDestroy;
|
29105
29117
|
|
@@ -29212,11 +29224,11 @@
|
|
29212
29224
|
return i && !p.isBuffer(e) && (e = function(e) {
|
29213
29225
|
return p.from(e)
|
29214
29226
|
}(e)), "function" == typeof n && (t = n, n = null), i ? n = "buffer" : n || (n = a.defaultEncoding), "function" != typeof t && (t = _), a.ending ? function(e, n) {
|
29215
|
-
var t = new
|
29227
|
+
var t = new m;
|
29216
29228
|
q(e, t), process.nextTick(n, t)
|
29217
29229
|
}(this, t) : (i || function(e, n, t, o) {
|
29218
29230
|
var a;
|
29219
|
-
return null === t ? a = new
|
29231
|
+
return null === t ? a = new h : "string" == typeof t || n.objectMode || (a = new d("chunk", ["string", "Buffer"], t)), !a || (q(e, a), process.nextTick(o, a), !1)
|
29220
29232
|
}(this, a, e, t)) && (a.pendingcb++, r = function(e, n, t, o, a, r) {
|
29221
29233
|
if (!t) {
|
29222
29234
|
var i = function(e, n, t) {
|
@@ -29950,8 +29962,8 @@
|
|
29950
29962
|
const u = O(o),
|
29951
29963
|
l = O(a),
|
29952
29964
|
A = O(r),
|
29953
|
-
|
29954
|
-
|
29965
|
+
h = O(i),
|
29966
|
+
m = O(p),
|
29955
29967
|
f = O(c),
|
29956
29968
|
q = O(s),
|
29957
29969
|
_ = O(b),
|
@@ -29986,13 +29998,13 @@
|
|
29986
29998
|
B = x("function"),
|
29987
29999
|
X = x("number"),
|
29988
30000
|
Y = e => null !== e && "object" == typeof e,
|
29989
|
-
|
30001
|
+
I = e => {
|
29990
30002
|
if ("object" !== N(e)) return !1;
|
29991
30003
|
const n = R(e);
|
29992
30004
|
return !(null !== n && n !== Object.prototype && null !== Object.getPrototypeOf(n) || E in e || v in e)
|
29993
30005
|
},
|
29994
|
-
|
29995
|
-
|
30006
|
+
j = S("Date"),
|
30007
|
+
P = S("File"),
|
29996
30008
|
H = S("Blob"),
|
29997
30009
|
F = S("FileList"),
|
29998
30010
|
U = S("URLSearchParams"),
|
@@ -30067,14 +30079,14 @@
|
|
30067
30079
|
isNumber: X,
|
30068
30080
|
isBoolean: e => !0 === e || !1 === e,
|
30069
30081
|
isObject: Y,
|
30070
|
-
isPlainObject:
|
30082
|
+
isPlainObject: I,
|
30071
30083
|
isReadableStream: G,
|
30072
30084
|
isRequest: V,
|
30073
30085
|
isResponse: J,
|
30074
30086
|
isHeaders: K,
|
30075
30087
|
isUndefined: w,
|
30076
|
-
isDate:
|
30077
|
-
isFile:
|
30088
|
+
isDate: j,
|
30089
|
+
isFile: P,
|
30078
30090
|
isBlob: H,
|
30079
30091
|
isRegExp: re,
|
30080
30092
|
isFunction: B,
|
@@ -30088,7 +30100,7 @@
|
|
30088
30100
|
caseless: n
|
30089
30101
|
} = ee(this) && this || {}, t = {}, o = (o, a) => {
|
30090
30102
|
const r = n && Q(t, a) || a;
|
30091
|
-
|
30103
|
+
I(t[r]) && I(o) ? t[r] = e(t[r], o) : I(o) ? t[r] = e({}, o) : k(o) ? t[r] = o.slice() : t[r] = o
|
30092
30104
|
};
|
30093
30105
|
for (let e = 0, n = arguments.length; e < n; e++) arguments[e] && $(arguments[e], o);
|
30094
30106
|
return t
|
@@ -30229,17 +30241,17 @@
|
|
30229
30241
|
const le = ue.prototype,
|
30230
30242
|
Ae = {};
|
30231
30243
|
|
30232
|
-
function
|
30244
|
+
function he(e) {
|
30233
30245
|
return Oe.isPlainObject(e) || Oe.isArray(e)
|
30234
30246
|
}
|
30235
30247
|
|
30236
|
-
function
|
30248
|
+
function me(e) {
|
30237
30249
|
return Oe.endsWith(e, "[]") ? e.slice(0, -2) : e
|
30238
30250
|
}
|
30239
30251
|
|
30240
30252
|
function fe(e, n, t) {
|
30241
30253
|
return e ? e.concat(n).map((function(e, n) {
|
30242
|
-
return e =
|
30254
|
+
return e = me(e), !t && n ? "[" + e + "]" : e
|
30243
30255
|
})).join(t ? "." : "") : n
|
30244
30256
|
} ["ERR_BAD_OPTION_VALUE", "ERR_BAD_OPTION", "ECONNABORTED", "ETIMEDOUT", "ERR_NETWORK", "ERR_FR_TOO_MANY_REDIRECTS", "ERR_DEPRECATED", "ERR_BAD_RESPONSE", "ERR_BAD_REQUEST", "ERR_CANCELED", "ERR_NOT_SUPPORT", "ERR_INVALID_URL"].forEach((e => {
|
30245
30257
|
Ae[e] = {
|
@@ -30286,17 +30298,17 @@
|
|
30286
30298
|
if (e && !a && "object" == typeof e)
|
30287
30299
|
if (Oe.endsWith(t, "{}")) t = o ? t : t.slice(0, -2), e = JSON.stringify(e);
|
30288
30300
|
else if (Oe.isArray(e) && function(e) {
|
30289
|
-
return Oe.isArray(e) && !e.some(
|
30290
|
-
}(e) || (Oe.isFileList(e) || Oe.endsWith(t, "[]")) && (p = Oe.toArray(e))) return t =
|
30301
|
+
return Oe.isArray(e) && !e.some(he)
|
30302
|
+
}(e) || (Oe.isFileList(e) || Oe.endsWith(t, "[]")) && (p = Oe.toArray(e))) return t = me(t), p.forEach((function(e, o) {
|
30291
30303
|
!Oe.isUndefined(e) && null !== e && n.append(!0 === i ? fe([t], o, r) : null === i ? t : t + "[]", c(e))
|
30292
30304
|
})), !1;
|
30293
|
-
return !!
|
30305
|
+
return !!he(e) || (n.append(fe(a, t, r), c(e)), !1)
|
30294
30306
|
}
|
30295
30307
|
const b = [],
|
30296
30308
|
M = Object.assign(qe, {
|
30297
30309
|
defaultVisitor: s,
|
30298
30310
|
convertValue: c,
|
30299
|
-
isVisitable:
|
30311
|
+
isVisitable: he
|
30300
30312
|
});
|
30301
30313
|
if (!Oe.isObject(e)) throw new TypeError("data must be an object");
|
30302
30314
|
return function e(t, o) {
|
@@ -30429,7 +30441,7 @@
|
|
30429
30441
|
...ke
|
30430
30442
|
};
|
30431
30443
|
|
30432
|
-
function
|
30444
|
+
function Ie(e) {
|
30433
30445
|
function n(e, t, o, a) {
|
30434
30446
|
let r = e[a++];
|
30435
30447
|
if ("__proto__" === r) return !0;
|
@@ -30457,7 +30469,7 @@
|
|
30457
30469
|
}
|
30458
30470
|
return null
|
30459
30471
|
}
|
30460
|
-
const
|
30472
|
+
const je = {
|
30461
30473
|
transitional: Ee,
|
30462
30474
|
adapter: ["xhr", "http", "fetch"],
|
30463
30475
|
transformRequest: [function(e, n) {
|
@@ -30465,7 +30477,7 @@
|
|
30465
30477
|
o = t.indexOf("application/json") > -1,
|
30466
30478
|
a = Oe.isObject(e);
|
30467
30479
|
a && Oe.isHTMLForm(e) && (e = new FormData(e));
|
30468
|
-
if (Oe.isFormData(e)) return o ? JSON.stringify(
|
30480
|
+
if (Oe.isFormData(e)) return o ? JSON.stringify(Ie(e)) : e;
|
30469
30481
|
if (Oe.isArrayBuffer(e) || Oe.isBuffer(e) || Oe.isStream(e) || Oe.isFile(e) || Oe.isBlob(e) || Oe.isReadableStream(e)) return e;
|
30470
30482
|
if (Oe.isArrayBufferView(e)) return e.buffer;
|
30471
30483
|
if (Oe.isURLSearchParams(e)) return n.setContentType("application/x-www-form-urlencoded;charset=utf-8", !1), e.toString();
|
@@ -30495,7 +30507,7 @@
|
|
30495
30507
|
}(e)) : e
|
30496
30508
|
}],
|
30497
30509
|
transformResponse: [function(e) {
|
30498
|
-
const n = this.transitional ||
|
30510
|
+
const n = this.transitional || je.transitional,
|
30499
30511
|
t = n && n.forcedJSONParsing,
|
30500
30512
|
o = "json" === this.responseType;
|
30501
30513
|
if (Oe.isResponse(e) || Oe.isReadableStream(e)) return e;
|
@@ -30532,9 +30544,9 @@
|
|
30532
30544
|
}
|
30533
30545
|
};
|
30534
30546
|
Oe.forEach(["delete", "get", "head", "post", "put", "patch"], (e => {
|
30535
|
-
|
30547
|
+
je.headers[e] = {}
|
30536
30548
|
}));
|
30537
|
-
const
|
30549
|
+
const Pe = je,
|
30538
30550
|
He = Oe.toObjectSet(["age", "authorization", "content-length", "content-type", "etag", "expires", "from", "host", "if-modified-since", "if-unmodified-since", "last-modified", "location", "max-forwards", "proxy-authorization", "referer", "retry-after", "user-agent"]),
|
30539
30551
|
Fe = Symbol("internals");
|
30540
30552
|
|
@@ -30705,7 +30717,7 @@
|
|
30705
30717
|
const Je = AxiosHeaders;
|
30706
30718
|
|
30707
30719
|
function Ke(e, n) {
|
30708
|
-
const t = this ||
|
30720
|
+
const t = this || Pe,
|
30709
30721
|
o = n || t,
|
30710
30722
|
a = Je.from(o.headers);
|
30711
30723
|
let r = o.data;
|
@@ -30954,8 +30966,8 @@
|
|
30954
30966
|
loaded: o
|
30955
30967
|
}), n[1]]
|
30956
30968
|
},
|
30957
|
-
|
30958
|
-
|
30969
|
+
hn = e => (...n) => Oe.asap((() => e(...n))),
|
30970
|
+
mn = {
|
30959
30971
|
flush: W.default.constants.Z_SYNC_FLUSH,
|
30960
30972
|
finishFlush: W.default.constants.Z_SYNC_FLUSH
|
30961
30973
|
},
|
@@ -30979,7 +30991,7 @@
|
|
30979
30991
|
function vn(e, n, t) {
|
30980
30992
|
let o = n;
|
30981
30993
|
if (!o && !1 !== o) {
|
30982
|
-
const e =
|
30994
|
+
const e = h.default.getProxyForUrl(t);
|
30983
30995
|
e && (o = new URL(e))
|
30984
30996
|
}
|
30985
30997
|
if (o) {
|
@@ -31044,8 +31056,8 @@
|
|
31044
31056
|
b = !0, n && (z = !0, u())
|
31045
31057
|
})), O.once("abort", t), (e.cancelToken || e.signal) && (e.cancelToken && e.cancelToken.subscribe(l), e.signal && (e.signal.aborted ? l() : e.signal.addEventListener("abort", l)));
|
31046
31058
|
const A = en(e.baseURL, e.url, e.allowAbsoluteUrls),
|
31047
|
-
|
31048
|
-
_ =
|
31059
|
+
h = new URL(A, Ye.hasBrowserEnv ? Ye.origin : void 0),
|
31060
|
+
_ = h.protocol || Ln[0];
|
31049
31061
|
if ("data:" === _) {
|
31050
31062
|
let o;
|
31051
31063
|
if ("GET" !== s) return Ze(n, t, {
|
@@ -31126,9 +31138,9 @@
|
|
31126
31138
|
objectMode: !1
|
31127
31139
|
})), a = g.default.pipeline([a, new rn({
|
31128
31140
|
maxRate: Oe.toFiniteNumber(E)
|
31129
|
-
})], Oe.noop), y && a.on("progress", yn(a, An(T, ln(
|
31141
|
+
})], Oe.noop), y && a.on("progress", yn(a, An(T, ln(hn(y), !1, 3))))), e.auth && (S = (e.auth.username || "") + ":" + (e.auth.password || "")), !S && h.username && (S = h.username + ":" + h.password), S && L.delete("authorization");
|
31130
31142
|
try {
|
31131
|
-
x = Re(
|
31143
|
+
x = Re(h.pathname + h.search, e.params, e.paramsSerializer).replace(/^\?/, "")
|
31132
31144
|
} catch (n) {
|
31133
31145
|
const o = new Error(n.message);
|
31134
31146
|
return o.config = e, o.url = e.url, o.exists = !0, t(o)
|
@@ -31149,9 +31161,9 @@
|
|
31149
31161
|
beforeRedirects: {}
|
31150
31162
|
};
|
31151
31163
|
let w;
|
31152
|
-
!Oe.isUndefined(r) && (k.lookup = r), e.socketPath ? k.socketPath = e.socketPath : (k.hostname =
|
31164
|
+
!Oe.isUndefined(r) && (k.lookup = r), e.socketPath ? k.socketPath = e.socketPath : (k.hostname = h.hostname.startsWith("[") ? h.hostname.slice(1, -1) : h.hostname, k.port = h.port, vn(k, e.proxy, _ + "//" + h.hostname + (h.port ? ":" + h.port : "") + k.path));
|
31153
31165
|
const D = gn.test(k.protocol);
|
31154
|
-
if (k.agent = D ? e.httpsAgent : e.httpAgent, e.transport ? w = e.transport : 0 === e.maxRedirects ? w = D ? f.default :
|
31166
|
+
if (k.agent = D ? e.httpsAgent : e.httpAgent, e.transport ? w = e.transport : 0 === e.maxRedirects ? w = D ? f.default : m.default : (e.maxRedirects && (k.maxRedirects = e.maxRedirects), e.beforeRedirect && (k.beforeRedirects.config = e.beforeRedirect), w = D ? Wn : _n), e.maxBodyLength > -1 ? k.maxBodyLength = e.maxBodyLength : k.maxBodyLength = 1 / 0, e.insecureHTTPParser && (k.insecureHTTPParser = e.insecureHTTPParser), M = w.request(k, (function(o) {
|
31155
31167
|
if (M.destroyed) return;
|
31156
31168
|
const a = [o],
|
31157
31169
|
r = +o.headers["content-length"];
|
@@ -31159,7 +31171,7 @@
|
|
31159
31171
|
const e = new rn({
|
31160
31172
|
maxRate: Oe.toFiniteNumber(N)
|
31161
31173
|
});
|
31162
|
-
R && e.on("progress", yn(e, An(r, ln(
|
31174
|
+
R && e.on("progress", yn(e, An(r, ln(hn(R), !0, 3)))), a.push(e)
|
31163
31175
|
}
|
31164
31176
|
let i = o;
|
31165
31177
|
const b = o.req || M;
|
@@ -31168,10 +31180,10 @@
|
|
31168
31180
|
case "x-gzip":
|
31169
31181
|
case "compress":
|
31170
31182
|
case "x-compress":
|
31171
|
-
a.push(W.default.createUnzip(
|
31183
|
+
a.push(W.default.createUnzip(mn)), delete o.headers["content-encoding"];
|
31172
31184
|
break;
|
31173
31185
|
case "deflate":
|
31174
|
-
a.push(new On), a.push(W.default.createUnzip(
|
31186
|
+
a.push(new On), a.push(W.default.createUnzip(mn)), delete o.headers["content-encoding"];
|
31175
31187
|
break;
|
31176
31188
|
case "br":
|
31177
31189
|
qn && (a.push(W.default.createBrotliDecompress(fn)), delete o.headers["content-encoding"])
|
@@ -31459,7 +31471,7 @@
|
|
31459
31471
|
} finally {
|
31460
31472
|
await n.cancel()
|
31461
31473
|
}
|
31462
|
-
},
|
31474
|
+
}, In = (e, n, t, o) => {
|
31463
31475
|
const a = async function*(e, n) {
|
31464
31476
|
for await (const t of Yn(e)) yield* Xn(t, n)
|
31465
31477
|
}(e, n);
|
@@ -31489,7 +31501,7 @@
|
|
31489
31501
|
}, {
|
31490
31502
|
highWaterMark: 2
|
31491
31503
|
})
|
31492
|
-
},
|
31504
|
+
}, jn = "function" == typeof fetch && "function" == typeof Request && "function" == typeof Response, Pn = jn && "function" == typeof ReadableStream, Hn = jn && ("function" == typeof TextEncoder ? (Fn = new TextEncoder, e => Fn.encode(e)) : async e => new Uint8Array(await new Response(e).arrayBuffer()));
|
31493
31505
|
var Fn;
|
31494
31506
|
const Un = (e, ...n) => {
|
31495
31507
|
try {
|
@@ -31498,7 +31510,7 @@
|
|
31498
31510
|
return !1
|
31499
31511
|
}
|
31500
31512
|
},
|
31501
|
-
Gn =
|
31513
|
+
Gn = Pn && Un((() => {
|
31502
31514
|
let e = !1;
|
31503
31515
|
const n = new Request(Ye.origin, {
|
31504
31516
|
body: new ReadableStream,
|
@@ -31509,12 +31521,12 @@
|
|
31509
31521
|
}).headers.has("Content-Type");
|
31510
31522
|
return e && !n
|
31511
31523
|
})),
|
31512
|
-
Vn =
|
31524
|
+
Vn = Pn && Un((() => Oe.isReadableStream(new Response("").body))),
|
31513
31525
|
Jn = {
|
31514
31526
|
stream: Vn && (e => e.body)
|
31515
31527
|
};
|
31516
31528
|
var Kn;
|
31517
|
-
|
31529
|
+
jn && (Kn = new Response, ["text", "arrayBuffer", "blob", "formData", "stream"].forEach((e => {
|
31518
31530
|
!Jn[e] && (Jn[e] = Oe.isFunction(Kn[e]) ? n => n[e]() : (n, t) => {
|
31519
31531
|
throw new ue(`Response type '${e}' is not supported`, ue.ERR_NOT_SUPPORT, t)
|
31520
31532
|
})
|
@@ -31533,7 +31545,7 @@
|
|
31533
31545
|
}
|
31534
31546
|
return Oe.isArrayBufferView(e) || Oe.isArrayBuffer(e) ? e.byteLength : (Oe.isURLSearchParams(e) && (e += ""), Oe.isString(e) ? (await Hn(e)).byteLength : void 0)
|
31535
31547
|
})(n) : t
|
31536
|
-
}, Qn =
|
31548
|
+
}, Qn = jn && (async e => {
|
31537
31549
|
let {
|
31538
31550
|
url: n,
|
31539
31551
|
method: t,
|
@@ -31562,8 +31574,8 @@
|
|
31562
31574
|
duplex: "half"
|
31563
31575
|
});
|
31564
31576
|
if (Oe.isFormData(o) && (e = t.headers.get("content-type")) && b.setContentType(e), t.body) {
|
31565
|
-
const [e, n] = An(l, ln(
|
31566
|
-
o =
|
31577
|
+
const [e, n] = An(l, ln(hn(c)));
|
31578
|
+
o = In(t.body, 65536, e, n)
|
31567
31579
|
}
|
31568
31580
|
}
|
31569
31581
|
Oe.isString(M) || (M = M ? "include" : "omit");
|
@@ -31585,8 +31597,8 @@
|
|
31585
31597
|
e[n] = r[n]
|
31586
31598
|
}));
|
31587
31599
|
const n = Oe.toFiniteNumber(r.headers.get("content-length")),
|
31588
|
-
[t, o] = p && An(n, ln(
|
31589
|
-
r = new Response(
|
31600
|
+
[t, o] = p && An(n, ln(hn(p), !0)) || [];
|
31601
|
+
r = new Response(In(r.body, 65536, t, (() => {
|
31590
31602
|
o && o(), u && u()
|
31591
31603
|
})), e)
|
31592
31604
|
}
|
@@ -31653,7 +31665,7 @@
|
|
31653
31665
|
|
31654
31666
|
function at(e) {
|
31655
31667
|
ot(e), e.headers = Je.from(e.headers), e.data = Ke.call(e, e.transformRequest), -1 !== ["post", "put", "patch"].indexOf(e.method) && e.headers.setContentType("application/x-www-form-urlencoded", !1);
|
31656
|
-
return tt(e.adapter ||
|
31668
|
+
return tt(e.adapter || Pe.adapter)(e).then((function(n) {
|
31657
31669
|
return ot(e), n.data = Ke.call(e, e.transformResponse, n), n.headers = Je.from(n.headers), n
|
31658
31670
|
}), (function(n) {
|
31659
31671
|
return $e(n) || (ot(e), n && n.response && (n.response.data = Ke.call(e, e.transformResponse, n.response), n.response.headers = Je.from(n.response.headers))), Promise.reject(n)
|
@@ -31937,7 +31949,7 @@
|
|
31937
31949
|
}), o.create = function(t) {
|
31938
31950
|
return e(wn(n, t))
|
31939
31951
|
}, o
|
31940
|
-
}(
|
31952
|
+
}(Pe);
|
31941
31953
|
dt.Axios = st, dt.CanceledError = Qe, dt.CancelToken = bt, dt.isCancel = $e, dt.VERSION = nn, dt.toFormData = _e, dt.AxiosError = ue, dt.Cancel = dt.CanceledError, dt.all = function(e) {
|
31942
31954
|
return Promise.all(e)
|
31943
31955
|
}, dt.spread = function(e) {
|
@@ -31946,7 +31958,7 @@
|
|
31946
31958
|
}
|
31947
31959
|
}, dt.isAxiosError = function(e) {
|
31948
31960
|
return Oe.isObject(e) && !0 === e.isAxiosError
|
31949
|
-
}, dt.mergeConfig = wn, dt.AxiosHeaders = Je, dt.formToJSON = e =>
|
31961
|
+
}, dt.mergeConfig = wn, dt.AxiosHeaders = Je, dt.formToJSON = e => Ie(Oe.isHTMLForm(e) ? new FormData(e) : e), dt.getAdapter = tt, dt.HttpStatusCode = zt, dt.default = dt, e.exports = dt
|
31950
31962
|
},
|
31951
31963
|
56: e => {
|
31952
31964
|
"use strict";
|
@@ -31997,4 +32009,4 @@
|
|
31997
32009
|
})
|
31998
32010
|
}, t.nmd = e => (e.paths = [], e.children || (e.children = []), e);
|
31999
32011
|
t(t.s = 1402)
|
32000
|
-
})();/*! [dist-pg-services.js]; ===WEBPACK BUILD: 1.25.
|
32012
|
+
})();/*! [dist-pg-services.js]; ===WEBPACK BUILD: 1.25.0910.1839=== */
|