@medplum/core 0.1.6 → 0.3.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 (679) hide show
  1. package/README.md +29 -25
  2. package/dist/cache.d.ts +1 -0
  3. package/dist/cache.js +3 -2
  4. package/dist/cache.js.map +1 -1
  5. package/dist/client.d.ts +72 -54
  6. package/dist/client.js +267 -223
  7. package/dist/client.js.map +1 -1
  8. package/dist/crypto.js +13 -2
  9. package/dist/crypto.js.map +1 -1
  10. package/dist/eventtarget.js +1 -2
  11. package/dist/eventtarget.js.map +1 -1
  12. package/dist/format.d.ts +1 -1
  13. package/dist/format.js +4 -4
  14. package/dist/format.js.map +1 -1
  15. package/dist/index.d.ts +1 -2
  16. package/dist/index.js +1 -2
  17. package/dist/index.js.map +1 -1
  18. package/dist/jwt.js.map +1 -1
  19. package/dist/outcomes.d.ts +4 -1
  20. package/dist/outcomes.js +71 -24
  21. package/dist/outcomes.js.map +1 -1
  22. package/dist/search.js +7 -9
  23. package/dist/search.js.map +1 -1
  24. package/dist/searchparams.d.ts +34 -0
  25. package/dist/searchparams.js +128 -0
  26. package/dist/searchparams.js.map +1 -0
  27. package/dist/storage.d.ts +36 -12
  28. package/dist/storage.js +55 -22
  29. package/dist/storage.js.map +1 -1
  30. package/dist/types.d.ts +3 -5
  31. package/dist/types.js +32 -18
  32. package/dist/types.js.map +1 -1
  33. package/dist/utils.d.ts +14 -3
  34. package/dist/utils.js +57 -12
  35. package/dist/utils.js.map +1 -1
  36. package/package.json +3 -16
  37. package/dist/cache.test.d.ts +0 -1
  38. package/dist/cache.test.js +0 -29
  39. package/dist/cache.test.js.map +0 -1
  40. package/dist/client.test.d.ts +0 -1
  41. package/dist/client.test.js +0 -294
  42. package/dist/client.test.js.map +0 -1
  43. package/dist/eventtarget.test.d.ts +0 -1
  44. package/dist/eventtarget.test.js +0 -44
  45. package/dist/eventtarget.test.js.map +0 -1
  46. package/dist/fhir/Account.d.ts +0 -240
  47. package/dist/fhir/Account.js +0 -7
  48. package/dist/fhir/Account.js.map +0 -1
  49. package/dist/fhir/ActivityDefinition.d.ts +0 -494
  50. package/dist/fhir/ActivityDefinition.js +0 -7
  51. package/dist/fhir/ActivityDefinition.js.map +0 -1
  52. package/dist/fhir/Address.d.ts +0 -74
  53. package/dist/fhir/Address.js +0 -7
  54. package/dist/fhir/Address.js.map +0 -1
  55. package/dist/fhir/AdverseEvent.d.ts +0 -287
  56. package/dist/fhir/AdverseEvent.js +0 -7
  57. package/dist/fhir/AdverseEvent.js.map +0 -1
  58. package/dist/fhir/Age.d.ts +0 -47
  59. package/dist/fhir/Age.js +0 -7
  60. package/dist/fhir/Age.js.map +0 -1
  61. package/dist/fhir/AllergyIntolerance.d.ts +0 -278
  62. package/dist/fhir/AllergyIntolerance.js +0 -7
  63. package/dist/fhir/AllergyIntolerance.js.map +0 -1
  64. package/dist/fhir/Annotation.d.ts +0 -38
  65. package/dist/fhir/Annotation.js +0 -7
  66. package/dist/fhir/Annotation.js.map +0 -1
  67. package/dist/fhir/Appointment.d.ts +0 -273
  68. package/dist/fhir/Appointment.js +0 -7
  69. package/dist/fhir/Appointment.js.map +0 -1
  70. package/dist/fhir/AppointmentResponse.d.ts +0 -123
  71. package/dist/fhir/AppointmentResponse.js +0 -7
  72. package/dist/fhir/AppointmentResponse.js.map +0 -1
  73. package/dist/fhir/Attachment.d.ts +0 -57
  74. package/dist/fhir/Attachment.js +0 -7
  75. package/dist/fhir/Attachment.js.map +0 -1
  76. package/dist/fhir/AuditEvent.d.ts +0 -458
  77. package/dist/fhir/AuditEvent.js +0 -7
  78. package/dist/fhir/AuditEvent.js.map +0 -1
  79. package/dist/fhir/Basic.d.ts +0 -105
  80. package/dist/fhir/Basic.js +0 -7
  81. package/dist/fhir/Basic.js.map +0 -1
  82. package/dist/fhir/Binary.d.ts +0 -58
  83. package/dist/fhir/Binary.js +0 -7
  84. package/dist/fhir/Binary.js.map +0 -1
  85. package/dist/fhir/BiologicallyDerivedProduct.d.ts +0 -356
  86. package/dist/fhir/BiologicallyDerivedProduct.js +0 -7
  87. package/dist/fhir/BiologicallyDerivedProduct.js.map +0 -1
  88. package/dist/fhir/BodyStructure.d.ts +0 -118
  89. package/dist/fhir/BodyStructure.js +0 -7
  90. package/dist/fhir/BodyStructure.js.map +0 -1
  91. package/dist/fhir/Bundle.d.ts +0 -373
  92. package/dist/fhir/Bundle.js +0 -7
  93. package/dist/fhir/Bundle.js.map +0 -1
  94. package/dist/fhir/CapabilityStatement.d.ts +0 -1068
  95. package/dist/fhir/CapabilityStatement.js +0 -7
  96. package/dist/fhir/CapabilityStatement.js.map +0 -1
  97. package/dist/fhir/CarePlan.d.ts +0 -421
  98. package/dist/fhir/CarePlan.js +0 -7
  99. package/dist/fhir/CarePlan.js.map +0 -1
  100. package/dist/fhir/CareTeam.d.ts +0 -203
  101. package/dist/fhir/CareTeam.js +0 -7
  102. package/dist/fhir/CareTeam.js.map +0 -1
  103. package/dist/fhir/CatalogEntry.d.ts +0 -184
  104. package/dist/fhir/CatalogEntry.js +0 -7
  105. package/dist/fhir/CatalogEntry.js.map +0 -1
  106. package/dist/fhir/ChargeItem.d.ts +0 -270
  107. package/dist/fhir/ChargeItem.js +0 -7
  108. package/dist/fhir/ChargeItem.js.map +0 -1
  109. package/dist/fhir/ChargeItemDefinition.d.ts +0 -402
  110. package/dist/fhir/ChargeItemDefinition.js +0 -7
  111. package/dist/fhir/ChargeItemDefinition.js.map +0 -1
  112. package/dist/fhir/Claim.d.ts +0 -1089
  113. package/dist/fhir/Claim.js +0 -7
  114. package/dist/fhir/Claim.js.map +0 -1
  115. package/dist/fhir/ClaimResponse.d.ts +0 -1037
  116. package/dist/fhir/ClaimResponse.js +0 -7
  117. package/dist/fhir/ClaimResponse.js.map +0 -1
  118. package/dist/fhir/ClientApplication.d.ts +0 -54
  119. package/dist/fhir/ClientApplication.js +0 -7
  120. package/dist/fhir/ClientApplication.js.map +0 -1
  121. package/dist/fhir/ClinicalImpression.d.ts +0 -301
  122. package/dist/fhir/ClinicalImpression.js +0 -7
  123. package/dist/fhir/ClinicalImpression.js.map +0 -1
  124. package/dist/fhir/CodeSystem.d.ts +0 -546
  125. package/dist/fhir/CodeSystem.js +0 -7
  126. package/dist/fhir/CodeSystem.js.map +0 -1
  127. package/dist/fhir/CodeableConcept.d.ts +0 -32
  128. package/dist/fhir/CodeableConcept.js +0 -7
  129. package/dist/fhir/CodeableConcept.js.map +0 -1
  130. package/dist/fhir/Coding.d.ts +0 -49
  131. package/dist/fhir/Coding.js +0 -7
  132. package/dist/fhir/Coding.js.map +0 -1
  133. package/dist/fhir/Communication.d.ts +0 -251
  134. package/dist/fhir/Communication.js +0 -7
  135. package/dist/fhir/Communication.js.map +0 -1
  136. package/dist/fhir/CommunicationRequest.d.ts +0 -248
  137. package/dist/fhir/CommunicationRequest.js +0 -7
  138. package/dist/fhir/CommunicationRequest.js.map +0 -1
  139. package/dist/fhir/CompartmentDefinition.d.ts +0 -218
  140. package/dist/fhir/CompartmentDefinition.js +0 -7
  141. package/dist/fhir/CompartmentDefinition.js.map +0 -1
  142. package/dist/fhir/Composition.d.ts +0 -455
  143. package/dist/fhir/Composition.js +0 -7
  144. package/dist/fhir/Composition.js.map +0 -1
  145. package/dist/fhir/ConceptMap.d.ts +0 -523
  146. package/dist/fhir/ConceptMap.js +0 -7
  147. package/dist/fhir/ConceptMap.js.map +0 -1
  148. package/dist/fhir/Condition.d.ts +0 -316
  149. package/dist/fhir/Condition.js +0 -7
  150. package/dist/fhir/Condition.js.map +0 -1
  151. package/dist/fhir/Consent.d.ts +0 -457
  152. package/dist/fhir/Consent.js +0 -7
  153. package/dist/fhir/Consent.js.map +0 -1
  154. package/dist/fhir/ContactDetail.d.ts +0 -30
  155. package/dist/fhir/ContactDetail.js +0 -7
  156. package/dist/fhir/ContactDetail.js.map +0 -1
  157. package/dist/fhir/ContactPoint.d.ts +0 -46
  158. package/dist/fhir/ContactPoint.js +0 -7
  159. package/dist/fhir/ContactPoint.js.map +0 -1
  160. package/dist/fhir/Contract.d.ts +0 -1431
  161. package/dist/fhir/Contract.js +0 -7
  162. package/dist/fhir/Contract.js.map +0 -1
  163. package/dist/fhir/Contributor.d.ts +0 -36
  164. package/dist/fhir/Contributor.js +0 -7
  165. package/dist/fhir/Contributor.js.map +0 -1
  166. package/dist/fhir/Count.d.ts +0 -49
  167. package/dist/fhir/Count.js +0 -7
  168. package/dist/fhir/Count.js.map +0 -1
  169. package/dist/fhir/Coverage.d.ts +0 -323
  170. package/dist/fhir/Coverage.js +0 -7
  171. package/dist/fhir/Coverage.js.map +0 -1
  172. package/dist/fhir/CoverageEligibilityRequest.d.ts +0 -409
  173. package/dist/fhir/CoverageEligibilityRequest.js +0 -7
  174. package/dist/fhir/CoverageEligibilityRequest.js.map +0 -1
  175. package/dist/fhir/CoverageEligibilityResponse.d.ts +0 -430
  176. package/dist/fhir/CoverageEligibilityResponse.js +0 -7
  177. package/dist/fhir/CoverageEligibilityResponse.js.map +0 -1
  178. package/dist/fhir/DataRequirement.d.ts +0 -288
  179. package/dist/fhir/DataRequirement.js +0 -7
  180. package/dist/fhir/DataRequirement.js.map +0 -1
  181. package/dist/fhir/DetectedIssue.d.ts +0 -249
  182. package/dist/fhir/DetectedIssue.js +0 -7
  183. package/dist/fhir/DetectedIssue.js.map +0 -1
  184. package/dist/fhir/Device.d.ts +0 -488
  185. package/dist/fhir/Device.js +0 -7
  186. package/dist/fhir/Device.js.map +0 -1
  187. package/dist/fhir/DeviceDefinition.d.ts +0 -484
  188. package/dist/fhir/DeviceDefinition.js +0 -7
  189. package/dist/fhir/DeviceDefinition.js.map +0 -1
  190. package/dist/fhir/DeviceMetric.d.ts +0 -198
  191. package/dist/fhir/DeviceMetric.js +0 -7
  192. package/dist/fhir/DeviceMetric.js.map +0 -1
  193. package/dist/fhir/DeviceRequest.d.ts +0 -279
  194. package/dist/fhir/DeviceRequest.js +0 -7
  195. package/dist/fhir/DeviceRequest.js.map +0 -1
  196. package/dist/fhir/DeviceUseStatement.d.ts +0 -153
  197. package/dist/fhir/DeviceUseStatement.js +0 -7
  198. package/dist/fhir/DeviceUseStatement.js.map +0 -1
  199. package/dist/fhir/DiagnosticReport.d.ts +0 -239
  200. package/dist/fhir/DiagnosticReport.js +0 -7
  201. package/dist/fhir/DiagnosticReport.js.map +0 -1
  202. package/dist/fhir/Distance.d.ts +0 -46
  203. package/dist/fhir/Distance.js +0 -7
  204. package/dist/fhir/Distance.js.map +0 -1
  205. package/dist/fhir/DocumentManifest.d.ts +0 -190
  206. package/dist/fhir/DocumentManifest.js +0 -7
  207. package/dist/fhir/DocumentManifest.js.map +0 -1
  208. package/dist/fhir/DocumentReference.d.ts +0 -353
  209. package/dist/fhir/DocumentReference.js +0 -7
  210. package/dist/fhir/DocumentReference.js.map +0 -1
  211. package/dist/fhir/Dosage.d.ts +0 -171
  212. package/dist/fhir/Dosage.js +0 -7
  213. package/dist/fhir/Dosage.js.map +0 -1
  214. package/dist/fhir/Duration.d.ts +0 -46
  215. package/dist/fhir/Duration.js +0 -7
  216. package/dist/fhir/Duration.js.map +0 -1
  217. package/dist/fhir/EffectEvidenceSynthesis.d.ts +0 -600
  218. package/dist/fhir/EffectEvidenceSynthesis.js +0 -7
  219. package/dist/fhir/EffectEvidenceSynthesis.js.map +0 -1
  220. package/dist/fhir/Element.d.ts +0 -20
  221. package/dist/fhir/Element.js +0 -7
  222. package/dist/fhir/Element.js.map +0 -1
  223. package/dist/fhir/ElementDefinition.d.ts +0 -2828
  224. package/dist/fhir/ElementDefinition.js +0 -7
  225. package/dist/fhir/ElementDefinition.js.map +0 -1
  226. package/dist/fhir/Encounter.d.ts +0 -546
  227. package/dist/fhir/Encounter.js +0 -7
  228. package/dist/fhir/Encounter.js.map +0 -1
  229. package/dist/fhir/Endpoint.d.ts +0 -139
  230. package/dist/fhir/Endpoint.js +0 -7
  231. package/dist/fhir/Endpoint.js.map +0 -1
  232. package/dist/fhir/EnrollmentRequest.d.ts +0 -108
  233. package/dist/fhir/EnrollmentRequest.js +0 -7
  234. package/dist/fhir/EnrollmentRequest.js.map +0 -1
  235. package/dist/fhir/EnrollmentResponse.d.ts +0 -113
  236. package/dist/fhir/EnrollmentResponse.js +0 -7
  237. package/dist/fhir/EnrollmentResponse.js.map +0 -1
  238. package/dist/fhir/EpisodeOfCare.d.ts +0 -243
  239. package/dist/fhir/EpisodeOfCare.js +0 -7
  240. package/dist/fhir/EpisodeOfCare.js.map +0 -1
  241. package/dist/fhir/EventDefinition.d.ts +0 -252
  242. package/dist/fhir/EventDefinition.js +0 -7
  243. package/dist/fhir/EventDefinition.js.map +0 -1
  244. package/dist/fhir/Evidence.d.ts +0 -251
  245. package/dist/fhir/Evidence.js +0 -7
  246. package/dist/fhir/Evidence.js.map +0 -1
  247. package/dist/fhir/EvidenceVariable.d.ts +0 -369
  248. package/dist/fhir/EvidenceVariable.js +0 -7
  249. package/dist/fhir/EvidenceVariable.js.map +0 -1
  250. package/dist/fhir/ExampleScenario.d.ts +0 -626
  251. package/dist/fhir/ExampleScenario.js +0 -7
  252. package/dist/fhir/ExampleScenario.js.map +0 -1
  253. package/dist/fhir/ExplanationOfBenefit.d.ts +0 -1854
  254. package/dist/fhir/ExplanationOfBenefit.js +0 -7
  255. package/dist/fhir/ExplanationOfBenefit.js.map +0 -1
  256. package/dist/fhir/Expression.d.ts +0 -45
  257. package/dist/fhir/Expression.js +0 -7
  258. package/dist/fhir/Expression.js.map +0 -1
  259. package/dist/fhir/Extension.d.ts +0 -305
  260. package/dist/fhir/Extension.js +0 -7
  261. package/dist/fhir/Extension.js.map +0 -1
  262. package/dist/fhir/FamilyMemberHistory.d.ts +0 -297
  263. package/dist/fhir/FamilyMemberHistory.js +0 -7
  264. package/dist/fhir/FamilyMemberHistory.js.map +0 -1
  265. package/dist/fhir/Flag.d.ts +0 -121
  266. package/dist/fhir/Flag.js +0 -7
  267. package/dist/fhir/Flag.js.map +0 -1
  268. package/dist/fhir/Goal.d.ts +0 -290
  269. package/dist/fhir/Goal.js +0 -7
  270. package/dist/fhir/Goal.js.map +0 -1
  271. package/dist/fhir/GraphDefinition.d.ts +0 -359
  272. package/dist/fhir/GraphDefinition.js +0 -7
  273. package/dist/fhir/GraphDefinition.js.map +0 -1
  274. package/dist/fhir/Group.d.ts +0 -268
  275. package/dist/fhir/Group.js +0 -7
  276. package/dist/fhir/Group.js.map +0 -1
  277. package/dist/fhir/GuidanceResponse.d.ts +0 -184
  278. package/dist/fhir/GuidanceResponse.js +0 -7
  279. package/dist/fhir/GuidanceResponse.js.map +0 -1
  280. package/dist/fhir/HealthcareService.d.ts +0 -351
  281. package/dist/fhir/HealthcareService.js +0 -7
  282. package/dist/fhir/HealthcareService.js.map +0 -1
  283. package/dist/fhir/HumanName.d.ts +0 -57
  284. package/dist/fhir/HumanName.js +0 -7
  285. package/dist/fhir/HumanName.js.map +0 -1
  286. package/dist/fhir/Identifier.d.ts +0 -51
  287. package/dist/fhir/Identifier.js +0 -7
  288. package/dist/fhir/Identifier.js.map +0 -1
  289. package/dist/fhir/ImagingStudy.d.ts +0 -398
  290. package/dist/fhir/ImagingStudy.js +0 -7
  291. package/dist/fhir/ImagingStudy.js.map +0 -1
  292. package/dist/fhir/Immunization.d.ts +0 -440
  293. package/dist/fhir/Immunization.js +0 -7
  294. package/dist/fhir/Immunization.js.map +0 -1
  295. package/dist/fhir/ImmunizationEvaluation.d.ts +0 -146
  296. package/dist/fhir/ImmunizationEvaluation.js +0 -7
  297. package/dist/fhir/ImmunizationEvaluation.js.map +0 -1
  298. package/dist/fhir/ImmunizationRecommendation.d.ts +0 -253
  299. package/dist/fhir/ImmunizationRecommendation.js +0 -7
  300. package/dist/fhir/ImmunizationRecommendation.js.map +0 -1
  301. package/dist/fhir/ImplementationGuide.d.ts +0 -854
  302. package/dist/fhir/ImplementationGuide.js +0 -7
  303. package/dist/fhir/ImplementationGuide.js.map +0 -1
  304. package/dist/fhir/InsurancePlan.d.ts +0 -630
  305. package/dist/fhir/InsurancePlan.js +0 -7
  306. package/dist/fhir/InsurancePlan.js.map +0 -1
  307. package/dist/fhir/Invoice.d.ts +0 -331
  308. package/dist/fhir/Invoice.js +0 -7
  309. package/dist/fhir/Invoice.js.map +0 -1
  310. package/dist/fhir/JsonWebKey.d.ts +0 -99
  311. package/dist/fhir/JsonWebKey.js +0 -7
  312. package/dist/fhir/JsonWebKey.js.map +0 -1
  313. package/dist/fhir/Library.d.ts +0 -276
  314. package/dist/fhir/Library.js +0 -7
  315. package/dist/fhir/Library.js.map +0 -1
  316. package/dist/fhir/Linkage.d.ts +0 -142
  317. package/dist/fhir/Linkage.js +0 -7
  318. package/dist/fhir/Linkage.js.map +0 -1
  319. package/dist/fhir/List.d.ts +0 -193
  320. package/dist/fhir/List.js +0 -7
  321. package/dist/fhir/List.js.map +0 -1
  322. package/dist/fhir/Location.d.ts +0 -278
  323. package/dist/fhir/Location.js +0 -7
  324. package/dist/fhir/Location.js.map +0 -1
  325. package/dist/fhir/Login.d.ts +0 -108
  326. package/dist/fhir/Login.js +0 -7
  327. package/dist/fhir/Login.js.map +0 -1
  328. package/dist/fhir/MarketingStatus.d.ts +0 -82
  329. package/dist/fhir/MarketingStatus.js +0 -7
  330. package/dist/fhir/MarketingStatus.js.map +0 -1
  331. package/dist/fhir/Measure.d.ts +0 -613
  332. package/dist/fhir/Measure.js +0 -7
  333. package/dist/fhir/Measure.js.map +0 -1
  334. package/dist/fhir/MeasureReport.d.ts +0 -460
  335. package/dist/fhir/MeasureReport.js +0 -7
  336. package/dist/fhir/MeasureReport.js.map +0 -1
  337. package/dist/fhir/Media.d.ts +0 -191
  338. package/dist/fhir/Media.js +0 -7
  339. package/dist/fhir/Media.js.map +0 -1
  340. package/dist/fhir/Medication.d.ts +0 -234
  341. package/dist/fhir/Medication.js +0 -7
  342. package/dist/fhir/Medication.js.map +0 -1
  343. package/dist/fhir/MedicationAdministration.d.ts +0 -343
  344. package/dist/fhir/MedicationAdministration.js +0 -7
  345. package/dist/fhir/MedicationAdministration.js.map +0 -1
  346. package/dist/fhir/MedicationDispense.d.ts +0 -332
  347. package/dist/fhir/MedicationDispense.js +0 -7
  348. package/dist/fhir/MedicationDispense.js.map +0 -1
  349. package/dist/fhir/MedicationKnowledge.d.ts +0 -979
  350. package/dist/fhir/MedicationKnowledge.js +0 -7
  351. package/dist/fhir/MedicationKnowledge.js.map +0 -1
  352. package/dist/fhir/MedicationRequest.d.ts +0 -468
  353. package/dist/fhir/MedicationRequest.js +0 -7
  354. package/dist/fhir/MedicationRequest.js.map +0 -1
  355. package/dist/fhir/MedicationStatement.d.ts +0 -210
  356. package/dist/fhir/MedicationStatement.js +0 -7
  357. package/dist/fhir/MedicationStatement.js.map +0 -1
  358. package/dist/fhir/MedicinalProduct.d.ts +0 -449
  359. package/dist/fhir/MedicinalProduct.js +0 -7
  360. package/dist/fhir/MedicinalProduct.js.map +0 -1
  361. package/dist/fhir/MedicinalProductAuthorization.d.ts +0 -267
  362. package/dist/fhir/MedicinalProductAuthorization.js +0 -7
  363. package/dist/fhir/MedicinalProductAuthorization.js.map +0 -1
  364. package/dist/fhir/MedicinalProductContraindication.d.ts +0 -165
  365. package/dist/fhir/MedicinalProductContraindication.js +0 -7
  366. package/dist/fhir/MedicinalProductContraindication.js.map +0 -1
  367. package/dist/fhir/MedicinalProductIndication.d.ts +0 -173
  368. package/dist/fhir/MedicinalProductIndication.js +0 -7
  369. package/dist/fhir/MedicinalProductIndication.js.map +0 -1
  370. package/dist/fhir/MedicinalProductIngredient.d.ts +0 -334
  371. package/dist/fhir/MedicinalProductIngredient.js +0 -7
  372. package/dist/fhir/MedicinalProductIngredient.js.map +0 -1
  373. package/dist/fhir/MedicinalProductInteraction.d.ts +0 -155
  374. package/dist/fhir/MedicinalProductInteraction.js +0 -7
  375. package/dist/fhir/MedicinalProductInteraction.js.map +0 -1
  376. package/dist/fhir/MedicinalProductManufactured.d.ts +0 -111
  377. package/dist/fhir/MedicinalProductManufactured.js +0 -7
  378. package/dist/fhir/MedicinalProductManufactured.js.map +0 -1
  379. package/dist/fhir/MedicinalProductPackaged.d.ts +0 -253
  380. package/dist/fhir/MedicinalProductPackaged.js +0 -7
  381. package/dist/fhir/MedicinalProductPackaged.js.map +0 -1
  382. package/dist/fhir/MedicinalProductPharmaceutical.d.ts +0 -331
  383. package/dist/fhir/MedicinalProductPharmaceutical.js +0 -7
  384. package/dist/fhir/MedicinalProductPharmaceutical.js.map +0 -1
  385. package/dist/fhir/MedicinalProductUndesirableEffect.d.ts +0 -99
  386. package/dist/fhir/MedicinalProductUndesirableEffect.js +0 -7
  387. package/dist/fhir/MedicinalProductUndesirableEffect.js.map +0 -1
  388. package/dist/fhir/MessageDefinition.d.ts +0 -331
  389. package/dist/fhir/MessageDefinition.js +0 -7
  390. package/dist/fhir/MessageDefinition.js.map +0 -1
  391. package/dist/fhir/MessageHeader.d.ts +0 -329
  392. package/dist/fhir/MessageHeader.js +0 -7
  393. package/dist/fhir/MessageHeader.js.map +0 -1
  394. package/dist/fhir/Meta.d.ts +0 -68
  395. package/dist/fhir/Meta.js +0 -7
  396. package/dist/fhir/Meta.js.map +0 -1
  397. package/dist/fhir/MolecularSequence.d.ts +0 -746
  398. package/dist/fhir/MolecularSequence.js +0 -7
  399. package/dist/fhir/MolecularSequence.js.map +0 -1
  400. package/dist/fhir/Money.d.ts +0 -28
  401. package/dist/fhir/Money.js +0 -7
  402. package/dist/fhir/Money.js.map +0 -1
  403. package/dist/fhir/NamingSystem.d.ts +0 -219
  404. package/dist/fhir/NamingSystem.js +0 -7
  405. package/dist/fhir/NamingSystem.js.map +0 -1
  406. package/dist/fhir/Narrative.d.ts +0 -31
  407. package/dist/fhir/Narrative.js +0 -7
  408. package/dist/fhir/Narrative.js.map +0 -1
  409. package/dist/fhir/NutritionOrder.d.ts +0 -558
  410. package/dist/fhir/NutritionOrder.js +0 -7
  411. package/dist/fhir/NutritionOrder.js.map +0 -1
  412. package/dist/fhir/Observation.d.ts +0 -487
  413. package/dist/fhir/Observation.js +0 -7
  414. package/dist/fhir/Observation.js.map +0 -1
  415. package/dist/fhir/ObservationDefinition.d.ts +0 -277
  416. package/dist/fhir/ObservationDefinition.js +0 -7
  417. package/dist/fhir/ObservationDefinition.js.map +0 -1
  418. package/dist/fhir/OperationDefinition.d.ts +0 -468
  419. package/dist/fhir/OperationDefinition.js +0 -7
  420. package/dist/fhir/OperationDefinition.js.map +0 -1
  421. package/dist/fhir/OperationOutcome.d.ts +0 -168
  422. package/dist/fhir/OperationOutcome.js +0 -7
  423. package/dist/fhir/OperationOutcome.js.map +0 -1
  424. package/dist/fhir/Organization.d.ts +0 -187
  425. package/dist/fhir/Organization.js +0 -7
  426. package/dist/fhir/Organization.js.map +0 -1
  427. package/dist/fhir/OrganizationAffiliation.d.ts +0 -141
  428. package/dist/fhir/OrganizationAffiliation.js +0 -7
  429. package/dist/fhir/OrganizationAffiliation.js.map +0 -1
  430. package/dist/fhir/ParameterDefinition.d.ts +0 -56
  431. package/dist/fhir/ParameterDefinition.js +0 -7
  432. package/dist/fhir/ParameterDefinition.js.map +0 -1
  433. package/dist/fhir/Parameters.d.ts +0 -321
  434. package/dist/fhir/Parameters.js +0 -7
  435. package/dist/fhir/Parameters.js.map +0 -1
  436. package/dist/fhir/PasswordChangeRequest.d.ts +0 -50
  437. package/dist/fhir/PasswordChangeRequest.js +0 -7
  438. package/dist/fhir/PasswordChangeRequest.js.map +0 -1
  439. package/dist/fhir/Patient.d.ts +0 -339
  440. package/dist/fhir/Patient.js +0 -7
  441. package/dist/fhir/Patient.js.map +0 -1
  442. package/dist/fhir/PaymentNotice.d.ts +0 -131
  443. package/dist/fhir/PaymentNotice.js +0 -7
  444. package/dist/fhir/PaymentNotice.js.map +0 -1
  445. package/dist/fhir/PaymentReconciliation.d.ts +0 -276
  446. package/dist/fhir/PaymentReconciliation.js +0 -7
  447. package/dist/fhir/PaymentReconciliation.js.map +0 -1
  448. package/dist/fhir/Period.d.ts +0 -31
  449. package/dist/fhir/Period.js +0 -7
  450. package/dist/fhir/Period.js.map +0 -1
  451. package/dist/fhir/Person.d.ts +0 -172
  452. package/dist/fhir/Person.js +0 -7
  453. package/dist/fhir/Person.js.map +0 -1
  454. package/dist/fhir/PlanDefinition.d.ts +0 -855
  455. package/dist/fhir/PlanDefinition.js +0 -7
  456. package/dist/fhir/PlanDefinition.js.map +0 -1
  457. package/dist/fhir/Population.d.ts +0 -61
  458. package/dist/fhir/Population.js +0 -7
  459. package/dist/fhir/Population.js.map +0 -1
  460. package/dist/fhir/Practitioner.d.ts +0 -188
  461. package/dist/fhir/Practitioner.js +0 -7
  462. package/dist/fhir/Practitioner.js.map +0 -1
  463. package/dist/fhir/PractitionerRole.d.ts +0 -254
  464. package/dist/fhir/PractitionerRole.js +0 -7
  465. package/dist/fhir/PractitionerRole.js.map +0 -1
  466. package/dist/fhir/Procedure.d.ts +0 -355
  467. package/dist/fhir/Procedure.js +0 -7
  468. package/dist/fhir/Procedure.js.map +0 -1
  469. package/dist/fhir/ProdCharacteristic.d.ts +0 -112
  470. package/dist/fhir/ProdCharacteristic.js +0 -7
  471. package/dist/fhir/ProdCharacteristic.js.map +0 -1
  472. package/dist/fhir/ProductShelfLife.d.ts +0 -69
  473. package/dist/fhir/ProductShelfLife.js +0 -7
  474. package/dist/fhir/ProductShelfLife.js.map +0 -1
  475. package/dist/fhir/Project.d.ts +0 -46
  476. package/dist/fhir/Project.js +0 -7
  477. package/dist/fhir/Project.js.map +0 -1
  478. package/dist/fhir/ProjectMembership.d.ts +0 -54
  479. package/dist/fhir/ProjectMembership.js +0 -7
  480. package/dist/fhir/ProjectMembership.js.map +0 -1
  481. package/dist/fhir/Provenance.d.ts +0 -270
  482. package/dist/fhir/Provenance.js +0 -7
  483. package/dist/fhir/Provenance.js.map +0 -1
  484. package/dist/fhir/Quantity.d.ts +0 -49
  485. package/dist/fhir/Quantity.js +0 -7
  486. package/dist/fhir/Quantity.js.map +0 -1
  487. package/dist/fhir/Questionnaire.d.ts +0 -610
  488. package/dist/fhir/Questionnaire.js +0 -7
  489. package/dist/fhir/Questionnaire.js.map +0 -1
  490. package/dist/fhir/QuestionnaireResponse.d.ts +0 -305
  491. package/dist/fhir/QuestionnaireResponse.js +0 -7
  492. package/dist/fhir/QuestionnaireResponse.js.map +0 -1
  493. package/dist/fhir/Range.d.ts +0 -29
  494. package/dist/fhir/Range.js +0 -7
  495. package/dist/fhir/Range.js.map +0 -1
  496. package/dist/fhir/Ratio.d.ts +0 -30
  497. package/dist/fhir/Ratio.js +0 -7
  498. package/dist/fhir/Ratio.js.map +0 -1
  499. package/dist/fhir/Reference.d.ts +0 -66
  500. package/dist/fhir/Reference.js +0 -7
  501. package/dist/fhir/Reference.js.map +0 -1
  502. package/dist/fhir/RefreshToken.d.ts +0 -45
  503. package/dist/fhir/RefreshToken.js +0 -7
  504. package/dist/fhir/RefreshToken.js.map +0 -1
  505. package/dist/fhir/RelatedArtifact.d.ts +0 -56
  506. package/dist/fhir/RelatedArtifact.js +0 -7
  507. package/dist/fhir/RelatedArtifact.js.map +0 -1
  508. package/dist/fhir/RelatedPerson.d.ts +0 -190
  509. package/dist/fhir/RelatedPerson.js +0 -7
  510. package/dist/fhir/RelatedPerson.js.map +0 -1
  511. package/dist/fhir/RequestGroup.d.ts +0 -427
  512. package/dist/fhir/RequestGroup.js +0 -7
  513. package/dist/fhir/RequestGroup.js.map +0 -1
  514. package/dist/fhir/ResearchDefinition.d.ts +0 -289
  515. package/dist/fhir/ResearchDefinition.js +0 -7
  516. package/dist/fhir/ResearchDefinition.js.map +0 -1
  517. package/dist/fhir/ResearchElementDefinition.d.ts +0 -430
  518. package/dist/fhir/ResearchElementDefinition.js +0 -7
  519. package/dist/fhir/ResearchElementDefinition.js.map +0 -1
  520. package/dist/fhir/ResearchStudy.d.ts +0 -320
  521. package/dist/fhir/ResearchStudy.js +0 -7
  522. package/dist/fhir/ResearchStudy.js.map +0 -1
  523. package/dist/fhir/ResearchSubject.d.ts +0 -116
  524. package/dist/fhir/ResearchSubject.js +0 -7
  525. package/dist/fhir/ResearchSubject.js.map +0 -1
  526. package/dist/fhir/Resource.d.ts +0 -154
  527. package/dist/fhir/Resource.js +0 -7
  528. package/dist/fhir/Resource.js.map +0 -1
  529. package/dist/fhir/RiskAssessment.d.ts +0 -237
  530. package/dist/fhir/RiskAssessment.js +0 -7
  531. package/dist/fhir/RiskAssessment.js.map +0 -1
  532. package/dist/fhir/RiskEvidenceSynthesis.d.ts +0 -539
  533. package/dist/fhir/RiskEvidenceSynthesis.js +0 -7
  534. package/dist/fhir/RiskEvidenceSynthesis.js.map +0 -1
  535. package/dist/fhir/SampledData.d.ts +0 -61
  536. package/dist/fhir/SampledData.js +0 -7
  537. package/dist/fhir/SampledData.js.map +0 -1
  538. package/dist/fhir/Schedule.d.ts +0 -122
  539. package/dist/fhir/Schedule.js +0 -7
  540. package/dist/fhir/Schedule.js.map +0 -1
  541. package/dist/fhir/SearchParameter.d.ts +0 -278
  542. package/dist/fhir/SearchParameter.js +0 -7
  543. package/dist/fhir/SearchParameter.js.map +0 -1
  544. package/dist/fhir/ServiceRequest.d.ts +0 -288
  545. package/dist/fhir/ServiceRequest.js +0 -7
  546. package/dist/fhir/ServiceRequest.js.map +0 -1
  547. package/dist/fhir/Signature.d.ts +0 -65
  548. package/dist/fhir/Signature.js +0 -7
  549. package/dist/fhir/Signature.js.map +0 -1
  550. package/dist/fhir/Slot.d.ts +0 -133
  551. package/dist/fhir/Slot.js +0 -7
  552. package/dist/fhir/Slot.js.map +0 -1
  553. package/dist/fhir/Specimen.d.ts +0 -357
  554. package/dist/fhir/Specimen.js +0 -7
  555. package/dist/fhir/Specimen.js.map +0 -1
  556. package/dist/fhir/SpecimenDefinition.d.ts +0 -359
  557. package/dist/fhir/SpecimenDefinition.js +0 -7
  558. package/dist/fhir/SpecimenDefinition.js.map +0 -1
  559. package/dist/fhir/StructureDefinition.d.ts +0 -443
  560. package/dist/fhir/StructureDefinition.js +0 -7
  561. package/dist/fhir/StructureDefinition.js.map +0 -1
  562. package/dist/fhir/StructureMap.d.ts +0 -908
  563. package/dist/fhir/StructureMap.js +0 -7
  564. package/dist/fhir/StructureMap.js.map +0 -1
  565. package/dist/fhir/Subscription.d.ts +0 -176
  566. package/dist/fhir/Subscription.js +0 -7
  567. package/dist/fhir/Subscription.js.map +0 -1
  568. package/dist/fhir/Substance.d.ts +0 -212
  569. package/dist/fhir/Substance.js +0 -7
  570. package/dist/fhir/Substance.js.map +0 -1
  571. package/dist/fhir/SubstanceAmount.d.ts +0 -138
  572. package/dist/fhir/SubstanceAmount.js +0 -7
  573. package/dist/fhir/SubstanceAmount.js.map +0 -1
  574. package/dist/fhir/SubstanceNucleicAcid.d.ts +0 -316
  575. package/dist/fhir/SubstanceNucleicAcid.js +0 -7
  576. package/dist/fhir/SubstanceNucleicAcid.js.map +0 -1
  577. package/dist/fhir/SubstancePolymer.d.ts +0 -405
  578. package/dist/fhir/SubstancePolymer.js +0 -7
  579. package/dist/fhir/SubstancePolymer.js.map +0 -1
  580. package/dist/fhir/SubstanceProtein.d.ts +0 -217
  581. package/dist/fhir/SubstanceProtein.js +0 -7
  582. package/dist/fhir/SubstanceProtein.js.map +0 -1
  583. package/dist/fhir/SubstanceReferenceInformation.d.ts +0 -329
  584. package/dist/fhir/SubstanceReferenceInformation.js +0 -7
  585. package/dist/fhir/SubstanceReferenceInformation.js.map +0 -1
  586. package/dist/fhir/SubstanceSourceMaterial.d.ts +0 -594
  587. package/dist/fhir/SubstanceSourceMaterial.js +0 -7
  588. package/dist/fhir/SubstanceSourceMaterial.js.map +0 -1
  589. package/dist/fhir/SubstanceSpecification.d.ts +0 -826
  590. package/dist/fhir/SubstanceSpecification.js +0 -7
  591. package/dist/fhir/SubstanceSpecification.js.map +0 -1
  592. package/dist/fhir/SupplyDelivery.d.ts +0 -195
  593. package/dist/fhir/SupplyDelivery.js +0 -7
  594. package/dist/fhir/SupplyDelivery.js.map +0 -1
  595. package/dist/fhir/SupplyRequest.d.ts +0 -223
  596. package/dist/fhir/SupplyRequest.js +0 -7
  597. package/dist/fhir/SupplyRequest.js.map +0 -1
  598. package/dist/fhir/Task.d.ts +0 -789
  599. package/dist/fhir/Task.js +0 -7
  600. package/dist/fhir/Task.js.map +0 -1
  601. package/dist/fhir/TerminologyCapabilities.d.ts +0 -734
  602. package/dist/fhir/TerminologyCapabilities.js +0 -7
  603. package/dist/fhir/TerminologyCapabilities.js.map +0 -1
  604. package/dist/fhir/TestReport.d.ts +0 -554
  605. package/dist/fhir/TestReport.js +0 -7
  606. package/dist/fhir/TestReport.js.map +0 -1
  607. package/dist/fhir/TestScript.d.ts +0 -1192
  608. package/dist/fhir/TestScript.js +0 -7
  609. package/dist/fhir/TestScript.js.map +0 -1
  610. package/dist/fhir/Timing.d.ts +0 -201
  611. package/dist/fhir/Timing.js +0 -7
  612. package/dist/fhir/Timing.js.map +0 -1
  613. package/dist/fhir/TriggerDefinition.d.ts +0 -63
  614. package/dist/fhir/TriggerDefinition.js +0 -7
  615. package/dist/fhir/TriggerDefinition.js.map +0 -1
  616. package/dist/fhir/UsageContext.d.ts +0 -54
  617. package/dist/fhir/UsageContext.js +0 -7
  618. package/dist/fhir/UsageContext.js.map +0 -1
  619. package/dist/fhir/User.d.ts +0 -44
  620. package/dist/fhir/User.js +0 -7
  621. package/dist/fhir/User.js.map +0 -1
  622. package/dist/fhir/ValueSet.d.ts +0 -736
  623. package/dist/fhir/ValueSet.js +0 -7
  624. package/dist/fhir/ValueSet.js.map +0 -1
  625. package/dist/fhir/VerificationResult.d.ts +0 -340
  626. package/dist/fhir/VerificationResult.js +0 -7
  627. package/dist/fhir/VerificationResult.js.map +0 -1
  628. package/dist/fhir/VisionPrescription.d.ts +0 -261
  629. package/dist/fhir/VisionPrescription.js +0 -7
  630. package/dist/fhir/VisionPrescription.js.map +0 -1
  631. package/dist/fhir/index.d.ts +0 -194
  632. package/dist/fhir/index.js +0 -211
  633. package/dist/fhir/index.js.map +0 -1
  634. package/dist/fhirpath/functions.d.ts +0 -6
  635. package/dist/fhirpath/functions.js +0 -349
  636. package/dist/fhirpath/functions.js.map +0 -1
  637. package/dist/fhirpath/functions.test.d.ts +0 -1
  638. package/dist/fhirpath/functions.test.js +0 -162
  639. package/dist/fhirpath/functions.test.js.map +0 -1
  640. package/dist/fhirpath/index.d.ts +0 -2
  641. package/dist/fhirpath/index.js +0 -15
  642. package/dist/fhirpath/index.js.map +0 -1
  643. package/dist/fhirpath/parse.d.ts +0 -10
  644. package/dist/fhirpath/parse.js +0 -285
  645. package/dist/fhirpath/parse.js.map +0 -1
  646. package/dist/fhirpath/parse.test.d.ts +0 -1
  647. package/dist/fhirpath/parse.test.js +0 -239
  648. package/dist/fhirpath/parse.test.js.map +0 -1
  649. package/dist/fhirpath/tokenize.d.ts +0 -13
  650. package/dist/fhirpath/tokenize.js +0 -43
  651. package/dist/fhirpath/tokenize.js.map +0 -1
  652. package/dist/fhirpath/tokenize.test.d.ts +0 -1
  653. package/dist/fhirpath/tokenize.test.js +0 -69
  654. package/dist/fhirpath/tokenize.test.js.map +0 -1
  655. package/dist/fhirpath/utils.d.ts +0 -13
  656. package/dist/fhirpath/utils.js +0 -34
  657. package/dist/fhirpath/utils.js.map +0 -1
  658. package/dist/fhirpath/utils.test.d.ts +0 -1
  659. package/dist/fhirpath/utils.test.js +0 -22
  660. package/dist/fhirpath/utils.test.js.map +0 -1
  661. package/dist/format.test.d.ts +0 -1
  662. package/dist/format.test.js +0 -127
  663. package/dist/format.test.js.map +0 -1
  664. package/dist/index.test.d.ts +0 -1
  665. package/dist/index.test.js +0 -11
  666. package/dist/index.test.js.map +0 -1
  667. package/dist/outcomes.test.d.ts +0 -1
  668. package/dist/outcomes.test.js +0 -30
  669. package/dist/outcomes.test.js.map +0 -1
  670. package/dist/search.test.d.ts +0 -1
  671. package/dist/search.test.js +0 -70
  672. package/dist/search.test.js.map +0 -1
  673. package/dist/storage.test.d.ts +0 -1
  674. package/dist/storage.test.js +0 -19
  675. package/dist/storage.test.js.map +0 -1
  676. package/dist/tsconfig.tsbuildinfo +0 -1
  677. package/dist/utils.test.d.ts +0 -1
  678. package/dist/utils.test.js +0 -90
  679. package/dist/utils.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["// PKCE auth ased on:\n// https://aws.amazon.com/blogs/security/how-to-add-authentication-single-page-web-application-with-amazon-cognito-oauth2-implementation/\n\nimport {\n Binary,\n Bundle,\n Project,\n ProjectMembership,\n Reference,\n Resource,\n SearchParameter,\n StructureDefinition,\n Subscription,\n ValueSet,\n} from '@medplum/fhirtypes';\nimport { LRUCache } from './cache';\nimport { encryptSHA256, getRandomString } from './crypto';\nimport { EventTarget } from './eventtarget';\nimport { parseJWTPayload } from './jwt';\nimport { isOk, OperationOutcomeError } from './outcomes';\nimport { formatSearchQuery, Operator, SearchRequest } from './search';\nimport { ClientStorage } from './storage';\nimport { IndexedStructureDefinition, indexStructureDefinition } from './types';\nimport { arrayBufferToBase64, ProfileResource, stringify } from './utils';\n\nconst DEFAULT_BASE_URL = 'https://api.medplum.com/';\nconst DEFAULT_SCOPE = 'launch/patient openid fhirUser offline_access user/*.*';\nconst DEFAULT_RESOURCE_CACHE_SIZE = 1000;\nconst JSON_CONTENT_TYPE = 'application/json';\nconst FHIR_CONTENT_TYPE = 'application/fhir+json';\nconst PATCH_CONTENT_TYPE = 'application/json-patch+json';\n\nexport interface MedplumClientOptions {\n /**\n * The client ID.\n * Optional. Default is to defer to the server to use the default client.\n * Use this to use a specific client for SMART-on-FHIR.\n */\n clientId?: string;\n\n /**\n * Base server URL.\n * Optional. Default value is \"https://api.medplum.com/\".\n * Use this to point to a custom Medplum deployment.\n */\n baseUrl?: string;\n\n /**\n * OAuth2 authorize URL.\n * Optional. Default value is baseUrl + \"/oauth2/authorize\".\n * Use this if you want to use a separate OAuth server.\n */\n authorizeUrl?: string;\n\n /**\n * OAuth2 token URL.\n * Optional. Default value is baseUrl + \"/oauth2/token\".\n * Use this if you want to use a separate OAuth server.\n */\n tokenUrl?: string;\n\n /**\n * OAuth2 logout URL.\n * Optional. Default value is baseUrl + \"/oauth2/logout\".\n * Use this if you want to use a separate OAuth server.\n */\n logoutUrl?: string;\n\n /**\n * Number of resources to store in the cache.\n * Optional. Default value is 1000.\n * Consider using this for performance of displaying Patient or Practitioner resources.\n */\n resourceCacheSize?: number;\n\n /**\n * Optional fetch implementation.\n * Optional. Default is window.fetch.\n * For nodejs applications, consider the 'node-fetch' package.\n */\n fetch?: FetchLike;\n\n /**\n * Optional callback for when the client is unauthenticated.\n * Default is do nothing.\n * For client side applications, consider redirecting to a sign in page.\n */\n onUnauthenticated?: () => void;\n}\n\nexport interface FetchLike {\n (url: string, options?: any): Promise<any>;\n}\n\nexport interface RegisterRequest {\n readonly firstName: string;\n readonly lastName: string;\n readonly projectName: string;\n readonly email: string;\n readonly password: string;\n readonly remember?: boolean;\n}\n\nexport interface GoogleCredentialResponse {\n readonly clientId: string;\n readonly credential: string;\n}\n\nexport interface LoginAuthenticationResponse {\n readonly login: string;\n readonly code?: string;\n readonly memberships?: ProjectMembership[];\n}\n\nexport interface LoginProfileResponse {\n readonly login: string;\n readonly scope: string;\n}\n\nexport interface LoginScopeResponse {\n readonly login: string;\n readonly code: string;\n}\n\nexport interface LoginState {\n readonly project: Reference<Project>;\n readonly profile: Reference<ProfileResource>;\n readonly accessToken: string;\n readonly refreshToken: string;\n}\n\nexport interface TokenResponse {\n readonly token_type: string;\n readonly id_token: string;\n readonly access_token: string;\n readonly refresh_token: string;\n readonly expires_in: number;\n readonly project: Reference<Project>;\n readonly profile: Reference<ProfileResource>;\n}\n\nexport class MedplumClient extends EventTarget {\n private readonly fetch: FetchLike;\n private readonly storage: ClientStorage;\n private readonly schema: Map<string, IndexedStructureDefinition>;\n private readonly resourceCache: LRUCache<Resource | Promise<Resource>>;\n private readonly baseUrl: string;\n private readonly clientId: string;\n private readonly authorizeUrl: string;\n private readonly tokenUrl: string;\n private readonly logoutUrl: string;\n private readonly onUnauthenticated?: () => void;\n private refreshPromise?: Promise<any>;\n private activeLogin?: LoginState;\n private profile?: ProfileResource;\n private loading: boolean;\n\n constructor(options: MedplumClientOptions) {\n super();\n\n if (options.baseUrl) {\n if (!options.baseUrl.startsWith('http')) {\n throw new Error('Base URL must start with http or https');\n }\n if (!options.baseUrl.endsWith('/')) {\n throw new Error('Base URL must end with a trailing slash');\n }\n }\n\n this.fetch = options.fetch || window.fetch.bind(window);\n this.storage = new ClientStorage();\n this.schema = new Map();\n this.resourceCache = new LRUCache(options.resourceCacheSize ?? DEFAULT_RESOURCE_CACHE_SIZE);\n this.baseUrl = options.baseUrl || DEFAULT_BASE_URL;\n this.clientId = options.clientId || '';\n this.authorizeUrl = options.authorizeUrl || this.baseUrl + 'oauth2/authorize';\n this.tokenUrl = options.tokenUrl || this.baseUrl + 'oauth2/token';\n this.logoutUrl = options.logoutUrl || this.baseUrl + 'oauth2/logout';\n this.onUnauthenticated = options.onUnauthenticated;\n this.activeLogin = this.storage.getObject<LoginState>('activeLogin');\n if (!this.activeLogin?.profile?.reference) {\n this.clear();\n }\n this.loading = false;\n this.refreshProfile().catch(console.log);\n }\n\n /**\n * Clears all auth state including local storage and session storage.\n */\n clear(): void {\n this.storage.clear();\n this.schema.clear();\n this.resourceCache.clear();\n this.activeLogin = undefined;\n this.profile = undefined;\n this.dispatchEvent({ type: 'change' });\n }\n\n get(url: string): Promise<any> {\n return this.request('GET', url);\n }\n\n post(url: string, body: any, contentType?: string): Promise<any> {\n return this.request('POST', url, contentType, body);\n }\n\n put(url: string, body: any, contentType?: string): Promise<any> {\n return this.request('PUT', url, contentType, body);\n }\n\n delete(url: string): Promise<any> {\n return this.request('DELETE', url);\n }\n\n /**\n * Tries to register a new user.\n * @param request The registration request.\n * @returns Promise to the authentication response.\n */\n async register(request: RegisterRequest): Promise<void> {\n const response = await this.post('auth/register', request);\n await this.setActiveLogin(response as LoginState);\n }\n\n /**\n * Initiates a user login flow.\n * @param email The email address of the user.\n * @param password The password of the user.\n * @param remember Optional flag to remember the user.\n * @returns Promise to the authentication response.\n */\n async startLogin(email: string, password: string, remember?: boolean): Promise<LoginAuthenticationResponse> {\n await this.startPkce();\n return this.post('auth/login', {\n clientId: this.clientId,\n scope: DEFAULT_SCOPE,\n codeChallengeMethod: 'S256',\n codeChallenge: this.storage.getString('codeChallenge') as string,\n email,\n password,\n remember: !!remember,\n }) as Promise<LoginAuthenticationResponse>;\n }\n\n /**\n * Tries to sign in with Google authentication.\n * The response parameter is the result of a Google authentication.\n * See: https://developers.google.com/identity/gsi/web/guides/handle-credential-responses-js-functions\n * @param googleResponse The Google credential response.\n * @returns Promise to the authentication response.\n */\n async startGoogleLogin(googleResponse: GoogleCredentialResponse): Promise<LoginAuthenticationResponse> {\n await this.startPkce();\n return this.post('auth/google', googleResponse) as Promise<LoginAuthenticationResponse>;\n }\n\n /**\n * Signs out locally.\n * Does not invalidate tokens with the server.\n */\n signOut(): Promise<void> {\n this.clear();\n return Promise.resolve();\n }\n\n /**\n * Tries to sign in the user.\n * Returns true if the user is signed in.\n * This may result in navigating away to the sign in page.\n */\n signInWithRedirect(): Promise<ProfileResource | void> | undefined {\n const urlParams = new URLSearchParams(window.location.search);\n const code = urlParams.get('code');\n if (!code) {\n this.requestAuthorization();\n return undefined;\n } else {\n return this.processCode(code);\n }\n }\n\n /**\n * Tries to sign out the user.\n * See: https://docs.aws.amazon.com/cognito/latest/developerguide/logout-endpoint.html\n */\n signOutWithRedirect(): void {\n window.location.assign(this.logoutUrl);\n }\n\n fhirUrl(...path: string[]): string {\n const builder = [this.baseUrl, 'fhir/R4'];\n path.forEach((p) => builder.push('/', encodeURIComponent(p)));\n return builder.join('');\n }\n\n search<T extends Resource>(search: string | SearchRequest): Promise<Bundle<T>> {\n if (typeof search === 'string') {\n return this.get('fhir/R4/' + search);\n } else {\n return this.get(this.fhirUrl(search.resourceType) + formatSearchQuery(search));\n }\n }\n\n /**\n * Searches a ValueSet resource using the \"expand\" operation.\n * See: https://www.hl7.org/fhir/operation-valueset-expand.html\n * @param system The ValueSet system url.\n * @param filter The search string.\n * @returns Promise to expanded ValueSet.\n */\n searchValueSet(system: string, filter: string): Promise<ValueSet> {\n return this.get(\n this.fhirUrl('ValueSet', '$expand') +\n `?url=${encodeURIComponent(system)}` +\n `&filter=${encodeURIComponent(filter)}`\n );\n }\n\n read<T extends Resource>(resourceType: string, id: string): Promise<T> {\n const cacheKey = resourceType + '/' + id;\n const promise = this.get(this.fhirUrl(resourceType, id)).then((resource: T) => {\n this.resourceCache.set(cacheKey, resource);\n return resource;\n });\n this.resourceCache.set(cacheKey, promise);\n return promise;\n }\n\n readCached<T extends Resource>(resourceType: string, id: string): Promise<T> {\n const cached = this.resourceCache.get(resourceType + '/' + id) as T | Promise<T> | undefined;\n return cached ? Promise.resolve(cached) : this.read(resourceType, id);\n }\n\n readReference<T extends Resource>(reference: Reference<T>): Promise<T> {\n const refString = reference?.reference;\n if (!refString) {\n return Promise.reject('Missing reference');\n }\n const [resourceType, id] = refString.split('/');\n return this.read(resourceType, id);\n }\n\n readCachedReference<T extends Resource>(reference: Reference<T>): Promise<T> {\n const refString = reference?.reference;\n if (!refString) {\n return Promise.reject('Missing reference');\n }\n const [resourceType, id] = refString.split('/');\n return this.readCached(resourceType, id);\n }\n\n getTypeDefinition(resourceType: string): Promise<IndexedStructureDefinition> {\n if (!resourceType) {\n return Promise.reject('Missing resourceType');\n }\n const cached = this.schema.get(resourceType);\n if (cached) {\n return Promise.resolve(cached);\n }\n let typeDef: IndexedStructureDefinition;\n return this.search<StructureDefinition>('StructureDefinition?name:exact=' + encodeURIComponent(resourceType))\n .then((result: Bundle<StructureDefinition>) => {\n if (!result.entry?.length) {\n throw new Error('StructureDefinition not found');\n }\n const resource = result.entry[0].resource;\n if (!resource) {\n throw new Error('StructureDefinition not found');\n }\n typeDef = indexStructureDefinition(resource);\n })\n .then(() =>\n this.search<SearchParameter>({\n resourceType: 'SearchParameter',\n count: 100,\n filters: [\n {\n code: 'base',\n operator: Operator.EQUALS,\n value: resourceType,\n },\n ],\n })\n )\n .then((result: Bundle<SearchParameter>) => {\n const entries = result.entry;\n if (entries) {\n typeDef.types[resourceType].searchParams = entries\n .map((e) => e.resource as SearchParameter)\n .sort((a, b) => a.name?.localeCompare(b.name as string) ?? 0);\n }\n this.schema.set(resourceType, typeDef);\n return typeDef;\n });\n }\n\n readHistory<T extends Resource>(resourceType: string, id: string): Promise<Bundle<T>> {\n return this.get(this.fhirUrl(resourceType, id, '_history'));\n }\n\n readPatientEverything(id: string): Promise<Bundle> {\n return this.get(this.fhirUrl('Patient', id, '$everything'));\n }\n\n create<T extends Resource>(resource: T): Promise<T> {\n if (!resource.resourceType) {\n throw new Error('Missing resourceType');\n }\n return this.post(this.fhirUrl(resource.resourceType), resource);\n }\n\n createBinary(data: any, contentType: string): Promise<Binary> {\n return this.post(this.fhirUrl('Binary'), data, contentType);\n }\n\n update<T extends Resource>(resource: T): Promise<T> {\n if (!resource.resourceType) {\n throw new Error('Missing resourceType');\n }\n if (!resource.id) {\n throw new Error('Missing id');\n }\n return this.put(this.fhirUrl(resource.resourceType, resource.id), resource);\n }\n\n patch(resourceType: string, id: string, operations: any): Promise<any> {\n return this.request('PATCH', this.fhirUrl(resourceType, id), PATCH_CONTENT_TYPE, operations);\n }\n\n deleteResource(resourceType: string, id: string): Promise<any> {\n return this.delete(this.fhirUrl(resourceType, id));\n }\n\n graphql(gql: any): Promise<any> {\n return this.post(this.fhirUrl('$graphql'), gql, JSON_CONTENT_TYPE);\n }\n\n subscribe(criteria: string, handler: (e: Resource) => void): Promise<EventSource> {\n return this.create({\n resourceType: 'Subscription',\n status: 'active',\n criteria: criteria,\n channel: {\n type: 'sse',\n },\n }).then((sub: Subscription) => {\n const eventSource = new EventSource(this.baseUrl + 'sse?subscription=' + encodeURIComponent(sub.id as string), {\n withCredentials: true,\n });\n\n eventSource.onmessage = (e: MessageEvent) => {\n handler(JSON.parse(e.data) as Resource);\n };\n\n return eventSource;\n });\n }\n\n getActiveLogin(): LoginState | undefined {\n return this.activeLogin;\n }\n\n async setActiveLogin(login: LoginState): Promise<void> {\n this.activeLogin = login;\n this.storage.setObject('activeLogin', login);\n this.addLogin(login);\n this.resourceCache.clear();\n this.refreshPromise = undefined;\n await this.refreshProfile();\n }\n\n getLogins(): LoginState[] {\n return this.storage.getObject<LoginState[]>('logins') ?? [];\n }\n\n private addLogin(newLogin: LoginState): void {\n const logins = this.getLogins().filter((login) => login.profile?.reference !== newLogin.profile?.reference);\n logins.push(newLogin);\n this.storage.setObject('logins', logins);\n }\n\n private async refreshProfile(): Promise<ProfileResource | undefined> {\n const reference = this.getActiveLogin()?.profile;\n if (reference?.reference) {\n this.loading = true;\n this.profile = await this.readCachedReference(reference);\n this.loading = false;\n this.dispatchEvent({ type: 'change' });\n }\n\n return this.profile;\n }\n\n getProfile(): ProfileResource | undefined {\n return this.profile;\n }\n\n isLoading(): boolean {\n return this.loading;\n }\n\n /**\n * Makes an HTTP request.\n * @param {string} method\n * @param {string} url\n * @param {string=} contentType\n * @param {Object=} body\n */\n private async request(method: string, url: string, contentType?: string, body?: any): Promise<any> {\n if (this.refreshPromise) {\n await this.refreshPromise;\n }\n\n if (!url.startsWith('http')) {\n url = this.baseUrl + url;\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': contentType || FHIR_CONTENT_TYPE,\n };\n\n const accessToken = this.getActiveLogin()?.accessToken;\n if (accessToken) {\n headers['Authorization'] = 'Bearer ' + accessToken;\n }\n\n const options: RequestInit = {\n method: method,\n cache: 'no-cache',\n credentials: 'include',\n headers,\n };\n\n if (body) {\n if (typeof body === 'string' || (typeof File !== 'undefined' && body instanceof File)) {\n options.body = body;\n } else {\n options.body = stringify(body);\n }\n }\n\n const response = await this.fetch(url, options);\n if (response.status === 401) {\n // Refresh and try again\n return this.handleUnauthenticated(method, url, contentType, body);\n }\n\n if (response.status === 204 || response.status === 304) {\n // No content or change\n return undefined;\n }\n\n const obj = await response.json();\n if (obj.resourceType === 'OperationOutcome' && !isOk(obj)) {\n return Promise.reject(new OperationOutcomeError(obj));\n }\n return obj;\n }\n\n /**\n * Handles an unauthenticated response from the server.\n * First, tries to refresh the access token and retry the request.\n * Otherwise, calls unauthenticated callbacks and rejects.\n * @param method The HTTP method of the original request.\n * @param url The URL of the original request.\n * @param contentType The content type of the original request.\n * @param body The body of the original request.\n */\n private async handleUnauthenticated(method: string, url: string, contentType?: string, body?: any): Promise<any> {\n return this.refresh()\n .then(() => this.request(method, url, contentType, body))\n .catch((error) => {\n this.clear();\n if (this.onUnauthenticated) {\n this.onUnauthenticated();\n }\n return Promise.reject(error);\n });\n }\n\n /**\n * Starts a new PKCE flow.\n * These PKCE values are stateful, and must survive redirects and page refreshes.\n */\n private async startPkce(): Promise<void> {\n const pkceState = getRandomString();\n this.storage.setString('pkceState', pkceState);\n\n const codeVerifier = getRandomString();\n this.storage.setString('codeVerifier', codeVerifier);\n\n const arrayHash = await encryptSHA256(codeVerifier);\n const codeChallenge = arrayBufferToBase64(arrayHash).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n this.storage.setString('codeChallenge', codeChallenge);\n }\n\n /**\n * Redirects the user to the login screen for authorization.\n * Clears all auth state including local storage and session storage.\n * See: https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint\n */\n private async requestAuthorization() {\n if (!this.authorizeUrl) {\n throw new Error('Missing authorize URL');\n }\n\n this.startPkce();\n\n window.location.assign(\n this.authorizeUrl +\n '?response_type=code' +\n '&state=' +\n encodeURIComponent(this.storage.getString('pkceState') as string) +\n '&client_id=' +\n encodeURIComponent(this.clientId) +\n '&redirect_uri=' +\n encodeURIComponent(getBaseUrl()) +\n '&scope=' +\n encodeURIComponent(DEFAULT_SCOPE) +\n '&code_challenge_method=S256' +\n '&code_challenge=' +\n encodeURIComponent(this.storage.getString('codeChallenge') as string)\n );\n }\n\n /**\n * Processes an OAuth authorization code.\n * See: https://openid.net/specs/openid-connect-core-1_0.html#TokenRequest\n * @param code The authorization code received by URL parameter.\n */\n processCode(code: string): Promise<ProfileResource> {\n const pkceState = this.storage.getString('pkceState');\n if (!pkceState) {\n this.clear();\n throw new Error('Invalid PCKE state');\n }\n\n const codeVerifier = this.storage.getString('codeVerifier');\n if (!codeVerifier) {\n this.clear();\n throw new Error('Invalid PCKE code verifier');\n }\n\n return this.fetchTokens(\n 'grant_type=authorization_code' +\n (this.clientId ? '&client_id=' + encodeURIComponent(this.clientId) : '') +\n '&code_verifier=' +\n encodeURIComponent(codeVerifier) +\n '&redirect_uri=' +\n encodeURIComponent(getBaseUrl()) +\n '&code=' +\n encodeURIComponent(code)\n );\n }\n\n /**\n * Tries to refresh the auth tokens.\n * See: https://openid.net/specs/openid-connect-core-1_0.html#RefreshTokens\n */\n private async refresh(): Promise<void> {\n if (this.refreshPromise) {\n return this.refreshPromise;\n }\n\n const refreshToken = this.getActiveLogin()?.refreshToken;\n if (!refreshToken) {\n this.clear();\n return Promise.reject('Invalid refresh token');\n }\n\n this.refreshPromise = this.fetchTokens(\n 'grant_type=refresh_token' +\n '&client_id=' +\n encodeURIComponent(this.clientId) +\n '&refresh_token=' +\n encodeURIComponent(refreshToken)\n );\n\n await this.refreshPromise;\n }\n\n /**\n * Makes a POST request to the tokens endpoint.\n * See: https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n * @param formBody Token parameters in URL encoded format.\n */\n private async fetchTokens(formBody: string): Promise<ProfileResource> {\n if (!this.tokenUrl) {\n return Promise.reject('Missing token URL');\n }\n\n return this.fetch(this.tokenUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: formBody,\n })\n .then((response) => {\n if (!response.ok) {\n return Promise.reject('Failed to fetch tokens');\n }\n return response.json();\n })\n .then((tokens) => this.verifyTokens(tokens))\n .then(() => this.profile as ProfileResource);\n }\n\n /**\n * Verifies the tokens received from the auth server.\n * Validates the JWT against the JWKS.\n * See: https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n * @param tokens\n */\n private async verifyTokens(tokens: TokenResponse): Promise<void> {\n const token = tokens.access_token;\n\n // Verify token has not expired\n const tokenPayload = parseJWTPayload(token);\n if (Date.now() >= tokenPayload.exp * 1000) {\n this.clear();\n return Promise.reject('Token expired');\n }\n\n // Verify app_client_id\n if (this.clientId && tokenPayload.client_id !== this.clientId) {\n this.clear();\n return Promise.reject('Token was not issued for this audience');\n }\n\n await this.setActiveLogin({\n accessToken: token,\n refreshToken: tokens.refresh_token,\n project: tokens.project,\n profile: tokens.profile,\n });\n }\n}\n\n/**\n * Returns the base URL for the current page.\n */\nfunction getBaseUrl() {\n return window.location.protocol + '//' + window.location.host + '/';\n}\n"]}
package/dist/crypto.js CHANGED
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.encryptSHA256 = exports.getRandomString = void 0;
4
13
  const utils_1 = require("./utils");
@@ -15,8 +24,10 @@ exports.getRandomString = getRandomString;
15
24
  * Encrypts a string with SHA256 encryption.
16
25
  * @param str
17
26
  */
18
- async function encryptSHA256(str) {
19
- return crypto.subtle.digest('SHA-256', new TextEncoder().encode(str));
27
+ function encryptSHA256(str) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ return crypto.subtle.digest('SHA-256', new TextEncoder().encode(str));
30
+ });
20
31
  }
21
32
  exports.encryptSHA256 = encryptSHA256;
22
33
  //# sourceMappingURL=crypto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAE3C;;GAEG;AACH,SAAgB,eAAe;IAC7B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACpC,OAAO,IAAA,wBAAgB,EAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAJD,0CAIC;AAED;;;GAGG;AACI,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACxE,CAAC;AAFD,sCAEC"}
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAA2C;AAE3C;;GAEG;AACH,SAAgB,eAAe;IAC7B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACpC,OAAO,IAAA,wBAAgB,EAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAJD,0CAIC;AAED;;;GAGG;AACH,SAAsB,aAAa,CAAC,GAAW;;QAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;CAAA;AAFD,sCAEC","sourcesContent":["import { arrayBufferToHex } from './utils';\n\n/**\n * Returns a cryptographically secure random string.\n */\nexport function getRandomString(): string {\n const randomItems = new Uint32Array(28);\n crypto.getRandomValues(randomItems);\n return arrayBufferToHex(randomItems.buffer);\n}\n\n/**\n * Encrypts a string with SHA256 encryption.\n * @param str\n */\nexport async function encryptSHA256(str: string): Promise<ArrayBuffer> {\n return crypto.subtle.digest('SHA-256', new TextEncoder().encode(str));\n}\n"]}
@@ -5,7 +5,6 @@
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.EventTarget = void 0;
7
7
  class EventTarget {
8
- listeners;
9
8
  constructor() {
10
9
  this.listeners = {};
11
10
  }
@@ -30,7 +29,7 @@ class EventTarget {
30
29
  dispatchEvent(event) {
31
30
  const array = this.listeners[event.type];
32
31
  if (array) {
33
- array.forEach(listener => listener.call(this, event));
32
+ array.forEach((listener) => listener.call(this, event));
34
33
  }
35
34
  return !event.defaultPrevented;
36
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"eventtarget.js","sourceRoot":"","sources":["../src/eventtarget.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AASH,MAAa,WAAW;IACL,SAAS,CAAkC;IAE5D;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,QAAuB;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;SAC3B;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,oBAAoB,CAAC,IAAY,EAAE,QAAuB;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACzB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnB,OAAO;aACR;SACF;IACH,CAAC;IAED,aAAa,CAAC,KAAY;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SACvD;QACD,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACjC,CAAC;CACF;AAlCD,kCAkCC"}
1
+ {"version":3,"file":"eventtarget.js","sourceRoot":"","sources":["../src/eventtarget.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AASH,MAAa,WAAW;IAGtB;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,QAAuB;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;SAC3B;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,oBAAoB,CAAC,IAAY,EAAE,QAAuB;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACzB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnB,OAAO;aACR;SACF;IACH,CAAC;IAED,aAAa,CAAC,KAAY;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SACzD;QACD,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACjC,CAAC;CACF;AAlCD,kCAkCC","sourcesContent":["/*\n * Based on: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n */\n\ninterface Event {\n type: string;\n defaultPrevented?: boolean;\n}\n\ntype EventListener = (e: Event) => void;\n\nexport class EventTarget {\n private readonly listeners: Record<string, EventListener[]>;\n\n constructor() {\n this.listeners = {};\n }\n\n addEventListener(type: string, callback: EventListener): void {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n this.listeners[type].push(callback);\n }\n\n removeEventListeneer(type: string, callback: EventListener): void {\n const array = this.listeners[type];\n if (!array) {\n return;\n }\n for (let i = 0; i < array.length; i++) {\n if (array[i] === callback) {\n array.splice(i, 1);\n return;\n }\n }\n }\n\n dispatchEvent(event: Event): boolean {\n const array = this.listeners[event.type];\n if (array) {\n array.forEach((listener) => listener.call(this, event));\n }\n return !event.defaultPrevented;\n }\n}\n"]}
package/dist/format.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Address, HumanName } from './fhir';
1
+ import { Address, HumanName } from '@medplum/fhirtypes';
2
2
  export interface AddressFormatOptions {
3
3
  all?: boolean;
4
4
  use?: boolean;
package/dist/format.js CHANGED
@@ -15,7 +15,7 @@ function formatAddress(address, options) {
15
15
  if (address.postalCode) {
16
16
  builder.push(address.postalCode);
17
17
  }
18
- if (address.use && (options?.all || options?.use)) {
18
+ if (address.use && ((options === null || options === void 0 ? void 0 : options.all) || (options === null || options === void 0 ? void 0 : options.use))) {
19
19
  builder.push('[' + address.use + ']');
20
20
  }
21
21
  return builder.join(', ').trim();
@@ -23,7 +23,7 @@ function formatAddress(address, options) {
23
23
  exports.formatAddress = formatAddress;
24
24
  function formatHumanName(name, options) {
25
25
  const builder = [];
26
- if (name.prefix && (options?.all || options?.prefix)) {
26
+ if (name.prefix && ((options === null || options === void 0 ? void 0 : options.all) || (options === null || options === void 0 ? void 0 : options.prefix))) {
27
27
  builder.push(...name.prefix);
28
28
  }
29
29
  if (name.given) {
@@ -32,10 +32,10 @@ function formatHumanName(name, options) {
32
32
  if (name.family) {
33
33
  builder.push(name.family);
34
34
  }
35
- if (name.suffix && (options?.all || options?.suffix)) {
35
+ if (name.suffix && ((options === null || options === void 0 ? void 0 : options.all) || (options === null || options === void 0 ? void 0 : options.suffix))) {
36
36
  builder.push(...name.suffix);
37
37
  }
38
- if (name.use && (options?.all || options?.use)) {
38
+ if (name.use && ((options === null || options === void 0 ? void 0 : options.all) || (options === null || options === void 0 ? void 0 : options.use))) {
39
39
  builder.push('[' + name.use + ']');
40
40
  }
41
41
  return builder.join(' ').trim();
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":";;;AAcA,SAAgB,aAAa,CAAC,OAAgB,EAAE,OAA8B;IAC5E,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/B;IAED,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5B;IAED,IAAI,OAAO,CAAC,KAAK,EAAE;QACjB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC7B;IAED,IAAI,OAAO,CAAC,UAAU,EAAE;QACtB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KAClC;IAED,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,GAAG,CAAC,EAAE;QACjD,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KACvC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC;AAxBD,sCAwBC;AAED,SAAgB,eAAe,CAAC,IAAe,EAAE,OAAgC;IAC/E,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,CAAC,EAAE;QACpD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9B;IAED,IAAI,IAAI,CAAC,KAAK,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;IAED,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3B;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,CAAC,EAAE;QACpD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9B;IAED,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,GAAG,CAAC,EAAE;QAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KACpC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAxBD,0CAwBC;AAED,SAAgB,eAAe,CAAC,IAAe;IAC7C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,IAAI,CAAC,KAAK,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAND,0CAMC;AAED,SAAgB,gBAAgB,CAAC,IAAe;IAC9C,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;AAC3B,CAAC;AAFD,4CAEC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":";;;AAcA,SAAgB,aAAa,CAAC,OAAgB,EAAE,OAA8B;IAC5E,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/B;IAED,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5B;IAED,IAAI,OAAO,CAAC,KAAK,EAAE;QACjB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC7B;IAED,IAAI,OAAO,CAAC,UAAU,EAAE;QACtB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KAClC;IAED,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,MAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAA,CAAC,EAAE;QACjD,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KACvC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC;AAxBD,sCAwBC;AAED,SAAgB,eAAe,CAAC,IAAe,EAAE,OAAgC;IAC/E,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,MAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,CAAC,EAAE;QACpD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9B;IAED,IAAI,IAAI,CAAC,KAAK,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;IAED,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3B;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,MAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,CAAC,EAAE;QACpD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9B;IAED,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,MAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAA,CAAC,EAAE;QAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KACpC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAxBD,0CAwBC;AAED,SAAgB,eAAe,CAAC,IAAe;IAC7C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,IAAI,CAAC,KAAK,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAND,0CAMC;AAED,SAAgB,gBAAgB,CAAC,IAAe;IAC9C,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;AAC3B,CAAC;AAFD,4CAEC","sourcesContent":["import { Address, HumanName } from '@medplum/fhirtypes';\n\nexport interface AddressFormatOptions {\n all?: boolean;\n use?: boolean;\n}\n\nexport interface HumanNameFormatOptions {\n all?: boolean;\n prefix?: boolean;\n suffix?: boolean;\n use?: boolean;\n}\n\nexport function formatAddress(address: Address, options?: AddressFormatOptions): string {\n const builder = [];\n\n if (address.line) {\n builder.push(...address.line);\n }\n\n if (address.city) {\n builder.push(address.city);\n }\n\n if (address.state) {\n builder.push(address.state);\n }\n\n if (address.postalCode) {\n builder.push(address.postalCode);\n }\n\n if (address.use && (options?.all || options?.use)) {\n builder.push('[' + address.use + ']');\n }\n\n return builder.join(', ').trim();\n}\n\nexport function formatHumanName(name: HumanName, options?: HumanNameFormatOptions): string {\n const builder = [];\n\n if (name.prefix && (options?.all || options?.prefix)) {\n builder.push(...name.prefix);\n }\n\n if (name.given) {\n builder.push(...name.given);\n }\n\n if (name.family) {\n builder.push(name.family);\n }\n\n if (name.suffix && (options?.all || options?.suffix)) {\n builder.push(...name.suffix);\n }\n\n if (name.use && (options?.all || options?.use)) {\n builder.push('[' + name.use + ']');\n }\n\n return builder.join(' ').trim();\n}\n\nexport function formatGivenName(name: HumanName): string {\n const builder: string[] = [];\n if (name.given) {\n builder.push(...name.given);\n }\n return builder.join(' ').trim();\n}\n\nexport function formatFamilyName(name: HumanName): string {\n return name.family || '';\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  export * from './client';
2
- export * from './fhir';
3
- export * from './fhirpath';
4
2
  export * from './format';
5
3
  export * from './outcomes';
6
4
  export * from './search';
5
+ export * from './searchparams';
7
6
  export * from './types';
8
7
  export * from './utils';
package/dist/index.js CHANGED
@@ -11,11 +11,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./client"), exports);
14
- __exportStar(require("./fhir"), exports);
15
- __exportStar(require("./fhirpath"), exports);
16
14
  __exportStar(require("./format"), exports);
17
15
  __exportStar(require("./outcomes"), exports);
18
16
  __exportStar(require("./search"), exports);
17
+ __exportStar(require("./searchparams"), exports);
19
18
  __exportStar(require("./types"), exports);
20
19
  __exportStar(require("./utils"), exports);
21
20
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB;AACvB,6CAA2B;AAC3B,2CAAyB;AACzB,6CAA2B;AAC3B,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,2CAAyB;AACzB,iDAA+B;AAC/B,0CAAwB;AACxB,0CAAwB","sourcesContent":["export * from './client';\nexport * from './format';\nexport * from './outcomes';\nexport * from './search';\nexport * from './searchparams';\nexport * from './types';\nexport * from './utils';\n"]}
package/dist/jwt.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAClD,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACxE,MAAM,cAAc,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACzE,OAAO,GAAG,GAAG,IAAI,cAAc,EAAE,CAAA;IACnC,CAAC,EAAE,EAAE,CAAC,CAAA;IACN,MAAM,WAAW,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AAChC,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAa;IAC3C,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAHD,0CAGC"}
1
+ {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACxE,MAAM,cAAc,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;IACpC,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,WAAW,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAa;IAC3C,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAHD,0CAGC","sourcesContent":["/**\n * Decodes a section of a JWT.\n * See: https://tools.ietf.org/html/rfc7519\n * @param payload\n */\nfunction decodePayload(payload: string) {\n const cleanedPayload = payload.replace(/-/g, '+').replace(/_/g, '/');\n const decodedPayload = window.atob(cleanedPayload);\n const uriEncodedPayload = Array.from(decodedPayload).reduce((acc, char) => {\n const uriEncodedChar = ('00' + char.charCodeAt(0).toString(16)).slice(-2);\n return `${acc}%${uriEncodedChar}`;\n }, '');\n const jsonPayload = decodeURIComponent(uriEncodedPayload);\n return JSON.parse(jsonPayload);\n}\n\n/**\n * Parses the JWT payload.\n * @param token JWT token\n */\nexport function parseJWTPayload(token: string) {\n const [_header, payload, _signature] = token.split('.');\n return decodePayload(payload);\n}\n"]}
@@ -1,11 +1,14 @@
1
- import { OperationOutcome } from './fhir';
1
+ import { OperationOutcome } from '@medplum/fhirtypes';
2
2
  export declare const allOk: OperationOutcome;
3
3
  export declare const created: OperationOutcome;
4
4
  export declare const notModified: OperationOutcome;
5
5
  export declare const notFound: OperationOutcome;
6
+ export declare const gone: OperationOutcome;
7
+ export declare const accessDenied: OperationOutcome;
6
8
  export declare function badRequest(details: string, expression?: string): OperationOutcome;
7
9
  export declare function isOk(outcome: OperationOutcome): boolean;
8
10
  export declare function isNotFound(outcome: OperationOutcome): boolean;
11
+ export declare function isGone(outcome: OperationOutcome): boolean;
9
12
  export declare function getStatus(outcome: OperationOutcome): number;
10
13
  export declare function assertOk(outcome: OperationOutcome): void;
11
14
  export declare class OperationOutcomeError extends Error {
package/dist/outcomes.js CHANGED
@@ -1,66 +1,103 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperationOutcomeError = exports.assertOk = exports.getStatus = exports.isNotFound = exports.isOk = exports.badRequest = exports.notFound = exports.notModified = exports.created = exports.allOk = void 0;
3
+ exports.OperationOutcomeError = exports.assertOk = exports.getStatus = exports.isGone = exports.isNotFound = exports.isOk = exports.badRequest = exports.accessDenied = exports.gone = exports.notFound = exports.notModified = exports.created = exports.allOk = void 0;
4
4
  const OK_ID = 'ok';
5
5
  const CREATED_ID = 'created';
6
+ const GONE_ID = 'gone';
6
7
  const NOT_MODIFIED_ID = 'not-modified';
7
8
  const NOT_FOUND_ID = 'not-found';
9
+ const ACCESS_DENIED = 'access-denied';
8
10
  exports.allOk = {
9
11
  resourceType: 'OperationOutcome',
10
12
  id: OK_ID,
11
- issue: [{
13
+ issue: [
14
+ {
12
15
  severity: 'information',
13
16
  code: 'information',
14
17
  details: {
15
- text: 'All OK'
16
- }
17
- }]
18
+ text: 'All OK',
19
+ },
20
+ },
21
+ ],
18
22
  };
19
23
  exports.created = {
20
24
  resourceType: 'OperationOutcome',
21
25
  id: CREATED_ID,
22
- issue: [{
26
+ issue: [
27
+ {
23
28
  severity: 'information',
24
29
  code: 'information',
25
30
  details: {
26
- text: 'Created'
27
- }
28
- }]
31
+ text: 'Created',
32
+ },
33
+ },
34
+ ],
29
35
  };
30
36
  exports.notModified = {
31
37
  resourceType: 'OperationOutcome',
32
38
  id: NOT_MODIFIED_ID,
33
- issue: [{
39
+ issue: [
40
+ {
34
41
  severity: 'information',
35
42
  code: 'information',
36
43
  details: {
37
- text: 'Not Modified'
38
- }
39
- }]
44
+ text: 'Not Modified',
45
+ },
46
+ },
47
+ ],
40
48
  };
41
49
  exports.notFound = {
42
50
  resourceType: 'OperationOutcome',
43
51
  id: NOT_FOUND_ID,
44
- issue: [{
52
+ issue: [
53
+ {
45
54
  severity: 'error',
46
55
  code: 'not-found',
47
56
  details: {
48
- text: 'Not found'
49
- }
50
- }]
57
+ text: 'Not found',
58
+ },
59
+ },
60
+ ],
61
+ };
62
+ exports.gone = {
63
+ resourceType: 'OperationOutcome',
64
+ id: GONE_ID,
65
+ issue: [
66
+ {
67
+ severity: 'error',
68
+ code: 'gone',
69
+ details: {
70
+ text: 'Gone',
71
+ },
72
+ },
73
+ ],
74
+ };
75
+ exports.accessDenied = {
76
+ resourceType: 'OperationOutcome',
77
+ id: ACCESS_DENIED,
78
+ issue: [
79
+ {
80
+ severity: 'error',
81
+ code: 'access-denied',
82
+ details: {
83
+ text: 'Access Denied',
84
+ },
85
+ },
86
+ ],
51
87
  };
52
88
  function badRequest(details, expression) {
53
89
  return {
54
90
  resourceType: 'OperationOutcome',
55
- // id: randomUUID(),
56
- issue: [{
91
+ issue: [
92
+ {
57
93
  severity: 'error',
58
94
  code: 'invalid',
59
95
  details: {
60
- text: details
96
+ text: details,
61
97
  },
62
- expression: (expression ? [expression] : undefined)
63
- }]
98
+ expression: expression ? [expression] : undefined,
99
+ },
100
+ ],
64
101
  };
65
102
  }
66
103
  exports.badRequest = badRequest;
@@ -72,6 +109,10 @@ function isNotFound(outcome) {
72
109
  return outcome.id === NOT_FOUND_ID;
73
110
  }
74
111
  exports.isNotFound = isNotFound;
112
+ function isGone(outcome) {
113
+ return outcome.id === GONE_ID;
114
+ }
115
+ exports.isGone = isGone;
75
116
  function getStatus(outcome) {
76
117
  if (outcome.id === OK_ID) {
77
118
  return 200;
@@ -82,9 +123,15 @@ function getStatus(outcome) {
82
123
  else if (outcome.id === NOT_MODIFIED_ID) {
83
124
  return 304;
84
125
  }
126
+ else if (outcome.id === ACCESS_DENIED) {
127
+ return 403;
128
+ }
85
129
  else if (outcome.id === NOT_FOUND_ID) {
86
130
  return 404;
87
131
  }
132
+ else if (outcome.id === GONE_ID) {
133
+ return 410;
134
+ }
88
135
  else {
89
136
  return 400;
90
137
  }
@@ -97,9 +144,9 @@ function assertOk(outcome) {
97
144
  }
98
145
  exports.assertOk = assertOk;
99
146
  class OperationOutcomeError extends Error {
100
- outcome;
101
147
  constructor(outcome) {
102
- super(outcome?.issue?.[0].details?.text);
148
+ var _a, _b;
149
+ super((_b = (_a = outcome === null || outcome === void 0 ? void 0 : outcome.issue) === null || _a === void 0 ? void 0 : _a[0].details) === null || _b === void 0 ? void 0 : _b.text);
103
150
  this.outcome = outcome;
104
151
  }
105
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"outcomes.js","sourceRoot":"","sources":["../src/outcomes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outcomes.js","sourceRoot":"","sources":["../src/outcomes.ts"],"names":[],"mappings":"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","sourcesContent":["import { OperationOutcome } from '@medplum/fhirtypes';\n\nconst OK_ID = 'ok';\nconst CREATED_ID = 'created';\nconst GONE_ID = 'gone';\nconst NOT_MODIFIED_ID = 'not-modified';\nconst NOT_FOUND_ID = 'not-found';\nconst ACCESS_DENIED = 'access-denied';\n\nexport const allOk: OperationOutcome = {\n resourceType: 'OperationOutcome',\n id: OK_ID,\n issue: [\n {\n severity: 'information',\n code: 'information',\n details: {\n text: 'All OK',\n },\n },\n ],\n};\n\nexport const created: OperationOutcome = {\n resourceType: 'OperationOutcome',\n id: CREATED_ID,\n issue: [\n {\n severity: 'information',\n code: 'information',\n details: {\n text: 'Created',\n },\n },\n ],\n};\n\nexport const notModified: OperationOutcome = {\n resourceType: 'OperationOutcome',\n id: NOT_MODIFIED_ID,\n issue: [\n {\n severity: 'information',\n code: 'information',\n details: {\n text: 'Not Modified',\n },\n },\n ],\n};\n\nexport const notFound: OperationOutcome = {\n resourceType: 'OperationOutcome',\n id: NOT_FOUND_ID,\n issue: [\n {\n severity: 'error',\n code: 'not-found',\n details: {\n text: 'Not found',\n },\n },\n ],\n};\n\nexport const gone: OperationOutcome = {\n resourceType: 'OperationOutcome',\n id: GONE_ID,\n issue: [\n {\n severity: 'error',\n code: 'gone',\n details: {\n text: 'Gone',\n },\n },\n ],\n};\n\nexport const accessDenied: OperationOutcome = {\n resourceType: 'OperationOutcome',\n id: ACCESS_DENIED,\n issue: [\n {\n severity: 'error',\n code: 'access-denied',\n details: {\n text: 'Access Denied',\n },\n },\n ],\n};\n\nexport function badRequest(details: string, expression?: string): OperationOutcome {\n return {\n resourceType: 'OperationOutcome',\n issue: [\n {\n severity: 'error',\n code: 'invalid',\n details: {\n text: details,\n },\n expression: expression ? [expression] : undefined,\n },\n ],\n };\n}\n\nexport function isOk(outcome: OperationOutcome): boolean {\n return outcome.id === OK_ID || outcome.id === CREATED_ID || outcome.id === NOT_MODIFIED_ID;\n}\n\nexport function isNotFound(outcome: OperationOutcome): boolean {\n return outcome.id === NOT_FOUND_ID;\n}\n\nexport function isGone(outcome: OperationOutcome): boolean {\n return outcome.id === GONE_ID;\n}\n\nexport function getStatus(outcome: OperationOutcome): number {\n if (outcome.id === OK_ID) {\n return 200;\n } else if (outcome.id === CREATED_ID) {\n return 201;\n } else if (outcome.id === NOT_MODIFIED_ID) {\n return 304;\n } else if (outcome.id === ACCESS_DENIED) {\n return 403;\n } else if (outcome.id === NOT_FOUND_ID) {\n return 404;\n } else if (outcome.id === GONE_ID) {\n return 410;\n } else {\n return 400;\n }\n}\n\nexport function assertOk(outcome: OperationOutcome): void {\n if (!isOk(outcome)) {\n throw new OperationOutcomeError(outcome);\n }\n}\n\nexport class OperationOutcomeError extends Error {\n readonly outcome: OperationOutcome;\n\n constructor(outcome: OperationOutcome) {\n super(outcome?.issue?.[0].details?.text);\n this.outcome = outcome;\n }\n}\n"]}
package/dist/search.js CHANGED
@@ -38,18 +38,16 @@ var Operator;
38
38
  function parseSearchDefinition(location) {
39
39
  const resourceType = location.pathname.split('/').pop();
40
40
  const params = new URLSearchParams(location.search);
41
- const fields = ['id', 'meta.versionId', '_lastUpdated', 'name'];
42
41
  const filters = [];
43
42
  const sortRules = [];
43
+ let fields;
44
44
  let page = 0;
45
45
  let count = 10;
46
46
  params.forEach((value, key) => {
47
47
  if (key === '_fields') {
48
- fields.length = 0;
49
- fields.push(...value.split(','));
50
- return;
48
+ fields = value.split(',');
51
49
  }
52
- if (key === '_sort') {
50
+ else if (key === '_sort') {
53
51
  if (value.startsWith('-')) {
54
52
  sortRules.push({ code: value.substr(1), descending: true });
55
53
  }
@@ -67,7 +65,7 @@ function parseSearchDefinition(location) {
67
65
  filters.push({
68
66
  code: key,
69
67
  operator: Operator.EQUALS,
70
- value: value
68
+ value: value,
71
69
  });
72
70
  }
73
71
  });
@@ -77,7 +75,7 @@ function parseSearchDefinition(location) {
77
75
  fields,
78
76
  page,
79
77
  count,
80
- sortRules
78
+ sortRules,
81
79
  };
82
80
  }
83
81
  exports.parseSearchDefinition = parseSearchDefinition;
@@ -93,7 +91,7 @@ function formatSearchQuery(definition) {
93
91
  params.push('_fields=' + definition.fields.join(','));
94
92
  }
95
93
  if (definition.filters) {
96
- definition.filters.forEach(filter => {
94
+ definition.filters.forEach((filter) => {
97
95
  params.push(filter.code + '=' + filter.value);
98
96
  });
99
97
  }
@@ -117,6 +115,6 @@ function formatSortRules(sortRules) {
117
115
  if (!sortRules || sortRules.length === 0) {
118
116
  return '';
119
117
  }
120
- return '_sort=' + sortRules.map(sr => sr.descending ? '-' + sr.code : sr.code).join(',');
118
+ return '_sort=' + sortRules.map((sr) => (sr.descending ? '-' + sr.code : sr.code)).join(',');
121
119
  }
122
120
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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","sourcesContent":["export interface SearchRequest {\n readonly resourceType: string;\n readonly filters?: Filter[];\n readonly sortRules?: SortRule[];\n readonly page?: number;\n readonly count?: number;\n readonly fields?: string[];\n readonly name?: string;\n}\n\nexport interface Filter {\n code: string;\n operator: Operator;\n value: string;\n unitSystem?: string;\n unitCode?: string;\n}\n\nexport interface SortRule {\n code: string;\n descending?: boolean;\n}\n\n/**\n * Search operators.\n * These operators represent \"modifiers\" and \"prefixes\" in FHIR search.\n * See: https://www.hl7.org/fhir/search.html\n */\nexport enum Operator {\n EQUALS = 'eq',\n NOT_EQUALS = 'ne',\n\n // Numbers\n GREATER_THAN = 'gt',\n LESS_THAN = 'lt',\n GREATER_THAN_OR_EQUALS = 'ge',\n LESS_THAN_OR_EQUALS = 'le',\n\n // Dates\n STARTS_AFTER = 'sa',\n ENDS_BEFORE = 'eb',\n APPROXIMATELY = 'ap',\n\n // String\n CONTAINS = 'contains',\n EXACT = 'exact',\n\n // Token\n TEXT = 'text',\n ABOVE = 'above',\n BELOW = 'below',\n IN = 'in',\n NOT_IN = 'not-in',\n OF_TYPE = 'of-type',\n}\n\n/**\n * Parses a URL into a SearchRequest.\n * @param location The URL to parse.\n * @returns Parsed search definition.\n */\nexport function parseSearchDefinition(location: { pathname: string; search?: string }): SearchRequest {\n const resourceType = location.pathname.split('/').pop() as string;\n const params = new URLSearchParams(location.search);\n const filters: Filter[] = [];\n const sortRules: SortRule[] = [];\n let fields;\n let page = 0;\n let count = 10;\n\n params.forEach((value, key) => {\n if (key === '_fields') {\n fields = value.split(',');\n } else if (key === '_sort') {\n if (value.startsWith('-')) {\n sortRules.push({ code: value.substr(1), descending: true });\n } else {\n sortRules.push({ code: value });\n }\n } else if (key === '_page') {\n page = parseInt(value);\n } else if (key === '_count') {\n count = parseInt(value);\n } else {\n filters.push({\n code: key,\n operator: Operator.EQUALS,\n value: value,\n });\n }\n });\n\n return {\n resourceType,\n filters,\n fields,\n page,\n count,\n sortRules,\n };\n}\n\n/**\n * Formats a search definition object into a query string.\n * Note: The return value does not include the resource type.\n * @param {!SearchRequest} definition The search definition.\n * @returns Formatted URL.\n */\nexport function formatSearchQuery(definition: SearchRequest): string {\n const params: string[] = [];\n\n if (definition.fields) {\n params.push('_fields=' + definition.fields.join(','));\n }\n\n if (definition.filters) {\n definition.filters.forEach((filter) => {\n params.push(filter.code + '=' + filter.value);\n });\n }\n\n if (definition.sortRules) {\n params.push(formatSortRules(definition.sortRules));\n }\n\n if (definition.page && definition.page > 0) {\n params.push('_page=' + definition.page);\n }\n\n if (definition.count && definition.count > 0) {\n params.push('_count=' + definition.count);\n }\n\n if (params.length === 0) {\n return '';\n }\n\n params.sort();\n return '?' + params.join('&');\n}\n\nfunction formatSortRules(sortRules: SortRule[] | undefined): string {\n if (!sortRules || sortRules.length === 0) {\n return '';\n }\n return '_sort=' + sortRules.map((sr) => (sr.descending ? '-' + sr.code : sr.code)).join(',');\n}\n"]}
@@ -0,0 +1,34 @@
1
+ import { SearchParameter } from '@medplum/fhirtypes';
2
+ import { IndexedStructureDefinition } from './types';
3
+ export declare enum SearchParameterType {
4
+ BOOLEAN = "BOOLEAN",
5
+ NUMBER = "NUMBER",
6
+ QUANTITY = "QUANTITY",
7
+ TEXT = "TEXT",
8
+ REFERENCE = "REFERENCE",
9
+ DATE = "DATE",
10
+ DATETIME = "DATETIME",
11
+ PERIOD = "PERIOD"
12
+ }
13
+ export interface SearchParameterDetails {
14
+ readonly columnName: string;
15
+ readonly type: SearchParameterType;
16
+ readonly array?: boolean;
17
+ }
18
+ /**
19
+ * Returns the type details of a SearchParameter.
20
+ *
21
+ * The SearchParameter resource has a "type" parameter, but that is missing some critical information.
22
+ *
23
+ * For example:
24
+ * 1) The "date" type includes "date", "datetime", and "period".
25
+ * 2) The "token" type includes enums and booleans.
26
+ * 3) Arrays/multiple values are not reflected at all.
27
+ *
28
+ * @param structureDefinitions Collection of StructureDefinition resources indexed by name.
29
+ * @param resourceType The root resource type.
30
+ * @param searchParam The search parameter.
31
+ * @returns The search parameter type details.
32
+ */
33
+ export declare function getSearchParameterDetails(structureDefinitions: IndexedStructureDefinition, resourceType: string, searchParam: SearchParameter): SearchParameterDetails;
34
+ export declare function getExpressionForResourceType(resourceType: string, expression: string): string | undefined;