@metriport/shared 0.13.3 → 0.14.0-alpha.0

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.
Files changed (220) hide show
  1. package/dist/common/__tests__/npi.d.ts +7 -0
  2. package/dist/common/__tests__/npi.d.ts.map +1 -0
  3. package/dist/common/__tests__/npi.js +32 -0
  4. package/dist/common/__tests__/npi.js.map +1 -0
  5. package/dist/common/__tests__/number.test.d.ts +2 -0
  6. package/dist/common/__tests__/number.test.d.ts.map +1 -0
  7. package/dist/common/__tests__/number.test.js +10 -0
  8. package/dist/common/__tests__/number.test.js.map +1 -0
  9. package/dist/common/__tests__/string.test copy.d.ts +2 -0
  10. package/dist/common/__tests__/string.test copy.d.ts.map +1 -0
  11. package/dist/common/__tests__/string.test copy.js +10 -0
  12. package/dist/common/__tests__/string.test copy.js.map +1 -0
  13. package/dist/common/__tests__/validate-npi.d.ts +10 -0
  14. package/dist/common/__tests__/validate-npi.d.ts.map +1 -0
  15. package/dist/common/__tests__/validate-npi.js +35 -0
  16. package/dist/common/__tests__/validate-npi.js.map +1 -0
  17. package/dist/common/__tests__/validate-npi.test.d.ts +2 -0
  18. package/dist/common/__tests__/validate-npi.test.d.ts.map +1 -0
  19. package/dist/common/__tests__/validate-npi.test.js +24 -0
  20. package/dist/common/__tests__/validate-npi.test.js.map +1 -0
  21. package/dist/common/date.d.ts +6 -2
  22. package/dist/common/date.d.ts.map +1 -1
  23. package/dist/common/date.js +38 -6
  24. package/dist/common/date.js.map +1 -1
  25. package/dist/common/error.d.ts +3 -3
  26. package/dist/common/error.js +3 -3
  27. package/dist/common/filter-map.d.ts +11 -0
  28. package/dist/common/filter-map.d.ts.map +1 -0
  29. package/dist/common/filter-map.js +17 -0
  30. package/dist/common/filter-map.js.map +1 -0
  31. package/dist/common/xml-parser.d.ts +3 -0
  32. package/dist/common/xml-parser.d.ts.map +1 -0
  33. package/dist/common/xml-parser.js +17 -0
  34. package/dist/common/xml-parser.js.map +1 -0
  35. package/dist/core/src/command/patient-import/patient-import-shared.d.ts +18 -0
  36. package/dist/core/src/command/patient-import/patient-import-shared.d.ts.map +1 -0
  37. package/dist/core/src/command/patient-import/patient-import-shared.js +137 -0
  38. package/dist/core/src/command/patient-import/patient-import-shared.js.map +1 -0
  39. package/dist/core/src/command/patient-import/patient-import.d.ts +60 -0
  40. package/dist/core/src/command/patient-import/patient-import.d.ts.map +1 -0
  41. package/dist/core/src/command/patient-import/patient-import.js +3 -0
  42. package/dist/core/src/command/patient-import/patient-import.js.map +1 -0
  43. package/dist/core/src/domain/address.d.ts +17 -0
  44. package/dist/core/src/domain/address.d.ts.map +1 -0
  45. package/dist/core/src/domain/address.js +20 -0
  46. package/dist/core/src/domain/address.js.map +1 -0
  47. package/dist/core/src/domain/base-domain.d.ts +14 -0
  48. package/dist/core/src/domain/base-domain.d.ts.map +1 -0
  49. package/dist/core/src/domain/base-domain.js +3 -0
  50. package/dist/core/src/domain/base-domain.js.map +1 -0
  51. package/dist/core/src/domain/bulk-get-document-url.d.ts +8 -0
  52. package/dist/core/src/domain/bulk-get-document-url.d.ts.map +1 -0
  53. package/dist/core/src/domain/bulk-get-document-url.js +9 -0
  54. package/dist/core/src/domain/bulk-get-document-url.js.map +1 -0
  55. package/dist/core/src/domain/contact.d.ts +3 -0
  56. package/dist/core/src/domain/contact.d.ts.map +1 -0
  57. package/dist/core/src/domain/contact.js +3 -0
  58. package/dist/core/src/domain/contact.js.map +1 -0
  59. package/dist/core/src/domain/document-query.d.ts +24 -0
  60. package/dist/core/src/domain/document-query.d.ts.map +1 -0
  61. package/dist/core/src/domain/document-query.js +27 -0
  62. package/dist/core/src/domain/document-query.js.map +1 -0
  63. package/dist/core/src/domain/patient-demographics.d.ts +33 -0
  64. package/dist/core/src/domain/patient-demographics.d.ts.map +1 -0
  65. package/dist/core/src/domain/patient-demographics.js +3 -0
  66. package/dist/core/src/domain/patient-demographics.js.map +1 -0
  67. package/dist/core/src/domain/patient-discovery.d.ts +15 -0
  68. package/dist/core/src/domain/patient-discovery.d.ts.map +1 -0
  69. package/dist/core/src/domain/patient-discovery.js +3 -0
  70. package/dist/core/src/domain/patient-discovery.js.map +1 -0
  71. package/dist/core/src/domain/patient.d.ts +78 -0
  72. package/dist/core/src/domain/patient.d.ts.map +1 -0
  73. package/dist/core/src/domain/patient.js +38 -0
  74. package/dist/core/src/domain/patient.js.map +1 -0
  75. package/dist/core/src/external/index.d.ts +14 -0
  76. package/dist/core/src/external/index.d.ts.map +1 -0
  77. package/dist/core/src/external/index.js +24 -0
  78. package/dist/core/src/external/index.js.map +1 -0
  79. package/dist/domain/address/USStateForAddress.d.ts +3 -0
  80. package/dist/domain/address/USStateForAddress.d.ts.map +1 -0
  81. package/dist/domain/address/USStateForAddress.js +3 -0
  82. package/dist/domain/address/USStateForAddress.js.map +1 -0
  83. package/dist/domain/address/__tests__/normalize-zip.test copy.d.ts +2 -0
  84. package/dist/domain/address/__tests__/normalize-zip.test copy.d.ts.map +1 -0
  85. package/dist/domain/address/__tests__/normalize-zip.test copy.js +117 -0
  86. package/dist/domain/address/__tests__/normalize-zip.test copy.js.map +1 -0
  87. package/dist/domain/address/__tests__/normalize-zip.test.js +109 -30
  88. package/dist/domain/address/__tests__/normalize-zip.test.js.map +1 -1
  89. package/dist/domain/address/__tests__/state.test copy.d.ts +2 -0
  90. package/dist/domain/address/__tests__/state.test copy.d.ts.map +1 -0
  91. package/dist/domain/address/__tests__/state.test copy.js +33 -0
  92. package/dist/domain/address/__tests__/state.test copy.js.map +1 -0
  93. package/dist/domain/address/__tests__/state.test.d.ts +2 -0
  94. package/dist/domain/address/__tests__/state.test.d.ts.map +1 -0
  95. package/dist/domain/address/__tests__/state.test.js +40 -0
  96. package/dist/domain/address/__tests__/state.test.js.map +1 -0
  97. package/dist/domain/address/__tests__/territory.test.d.ts +2 -0
  98. package/dist/domain/address/__tests__/territory.test.d.ts.map +1 -0
  99. package/dist/domain/address/__tests__/territory.test.js +35 -0
  100. package/dist/domain/address/__tests__/territory.test.js.map +1 -0
  101. package/dist/domain/address/index.d.ts +6 -0
  102. package/dist/domain/address/index.d.ts.map +1 -0
  103. package/dist/domain/address/index.js +21 -0
  104. package/dist/domain/address/index.js.map +1 -0
  105. package/dist/domain/address/state copy.d.ts +62 -0
  106. package/dist/domain/address/state copy.d.ts.map +1 -0
  107. package/dist/domain/address/state copy.js +136 -0
  108. package/dist/domain/address/state copy.js.map +1 -0
  109. package/dist/domain/address/state-for-address.d.ts +4 -0
  110. package/dist/domain/address/state-for-address.d.ts.map +1 -0
  111. package/dist/domain/address/state-for-address.js +17 -0
  112. package/dist/domain/address/state-for-address.js.map +1 -0
  113. package/dist/domain/address/state.d.ts +1 -3
  114. package/dist/domain/address/state.d.ts.map +1 -1
  115. package/dist/domain/address/state.js +57 -61
  116. package/dist/domain/address/state.js.map +1 -1
  117. package/dist/domain/address/territory.d.ts +10 -0
  118. package/dist/domain/address/territory.d.ts.map +1 -0
  119. package/dist/domain/address/territory.js +32 -0
  120. package/dist/domain/address/territory.js.map +1 -0
  121. package/dist/domain/address/zip.d.ts +5 -2
  122. package/dist/domain/address/zip.d.ts.map +1 -1
  123. package/dist/domain/address/zip.js +45 -5
  124. package/dist/domain/address/zip.js.map +1 -1
  125. package/dist/domain/contact/__tests__/email.test.d.ts +2 -0
  126. package/dist/domain/contact/__tests__/email.test.d.ts.map +1 -0
  127. package/dist/domain/contact/__tests__/email.test.js +39 -0
  128. package/dist/domain/contact/__tests__/email.test.js.map +1 -0
  129. package/dist/domain/contact/__tests__/phone.test.js +28 -0
  130. package/dist/domain/contact/__tests__/phone.test.js.map +1 -1
  131. package/dist/domain/contact/email.d.ts +1 -0
  132. package/dist/domain/contact/email.d.ts.map +1 -1
  133. package/dist/domain/contact/email.js +5 -1
  134. package/dist/domain/contact/email.js.map +1 -1
  135. package/dist/domain/contact/phone.d.ts +2 -0
  136. package/dist/domain/contact/phone.d.ts.map +1 -1
  137. package/dist/domain/contact/phone.js +13 -1
  138. package/dist/domain/contact/phone.js.map +1 -1
  139. package/dist/domain/patient/__tests__/normalize-zip.test.d.ts +1 -0
  140. package/dist/domain/patient/__tests__/normalize-zip.test.d.ts.map +1 -0
  141. package/dist/domain/patient/__tests__/normalize-zip.test.js +2 -0
  142. package/dist/domain/patient/__tests__/normalize-zip.test.js.map +1 -0
  143. package/dist/domain/patient/patient-import.d.ts +131 -0
  144. package/dist/domain/patient/patient-import.d.ts.map +1 -0
  145. package/dist/domain/patient/patient-import.js +32 -0
  146. package/dist/domain/patient/patient-import.js.map +1 -0
  147. package/dist/domain/patient/patient.d.ts +23 -0
  148. package/dist/domain/patient/patient.d.ts.map +1 -0
  149. package/dist/domain/patient/patient.js +14 -0
  150. package/dist/domain/patient/patient.js.map +1 -0
  151. package/dist/error/metriport-error.d.ts +1 -1
  152. package/dist/error/metriport-error.d.ts.map +1 -1
  153. package/dist/index.d.ts +11 -7
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +16 -12
  156. package/dist/index.js.map +1 -1
  157. package/dist/interface/external/athenahealth/appointment.d.ts +50 -0
  158. package/dist/interface/external/athenahealth/appointment.d.ts.map +1 -0
  159. package/dist/interface/external/athenahealth/appointment.js +18 -0
  160. package/dist/interface/external/athenahealth/appointment.js.map +1 -0
  161. package/dist/interface/external/athenahealth/cx-mapping.d.ts +10 -0
  162. package/dist/interface/external/athenahealth/cx-mapping.d.ts.map +1 -0
  163. package/dist/interface/external/athenahealth/cx-mapping.js +8 -0
  164. package/dist/interface/external/athenahealth/cx-mapping.js.map +1 -0
  165. package/dist/interface/external/athenahealth/department.d.ts +27 -0
  166. package/dist/interface/external/athenahealth/department.d.ts.map +1 -0
  167. package/dist/interface/external/athenahealth/department.js +11 -0
  168. package/dist/interface/external/athenahealth/department.js.map +1 -0
  169. package/dist/interface/external/athenahealth/index.d.ts +6 -0
  170. package/dist/interface/external/athenahealth/index.d.ts.map +1 -1
  171. package/dist/interface/external/athenahealth/index.js +6 -0
  172. package/dist/interface/external/athenahealth/index.js.map +1 -1
  173. package/dist/interface/external/athenahealth/jwt-token.d.ts +5 -0
  174. package/dist/interface/external/athenahealth/jwt-token.d.ts.map +1 -0
  175. package/dist/interface/external/athenahealth/jwt-token.js +3 -0
  176. package/dist/interface/external/athenahealth/jwt-token.js.map +1 -0
  177. package/dist/interface/external/athenahealth/medication.d.ts +38 -0
  178. package/dist/interface/external/athenahealth/medication.d.ts.map +1 -0
  179. package/dist/interface/external/athenahealth/medication.js +15 -0
  180. package/dist/interface/external/athenahealth/medication.js.map +1 -0
  181. package/dist/interface/external/athenahealth/patient.d.ts +277 -8
  182. package/dist/interface/external/athenahealth/patient.d.ts.map +1 -1
  183. package/dist/interface/external/athenahealth/patient.js +8 -1
  184. package/dist/interface/external/athenahealth/patient.js.map +1 -1
  185. package/dist/interface/external/athenahealth/subscription.d.ts +10 -0
  186. package/dist/interface/external/athenahealth/subscription.d.ts.map +1 -0
  187. package/dist/interface/external/athenahealth/subscription.js +8 -0
  188. package/dist/interface/external/athenahealth/subscription.js.map +1 -0
  189. package/dist/interface/internal/consolidated.d.ts +2 -2
  190. package/dist/medical/fhir/bundle.d.ts +3 -0
  191. package/dist/medical/fhir/bundle.d.ts.map +1 -1
  192. package/dist/medical/fhir/bundle.js +21 -0
  193. package/dist/medical/fhir/bundle.js.map +1 -1
  194. package/dist/medical/webhook/webhook-request.d.ts +25 -25
  195. package/dist/net/error.d.ts.map +1 -1
  196. package/dist/net/error.js +1 -0
  197. package/dist/net/error.js.map +1 -1
  198. package/dist/net/retry.d.ts.map +1 -1
  199. package/dist/net/retry.js +3 -1
  200. package/dist/net/retry.js.map +1 -1
  201. package/dist/shared/src/domain/patient/__tests__/normalize-zip.test.d.ts.map +1 -0
  202. package/dist/shared/src/domain/patient/__tests__/normalize-zip.test.js +81 -0
  203. package/dist/shared/src/domain/patient/__tests__/normalize-zip.test.js.map +1 -0
  204. package/package.json +2 -2
  205. package/dist/common/__tests__/normalize-zip.test.d.ts.map +0 -1
  206. package/dist/common/__tests__/normalize-zip.test.js +0 -38
  207. package/dist/common/__tests__/normalize-zip.test.js.map +0 -1
  208. package/dist/common/normalize-zip.d.ts +0 -10
  209. package/dist/common/normalize-zip.d.ts.map +0 -1
  210. package/dist/common/normalize-zip.js +0 -30
  211. package/dist/common/normalize-zip.js.map +0 -1
  212. package/dist/net/__tests__/file-downloader.d.ts +0 -2
  213. package/dist/net/__tests__/file-downloader.d.ts.map +0 -1
  214. package/dist/net/__tests__/file-downloader.js +0 -66
  215. package/dist/net/__tests__/file-downloader.js.map +0 -1
  216. package/dist/net/file-downloader.d.ts +0 -22
  217. package/dist/net/file-downloader.d.ts.map +0 -1
  218. package/dist/net/file-downloader.js +0 -67
  219. package/dist/net/file-downloader.js.map +0 -1
  220. /package/dist/{common → shared/src/domain/patient}/__tests__/normalize-zip.test.d.ts +0 -0
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Generates a valid NPI number that passes the validateNPI() function.
3
+ *
4
+ * @returns A valid 10-digit NPI number as a string.
5
+ */
6
+ export declare function makeNPI(): string;
7
+ //# sourceMappingURL=npi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npi.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/npi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAyBhC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeNPI = void 0;
4
+ /**
5
+ * Generates a valid NPI number that passes the validateNPI() function.
6
+ *
7
+ * @returns A valid 10-digit NPI number as a string.
8
+ */
9
+ function makeNPI() {
10
+ const digits = [];
11
+ // Generate the first 9 digits
12
+ digits.push(Math.random() < 0.5 ? 1 : 2); // First digit is either 1 or 2
13
+ for (let i = 1; i < 9; i++) {
14
+ digits.push(Math.floor(Math.random() * 10));
15
+ }
16
+ let sum = 24; // Account for NPI prefix (80840)
17
+ let shouldDouble = true;
18
+ digits.forEach(digit => {
19
+ if (shouldDouble) {
20
+ digit *= 2;
21
+ if (digit > 9)
22
+ digit -= 9;
23
+ }
24
+ sum += digit;
25
+ shouldDouble = !shouldDouble;
26
+ });
27
+ const checkDigit = (10 - (sum % 10)) % 10;
28
+ digits.push(checkDigit);
29
+ return digits.join("");
30
+ }
31
+ exports.makeNPI = makeNPI;
32
+ //# sourceMappingURL=npi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npi.js","sourceRoot":"","sources":["../../../src/common/__tests__/npi.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,SAAgB,OAAO;IACrB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,8BAA8B;IAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B;IACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;KAC7C;IAED,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,iCAAiC;IAC/C,IAAI,YAAY,GAAG,IAAI,CAAC;IAExB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACrB,IAAI,YAAY,EAAE;YAChB,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,GAAG,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;SAC3B;QACD,GAAG,IAAI,KAAK,CAAC;QACb,YAAY,GAAG,CAAC,YAAY,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAExB,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAzBD,0BAyBC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=number.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/number.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const numbers_1 = require("../numbers");
4
+ describe("numbers", () => {
5
+ it("returns undefined when it gets undefined", async () => {
6
+ const resp = (0, numbers_1.formatNumber)(12.23454616);
7
+ console.log(resp);
8
+ });
9
+ });
10
+ //# sourceMappingURL=number.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.test.js","sourceRoot":"","sources":["../../../src/common/__tests__/number.test.ts"],"names":[],"mappings":";;AAAA,wCAA0C;AAE1C,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,IAAI,GAAG,IAAA,sBAAY,EAAC,WAAW,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=string.test%20copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.test copy.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/string.test copy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const numbers_1 = require("../numbers");
4
+ describe("numbers", () => {
5
+ it("returns undefined when it gets undefined", async () => {
6
+ const resp = (0, numbers_1.formatNumber)(12.23454616);
7
+ console.log(resp);
8
+ });
9
+ });
10
+ //# sourceMappingURL=string.test%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.test copy.js","sourceRoot":"","sources":["../../../src/common/__tests__/string.test copy.ts"],"names":[],"mappings":";;AAAA,wCAA0C;AAE1C,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,IAAI,GAAG,IAAA,sBAAY,EAAC,WAAW,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Generates a valid NPI number that passes the validateNPI() function.
3
+ *
4
+ * Generated with by Anthropic's Claude 3.5.
5
+ * Slightly updated by human.
6
+ *
7
+ * @returns A valid 10-digit NPI number as a string.
8
+ */
9
+ export declare function makeNPI(): string;
10
+ //# sourceMappingURL=validate-npi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-npi.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/validate-npi.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAyBhC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeNPI = void 0;
4
+ /**
5
+ * Generates a valid NPI number that passes the validateNPI() function.
6
+ *
7
+ * Generated with by Anthropic's Claude 3.5.
8
+ * Slightly updated by human.
9
+ *
10
+ * @returns A valid 10-digit NPI number as a string.
11
+ */
12
+ function makeNPI() {
13
+ const digits = [];
14
+ // Generate the first 9 digits
15
+ digits.push(Math.random() < 0.5 ? 1 : 2); // First digit is either 1 or 2
16
+ for (let i = 1; i < 9; i++) {
17
+ digits.push(Math.floor(Math.random() * 10));
18
+ }
19
+ let sum = 24; // Account for NPI prefix (80840)
20
+ let shouldDouble = true;
21
+ digits.forEach(digit => {
22
+ if (shouldDouble) {
23
+ digit *= 2;
24
+ if (digit > 9)
25
+ digit -= 9;
26
+ }
27
+ sum += digit;
28
+ shouldDouble = !shouldDouble;
29
+ });
30
+ const checkDigit = (10 - (sum % 10)) % 10;
31
+ digits.push(checkDigit);
32
+ return digits.join("");
33
+ }
34
+ exports.makeNPI = makeNPI;
35
+ //# sourceMappingURL=validate-npi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-npi.js","sourceRoot":"","sources":["../../../src/common/__tests__/validate-npi.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,SAAgB,OAAO;IACrB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,8BAA8B;IAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B;IACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;KAC7C;IAED,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,iCAAiC;IAC/C,IAAI,YAAY,GAAG,IAAI,CAAC;IAExB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACrB,IAAI,YAAY,EAAE;YAChB,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,GAAG,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;SAC3B;QACD,GAAG,IAAI,KAAK,CAAC;QACb,YAAY,GAAG,CAAC,YAAY,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAExB,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAzBD,0BAyBC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validate-npi.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-npi.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/validate-npi.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const validate_npi_1 = require("../validate-npi");
4
+ const npi_1 = require("./npi");
5
+ describe("validate-npi", () => {
6
+ describe("returns true when it gets valid NPI number", () => {
7
+ for (let i = 0; i < 10; i++) {
8
+ const npi = (0, npi_1.makeNPI)();
9
+ it(npi, async () => {
10
+ expect((0, validate_npi_1.validateNPI)(npi)).toBeTruthy();
11
+ });
12
+ }
13
+ });
14
+ it("returns false when it gets empty string", async () => {
15
+ expect((0, validate_npi_1.validateNPI)("")).toBeFalsy();
16
+ });
17
+ it("returns false when it gets undefined", async () => {
18
+ expect((0, validate_npi_1.validateNPI)(undefined)).toBeFalsy();
19
+ });
20
+ it("returns false when it gets invalid 10 digit string", async () => {
21
+ expect((0, validate_npi_1.validateNPI)(String(1123123123))).toBeFalsy();
22
+ });
23
+ });
24
+ //# sourceMappingURL=validate-npi.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-npi.test.js","sourceRoot":"","sources":["../../../src/common/__tests__/validate-npi.test.ts"],"names":[],"mappings":";;AAAA,kDAA8C;AAC9C,+BAAgC;AAEhC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,GAAG,GAAG,IAAA,aAAO,GAAE,CAAC;YACtB,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;gBACjB,MAAM,CAAC,IAAA,0BAAW,EAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,CAAC,IAAA,0BAAW,EAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,CAAC,IAAA,0BAAW,EAAC,SAA8B,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,CAAC,IAAA,0BAAW,EAAC,MAAM,CAAC,UAAa,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,8 +1,12 @@
1
- import dayjs from "dayjs";
1
+ import dayjs, { ConfigType } from "dayjs";
2
2
  import { z } from "zod";
3
3
  export declare const ISO_DATE = "YYYY-MM-DD";
4
4
  export declare function isValidISODate(date: string): boolean;
5
+ export declare function validateIsPast(date: string): boolean;
6
+ export declare function validateIsPastSafe(date: string): boolean;
7
+ export declare function validateDateRange(start: string, end: string): boolean;
5
8
  export declare const optionalDateSchema: z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodString>>, string | null | undefined, string | null | undefined>;
6
9
  export declare const dateSchema: z.ZodEffects<z.ZodString, string, string>;
7
- export declare const elapsedTimeFromNow: (date?: Date, format?: dayjs.UnitTypeLong) => number;
10
+ export declare function elapsedTimeFromNow(date?: Date, format?: dayjs.UnitTypeLong): number;
11
+ export declare function buildDayjs(date?: ConfigType, format?: string, strict?: boolean): dayjs.Dayjs;
8
12
  //# sourceMappingURL=date.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/common/date.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAqB,CAAC,EAAE,MAAM,KAAK,CAAC;AAE3C,eAAO,MAAM,QAAQ,eAAe,CAAC;AAErC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAOD,eAAO,MAAM,kBAAkB,+GAIiB,CAAC;AAEjD,eAAO,MAAM,UAAU,2CAA0D,CAAC;AAElF,eAAO,MAAM,kBAAkB,UACtB,IAAI,WACH,MAAM,YAAY,KACzB,MAEF,CAAC"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/common/date.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAqB,CAAC,EAAE,MAAM,KAAK,CAAC;AAK3C,eAAO,MAAM,QAAQ,eAAe,CAAC;AAErC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKpD;AACD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAQrE;AAID,eAAO,MAAM,kBAAkB,+GAIiB,CAAC;AAEjD,eAAO,MAAM,UAAU,2CAA0D,CAAC;AAElF,wBAAgB,kBAAkB,CAChC,IAAI,CAAC,EAAE,IAAI,EACX,MAAM,GAAE,KAAK,CAAC,YAA4B,GACzC,MAAM,CAER;AAED,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,KAAK,CAE5F"}
@@ -3,15 +3,43 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.elapsedTimeFromNow = exports.dateSchema = exports.optionalDateSchema = exports.isValidISODate = exports.ISO_DATE = void 0;
6
+ exports.buildDayjs = exports.elapsedTimeFromNow = exports.dateSchema = exports.optionalDateSchema = exports.validateDateRange = exports.validateIsPastSafe = exports.validateIsPast = exports.isValidISODate = exports.ISO_DATE = void 0;
7
7
  const dayjs_1 = __importDefault(require("dayjs"));
8
+ const utc_1 = __importDefault(require("dayjs/plugin/utc"));
8
9
  const zod_1 = require("zod");
10
+ const bad_request_1 = require("../error/bad-request");
11
+ dayjs_1.default.extend(utc_1.default);
9
12
  exports.ISO_DATE = "YYYY-MM-DD";
10
13
  function isValidISODate(date) {
11
- return (0, dayjs_1.default)(date, exports.ISO_DATE, true).isValid();
14
+ return buildDayjs(date, exports.ISO_DATE, true).isValid();
12
15
  }
13
16
  exports.isValidISODate = isValidISODate;
14
- const isValidISODateOptional = (date) => date ? isValidISODate(date) : true;
17
+ function isValidISODateOptional(date) {
18
+ return date ? isValidISODate(date) : true;
19
+ }
20
+ function validateIsPast(date) {
21
+ if ((0, dayjs_1.default)(date).isAfter((0, dayjs_1.default)())) {
22
+ throw new bad_request_1.BadRequestError(`Date must be in the past`, undefined, { date });
23
+ }
24
+ return true;
25
+ }
26
+ exports.validateIsPast = validateIsPast;
27
+ function validateIsPastSafe(date) {
28
+ if ((0, dayjs_1.default)(date).isAfter((0, dayjs_1.default)()))
29
+ return false;
30
+ return true;
31
+ }
32
+ exports.validateIsPastSafe = validateIsPastSafe;
33
+ function validateDateRange(start, end) {
34
+ if ((0, dayjs_1.default)(start).isAfter(end)) {
35
+ throw new bad_request_1.BadRequestError(`Invalid date range: 'start' must be before 'end'`, undefined, {
36
+ start,
37
+ end,
38
+ });
39
+ }
40
+ return true;
41
+ }
42
+ exports.validateDateRange = validateDateRange;
15
43
  const invalidIsoMsg = { message: "Invalid ISO date" };
16
44
  exports.optionalDateSchema = zod_1.z
17
45
  .string()
@@ -19,8 +47,12 @@ exports.optionalDateSchema = zod_1.z
19
47
  .nullish()
20
48
  .refine(isValidISODateOptional, invalidIsoMsg);
21
49
  exports.dateSchema = zod_1.z.string().trim().refine(isValidISODate, invalidIsoMsg);
22
- const elapsedTimeFromNow = (date, format = "millisecond") => {
23
- return (0, dayjs_1.default)().diff((0, dayjs_1.default)(date), format);
24
- };
50
+ function elapsedTimeFromNow(date, format = "millisecond") {
51
+ return buildDayjs().diff(buildDayjs(date), format);
52
+ }
25
53
  exports.elapsedTimeFromNow = elapsedTimeFromNow;
54
+ function buildDayjs(date, format, strict) {
55
+ return dayjs_1.default.utc(date, format, strict);
56
+ }
57
+ exports.buildDayjs = buildDayjs;
26
58
  //# sourceMappingURL=date.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/common/date.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,6BAA2C;AAE9B,QAAA,QAAQ,GAAG,YAAY,CAAC;AAErC,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,IAAA,eAAK,EAAC,IAAI,EAAE,gBAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AAC/C,CAAC;AAFD,wCAEC;AAED,MAAM,sBAAsB,GAAG,CAAC,IAA+B,EAAW,EAAE,CAC1E,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAErC,MAAM,aAAa,GAAsB,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE5D,QAAA,kBAAkB,GAAG,OAAC;KAChC,MAAM,EAAE;KACR,IAAI,EAAE;KACN,OAAO,EAAE;KACT,MAAM,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;AAEpC,QAAA,UAAU,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;AAE3E,MAAM,kBAAkB,GAAG,CAChC,IAAW,EACX,SAA6B,aAAa,EAClC,EAAE;IACV,OAAO,IAAA,eAAK,GAAE,CAAC,IAAI,CAAC,IAAA,eAAK,EAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC,CAAC;AALW,QAAA,kBAAkB,sBAK7B"}
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/common/date.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0C;AAC1C,2DAAmC;AAEnC,6BAA2C;AAC3C,sDAAuD;AAEvD,eAAK,CAAC,MAAM,CAAC,aAAG,CAAC,CAAC;AAEL,QAAA,QAAQ,GAAG,YAAY,CAAC;AAErC,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,UAAU,CAAC,IAAI,EAAE,gBAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACpD,CAAC;AAFD,wCAEC;AAED,SAAS,sBAAsB,CAAC,IAA+B;IAC7D,OAAO,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY;IACzC,IAAI,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,eAAK,GAAE,CAAC,EAAE;QAChC,MAAM,IAAI,6BAAe,CAAC,0BAA0B,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;KAC5E;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AALD,wCAKC;AACD,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,IAAI,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,eAAK,GAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAHD,gDAGC;AAED,SAAgB,iBAAiB,CAAC,KAAa,EAAE,GAAW;IAC1D,IAAI,IAAA,eAAK,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC7B,MAAM,IAAI,6BAAe,CAAC,kDAAkD,EAAE,SAAS,EAAE;YACvF,KAAK;YACL,GAAG;SACJ,CAAC,CAAC;KACJ;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AARD,8CAQC;AAED,MAAM,aAAa,GAAsB,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE5D,QAAA,kBAAkB,GAAG,OAAC;KAChC,MAAM,EAAE;KACR,IAAI,EAAE;KACN,OAAO,EAAE;KACT,MAAM,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;AAEpC,QAAA,UAAU,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;AAElF,SAAgB,kBAAkB,CAChC,IAAW,EACX,SAA6B,aAAa;IAE1C,OAAO,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AALD,gDAKC;AAED,SAAgB,UAAU,CAAC,IAAiB,EAAE,MAAe,EAAE,MAAgB;IAC7E,OAAO,eAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAFD,gCAEC"}
@@ -2,15 +2,15 @@ export type ErrorToStringOptions = {
2
2
  detailed: boolean;
3
3
  };
4
4
  /**
5
- * @deprecated User @metriport/shared/error/shared instead
5
+ * @deprecated Use `@metriport/shared/error/shared` instead
6
6
  */
7
7
  export declare function errorToString(err: unknown, options?: ErrorToStringOptions): string;
8
8
  /**
9
- * @deprecated User @metriport/shared/error/shared instead
9
+ * @deprecated Use `@metriport/shared/error/shared` instead
10
10
  */
11
11
  export declare function genericErrorToString(err: unknown): string;
12
12
  /**
13
- * @deprecated User @metriport/shared/error/shared instead
13
+ * @deprecated Use `@metriport/shared/error/shared` instead
14
14
  */
15
15
  export declare function detailedErrorToString(error: any): string;
16
16
  //# sourceMappingURL=error.d.ts.map
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.detailedErrorToString = exports.genericErrorToString = exports.errorToString = void 0;
4
4
  /**
5
- * @deprecated User @metriport/shared/error/shared instead
5
+ * @deprecated Use `@metriport/shared/error/shared` instead
6
6
  */
7
7
  function errorToString(err, options = { detailed: true }) {
8
8
  if (options.detailed) {
@@ -12,14 +12,14 @@ function errorToString(err, options = { detailed: true }) {
12
12
  }
13
13
  exports.errorToString = errorToString;
14
14
  /**
15
- * @deprecated User @metriport/shared/error/shared instead
15
+ * @deprecated Use `@metriport/shared/error/shared` instead
16
16
  */
17
17
  function genericErrorToString(err) {
18
18
  return err["message"] ?? String(err); // eslint-disable-line @typescript-eslint/no-explicit-any
19
19
  }
20
20
  exports.genericErrorToString = genericErrorToString;
21
21
  /**
22
- * @deprecated User @metriport/shared/error/shared instead
22
+ * @deprecated Use `@metriport/shared/error/shared` instead
23
23
  */
24
24
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
25
  function detailedErrorToString(error) {
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Used in .flatMap() to filter out undefined values.
3
+ *
4
+ * Example:
5
+ *
6
+ * const arr = [1, null, 3, undefined, 5];
7
+ * const filtered = arr.flatMap(filterTruthy);
8
+ * // filtered = [1, 3, 5]
9
+ */
10
+ export declare function filterTruthy<T>(o: T | undefined | null): T | [];
11
+ //# sourceMappingURL=filter-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-map.d.ts","sourceRoot":"","sources":["../../src/common/filter-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAE/D"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterTruthy = void 0;
4
+ /**
5
+ * Used in .flatMap() to filter out undefined values.
6
+ *
7
+ * Example:
8
+ *
9
+ * const arr = [1, null, 3, undefined, 5];
10
+ * const filtered = arr.flatMap(filterTruthy);
11
+ * // filtered = [1, 3, 5]
12
+ */
13
+ function filterTruthy(o) {
14
+ return o ? o : [];
15
+ }
16
+ exports.filterTruthy = filterTruthy;
17
+ //# sourceMappingURL=filter-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-map.js","sourceRoot":"","sources":["../../src/common/filter-map.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAAI,CAAuB;IACrD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACpB,CAAC;AAFD,oCAEC"}
@@ -0,0 +1,3 @@
1
+ import { XMLParser, X2jOptionsOptional } from "fast-xml-parser";
2
+ export declare function createXMLParser(options?: X2jOptionsOptional): XMLParser;
3
+ //# sourceMappingURL=xml-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-parser.d.ts","sourceRoot":"","sources":["../../src/common/xml-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,wBAAgB,eAAe,CAAC,OAAO,GAAE,kBAAuB,GAAG,SAAS,CAY3E"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createXMLParser = void 0;
4
+ const fast_xml_parser_1 = require("fast-xml-parser");
5
+ function createXMLParser(options = {}) {
6
+ const defaultOptions = {
7
+ numberParseOptions: {
8
+ hex: false,
9
+ leadingZeros: false,
10
+ },
11
+ };
12
+ // Merge the default options with the provided options
13
+ const mergedOptions = { ...defaultOptions, ...options };
14
+ return new fast_xml_parser_1.XMLParser(mergedOptions);
15
+ }
16
+ exports.createXMLParser = createXMLParser;
17
+ //# sourceMappingURL=xml-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-parser.js","sourceRoot":"","sources":["../../src/common/xml-parser.ts"],"names":[],"mappings":";;;AAAA,qDAAgE;AAEhE,SAAgB,eAAe,CAAC,UAA8B,EAAE;IAC9D,MAAM,cAAc,GAAuB;QACzC,kBAAkB,EAAE;YAClB,GAAG,EAAE,KAAK;YACV,YAAY,EAAE,KAAK;SACpB;KACF,CAAC;IAEF,sDAAsD;IACtD,MAAM,aAAa,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;IAExD,OAAO,IAAI,2BAAS,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC;AAZD,0CAYC"}
@@ -0,0 +1,18 @@
1
+ import { PatientImportPatient } from "@metriport/shared";
2
+ import { PatientPayload } from "./patient-import";
3
+ export type FileStages = "raw" | "valid" | "invalid";
4
+ export declare function createFileKeyJob(cxId: string, jobId: string): string;
5
+ export declare function createFileKeyPatient(cxId: string, jobId: string, patientId: string): string;
6
+ export declare function createFileKeyFiles(cxId: string, jobId: string, stage: FileStages): string;
7
+ export declare const patientImportCsvHeaders: string[];
8
+ export declare function normalizeHeaders(headers: string[]): string[];
9
+ export declare function compareCsvHeaders(headers: string[], input: string[], exact?: boolean): boolean;
10
+ export type GenericObject = {
11
+ [key: string]: string | undefined;
12
+ };
13
+ export declare function createObjectFromCsv({ rowColumns, headers, }: {
14
+ rowColumns: string[];
15
+ headers: string[];
16
+ }): GenericObject;
17
+ export declare function createPatientPayload(patient: PatientImportPatient): PatientPayload;
18
+ //# sourceMappingURL=patient-import-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patient-import-shared.d.ts","sourceRoot":"","sources":["../../../../../../core/src/command/patient-import/patient-import-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,oBAAoB,EAErB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AAcrD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAI3F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAIzF;AAED,eAAO,MAAM,uBAAuB,UAenC,CAAC;AAKF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAM5D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,UAAQ,GAAG,OAAO,CAM5F;AAED,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAElE,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,OAAO,GACR,EAAE;IACD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG,aAAa,CAQhB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc,CA2BlF"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPatientPayload = exports.createObjectFromCsv = exports.compareCsvHeaders = exports.normalizeHeaders = exports.patientImportCsvHeaders = exports.createFileKeyFiles = exports.createFileKeyPatient = exports.createFileKeyJob = void 0;
4
+ const shared_1 = require("@metriport/shared");
5
+ const globalPrefix = "patient-import";
6
+ function createCxJobPrefix(cxId, jobId) {
7
+ return `cxid=${cxId}/jobid=${jobId}`;
8
+ }
9
+ function createFilePathPatients(cxId, jobId, patientId) {
10
+ return `${createCxJobPrefix(cxId, jobId)}/patients/patientid=${patientId}/status.json`;
11
+ }
12
+ function createFilePathFiles(cxId, jobId, stage) {
13
+ return `${createCxJobPrefix(cxId, jobId)}/files/${stage}.csv`;
14
+ }
15
+ function createFileKeyJob(cxId, jobId) {
16
+ return `${globalPrefix}/${createCxJobPrefix(cxId, jobId)}/status.json`;
17
+ }
18
+ exports.createFileKeyJob = createFileKeyJob;
19
+ function createFileKeyPatient(cxId, jobId, patientId) {
20
+ const fileName = createFilePathPatients(cxId, jobId, patientId);
21
+ const key = `${globalPrefix}/${fileName}`;
22
+ return key;
23
+ }
24
+ exports.createFileKeyPatient = createFileKeyPatient;
25
+ function createFileKeyFiles(cxId, jobId, stage) {
26
+ const fileName = createFilePathFiles(cxId, jobId, stage);
27
+ const key = `${globalPrefix}/${fileName}`;
28
+ return key;
29
+ }
30
+ exports.createFileKeyFiles = createFileKeyFiles;
31
+ exports.patientImportCsvHeaders = [
32
+ "externalid",
33
+ "firstname",
34
+ "lastname",
35
+ "dob",
36
+ "gender",
37
+ "zip",
38
+ "city",
39
+ "state",
40
+ "addressline1",
41
+ "addressline2",
42
+ "phone1",
43
+ "email1",
44
+ // "phone2",
45
+ // "email2",
46
+ ];
47
+ const replaceCharacters = ["*"];
48
+ // TODO gotta accept email, email1, phone, phone1, etc
49
+ function normalizeHeaders(headers) {
50
+ let newHeaders = headers;
51
+ replaceCharacters.map(char => {
52
+ newHeaders = newHeaders.map(h => h.replace(char, "").toLowerCase());
53
+ });
54
+ return newHeaders;
55
+ }
56
+ exports.normalizeHeaders = normalizeHeaders;
57
+ function compareCsvHeaders(headers, input, exact = false) {
58
+ let newInput = input;
59
+ if (!exact) {
60
+ newInput = newInput.slice(0, headers.length);
61
+ }
62
+ return headers.toString() === newInput.toString();
63
+ }
64
+ exports.compareCsvHeaders = compareCsvHeaders;
65
+ function createObjectFromCsv({ rowColumns, headers, }) {
66
+ const object = {};
67
+ headers.forEach((header, columnIndex) => {
68
+ const value = rowColumns[columnIndex];
69
+ if (value === undefined)
70
+ throw Error("rowColumns and headers have different sizes");
71
+ object[header] = value.trim() === "" ? undefined : value;
72
+ });
73
+ return object;
74
+ }
75
+ exports.createObjectFromCsv = createObjectFromCsv;
76
+ function createPatientPayload(patient) {
77
+ const phone1 = patient.phone1 ? (0, shared_1.normalizePhoneNumberStrict)(patient.phone1) : undefined;
78
+ const email1 = patient.email1 ? (0, shared_1.normalizeEmailStrict)(patient.email1) : undefined;
79
+ const phone2 = patient.phone2 ? (0, shared_1.normalizePhoneNumberStrict)(patient.phone2) : undefined;
80
+ const email2 = patient.email2 ? (0, shared_1.normalizeEmailStrict)(patient.email2) : undefined;
81
+ const contact1 = phone1 || email1 ? { phone: phone1, email: email1 } : undefined;
82
+ const contact2 = phone2 || email2 ? { phone: phone2, email: email2 } : undefined;
83
+ const contact = [contact1, contact2].flatMap(c => c ?? []);
84
+ const externalId = patient.externalid ? (0, shared_1.normalizeExternalId)(patient.externalid) : undefined;
85
+ return {
86
+ externalId,
87
+ firstName: (0, shared_1.toTitleCase)(patient.firstname),
88
+ lastName: (0, shared_1.toTitleCase)(patient.lastname),
89
+ dob: (0, shared_1.normalizeDate)(patient.dob),
90
+ genderAtBirth: (0, shared_1.normalizeGender)(patient.gender),
91
+ address: [
92
+ {
93
+ addressLine1: (0, shared_1.toTitleCase)(patient.addressline1),
94
+ ...(patient.addressline2 ? { addressLine2: (0, shared_1.toTitleCase)(patient.addressline2) } : undefined),
95
+ city: (0, shared_1.toTitleCase)(patient.city),
96
+ state: (0, shared_1.normalizeState)(patient.state),
97
+ zip: (0, shared_1.normalizeZipCode)(patient.zip),
98
+ country: "USA",
99
+ },
100
+ ],
101
+ contact,
102
+ };
103
+ }
104
+ exports.createPatientPayload = createPatientPayload;
105
+ // // TODO 2330 Move/merge this to shared's zip.ts
106
+ // export function normalizeZipCode(
107
+ // zipCode: string,
108
+ // // strict = false,
109
+ // normalizeFn = normalizeZipCodeSafe
110
+ // ): string {
111
+ // const zipOrUndefined = normalizeFn(zipCode);
112
+ // if (!zipOrUndefined) {
113
+ // throw new Error("Invalid Zip.");
114
+ // }
115
+ // return zipOrUndefined;
116
+ // }
117
+ // // TODO 2330 Move/merge this to shared's zip.ts
118
+ // // export function normalizeZipCodeSafe(zipCode: string, strict = false): string | undefined {
119
+ // export function normalizeZipCodeSafe(zipCode: string): string | undefined {
120
+ // // trim
121
+ // const trimmedZip = zipCode.trim();
122
+ // // if its empty, return undefined
123
+ // if (trimmedZip === "") return undefined;
124
+ // // validate zipCode has only numbers and dashes
125
+ // if (!trimmedZip.match(/^[0-9-]+$/)) return undefined;
126
+ // // if it has a dash, it should only have one dash
127
+ // if (trimmedZip.includes("-") && trimmedZip.split("-").length !== 2) return undefined;
128
+ // const mainPart = trimmedZip.split("-")[0];
129
+ // if (!mainPart) return trimmedZip;
130
+ // // if it has 5 digits, return
131
+ // if (mainPart.length === 5) return mainPart;
132
+ // // if it has less than 5 digits, left pad with 0s
133
+ // if (mainPart.length < 5) return mainPart.padStart(5, "0");
134
+ // // if it has more than 5 digits, return the first 5
135
+ // return mainPart.slice(0, 5);
136
+ // }
137
+ //# sourceMappingURL=patient-import-shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patient-import-shared.js","sourceRoot":"","sources":["../../../../../../core/src/command/patient-import/patient-import-shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { PatientDemoData } from "../../domain/patient";
2
+ export type PhaseStatus = "processing" | "completed" | "failed";
3
+ export type PatientRecord = {
4
+ patientId: string;
5
+ patientQueryStatus?: PhaseStatus;
6
+ documentQueryStatus?: PhaseStatus;
7
+ documentRetrevialStatus?: PhaseStatus;
8
+ documentConversionStatus?: PhaseStatus;
9
+ cleanUpStatus?: PhaseStatus;
10
+ };
11
+ export type PatientRecordUpdate = Omit<PatientRecord, "patientId">;
12
+ export type JobRecord = {
13
+ jobStartedAt: string;
14
+ };
15
+ export type JobRecordUpdate = JobRecord;
16
+ export type StartPatientImportRequest = {
17
+ cxId: string;
18
+ facilityId: string;
19
+ jobId: string;
20
+ processPatientImportLambda: string;
21
+ rerunPdOnNewDemographics?: boolean;
22
+ dryrun?: boolean;
23
+ };
24
+ export type ProcessPatientImportRequest = {
25
+ cxId: string;
26
+ facilityId: string;
27
+ jobId: string;
28
+ jobStartedAt: string;
29
+ s3BucketName: string;
30
+ processPatientCreateQueue: string;
31
+ rerunPdOnNewDemographics: boolean;
32
+ dryrun: boolean;
33
+ };
34
+ export type PatientPayload = PatientDemoData & {
35
+ externalId: string | undefined;
36
+ };
37
+ export type ProcessPatientCreateRequest = {
38
+ cxId: string;
39
+ facilityId: string;
40
+ jobId: string;
41
+ patientPayload: PatientPayload;
42
+ s3BucketName: string;
43
+ processPatientQueryQueue: string;
44
+ rerunPdOnNewDemographics: boolean;
45
+ };
46
+ export type ProcessPatientQueryRequest = {
47
+ cxId: string;
48
+ jobId: string;
49
+ patientId: string;
50
+ s3BucketName: string;
51
+ rerunPdOnNewDemographics: boolean;
52
+ waitTimeInMillis: number;
53
+ };
54
+ export interface PatientImportHandler {
55
+ startPatientImport(request: StartPatientImportRequest): Promise<void>;
56
+ processPatientImport(request: ProcessPatientImportRequest): Promise<void>;
57
+ processPatientCreate(request: ProcessPatientCreateRequest): Promise<void>;
58
+ processPatientQuery(request: ProcessPatientQueryRequest): Promise<void>;
59
+ }
60
+ //# sourceMappingURL=patient-import.d.ts.map