@medplum/core 0.2.0 → 0.4.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 (702) hide show
  1. package/README.md +32 -26
  2. package/dist/cjs/index.js +1769 -0
  3. package/dist/cjs/index.js.map +1 -0
  4. package/dist/cjs/index.min.js +16 -0
  5. package/dist/cjs/index.min.js.map +1 -0
  6. package/dist/esm/index.js +1721 -0
  7. package/dist/esm/index.js.map +1 -0
  8. package/dist/esm/index.min.js +16 -0
  9. package/dist/esm/index.min.js.map +1 -0
  10. package/dist/{cache.d.ts → types/cache.d.ts} +1 -0
  11. package/dist/{client.d.ts → types/client.d.ts} +115 -61
  12. package/dist/{crypto.d.ts → types/crypto.d.ts} +0 -0
  13. package/dist/{eventtarget.d.ts → types/eventtarget.d.ts} +0 -0
  14. package/dist/{format.d.ts → types/format.d.ts} +1 -1
  15. package/dist/{index.d.ts → types/index.d.ts} +0 -2
  16. package/dist/types/jwt.d.ts +5 -0
  17. package/dist/{outcomes.d.ts → types/outcomes.d.ts} +7 -2
  18. package/dist/{search.d.ts → types/search.d.ts} +3 -0
  19. package/dist/{searchparams.d.ts → types/searchparams.d.ts} +2 -1
  20. package/dist/{storage.d.ts → types/storage.d.ts} +0 -0
  21. package/dist/{types.d.ts → types/types.d.ts} +18 -4
  22. package/dist/{utils.d.ts → types/utils.d.ts} +1 -1
  23. package/package.json +14 -9
  24. package/rollup.config.js +36 -0
  25. package/dist/cache.js +0 -38
  26. package/dist/cache.js.map +0 -1
  27. package/dist/cache.test.d.ts +0 -1
  28. package/dist/cache.test.js +0 -29
  29. package/dist/cache.test.js.map +0 -1
  30. package/dist/client.js +0 -530
  31. package/dist/client.js.map +0 -1
  32. package/dist/client.test.d.ts +0 -1
  33. package/dist/client.test.js +0 -382
  34. package/dist/client.test.js.map +0 -1
  35. package/dist/crypto.js +0 -22
  36. package/dist/crypto.js.map +0 -1
  37. package/dist/eventtarget.js +0 -39
  38. package/dist/eventtarget.js.map +0 -1
  39. package/dist/eventtarget.test.d.ts +0 -1
  40. package/dist/eventtarget.test.js +0 -44
  41. package/dist/eventtarget.test.js.map +0 -1
  42. package/dist/fhir/AccessPolicy.d.ts +0 -75
  43. package/dist/fhir/AccessPolicy.js +0 -7
  44. package/dist/fhir/AccessPolicy.js.map +0 -1
  45. package/dist/fhir/Account.d.ts +0 -247
  46. package/dist/fhir/Account.js +0 -7
  47. package/dist/fhir/Account.js.map +0 -1
  48. package/dist/fhir/ActivityDefinition.d.ts +0 -500
  49. package/dist/fhir/ActivityDefinition.js +0 -7
  50. package/dist/fhir/ActivityDefinition.js.map +0 -1
  51. package/dist/fhir/Address.d.ts +0 -75
  52. package/dist/fhir/Address.js +0 -7
  53. package/dist/fhir/Address.js.map +0 -1
  54. package/dist/fhir/AdverseEvent.d.ts +0 -303
  55. package/dist/fhir/AdverseEvent.js +0 -7
  56. package/dist/fhir/AdverseEvent.js.map +0 -1
  57. package/dist/fhir/Age.d.ts +0 -47
  58. package/dist/fhir/Age.js +0 -7
  59. package/dist/fhir/Age.js.map +0 -1
  60. package/dist/fhir/AllergyIntolerance.d.ts +0 -283
  61. package/dist/fhir/AllergyIntolerance.js +0 -7
  62. package/dist/fhir/AllergyIntolerance.js.map +0 -1
  63. package/dist/fhir/Annotation.d.ts +0 -42
  64. package/dist/fhir/Annotation.js +0 -7
  65. package/dist/fhir/Annotation.js.map +0 -1
  66. package/dist/fhir/Appointment.d.ts +0 -284
  67. package/dist/fhir/Appointment.js +0 -7
  68. package/dist/fhir/Appointment.js.map +0 -1
  69. package/dist/fhir/AppointmentResponse.d.ts +0 -131
  70. package/dist/fhir/AppointmentResponse.js +0 -7
  71. package/dist/fhir/AppointmentResponse.js.map +0 -1
  72. package/dist/fhir/Attachment.d.ts +0 -58
  73. package/dist/fhir/Attachment.js +0 -7
  74. package/dist/fhir/Attachment.js.map +0 -1
  75. package/dist/fhir/AuditEvent.d.ts +0 -458
  76. package/dist/fhir/AuditEvent.js +0 -7
  77. package/dist/fhir/AuditEvent.js.map +0 -1
  78. package/dist/fhir/Basic.d.ts +0 -110
  79. package/dist/fhir/Basic.js +0 -7
  80. package/dist/fhir/Basic.js.map +0 -1
  81. package/dist/fhir/Binary.d.ts +0 -59
  82. package/dist/fhir/Binary.js +0 -7
  83. package/dist/fhir/Binary.js.map +0 -1
  84. package/dist/fhir/BiologicallyDerivedProduct.d.ts +0 -358
  85. package/dist/fhir/BiologicallyDerivedProduct.js +0 -7
  86. package/dist/fhir/BiologicallyDerivedProduct.js.map +0 -1
  87. package/dist/fhir/BodyStructure.d.ts +0 -119
  88. package/dist/fhir/BodyStructure.js +0 -7
  89. package/dist/fhir/BodyStructure.js.map +0 -1
  90. package/dist/fhir/Bot.d.ts +0 -49
  91. package/dist/fhir/Bot.js +0 -7
  92. package/dist/fhir/Bot.js.map +0 -1
  93. package/dist/fhir/Bundle.d.ts +0 -379
  94. package/dist/fhir/Bundle.js +0 -7
  95. package/dist/fhir/Bundle.js.map +0 -1
  96. package/dist/fhir/CapabilityStatement.d.ts +0 -1044
  97. package/dist/fhir/CapabilityStatement.js +0 -7
  98. package/dist/fhir/CapabilityStatement.js.map +0 -1
  99. package/dist/fhir/CarePlan.d.ts +0 -446
  100. package/dist/fhir/CarePlan.js +0 -7
  101. package/dist/fhir/CarePlan.js.map +0 -1
  102. package/dist/fhir/CareTeam.d.ts +0 -211
  103. package/dist/fhir/CareTeam.js +0 -7
  104. package/dist/fhir/CareTeam.js.map +0 -1
  105. package/dist/fhir/CatalogEntry.d.ts +0 -195
  106. package/dist/fhir/CatalogEntry.js +0 -7
  107. package/dist/fhir/CatalogEntry.js.map +0 -1
  108. package/dist/fhir/ChargeItem.d.ts +0 -287
  109. package/dist/fhir/ChargeItem.js +0 -7
  110. package/dist/fhir/ChargeItem.js.map +0 -1
  111. package/dist/fhir/ChargeItemDefinition.d.ts +0 -401
  112. package/dist/fhir/ChargeItemDefinition.js +0 -7
  113. package/dist/fhir/ChargeItemDefinition.js.map +0 -1
  114. package/dist/fhir/Claim.d.ts +0 -1092
  115. package/dist/fhir/Claim.js +0 -7
  116. package/dist/fhir/Claim.js.map +0 -1
  117. package/dist/fhir/ClaimResponse.d.ts +0 -1040
  118. package/dist/fhir/ClaimResponse.js +0 -7
  119. package/dist/fhir/ClaimResponse.js.map +0 -1
  120. package/dist/fhir/ClientApplication.d.ts +0 -46
  121. package/dist/fhir/ClientApplication.js +0 -7
  122. package/dist/fhir/ClientApplication.js.map +0 -1
  123. package/dist/fhir/ClinicalImpression.d.ts +0 -306
  124. package/dist/fhir/ClinicalImpression.js +0 -7
  125. package/dist/fhir/ClinicalImpression.js.map +0 -1
  126. package/dist/fhir/CodeSystem.d.ts +0 -541
  127. package/dist/fhir/CodeSystem.js +0 -7
  128. package/dist/fhir/CodeSystem.js.map +0 -1
  129. package/dist/fhir/CodeableConcept.d.ts +0 -33
  130. package/dist/fhir/CodeableConcept.js +0 -7
  131. package/dist/fhir/CodeableConcept.js.map +0 -1
  132. package/dist/fhir/Coding.d.ts +0 -50
  133. package/dist/fhir/Coding.js +0 -7
  134. package/dist/fhir/Coding.js.map +0 -1
  135. package/dist/fhir/Communication.d.ts +0 -264
  136. package/dist/fhir/Communication.js +0 -7
  137. package/dist/fhir/Communication.js.map +0 -1
  138. package/dist/fhir/CommunicationRequest.d.ts +0 -261
  139. package/dist/fhir/CommunicationRequest.js +0 -7
  140. package/dist/fhir/CommunicationRequest.js.map +0 -1
  141. package/dist/fhir/CompartmentDefinition.d.ts +0 -217
  142. package/dist/fhir/CompartmentDefinition.js +0 -7
  143. package/dist/fhir/CompartmentDefinition.js.map +0 -1
  144. package/dist/fhir/Composition.d.ts +0 -429
  145. package/dist/fhir/Composition.js +0 -7
  146. package/dist/fhir/Composition.js.map +0 -1
  147. package/dist/fhir/ConceptMap.d.ts +0 -518
  148. package/dist/fhir/ConceptMap.js +0 -7
  149. package/dist/fhir/ConceptMap.js.map +0 -1
  150. package/dist/fhir/Condition.d.ts +0 -326
  151. package/dist/fhir/Condition.js +0 -7
  152. package/dist/fhir/Condition.js.map +0 -1
  153. package/dist/fhir/Consent.d.ts +0 -460
  154. package/dist/fhir/Consent.js +0 -7
  155. package/dist/fhir/Consent.js.map +0 -1
  156. package/dist/fhir/ContactDetail.d.ts +0 -31
  157. package/dist/fhir/ContactDetail.js +0 -7
  158. package/dist/fhir/ContactDetail.js.map +0 -1
  159. package/dist/fhir/ContactPoint.d.ts +0 -47
  160. package/dist/fhir/ContactPoint.js +0 -7
  161. package/dist/fhir/ContactPoint.js.map +0 -1
  162. package/dist/fhir/Contract.d.ts +0 -1452
  163. package/dist/fhir/Contract.js +0 -7
  164. package/dist/fhir/Contract.js.map +0 -1
  165. package/dist/fhir/Contributor.d.ts +0 -37
  166. package/dist/fhir/Contributor.js +0 -7
  167. package/dist/fhir/Contributor.js.map +0 -1
  168. package/dist/fhir/Count.d.ts +0 -49
  169. package/dist/fhir/Count.js +0 -7
  170. package/dist/fhir/Count.js.map +0 -1
  171. package/dist/fhir/Coverage.d.ts +0 -327
  172. package/dist/fhir/Coverage.js +0 -7
  173. package/dist/fhir/Coverage.js.map +0 -1
  174. package/dist/fhir/CoverageEligibilityRequest.d.ts +0 -404
  175. package/dist/fhir/CoverageEligibilityRequest.js +0 -7
  176. package/dist/fhir/CoverageEligibilityRequest.js.map +0 -1
  177. package/dist/fhir/CoverageEligibilityResponse.d.ts +0 -434
  178. package/dist/fhir/CoverageEligibilityResponse.js +0 -7
  179. package/dist/fhir/CoverageEligibilityResponse.js.map +0 -1
  180. package/dist/fhir/DataRequirement.d.ts +0 -239
  181. package/dist/fhir/DataRequirement.js +0 -7
  182. package/dist/fhir/DataRequirement.js.map +0 -1
  183. package/dist/fhir/DetectedIssue.d.ts +0 -252
  184. package/dist/fhir/DetectedIssue.js +0 -7
  185. package/dist/fhir/DetectedIssue.js.map +0 -1
  186. package/dist/fhir/Device.d.ts +0 -493
  187. package/dist/fhir/Device.js +0 -7
  188. package/dist/fhir/Device.js.map +0 -1
  189. package/dist/fhir/DeviceDefinition.d.ts +0 -486
  190. package/dist/fhir/DeviceDefinition.js +0 -7
  191. package/dist/fhir/DeviceDefinition.js.map +0 -1
  192. package/dist/fhir/DeviceMetric.d.ts +0 -199
  193. package/dist/fhir/DeviceMetric.js +0 -7
  194. package/dist/fhir/DeviceMetric.js.map +0 -1
  195. package/dist/fhir/DeviceRequest.d.ts +0 -296
  196. package/dist/fhir/DeviceRequest.js +0 -7
  197. package/dist/fhir/DeviceRequest.js.map +0 -1
  198. package/dist/fhir/DeviceUseStatement.d.ts +0 -168
  199. package/dist/fhir/DeviceUseStatement.js +0 -7
  200. package/dist/fhir/DeviceUseStatement.js.map +0 -1
  201. package/dist/fhir/DiagnosticReport.d.ts +0 -254
  202. package/dist/fhir/DiagnosticReport.js +0 -7
  203. package/dist/fhir/DiagnosticReport.js.map +0 -1
  204. package/dist/fhir/Distance.d.ts +0 -47
  205. package/dist/fhir/Distance.js +0 -7
  206. package/dist/fhir/Distance.js.map +0 -1
  207. package/dist/fhir/DocumentManifest.d.ts +0 -196
  208. package/dist/fhir/DocumentManifest.js +0 -7
  209. package/dist/fhir/DocumentManifest.js.map +0 -1
  210. package/dist/fhir/DocumentReference.d.ts +0 -349
  211. package/dist/fhir/DocumentReference.js +0 -7
  212. package/dist/fhir/DocumentReference.js.map +0 -1
  213. package/dist/fhir/Dosage.d.ts +0 -152
  214. package/dist/fhir/Dosage.js +0 -7
  215. package/dist/fhir/Dosage.js.map +0 -1
  216. package/dist/fhir/Duration.d.ts +0 -46
  217. package/dist/fhir/Duration.js +0 -7
  218. package/dist/fhir/Duration.js.map +0 -1
  219. package/dist/fhir/EffectEvidenceSynthesis.d.ts +0 -591
  220. package/dist/fhir/EffectEvidenceSynthesis.js +0 -7
  221. package/dist/fhir/EffectEvidenceSynthesis.js.map +0 -1
  222. package/dist/fhir/Element.d.ts +0 -21
  223. package/dist/fhir/Element.js +0 -7
  224. package/dist/fhir/Element.js.map +0 -1
  225. package/dist/fhir/ElementDefinition.d.ts +0 -2701
  226. package/dist/fhir/ElementDefinition.js +0 -7
  227. package/dist/fhir/ElementDefinition.js.map +0 -1
  228. package/dist/fhir/Encounter.d.ts +0 -558
  229. package/dist/fhir/Encounter.js +0 -7
  230. package/dist/fhir/Encounter.js.map +0 -1
  231. package/dist/fhir/Endpoint.d.ts +0 -140
  232. package/dist/fhir/Endpoint.js +0 -7
  233. package/dist/fhir/Endpoint.js.map +0 -1
  234. package/dist/fhir/EnrollmentRequest.d.ts +0 -113
  235. package/dist/fhir/EnrollmentRequest.js +0 -7
  236. package/dist/fhir/EnrollmentRequest.js.map +0 -1
  237. package/dist/fhir/EnrollmentResponse.d.ts +0 -117
  238. package/dist/fhir/EnrollmentResponse.js +0 -7
  239. package/dist/fhir/EnrollmentResponse.js.map +0 -1
  240. package/dist/fhir/EpisodeOfCare.d.ts +0 -246
  241. package/dist/fhir/EpisodeOfCare.js +0 -7
  242. package/dist/fhir/EpisodeOfCare.js.map +0 -1
  243. package/dist/fhir/EventDefinition.d.ts +0 -253
  244. package/dist/fhir/EventDefinition.js +0 -7
  245. package/dist/fhir/EventDefinition.js.map +0 -1
  246. package/dist/fhir/Evidence.d.ts +0 -252
  247. package/dist/fhir/Evidence.js +0 -7
  248. package/dist/fhir/Evidence.js.map +0 -1
  249. package/dist/fhir/EvidenceVariable.d.ts +0 -370
  250. package/dist/fhir/EvidenceVariable.js +0 -7
  251. package/dist/fhir/EvidenceVariable.js.map +0 -1
  252. package/dist/fhir/ExampleScenario.d.ts +0 -628
  253. package/dist/fhir/ExampleScenario.js +0 -7
  254. package/dist/fhir/ExampleScenario.js.map +0 -1
  255. package/dist/fhir/ExplanationOfBenefit.d.ts +0 -1841
  256. package/dist/fhir/ExplanationOfBenefit.js +0 -7
  257. package/dist/fhir/ExplanationOfBenefit.js.map +0 -1
  258. package/dist/fhir/Expression.d.ts +0 -45
  259. package/dist/fhir/Expression.js +0 -7
  260. package/dist/fhir/Expression.js.map +0 -1
  261. package/dist/fhir/Extension.d.ts +0 -306
  262. package/dist/fhir/Extension.js +0 -7
  263. package/dist/fhir/Extension.js.map +0 -1
  264. package/dist/fhir/FamilyMemberHistory.d.ts +0 -306
  265. package/dist/fhir/FamilyMemberHistory.js +0 -7
  266. package/dist/fhir/FamilyMemberHistory.js.map +0 -1
  267. package/dist/fhir/Flag.d.ts +0 -132
  268. package/dist/fhir/Flag.js +0 -7
  269. package/dist/fhir/Flag.js.map +0 -1
  270. package/dist/fhir/Goal.d.ts +0 -299
  271. package/dist/fhir/Goal.js +0 -7
  272. package/dist/fhir/Goal.js.map +0 -1
  273. package/dist/fhir/GraphDefinition.d.ts +0 -350
  274. package/dist/fhir/GraphDefinition.js +0 -7
  275. package/dist/fhir/GraphDefinition.js.map +0 -1
  276. package/dist/fhir/Group.d.ts +0 -271
  277. package/dist/fhir/Group.js +0 -7
  278. package/dist/fhir/Group.js.map +0 -1
  279. package/dist/fhir/GuidanceResponse.d.ts +0 -196
  280. package/dist/fhir/GuidanceResponse.js +0 -7
  281. package/dist/fhir/GuidanceResponse.js.map +0 -1
  282. package/dist/fhir/HealthcareService.d.ts +0 -356
  283. package/dist/fhir/HealthcareService.js +0 -7
  284. package/dist/fhir/HealthcareService.js.map +0 -1
  285. package/dist/fhir/HumanName.d.ts +0 -58
  286. package/dist/fhir/HumanName.js +0 -7
  287. package/dist/fhir/HumanName.js.map +0 -1
  288. package/dist/fhir/Identifier.d.ts +0 -53
  289. package/dist/fhir/Identifier.js +0 -7
  290. package/dist/fhir/Identifier.js.map +0 -1
  291. package/dist/fhir/ImagingStudy.d.ts +0 -407
  292. package/dist/fhir/ImagingStudy.js +0 -7
  293. package/dist/fhir/ImagingStudy.js.map +0 -1
  294. package/dist/fhir/Immunization.d.ts +0 -444
  295. package/dist/fhir/Immunization.js +0 -7
  296. package/dist/fhir/Immunization.js.map +0 -1
  297. package/dist/fhir/ImmunizationEvaluation.d.ts +0 -149
  298. package/dist/fhir/ImmunizationEvaluation.js +0 -7
  299. package/dist/fhir/ImmunizationEvaluation.js.map +0 -1
  300. package/dist/fhir/ImmunizationRecommendation.d.ts +0 -254
  301. package/dist/fhir/ImmunizationRecommendation.js +0 -7
  302. package/dist/fhir/ImmunizationRecommendation.js.map +0 -1
  303. package/dist/fhir/ImplementationGuide.d.ts +0 -824
  304. package/dist/fhir/ImplementationGuide.js +0 -7
  305. package/dist/fhir/ImplementationGuide.js.map +0 -1
  306. package/dist/fhir/InsurancePlan.d.ts +0 -624
  307. package/dist/fhir/InsurancePlan.js +0 -7
  308. package/dist/fhir/InsurancePlan.js.map +0 -1
  309. package/dist/fhir/Invoice.d.ts +0 -346
  310. package/dist/fhir/Invoice.js +0 -7
  311. package/dist/fhir/Invoice.js.map +0 -1
  312. package/dist/fhir/JsonWebKey.d.ts +0 -99
  313. package/dist/fhir/JsonWebKey.js +0 -7
  314. package/dist/fhir/JsonWebKey.js.map +0 -1
  315. package/dist/fhir/Library.d.ts +0 -277
  316. package/dist/fhir/Library.js +0 -7
  317. package/dist/fhir/Library.js.map +0 -1
  318. package/dist/fhir/Linkage.d.ts +0 -146
  319. package/dist/fhir/Linkage.js +0 -7
  320. package/dist/fhir/Linkage.js.map +0 -1
  321. package/dist/fhir/List.d.ts +0 -200
  322. package/dist/fhir/List.js +0 -7
  323. package/dist/fhir/List.js.map +0 -1
  324. package/dist/fhir/Location.d.ts +0 -277
  325. package/dist/fhir/Location.js +0 -7
  326. package/dist/fhir/Location.js.map +0 -1
  327. package/dist/fhir/Login.d.ts +0 -119
  328. package/dist/fhir/Login.js +0 -7
  329. package/dist/fhir/Login.js.map +0 -1
  330. package/dist/fhir/MarketingStatus.d.ts +0 -82
  331. package/dist/fhir/MarketingStatus.js +0 -7
  332. package/dist/fhir/MarketingStatus.js.map +0 -1
  333. package/dist/fhir/Measure.d.ts +0 -620
  334. package/dist/fhir/Measure.js +0 -7
  335. package/dist/fhir/Measure.js.map +0 -1
  336. package/dist/fhir/MeasureReport.d.ts +0 -463
  337. package/dist/fhir/MeasureReport.js +0 -7
  338. package/dist/fhir/MeasureReport.js.map +0 -1
  339. package/dist/fhir/Media.d.ts +0 -205
  340. package/dist/fhir/Media.js +0 -7
  341. package/dist/fhir/Media.js.map +0 -1
  342. package/dist/fhir/Medication.d.ts +0 -230
  343. package/dist/fhir/Medication.js +0 -7
  344. package/dist/fhir/Medication.js.map +0 -1
  345. package/dist/fhir/MedicationAdministration.d.ts +0 -352
  346. package/dist/fhir/MedicationAdministration.js +0 -7
  347. package/dist/fhir/MedicationAdministration.js.map +0 -1
  348. package/dist/fhir/MedicationDispense.d.ts +0 -343
  349. package/dist/fhir/MedicationDispense.js +0 -7
  350. package/dist/fhir/MedicationDispense.js.map +0 -1
  351. package/dist/fhir/MedicationKnowledge.d.ts +0 -992
  352. package/dist/fhir/MedicationKnowledge.js +0 -7
  353. package/dist/fhir/MedicationKnowledge.js.map +0 -1
  354. package/dist/fhir/MedicationRequest.d.ts +0 -481
  355. package/dist/fhir/MedicationRequest.js +0 -7
  356. package/dist/fhir/MedicationRequest.js.map +0 -1
  357. package/dist/fhir/MedicationStatement.d.ts +0 -228
  358. package/dist/fhir/MedicationStatement.js +0 -7
  359. package/dist/fhir/MedicationStatement.js.map +0 -1
  360. package/dist/fhir/MedicinalProduct.d.ts +0 -453
  361. package/dist/fhir/MedicinalProduct.js +0 -7
  362. package/dist/fhir/MedicinalProduct.js.map +0 -1
  363. package/dist/fhir/MedicinalProductAuthorization.d.ts +0 -271
  364. package/dist/fhir/MedicinalProductAuthorization.js +0 -7
  365. package/dist/fhir/MedicinalProductAuthorization.js.map +0 -1
  366. package/dist/fhir/MedicinalProductContraindication.d.ts +0 -170
  367. package/dist/fhir/MedicinalProductContraindication.js +0 -7
  368. package/dist/fhir/MedicinalProductContraindication.js.map +0 -1
  369. package/dist/fhir/MedicinalProductIndication.d.ts +0 -179
  370. package/dist/fhir/MedicinalProductIndication.js +0 -7
  371. package/dist/fhir/MedicinalProductIndication.js.map +0 -1
  372. package/dist/fhir/MedicinalProductIngredient.d.ts +0 -336
  373. package/dist/fhir/MedicinalProductIngredient.js +0 -7
  374. package/dist/fhir/MedicinalProductIngredient.js.map +0 -1
  375. package/dist/fhir/MedicinalProductInteraction.d.ts +0 -158
  376. package/dist/fhir/MedicinalProductInteraction.js +0 -7
  377. package/dist/fhir/MedicinalProductInteraction.js.map +0 -1
  378. package/dist/fhir/MedicinalProductManufactured.d.ts +0 -113
  379. package/dist/fhir/MedicinalProductManufactured.js +0 -7
  380. package/dist/fhir/MedicinalProductManufactured.js.map +0 -1
  381. package/dist/fhir/MedicinalProductPackaged.d.ts +0 -259
  382. package/dist/fhir/MedicinalProductPackaged.js +0 -7
  383. package/dist/fhir/MedicinalProductPackaged.js.map +0 -1
  384. package/dist/fhir/MedicinalProductPharmaceutical.d.ts +0 -331
  385. package/dist/fhir/MedicinalProductPharmaceutical.js +0 -7
  386. package/dist/fhir/MedicinalProductPharmaceutical.js.map +0 -1
  387. package/dist/fhir/MedicinalProductUndesirableEffect.d.ts +0 -101
  388. package/dist/fhir/MedicinalProductUndesirableEffect.js +0 -7
  389. package/dist/fhir/MedicinalProductUndesirableEffect.js.map +0 -1
  390. package/dist/fhir/MessageDefinition.d.ts +0 -330
  391. package/dist/fhir/MessageDefinition.js +0 -7
  392. package/dist/fhir/MessageDefinition.js.map +0 -1
  393. package/dist/fhir/MessageHeader.d.ts +0 -323
  394. package/dist/fhir/MessageHeader.js +0 -7
  395. package/dist/fhir/MessageHeader.js.map +0 -1
  396. package/dist/fhir/Meta.d.ts +0 -75
  397. package/dist/fhir/Meta.js +0 -7
  398. package/dist/fhir/Meta.js.map +0 -1
  399. package/dist/fhir/MolecularSequence.d.ts +0 -760
  400. package/dist/fhir/MolecularSequence.js +0 -7
  401. package/dist/fhir/MolecularSequence.js.map +0 -1
  402. package/dist/fhir/Money.d.ts +0 -29
  403. package/dist/fhir/Money.js +0 -7
  404. package/dist/fhir/Money.js.map +0 -1
  405. package/dist/fhir/NamingSystem.d.ts +0 -218
  406. package/dist/fhir/NamingSystem.js +0 -7
  407. package/dist/fhir/NamingSystem.js.map +0 -1
  408. package/dist/fhir/Narrative.d.ts +0 -32
  409. package/dist/fhir/Narrative.js +0 -7
  410. package/dist/fhir/Narrative.js.map +0 -1
  411. package/dist/fhir/NutritionOrder.d.ts +0 -566
  412. package/dist/fhir/NutritionOrder.js +0 -7
  413. package/dist/fhir/NutritionOrder.js.map +0 -1
  414. package/dist/fhir/Observation.d.ts +0 -520
  415. package/dist/fhir/Observation.js +0 -7
  416. package/dist/fhir/Observation.js.map +0 -1
  417. package/dist/fhir/ObservationDefinition.d.ts +0 -278
  418. package/dist/fhir/ObservationDefinition.js +0 -7
  419. package/dist/fhir/ObservationDefinition.js.map +0 -1
  420. package/dist/fhir/OperationDefinition.d.ts +0 -468
  421. package/dist/fhir/OperationDefinition.js +0 -7
  422. package/dist/fhir/OperationDefinition.js.map +0 -1
  423. package/dist/fhir/OperationOutcome.d.ts +0 -160
  424. package/dist/fhir/OperationOutcome.js +0 -7
  425. package/dist/fhir/OperationOutcome.js.map +0 -1
  426. package/dist/fhir/Organization.d.ts +0 -184
  427. package/dist/fhir/Organization.js +0 -7
  428. package/dist/fhir/Organization.js.map +0 -1
  429. package/dist/fhir/OrganizationAffiliation.d.ts +0 -145
  430. package/dist/fhir/OrganizationAffiliation.js +0 -7
  431. package/dist/fhir/OrganizationAffiliation.js.map +0 -1
  432. package/dist/fhir/ParameterDefinition.d.ts +0 -57
  433. package/dist/fhir/ParameterDefinition.js +0 -7
  434. package/dist/fhir/ParameterDefinition.js.map +0 -1
  435. package/dist/fhir/Parameters.d.ts +0 -319
  436. package/dist/fhir/Parameters.js +0 -7
  437. package/dist/fhir/Parameters.js.map +0 -1
  438. package/dist/fhir/PasswordChangeRequest.d.ts +0 -51
  439. package/dist/fhir/PasswordChangeRequest.js +0 -7
  440. package/dist/fhir/PasswordChangeRequest.js.map +0 -1
  441. package/dist/fhir/Patient.d.ts +0 -342
  442. package/dist/fhir/Patient.js +0 -7
  443. package/dist/fhir/Patient.js.map +0 -1
  444. package/dist/fhir/PaymentNotice.d.ts +0 -135
  445. package/dist/fhir/PaymentNotice.js +0 -7
  446. package/dist/fhir/PaymentNotice.js.map +0 -1
  447. package/dist/fhir/PaymentReconciliation.d.ts +0 -280
  448. package/dist/fhir/PaymentReconciliation.js +0 -7
  449. package/dist/fhir/PaymentReconciliation.js.map +0 -1
  450. package/dist/fhir/Period.d.ts +0 -32
  451. package/dist/fhir/Period.js +0 -7
  452. package/dist/fhir/Period.js.map +0 -1
  453. package/dist/fhir/Person.d.ts +0 -175
  454. package/dist/fhir/Person.js +0 -7
  455. package/dist/fhir/Person.js.map +0 -1
  456. package/dist/fhir/PlanDefinition.d.ts +0 -837
  457. package/dist/fhir/PlanDefinition.js +0 -7
  458. package/dist/fhir/PlanDefinition.js.map +0 -1
  459. package/dist/fhir/Population.d.ts +0 -62
  460. package/dist/fhir/Population.js +0 -7
  461. package/dist/fhir/Population.js.map +0 -1
  462. package/dist/fhir/Practitioner.d.ts +0 -191
  463. package/dist/fhir/Practitioner.js +0 -7
  464. package/dist/fhir/Practitioner.js.map +0 -1
  465. package/dist/fhir/PractitionerRole.d.ts +0 -259
  466. package/dist/fhir/PractitionerRole.js +0 -7
  467. package/dist/fhir/PractitionerRole.js.map +0 -1
  468. package/dist/fhir/Procedure.d.ts +0 -372
  469. package/dist/fhir/Procedure.js +0 -7
  470. package/dist/fhir/Procedure.js.map +0 -1
  471. package/dist/fhir/ProdCharacteristic.d.ts +0 -112
  472. package/dist/fhir/ProdCharacteristic.js +0 -7
  473. package/dist/fhir/ProdCharacteristic.js.map +0 -1
  474. package/dist/fhir/ProductShelfLife.d.ts +0 -70
  475. package/dist/fhir/ProductShelfLife.js +0 -7
  476. package/dist/fhir/ProductShelfLife.js.map +0 -1
  477. package/dist/fhir/Project.d.ts +0 -43
  478. package/dist/fhir/Project.js +0 -7
  479. package/dist/fhir/Project.js.map +0 -1
  480. package/dist/fhir/ProjectMembership.d.ts +0 -66
  481. package/dist/fhir/ProjectMembership.js +0 -7
  482. package/dist/fhir/ProjectMembership.js.map +0 -1
  483. package/dist/fhir/Provenance.d.ts +0 -258
  484. package/dist/fhir/Provenance.js +0 -7
  485. package/dist/fhir/Provenance.js.map +0 -1
  486. package/dist/fhir/Quantity.d.ts +0 -46
  487. package/dist/fhir/Quantity.js +0 -7
  488. package/dist/fhir/Quantity.js.map +0 -1
  489. package/dist/fhir/Questionnaire.d.ts +0 -603
  490. package/dist/fhir/Questionnaire.js +0 -7
  491. package/dist/fhir/Questionnaire.js.map +0 -1
  492. package/dist/fhir/QuestionnaireResponse.d.ts +0 -313
  493. package/dist/fhir/QuestionnaireResponse.js +0 -7
  494. package/dist/fhir/QuestionnaireResponse.js.map +0 -1
  495. package/dist/fhir/Range.d.ts +0 -30
  496. package/dist/fhir/Range.js +0 -7
  497. package/dist/fhir/Range.js.map +0 -1
  498. package/dist/fhir/Ratio.d.ts +0 -30
  499. package/dist/fhir/Ratio.js +0 -7
  500. package/dist/fhir/Ratio.js.map +0 -1
  501. package/dist/fhir/Reference.d.ts +0 -67
  502. package/dist/fhir/Reference.js +0 -7
  503. package/dist/fhir/Reference.js.map +0 -1
  504. package/dist/fhir/RefreshToken.d.ts +0 -45
  505. package/dist/fhir/RefreshToken.js +0 -7
  506. package/dist/fhir/RefreshToken.js.map +0 -1
  507. package/dist/fhir/RelatedArtifact.d.ts +0 -57
  508. package/dist/fhir/RelatedArtifact.js +0 -7
  509. package/dist/fhir/RelatedArtifact.js.map +0 -1
  510. package/dist/fhir/RelatedPerson.d.ts +0 -190
  511. package/dist/fhir/RelatedPerson.js +0 -7
  512. package/dist/fhir/RelatedPerson.js.map +0 -1
  513. package/dist/fhir/RequestGroup.d.ts +0 -434
  514. package/dist/fhir/RequestGroup.js +0 -7
  515. package/dist/fhir/RequestGroup.js.map +0 -1
  516. package/dist/fhir/ResearchDefinition.d.ts +0 -291
  517. package/dist/fhir/ResearchDefinition.js +0 -7
  518. package/dist/fhir/ResearchDefinition.js.map +0 -1
  519. package/dist/fhir/ResearchElementDefinition.d.ts +0 -431
  520. package/dist/fhir/ResearchElementDefinition.js +0 -7
  521. package/dist/fhir/ResearchElementDefinition.js.map +0 -1
  522. package/dist/fhir/ResearchStudy.d.ts +0 -318
  523. package/dist/fhir/ResearchStudy.js +0 -7
  524. package/dist/fhir/ResearchStudy.js.map +0 -1
  525. package/dist/fhir/ResearchSubject.d.ts +0 -119
  526. package/dist/fhir/ResearchSubject.js +0 -7
  527. package/dist/fhir/ResearchSubject.js.map +0 -1
  528. package/dist/fhir/Resource.d.ts +0 -156
  529. package/dist/fhir/Resource.js +0 -7
  530. package/dist/fhir/Resource.js.map +0 -1
  531. package/dist/fhir/RiskAssessment.d.ts +0 -246
  532. package/dist/fhir/RiskAssessment.js +0 -7
  533. package/dist/fhir/RiskAssessment.js.map +0 -1
  534. package/dist/fhir/RiskEvidenceSynthesis.d.ts +0 -530
  535. package/dist/fhir/RiskEvidenceSynthesis.js +0 -7
  536. package/dist/fhir/RiskEvidenceSynthesis.js.map +0 -1
  537. package/dist/fhir/SampledData.d.ts +0 -62
  538. package/dist/fhir/SampledData.js +0 -7
  539. package/dist/fhir/SampledData.js.map +0 -1
  540. package/dist/fhir/Schedule.d.ts +0 -129
  541. package/dist/fhir/Schedule.js +0 -7
  542. package/dist/fhir/Schedule.js.map +0 -1
  543. package/dist/fhir/SearchParameter.d.ts +0 -277
  544. package/dist/fhir/SearchParameter.js +0 -7
  545. package/dist/fhir/SearchParameter.js.map +0 -1
  546. package/dist/fhir/ServiceRequest.d.ts +0 -309
  547. package/dist/fhir/ServiceRequest.js +0 -7
  548. package/dist/fhir/ServiceRequest.js.map +0 -1
  549. package/dist/fhir/Signature.d.ts +0 -71
  550. package/dist/fhir/Signature.js +0 -7
  551. package/dist/fhir/Signature.js.map +0 -1
  552. package/dist/fhir/Slot.d.ts +0 -134
  553. package/dist/fhir/Slot.js +0 -7
  554. package/dist/fhir/Slot.js.map +0 -1
  555. package/dist/fhir/Specimen.d.ts +0 -366
  556. package/dist/fhir/Specimen.js +0 -7
  557. package/dist/fhir/Specimen.js.map +0 -1
  558. package/dist/fhir/SpecimenDefinition.d.ts +0 -363
  559. package/dist/fhir/SpecimenDefinition.js +0 -7
  560. package/dist/fhir/SpecimenDefinition.js.map +0 -1
  561. package/dist/fhir/StructureDefinition.d.ts +0 -438
  562. package/dist/fhir/StructureDefinition.js +0 -7
  563. package/dist/fhir/StructureDefinition.js.map +0 -1
  564. package/dist/fhir/StructureMap.d.ts +0 -904
  565. package/dist/fhir/StructureMap.js +0 -7
  566. package/dist/fhir/StructureMap.js.map +0 -1
  567. package/dist/fhir/Subscription.d.ts +0 -172
  568. package/dist/fhir/Subscription.js +0 -7
  569. package/dist/fhir/Subscription.js.map +0 -1
  570. package/dist/fhir/Substance.d.ts +0 -213
  571. package/dist/fhir/Substance.js +0 -7
  572. package/dist/fhir/Substance.js.map +0 -1
  573. package/dist/fhir/SubstanceAmount.d.ts +0 -115
  574. package/dist/fhir/SubstanceAmount.js +0 -7
  575. package/dist/fhir/SubstanceAmount.js.map +0 -1
  576. package/dist/fhir/SubstanceNucleicAcid.d.ts +0 -309
  577. package/dist/fhir/SubstanceNucleicAcid.js +0 -7
  578. package/dist/fhir/SubstanceNucleicAcid.js.map +0 -1
  579. package/dist/fhir/SubstancePolymer.d.ts +0 -405
  580. package/dist/fhir/SubstancePolymer.js +0 -7
  581. package/dist/fhir/SubstancePolymer.js.map +0 -1
  582. package/dist/fhir/SubstanceProtein.d.ts +0 -218
  583. package/dist/fhir/SubstanceProtein.js +0 -7
  584. package/dist/fhir/SubstanceProtein.js.map +0 -1
  585. package/dist/fhir/SubstanceReferenceInformation.d.ts +0 -330
  586. package/dist/fhir/SubstanceReferenceInformation.js +0 -7
  587. package/dist/fhir/SubstanceReferenceInformation.js.map +0 -1
  588. package/dist/fhir/SubstanceSourceMaterial.d.ts +0 -521
  589. package/dist/fhir/SubstanceSourceMaterial.js +0 -7
  590. package/dist/fhir/SubstanceSourceMaterial.js.map +0 -1
  591. package/dist/fhir/SubstanceSpecification.d.ts +0 -827
  592. package/dist/fhir/SubstanceSpecification.js +0 -7
  593. package/dist/fhir/SubstanceSpecification.js.map +0 -1
  594. package/dist/fhir/SupplyDelivery.d.ts +0 -205
  595. package/dist/fhir/SupplyDelivery.js +0 -7
  596. package/dist/fhir/SupplyDelivery.js.map +0 -1
  597. package/dist/fhir/SupplyRequest.d.ts +0 -237
  598. package/dist/fhir/SupplyRequest.js +0 -7
  599. package/dist/fhir/SupplyRequest.js.map +0 -1
  600. package/dist/fhir/Task.d.ts +0 -807
  601. package/dist/fhir/Task.js +0 -7
  602. package/dist/fhir/Task.js.map +0 -1
  603. package/dist/fhir/TerminologyCapabilities.d.ts +0 -716
  604. package/dist/fhir/TerminologyCapabilities.js +0 -7
  605. package/dist/fhir/TerminologyCapabilities.js.map +0 -1
  606. package/dist/fhir/TestReport.d.ts +0 -549
  607. package/dist/fhir/TestReport.js +0 -7
  608. package/dist/fhir/TestReport.js.map +0 -1
  609. package/dist/fhir/TestScript.d.ts +0 -1184
  610. package/dist/fhir/TestScript.js +0 -7
  611. package/dist/fhir/TestScript.js.map +0 -1
  612. package/dist/fhir/Timing.d.ts +0 -178
  613. package/dist/fhir/Timing.js +0 -7
  614. package/dist/fhir/Timing.js.map +0 -1
  615. package/dist/fhir/TriggerDefinition.d.ts +0 -65
  616. package/dist/fhir/TriggerDefinition.js +0 -7
  617. package/dist/fhir/TriggerDefinition.js.map +0 -1
  618. package/dist/fhir/UsageContext.d.ts +0 -61
  619. package/dist/fhir/UsageContext.js +0 -7
  620. package/dist/fhir/UsageContext.js.map +0 -1
  621. package/dist/fhir/User.d.ts +0 -45
  622. package/dist/fhir/User.js +0 -7
  623. package/dist/fhir/User.js.map +0 -1
  624. package/dist/fhir/ValueSet.d.ts +0 -725
  625. package/dist/fhir/ValueSet.js +0 -7
  626. package/dist/fhir/ValueSet.js.map +0 -1
  627. package/dist/fhir/VerificationResult.d.ts +0 -340
  628. package/dist/fhir/VerificationResult.js +0 -7
  629. package/dist/fhir/VerificationResult.js.map +0 -1
  630. package/dist/fhir/VisionPrescription.d.ts +0 -264
  631. package/dist/fhir/VisionPrescription.js +0 -7
  632. package/dist/fhir/VisionPrescription.js.map +0 -1
  633. package/dist/fhir/index.d.ts +0 -196
  634. package/dist/fhir/index.js +0 -213
  635. package/dist/fhir/index.js.map +0 -1
  636. package/dist/fhirpath/functions.d.ts +0 -6
  637. package/dist/fhirpath/functions.js +0 -349
  638. package/dist/fhirpath/functions.js.map +0 -1
  639. package/dist/fhirpath/functions.test.d.ts +0 -1
  640. package/dist/fhirpath/functions.test.js +0 -162
  641. package/dist/fhirpath/functions.test.js.map +0 -1
  642. package/dist/fhirpath/index.d.ts +0 -2
  643. package/dist/fhirpath/index.js +0 -15
  644. package/dist/fhirpath/index.js.map +0 -1
  645. package/dist/fhirpath/parse.d.ts +0 -10
  646. package/dist/fhirpath/parse.js +0 -285
  647. package/dist/fhirpath/parse.js.map +0 -1
  648. package/dist/fhirpath/parse.test.d.ts +0 -1
  649. package/dist/fhirpath/parse.test.js +0 -239
  650. package/dist/fhirpath/parse.test.js.map +0 -1
  651. package/dist/fhirpath/tokenize.d.ts +0 -13
  652. package/dist/fhirpath/tokenize.js +0 -43
  653. package/dist/fhirpath/tokenize.js.map +0 -1
  654. package/dist/fhirpath/tokenize.test.d.ts +0 -1
  655. package/dist/fhirpath/tokenize.test.js +0 -69
  656. package/dist/fhirpath/tokenize.test.js.map +0 -1
  657. package/dist/fhirpath/utils.d.ts +0 -13
  658. package/dist/fhirpath/utils.js +0 -34
  659. package/dist/fhirpath/utils.js.map +0 -1
  660. package/dist/fhirpath/utils.test.d.ts +0 -1
  661. package/dist/fhirpath/utils.test.js +0 -22
  662. package/dist/fhirpath/utils.test.js.map +0 -1
  663. package/dist/format.js +0 -56
  664. package/dist/format.js.map +0 -1
  665. package/dist/format.test.d.ts +0 -1
  666. package/dist/format.test.js +0 -127
  667. package/dist/format.test.js.map +0 -1
  668. package/dist/index.js +0 -22
  669. package/dist/index.js.map +0 -1
  670. package/dist/index.test.d.ts +0 -1
  671. package/dist/index.test.js +0 -11
  672. package/dist/index.test.js.map +0 -1
  673. package/dist/jwt.d.ts +0 -5
  674. package/dist/jwt.js +0 -28
  675. package/dist/jwt.js.map +0 -1
  676. package/dist/outcomes.js +0 -140
  677. package/dist/outcomes.js.map +0 -1
  678. package/dist/outcomes.test.d.ts +0 -1
  679. package/dist/outcomes.test.js +0 -38
  680. package/dist/outcomes.test.js.map +0 -1
  681. package/dist/search.js +0 -120
  682. package/dist/search.js.map +0 -1
  683. package/dist/search.test.d.ts +0 -1
  684. package/dist/search.test.js +0 -72
  685. package/dist/search.test.js.map +0 -1
  686. package/dist/searchparams.js +0 -127
  687. package/dist/searchparams.js.map +0 -1
  688. package/dist/searchparams.test.d.ts +0 -1
  689. package/dist/searchparams.test.js +0 -129
  690. package/dist/searchparams.test.js.map +0 -1
  691. package/dist/storage.js +0 -91
  692. package/dist/storage.js.map +0 -1
  693. package/dist/storage.test.d.ts +0 -1
  694. package/dist/storage.test.js +0 -50
  695. package/dist/storage.test.js.map +0 -1
  696. package/dist/types.js +0 -169
  697. package/dist/types.js.map +0 -1
  698. package/dist/utils.js +0 -234
  699. package/dist/utils.js.map +0 -1
  700. package/dist/utils.test.d.ts +0 -1
  701. package/dist/utils.test.js +0 -148
  702. package/dist/utils.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.test.js","sourceRoot":"","sources":["../src/search.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { formatSearchQuery, Operator, parseSearchDefinition } from './search';\n\ndescribe('Search Utils', () => {\n\n test('Parse Patient search', () => {\n const result = parseSearchDefinition({ pathname: '/x/y/z/Patient' });\n expect(result.resourceType).toBe('Patient');\n expect(result.filters).toEqual([]);\n });\n\n test('Parse Patient search name', () => {\n const result = parseSearchDefinition({ pathname: 'Patient', search: 'name=alice' });\n expect(result.resourceType).toBe('Patient');\n expect(result.filters).toEqual([{\n code: 'name',\n operator: Operator.EQUALS,\n value: 'alice'\n }]);\n });\n\n test('Parse Patient search fields', () => {\n const result = parseSearchDefinition({ pathname: 'Patient', search: '_fields=id,name,birthDate' });\n expect(result.resourceType).toBe('Patient');\n expect(result.fields).toEqual(['id', 'name', 'birthDate']);\n });\n\n test('Parse Patient search sort', () => {\n const result = parseSearchDefinition({ pathname: 'Patient', search: '_sort=birthDate' });\n expect(result.resourceType).toBe('Patient');\n expect(result.sortRules).toEqual([{ code: 'birthDate' }]);\n });\n\n test('Parse Patient search sort descending', () => {\n const result = parseSearchDefinition({ pathname: 'Patient', search: '_sort=-birthDate' });\n expect(result.resourceType).toBe('Patient');\n expect(result.sortRules).toEqual([{ code: 'birthDate', descending: true }]);\n });\n\n test('Format Patient search', () => {\n const result = formatSearchQuery({\n resourceType: 'Patient',\n fields: ['id', 'name'],\n filters: [{\n code: 'name',\n operator: Operator.EQUALS,\n value: 'alice'\n }],\n page: 2,\n count: 5\n });\n expect(result).toEqual('?_count=5&_fields=id,name&_page=2&name=alice');\n });\n\n test('Format Patient search sort', () => {\n const result = formatSearchQuery({\n resourceType: 'Patient',\n fields: ['id', 'name'],\n filters: [],\n sortRules: [{\n code: 'name'\n }]\n });\n expect(result).toEqual('?_fields=id,name&_sort=name');\n });\n\n test('Format Patient search sort descending', () => {\n const result = formatSearchQuery({\n resourceType: 'Patient',\n fields: ['id', 'name'],\n filters: [],\n sortRules: [{\n code: 'name',\n descending: true\n }]\n });\n expect(result).toEqual('?_fields=id,name&_sort=-name');\n });\n\n});\n"]}
@@ -1,127 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSearchParameterDetails = exports.SearchParameterType = void 0;
4
- const utils_1 = require("./utils");
5
- var SearchParameterType;
6
- (function (SearchParameterType) {
7
- SearchParameterType["BOOLEAN"] = "BOOLEAN";
8
- SearchParameterType["NUMBER"] = "NUMBER";
9
- SearchParameterType["QUANTITY"] = "QUANTITY";
10
- SearchParameterType["TEXT"] = "TEXT";
11
- SearchParameterType["REFERENCE"] = "REFERENCE";
12
- SearchParameterType["DATE"] = "DATE";
13
- SearchParameterType["DATETIME"] = "DATETIME";
14
- SearchParameterType["PERIOD"] = "PERIOD";
15
- })(SearchParameterType = exports.SearchParameterType || (exports.SearchParameterType = {}));
16
- /**
17
- * Returns the type details of a SearchParameter.
18
- *
19
- * The SearchParameter resource has a "type" parameter, but that is missing some critical information.
20
- *
21
- * For example:
22
- * 1) The "date" type includes "date", "datetime", and "period".
23
- * 2) The "token" type includes enums and booleans.
24
- * 3) Arrays/multiple values are not reflected at all.
25
- *
26
- * @param structureDefinitions Collection of StructureDefinition resources indexed by name.
27
- * @param resourceType The root resource type.
28
- * @param searchParam The search parameter.
29
- * @returns The search parameter type details.
30
- */
31
- function getSearchParameterDetails(structureDefinitions, resourceType, searchParam) {
32
- const columnName = convertCodeToColumnName(searchParam.code);
33
- const expression = getExpressionForResourceType(resourceType, searchParam.expression)?.split('.');
34
- if (!expression) {
35
- // This happens on compound types
36
- // In the future, explore returning multiple column definitions
37
- return { columnName, type: SearchParameterType.TEXT };
38
- }
39
- let baseType = resourceType;
40
- let propertyType = undefined;
41
- let array = false;
42
- for (let i = 1; i < expression.length; i++) {
43
- const propertyName = expression[i];
44
- const propertyDef = structureDefinitions.types[baseType]?.properties?.[propertyName];
45
- if (!propertyDef) {
46
- // This happens on complex properties such as "collected[x]"/"collectedDateTime"/"collectedPeriod"
47
- // In the future, explore returning multiple column definitions
48
- return { columnName, type: SearchParameterType.TEXT, array };
49
- }
50
- if (propertyDef.max === '*') {
51
- array = true;
52
- }
53
- propertyType = propertyDef.type?.[0].code;
54
- if (!propertyType) {
55
- // This happens when one of parent properties uses contentReference
56
- // In the future, explore following the reference
57
- return { columnName, type: SearchParameterType.TEXT, array };
58
- }
59
- if (i < expression.length - 1) {
60
- if (propertyType === 'Element' || propertyType === 'BackboneElement') {
61
- baseType = baseType + (0, utils_1.capitalize)(propertyName);
62
- }
63
- else {
64
- baseType = propertyType;
65
- }
66
- }
67
- }
68
- const type = getSearchParameterType(searchParam, propertyType);
69
- return { columnName, type, array };
70
- }
71
- exports.getSearchParameterDetails = getSearchParameterDetails;
72
- /**
73
- * Converts a hyphen-delimited code to camelCase string.
74
- * @param code The search parameter code.
75
- * @returns The SQL column name.
76
- */
77
- function convertCodeToColumnName(code) {
78
- return code.split('-')
79
- .reduce((result, word, index) => result + (index ? (0, utils_1.capitalize)(word) : word), '');
80
- }
81
- function getSearchParameterType(searchParam, propertyType) {
82
- let type = SearchParameterType.TEXT;
83
- switch (searchParam.type) {
84
- case 'date':
85
- type = SearchParameterType.DATE;
86
- break;
87
- case 'number':
88
- type = SearchParameterType.NUMBER;
89
- break;
90
- case 'quantity':
91
- type = SearchParameterType.QUANTITY;
92
- break;
93
- case 'reference':
94
- type = SearchParameterType.REFERENCE;
95
- break;
96
- case 'token':
97
- if (propertyType === 'boolean') {
98
- type = SearchParameterType.BOOLEAN;
99
- }
100
- break;
101
- }
102
- return type;
103
- }
104
- function getExpressionForResourceType(resourceType, expression) {
105
- const expressions = expression.split(' | ');
106
- for (const e of expressions) {
107
- const simplified = simplifyExpression(e);
108
- if (simplified.startsWith(resourceType + '.')) {
109
- return simplified;
110
- }
111
- }
112
- return undefined;
113
- }
114
- function simplifyExpression(input) {
115
- let result = input.trim();
116
- if (result.startsWith('(') && result.endsWith(')')) {
117
- result = result.substring(1, result.length - 1);
118
- }
119
- if (result.includes(' as ')) {
120
- result = result.substring(0, result.indexOf(' as '));
121
- }
122
- if (result.includes('.where(')) {
123
- result = result.substring(0, result.indexOf('.where('));
124
- }
125
- return result;
126
- }
127
- //# sourceMappingURL=searchparams.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchparams.js","sourceRoot":"","sources":["../src/searchparams.ts"],"names":[],"mappings":"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","sourcesContent":["import { SearchParameter } from './fhir';\nimport { IndexedStructureDefinition } from './types';\nimport { capitalize } from './utils';\n\nexport enum SearchParameterType {\n BOOLEAN = 'BOOLEAN',\n NUMBER = 'NUMBER',\n QUANTITY = 'QUANTITY',\n TEXT = 'TEXT',\n REFERENCE = 'REFERENCE',\n DATE = 'DATE',\n DATETIME = 'DATETIME',\n PERIOD = 'PERIOD'\n}\n\nexport interface SearchParameterDetails {\n readonly columnName: string;\n readonly type: SearchParameterType;\n readonly array?: boolean;\n}\n\n/**\n * Returns the type details of a SearchParameter.\n *\n * The SearchParameter resource has a \"type\" parameter, but that is missing some critical information.\n *\n * For example:\n * 1) The \"date\" type includes \"date\", \"datetime\", and \"period\".\n * 2) The \"token\" type includes enums and booleans.\n * 3) Arrays/multiple values are not reflected at all.\n *\n * @param structureDefinitions Collection of StructureDefinition resources indexed by name.\n * @param resourceType The root resource type.\n * @param searchParam The search parameter.\n * @returns The search parameter type details.\n */\nexport function getSearchParameterDetails(\n structureDefinitions: IndexedStructureDefinition,\n resourceType: string,\n searchParam: SearchParameter): SearchParameterDetails {\n\n const columnName = convertCodeToColumnName(searchParam.code as string);\n const expression = getExpressionForResourceType(resourceType, searchParam.expression as string)?.split('.');\n if (!expression) {\n // This happens on compound types\n // In the future, explore returning multiple column definitions\n return { columnName, type: SearchParameterType.TEXT };\n }\n\n let baseType = resourceType;\n let propertyType = undefined;\n let array = false;\n\n for (let i = 1; i < expression.length; i++) {\n const propertyName = expression[i];\n const propertyDef = structureDefinitions.types[baseType]?.properties?.[propertyName];\n if (!propertyDef) {\n // This happens on complex properties such as \"collected[x]\"/\"collectedDateTime\"/\"collectedPeriod\"\n // In the future, explore returning multiple column definitions\n return { columnName, type: SearchParameterType.TEXT, array };\n }\n\n if (propertyDef.max === '*') {\n array = true;\n }\n\n propertyType = propertyDef.type?.[0].code;\n if (!propertyType) {\n // This happens when one of parent properties uses contentReference\n // In the future, explore following the reference\n return { columnName, type: SearchParameterType.TEXT, array };\n }\n\n if (i < expression.length - 1) {\n if (propertyType === 'Element' || propertyType === 'BackboneElement') {\n baseType = baseType + capitalize(propertyName);\n } else {\n baseType = propertyType;\n }\n }\n }\n\n const type = getSearchParameterType(searchParam, propertyType as string);\n return { columnName, type, array };\n}\n\n/**\n * Converts a hyphen-delimited code to camelCase string.\n * @param code The search parameter code.\n * @returns The SQL column name.\n */\nfunction convertCodeToColumnName(code: string): string {\n return code.split('-')\n .reduce((result, word, index) => result + (index ? capitalize(word) : word), '');\n}\n\nfunction getSearchParameterType(searchParam: SearchParameter, propertyType: string): SearchParameterType {\n let type = SearchParameterType.TEXT;\n switch (searchParam.type) {\n case 'date':\n type = SearchParameterType.DATE;\n break;\n case 'number':\n type = SearchParameterType.NUMBER;\n break;\n case 'quantity':\n type = SearchParameterType.QUANTITY;\n break;\n case 'reference':\n type = SearchParameterType.REFERENCE;\n break;\n case 'token':\n if (propertyType === 'boolean') {\n type = SearchParameterType.BOOLEAN;\n }\n break;\n }\n return type;\n}\n\nfunction getExpressionForResourceType(resourceType: string, expression: string): string | undefined {\n const expressions = expression.split(' | ');\n for (const e of expressions) {\n const simplified = simplifyExpression(e);\n if (simplified.startsWith(resourceType + '.')) {\n return simplified;\n }\n }\n return undefined;\n}\n\nfunction simplifyExpression(input: string): string {\n let result = input.trim();\n\n if (result.startsWith('(') && result.endsWith(')')) {\n result = result.substring(1, result.length - 1);\n }\n\n if (result.includes(' as ')) {\n result = result.substring(0, result.indexOf(' as '));\n }\n\n if (result.includes('.where(')) {\n result = result.substring(0, result.indexOf('.where('));\n }\n\n return result;\n}\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,129 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs_1 = require("fs");
4
- const path_1 = require("path");
5
- const _1 = require(".");
6
- const searchparams_1 = require("./searchparams");
7
- const searchParams = readJson('fhir/r4/search-parameters.json');
8
- const structureDefinitions = { types: {} };
9
- describe('SearchParameterDetails', () => {
10
- beforeAll(() => {
11
- buildStructureDefinitions('profiles-types.json');
12
- buildStructureDefinitions('profiles-resources.json');
13
- buildStructureDefinitions('profiles-medplum.json');
14
- });
15
- test('Get details', () => {
16
- const individualPhoneticParam = {
17
- resourceType: 'SearchParameter',
18
- code: 'phonetic',
19
- type: 'string',
20
- expression: 'Patient.name | Person.name | Practitioner.name | RelatedPerson.name'
21
- };
22
- const details = (0, searchparams_1.getSearchParameterDetails)(structureDefinitions, 'Patient', individualPhoneticParam);
23
- expect(details).not.toBeUndefined();
24
- expect(details.columnName).toEqual('phonetic');
25
- expect(details.array).toEqual(true);
26
- });
27
- test('Boolean param', () => {
28
- const activeParam = {
29
- resourceType: 'SearchParameter',
30
- code: 'active',
31
- type: 'token',
32
- expression: 'Patient.active'
33
- };
34
- const details = (0, searchparams_1.getSearchParameterDetails)(structureDefinitions, 'Patient', activeParam);
35
- expect(details).not.toBeUndefined();
36
- expect(details.columnName).toEqual('active');
37
- expect(details.type).toEqual(searchparams_1.SearchParameterType.BOOLEAN);
38
- expect(details.array).toEqual(false);
39
- });
40
- test('Date param', () => {
41
- const birthDateParam = {
42
- resourceType: 'SearchParameter',
43
- code: 'birthdate',
44
- type: 'date',
45
- expression: 'Patient.birthDate'
46
- };
47
- const details = (0, searchparams_1.getSearchParameterDetails)(structureDefinitions, 'Patient', birthDateParam);
48
- expect(details).not.toBeUndefined();
49
- expect(details.columnName).toEqual('birthdate');
50
- expect(details.type).toEqual(searchparams_1.SearchParameterType.DATE);
51
- expect(details.array).toEqual(false);
52
- });
53
- test('Get nested details', () => {
54
- const missingExpressionParam = {
55
- resourceType: 'SearchParameter',
56
- code: 'link',
57
- type: 'reference',
58
- expression: 'Patient.link.other'
59
- };
60
- const details = (0, searchparams_1.getSearchParameterDetails)(structureDefinitions, 'Patient', missingExpressionParam);
61
- expect(details).not.toBeUndefined();
62
- expect(details.columnName).toEqual('link');
63
- expect(details.type).toEqual(searchparams_1.SearchParameterType.REFERENCE);
64
- });
65
- test('Missing expression for resource type', () => {
66
- const missingExpressionParam = {
67
- resourceType: 'SearchParameter',
68
- code: 'test',
69
- type: 'string',
70
- expression: 'OtherType.test'
71
- };
72
- const details = (0, searchparams_1.getSearchParameterDetails)(structureDefinitions, 'Patient', missingExpressionParam);
73
- expect(details).not.toBeUndefined();
74
- expect(details.columnName).toEqual('test');
75
- });
76
- test('Property not found', () => {
77
- const missingExpressionParam = {
78
- resourceType: 'SearchParameter',
79
- code: 'test',
80
- type: 'string',
81
- expression: 'Patient.unknown'
82
- };
83
- const details = (0, searchparams_1.getSearchParameterDetails)(structureDefinitions, 'Patient', missingExpressionParam);
84
- expect(details).not.toBeUndefined();
85
- expect(details.columnName).toEqual('test');
86
- });
87
- test('Subtype not found', () => {
88
- const missingExpressionParam = {
89
- resourceType: 'SearchParameter',
90
- code: 'test',
91
- type: 'string',
92
- expression: 'Patient.unknown'
93
- };
94
- const details = (0, searchparams_1.getSearchParameterDetails)(structureDefinitions, 'Patient', missingExpressionParam);
95
- expect(details).not.toBeUndefined();
96
- expect(details.columnName).toEqual('test');
97
- });
98
- test('Everything', () => {
99
- // Make sure that getSearchParameterDetails returns successfully for all known parameters.
100
- for (const resourceType of Object.keys(structureDefinitions.types)) {
101
- for (const entry of searchParams.entry) {
102
- const searchParam = entry.resource;
103
- if (searchParam.base?.includes(resourceType)) {
104
- const details = (0, searchparams_1.getSearchParameterDetails)(structureDefinitions, resourceType, searchParam);
105
- expect(details).not.toBeUndefined();
106
- }
107
- }
108
- }
109
- });
110
- });
111
- function buildStructureDefinitions(fileName) {
112
- const resourceDefinitions = readJson(`fhir/r4/${fileName}`);
113
- for (const entry of resourceDefinitions.entry) {
114
- const resource = entry.resource;
115
- if (resource.resourceType === 'StructureDefinition' &&
116
- resource.name &&
117
- resource.name !== 'Resource' &&
118
- resource.name !== 'BackboneElement' &&
119
- resource.name !== 'DomainResource' &&
120
- resource.name !== 'MetadataResource' &&
121
- !(0, _1.isLowerCase)(resource.name[0])) {
122
- (0, _1.indexStructureDefinition)(resource, structureDefinitions);
123
- }
124
- }
125
- }
126
- function readJson(filename) {
127
- return JSON.parse((0, fs_1.readFileSync)((0, path_1.resolve)(__dirname, '../../definitions/dist/', filename), 'utf8'));
128
- }
129
- //# sourceMappingURL=searchparams.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchparams.test.js","sourceRoot":"","sources":["../src/searchparams.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFileSync } from 'fs';\nimport { resolve } from 'path';\nimport { Bundle, BundleEntry, indexStructureDefinition, isLowerCase, Resource, SearchParameter } from '.';\nimport { getSearchParameterDetails, SearchParameterType } from './searchparams';\nimport { IndexedStructureDefinition } from './types';\n\nconst searchParams = readJson('fhir/r4/search-parameters.json');\nconst structureDefinitions = { types: {} } as IndexedStructureDefinition;\n\ndescribe('SearchParameterDetails', () => {\n\n beforeAll(() => {\n buildStructureDefinitions('profiles-types.json');\n buildStructureDefinitions('profiles-resources.json');\n buildStructureDefinitions('profiles-medplum.json');\n });\n\n test('Get details', () => {\n const individualPhoneticParam: SearchParameter = {\n resourceType: 'SearchParameter',\n code: 'phonetic',\n type: 'string',\n expression: 'Patient.name | Person.name | Practitioner.name | RelatedPerson.name'\n };\n\n const details = getSearchParameterDetails(structureDefinitions, 'Patient', individualPhoneticParam);\n expect(details).not.toBeUndefined();\n expect(details.columnName).toEqual('phonetic');\n expect(details.array).toEqual(true);\n });\n\n test('Boolean param', () => {\n const activeParam: SearchParameter = {\n resourceType: 'SearchParameter',\n code: 'active',\n type: 'token',\n expression: 'Patient.active'\n };\n\n const details = getSearchParameterDetails(structureDefinitions, 'Patient', activeParam);\n expect(details).not.toBeUndefined();\n expect(details.columnName).toEqual('active');\n expect(details.type).toEqual(SearchParameterType.BOOLEAN);\n expect(details.array).toEqual(false);\n });\n\n test('Date param', () => {\n const birthDateParam: SearchParameter = {\n resourceType: 'SearchParameter',\n code: 'birthdate',\n type: 'date',\n expression: 'Patient.birthDate'\n };\n\n const details = getSearchParameterDetails(structureDefinitions, 'Patient', birthDateParam);\n expect(details).not.toBeUndefined();\n expect(details.columnName).toEqual('birthdate');\n expect(details.type).toEqual(SearchParameterType.DATE);\n expect(details.array).toEqual(false);\n });\n\n test('Get nested details', () => {\n const missingExpressionParam: SearchParameter = {\n resourceType: 'SearchParameter',\n code: 'link',\n type: 'reference',\n expression: 'Patient.link.other'\n };\n\n const details = getSearchParameterDetails(structureDefinitions, 'Patient', missingExpressionParam);\n expect(details).not.toBeUndefined();\n expect(details.columnName).toEqual('link');\n expect(details.type).toEqual(SearchParameterType.REFERENCE);\n });\n\n test('Missing expression for resource type', () => {\n const missingExpressionParam: SearchParameter = {\n resourceType: 'SearchParameter',\n code: 'test',\n type: 'string',\n expression: 'OtherType.test'\n };\n\n const details = getSearchParameterDetails(structureDefinitions, 'Patient', missingExpressionParam);\n expect(details).not.toBeUndefined();\n expect(details.columnName).toEqual('test');\n });\n\n test('Property not found', () => {\n const missingExpressionParam: SearchParameter = {\n resourceType: 'SearchParameter',\n code: 'test',\n type: 'string',\n expression: 'Patient.unknown'\n };\n\n const details = getSearchParameterDetails(structureDefinitions, 'Patient', missingExpressionParam);\n expect(details).not.toBeUndefined();\n expect(details.columnName).toEqual('test');\n });\n\n test('Subtype not found', () => {\n const missingExpressionParam: SearchParameter = {\n resourceType: 'SearchParameter',\n code: 'test',\n type: 'string',\n expression: 'Patient.unknown'\n };\n\n const details = getSearchParameterDetails(structureDefinitions, 'Patient', missingExpressionParam);\n expect(details).not.toBeUndefined();\n expect(details.columnName).toEqual('test');\n });\n\n test('Everything', () => {\n // Make sure that getSearchParameterDetails returns successfully for all known parameters.\n for (const resourceType of Object.keys(structureDefinitions.types)) {\n for (const entry of searchParams.entry) {\n const searchParam = entry.resource;\n if (searchParam.base?.includes(resourceType)) {\n const details = getSearchParameterDetails(structureDefinitions, resourceType, searchParam);\n expect(details).not.toBeUndefined();\n }\n }\n }\n });\n\n});\n\nfunction buildStructureDefinitions(fileName: string): void {\n const resourceDefinitions = readJson(`fhir/r4/${fileName}`) as Bundle;\n for (const entry of (resourceDefinitions.entry as BundleEntry[])) {\n const resource = entry.resource as Resource;\n if (resource.resourceType === 'StructureDefinition' &&\n resource.name &&\n resource.name !== 'Resource' &&\n resource.name !== 'BackboneElement' &&\n resource.name !== 'DomainResource' &&\n resource.name !== 'MetadataResource' &&\n !isLowerCase(resource.name[0])) {\n indexStructureDefinition(resource, structureDefinitions);\n }\n }\n}\n\nfunction readJson(filename: string): any {\n return JSON.parse(readFileSync(resolve(__dirname, '../../definitions/dist/', filename), 'utf8'));\n}\n"]}
package/dist/storage.js DELETED
@@ -1,91 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MemoryStorage = exports.ClientStorage = void 0;
4
- const utils_1 = require("./utils");
5
- /**
6
- * The ClientStorage class is a utility class for storing strings and objects.
7
- *
8
- * When using MedplumClient in the browser, it will be backed by browser localStorage.
9
- *
10
- * When Using MedplumClient in the server, it will be backed by the MemoryStorage class.
11
- */
12
- class ClientStorage {
13
- storage;
14
- constructor() {
15
- this.storage = typeof localStorage !== 'undefined' ? localStorage : new MemoryStorage();
16
- }
17
- clear() {
18
- this.storage.clear();
19
- }
20
- getString(key) {
21
- return this.storage.getItem(key) || undefined;
22
- }
23
- setString(key, value) {
24
- if (value) {
25
- this.storage.setItem(key, value);
26
- }
27
- else {
28
- this.storage.removeItem(key);
29
- }
30
- }
31
- getObject(key) {
32
- const str = this.getString(key);
33
- return str ? JSON.parse(str) : undefined;
34
- }
35
- setObject(key, value) {
36
- this.setString(key, value ? (0, utils_1.stringify)(value) : undefined);
37
- }
38
- }
39
- exports.ClientStorage = ClientStorage;
40
- /**
41
- * The MemoryStorage class is a minimal in-memory implementation of the Storage interface.
42
- */
43
- class MemoryStorage {
44
- data;
45
- constructor() {
46
- this.data = new Map();
47
- }
48
- /**
49
- * Returns the number of key/value pairs.
50
- */
51
- get length() {
52
- return this.data.size;
53
- }
54
- /**
55
- * Removes all key/value pairs, if there are any.
56
- */
57
- clear() {
58
- this.data.clear();
59
- }
60
- /**
61
- * Returns the current value associated with the given key, or null if the given key does not exist.
62
- */
63
- getItem(key) {
64
- return this.data.get(key) ?? null;
65
- }
66
- /**
67
- * Sets the value of the pair identified by key to value, creating a new key/value pair if none existed for key previously.
68
- */
69
- setItem(key, value) {
70
- if (value) {
71
- this.data.set(key, value);
72
- }
73
- else {
74
- this.data.delete(key);
75
- }
76
- }
77
- /**
78
- * Removes the key/value pair with the given key, if a key/value pair with the given key exists.
79
- */
80
- removeItem(key) {
81
- this.data.delete(key);
82
- }
83
- /**
84
- * Returns the name of the nth key, or null if n is greater than or equal to the number of key/value pairs.
85
- */
86
- key(index) {
87
- return Array.from(this.data.keys())[index];
88
- }
89
- }
90
- exports.MemoryStorage = MemoryStorage;
91
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAEpC;;;;;;GAMG;AACH,MAAa,aAAa;IACP,OAAO,CAAU;IAElC;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC;IAC1F,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,KAAyB;QAC9C,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAClC;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAC9B;IACH,CAAC;IAED,SAAS,CAAI,GAAW;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,CAAC;IAED,SAAS,CAAI,GAAW,EAAE,KAAQ;QAChC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;CACF;AA/BD,sCA+BC;AAED;;GAEG;AACH,MAAa,aAAa;IAChB,IAAI,CAAsB;IAElC;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,GAAW,EAAE,KAAoB;QACvC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACvB;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,GAAW;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,KAAa;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF;AApDD,sCAoDC","sourcesContent":["import { stringify } from './utils';\n\n/**\n * The ClientStorage class is a utility class for storing strings and objects.\n *\n * When using MedplumClient in the browser, it will be backed by browser localStorage.\n *\n * When Using MedplumClient in the server, it will be backed by the MemoryStorage class.\n */\nexport class ClientStorage {\n private readonly storage: Storage;\n\n constructor() {\n this.storage = typeof localStorage !== 'undefined' ? localStorage : new MemoryStorage();\n }\n\n clear(): void {\n this.storage.clear();\n }\n\n getString(key: string): string | undefined {\n return this.storage.getItem(key) || undefined;\n }\n\n setString(key: string, value: string | undefined): void {\n if (value) {\n this.storage.setItem(key, value);\n } else {\n this.storage.removeItem(key);\n }\n }\n\n getObject<T>(key: string): T | undefined {\n const str = this.getString(key);\n return str ? JSON.parse(str) as T : undefined;\n }\n\n setObject<T>(key: string, value: T) {\n this.setString(key, value ? stringify(value) : undefined);\n }\n}\n\n/**\n * The MemoryStorage class is a minimal in-memory implementation of the Storage interface.\n */\nexport class MemoryStorage implements Storage {\n private data: Map<string, string>;\n\n constructor() {\n this.data = new Map<string, string>();\n }\n\n /**\n * Returns the number of key/value pairs.\n */\n get length(): number {\n return this.data.size;\n }\n\n /**\n * Removes all key/value pairs, if there are any.\n */\n clear(): void {\n this.data.clear();\n }\n\n /**\n * Returns the current value associated with the given key, or null if the given key does not exist.\n */\n getItem(key: string): string | null {\n return this.data.get(key) ?? null;\n }\n\n /**\n * Sets the value of the pair identified by key to value, creating a new key/value pair if none existed for key previously.\n */\n setItem(key: string, value: string | null): void {\n if (value) {\n this.data.set(key, value);\n } else {\n this.data.delete(key);\n }\n }\n\n /**\n * Removes the key/value pair with the given key, if a key/value pair with the given key exists.\n */\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n /**\n * Returns the name of the nth key, or null if n is greater than or equal to the number of key/value pairs.\n */\n key(index: number): string | null {\n return Array.from(this.data.keys())[index];\n }\n}\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const storage_1 = require("./storage");
4
- describe('Storage', () => {
5
- test('Using localStorage', () => {
6
- const storage = new storage_1.ClientStorage();
7
- storage.clear();
8
- expect(storage.getString('foo')).toBeUndefined();
9
- expect(storage.getObject('baz')).toBeUndefined();
10
- storage.setString('foo', 'bar');
11
- expect(storage.getString('foo')).toEqual('bar');
12
- storage.setObject('baz', { name: 'Homer' });
13
- expect(storage.getObject('baz')).toMatchObject({ name: 'Homer' });
14
- storage.setString('foo', '');
15
- expect(storage.getString('foo')).toBeUndefined();
16
- storage.setObject('baz', null);
17
- expect(storage.getObject('baz')).toBeUndefined();
18
- });
19
- test('Using MemoryStorage', () => {
20
- const localStorage = global.localStorage;
21
- Object.defineProperty(window, 'localStorage', { value: undefined });
22
- const storage = new storage_1.ClientStorage();
23
- storage.clear();
24
- expect(storage.getString('foo')).toBeUndefined();
25
- expect(storage.getObject('baz')).toBeUndefined();
26
- storage.setString('foo', 'bar');
27
- expect(storage.getString('foo')).toEqual('bar');
28
- storage.setObject('baz', { name: 'Homer' });
29
- expect(storage.getObject('baz')).toMatchObject({ name: 'Homer' });
30
- storage.setString('foo', '');
31
- expect(storage.getString('foo')).toBeUndefined();
32
- storage.setObject('baz', null);
33
- expect(storage.getObject('baz')).toBeUndefined();
34
- Object.defineProperty(window, 'localStorage', { value: localStorage });
35
- });
36
- });
37
- describe('MemoryStorage', () => {
38
- test('Get string', () => {
39
- const storage = new storage_1.MemoryStorage();
40
- expect(storage.length).toEqual(0);
41
- storage.setItem('foo', 'bar');
42
- expect(storage.getItem('foo')).toEqual('bar');
43
- expect(storage.length).toEqual(1);
44
- expect(storage.key(0)).toEqual('foo');
45
- storage.setItem('foo', '');
46
- expect(storage.getItem('foo')).toBeNull();
47
- expect(storage.length).toEqual(0);
48
- });
49
- });
50
- //# sourceMappingURL=storage.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.test.js","sourceRoot":"","sources":["../src/storage.test.ts"],"names":[],"mappings":";;AAAA,uCAAyD;AAEzD,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IAEvB,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC9B,MAAM,OAAO,GAAG,IAAI,uBAAa,EAAE,CAAC;QAEpC,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEjD,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEhD,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAElE,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEjD,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACzC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAEpE,MAAM,OAAO,GAAG,IAAI,uBAAa,EAAE,CAAC;QAEpC,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEjD,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEhD,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAElE,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEjD,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEjD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAE7B,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;QACtB,MAAM,OAAO,GAAG,IAAI,uBAAa,EAAE,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAElC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC","sourcesContent":["import { ClientStorage, MemoryStorage } from './storage';\n\ndescribe('Storage', () => {\n\n test('Using localStorage', () => {\n const storage = new ClientStorage();\n\n storage.clear();\n expect(storage.getString('foo')).toBeUndefined();\n expect(storage.getObject('baz')).toBeUndefined();\n\n storage.setString('foo', 'bar');\n expect(storage.getString('foo')).toEqual('bar');\n\n storage.setObject('baz', { name: 'Homer' });\n expect(storage.getObject('baz')).toMatchObject({ name: 'Homer' });\n\n storage.setString('foo', '');\n expect(storage.getString('foo')).toBeUndefined();\n\n storage.setObject('baz', null);\n expect(storage.getObject('baz')).toBeUndefined();\n });\n\n test('Using MemoryStorage', () => {\n const localStorage = global.localStorage;\n Object.defineProperty(window, 'localStorage', { value: undefined });\n\n const storage = new ClientStorage();\n\n storage.clear();\n expect(storage.getString('foo')).toBeUndefined();\n expect(storage.getObject('baz')).toBeUndefined();\n\n storage.setString('foo', 'bar');\n expect(storage.getString('foo')).toEqual('bar');\n\n storage.setObject('baz', { name: 'Homer' });\n expect(storage.getObject('baz')).toMatchObject({ name: 'Homer' });\n\n storage.setString('foo', '');\n expect(storage.getString('foo')).toBeUndefined();\n\n storage.setObject('baz', null);\n expect(storage.getObject('baz')).toBeUndefined();\n\n Object.defineProperty(window, 'localStorage', { value: localStorage });\n });\n\n});\n\ndescribe('MemoryStorage', () => {\n\n test('Get string', () => {\n const storage = new MemoryStorage();\n expect(storage.length).toEqual(0);\n\n storage.setItem('foo', 'bar');\n expect(storage.getItem('foo')).toEqual('bar');\n expect(storage.length).toEqual(1);\n expect(storage.key(0)).toEqual('foo');\n\n storage.setItem('foo', '');\n expect(storage.getItem('foo')).toBeNull();\n expect(storage.length).toEqual(0);\n });\n\n});\n"]}