@smile-cdr/fhirts 2.3.0 → 2.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 (306) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/.github/workflows/npm-publish.yml +12 -6
  3. package/.github/workflows/pr-build.yml +7 -3
  4. package/.prettierignore +22 -0
  5. package/.prettierrc +10 -0
  6. package/GETTINGSTARTED.md +57 -15
  7. package/dist/FHIR-DSTU2.js +1 -1
  8. package/dist/FHIR-R3.js +3 -1
  9. package/dist/FHIR-R4/classes/account.js +1 -1
  10. package/dist/FHIR-R4/classes/activityDefinition.js +1 -1
  11. package/dist/FHIR-R4/classes/address.js +1 -1
  12. package/dist/FHIR-R4/classes/adverseEvent.js +1 -1
  13. package/dist/FHIR-R4/classes/age.js +1 -1
  14. package/dist/FHIR-R4/classes/allergyIntolerance.js +1 -1
  15. package/dist/FHIR-R4/classes/allergyIntoleranceReaction.js +1 -1
  16. package/dist/FHIR-R4/classes/appointment.js +1 -1
  17. package/dist/FHIR-R4/classes/appointmentParticipant.js +1 -1
  18. package/dist/FHIR-R4/classes/auditEvent.js +1 -1
  19. package/dist/FHIR-R4/classes/auditEventNetwork.js +1 -1
  20. package/dist/FHIR-R4/classes/biologicallyDerivedProduct.js +1 -1
  21. package/dist/FHIR-R4/classes/biologicallyDerivedProductStorage.js +1 -1
  22. package/dist/FHIR-R4/classes/bundle.js +1 -1
  23. package/dist/FHIR-R4/classes/capabilityStatement.js +1 -1
  24. package/dist/FHIR-R4/classes/capabilityStatementDocument.js +1 -1
  25. package/dist/FHIR-R4/classes/capabilityStatementInteraction.js +1 -1
  26. package/dist/FHIR-R4/classes/capabilityStatementInteraction1.js +1 -1
  27. package/dist/FHIR-R4/classes/capabilityStatementResource.js +1 -1
  28. package/dist/FHIR-R4/classes/capabilityStatementRest.js +1 -1
  29. package/dist/FHIR-R4/classes/capabilityStatementSearchParam.js +1 -1
  30. package/dist/FHIR-R4/classes/capabilityStatementSupportedMessage.js +1 -1
  31. package/dist/FHIR-R4/classes/carePlanDetail.js +1 -1
  32. package/dist/FHIR-R4/classes/careTeam.js +1 -1
  33. package/dist/FHIR-R4/classes/catalogEntry.js +1 -1
  34. package/dist/FHIR-R4/classes/catalogEntryRelatedEntry.js +1 -1
  35. package/dist/FHIR-R4/classes/chargeItem.js +1 -1
  36. package/dist/FHIR-R4/classes/chargeItemDefinition.js +1 -1
  37. package/dist/FHIR-R4/classes/claim.js +1 -1
  38. package/dist/FHIR-R4/classes/claimResponseProcessNote.js +1 -1
  39. package/dist/FHIR-R4/classes/codeSystem.js +1 -1
  40. package/dist/FHIR-R4/classes/codeSystemProperty.js +1 -1
  41. package/dist/FHIR-R4/classes/compartmentDefinition.js +1 -1
  42. package/dist/FHIR-R4/classes/composition.js +1 -1
  43. package/dist/FHIR-R4/classes/compositionAttester.js +1 -1
  44. package/dist/FHIR-R4/classes/conceptMap.js +1 -1
  45. package/dist/FHIR-R4/classes/conceptMapTarget.js +1 -1
  46. package/dist/FHIR-R4/classes/conceptMapUnmapped.js +1 -1
  47. package/dist/FHIR-R4/classes/consent.js +1 -1
  48. package/dist/FHIR-R4/classes/consentData.js +1 -1
  49. package/dist/FHIR-R4/classes/consentProvision.js +1 -1
  50. package/dist/FHIR-R4/classes/contactPoint.js +1 -1
  51. package/dist/FHIR-R4/classes/contributor.js +1 -1
  52. package/dist/FHIR-R4/classes/count.js +1 -1
  53. package/dist/FHIR-R4/classes/coverageEligibilityResponse.js +1 -1
  54. package/dist/FHIR-R4/classes/dataRequirementSort.js +1 -1
  55. package/dist/FHIR-R4/classes/detectedIssue.js +1 -1
  56. package/dist/FHIR-R4/classes/device.js +1 -1
  57. package/dist/FHIR-R4/classes/deviceDefinitionDeviceName.js +1 -1
  58. package/dist/FHIR-R4/classes/deviceDeviceName.js +1 -1
  59. package/dist/FHIR-R4/classes/deviceMetric.js +1 -1
  60. package/dist/FHIR-R4/classes/deviceMetricCalibration.js +1 -1
  61. package/dist/FHIR-R4/classes/deviceUdiCarrier.js +1 -1
  62. package/dist/FHIR-R4/classes/deviceUseStatement.js +1 -1
  63. package/dist/FHIR-R4/classes/diagnosticReport.js +1 -1
  64. package/dist/FHIR-R4/classes/distance.js +1 -1
  65. package/dist/FHIR-R4/classes/documentManifest.js +1 -1
  66. package/dist/FHIR-R4/classes/documentReference.js +1 -1
  67. package/dist/FHIR-R4/classes/documentReferenceRelatesTo.js +1 -1
  68. package/dist/FHIR-R4/classes/duration.js +1 -1
  69. package/dist/FHIR-R4/classes/effectEvidenceSynthesis.js +1 -1
  70. package/dist/FHIR-R4/classes/effectEvidenceSynthesisResultsByExposure.js +1 -1
  71. package/dist/FHIR-R4/classes/elementDefinitionBinding.js +1 -1
  72. package/dist/FHIR-R4/classes/elementDefinitionConstraint.js +1 -1
  73. package/dist/FHIR-R4/classes/elementDefinitionDiscriminator.js +1 -1
  74. package/dist/FHIR-R4/classes/elementDefinitionSlicing.js +1 -1
  75. package/dist/FHIR-R4/classes/elementDefinitionType.js +1 -1
  76. package/dist/FHIR-R4/classes/encounter.js +1 -1
  77. package/dist/FHIR-R4/classes/encounterLocation.js +1 -1
  78. package/dist/FHIR-R4/classes/encounterStatusHistory.js +1 -1
  79. package/dist/FHIR-R4/classes/endpoint.js +1 -1
  80. package/dist/FHIR-R4/classes/enrollmentResponse.js +1 -1
  81. package/dist/FHIR-R4/classes/episodeOfCare.js +1 -1
  82. package/dist/FHIR-R4/classes/episodeOfCareStatusHistory.js +1 -1
  83. package/dist/FHIR-R4/classes/eventDefinition.js +1 -1
  84. package/dist/FHIR-R4/classes/evidence.js +1 -1
  85. package/dist/FHIR-R4/classes/evidenceVariable.js +1 -1
  86. package/dist/FHIR-R4/classes/evidenceVariableCharacteristic.js +1 -1
  87. package/dist/FHIR-R4/classes/exampleScenario.js +1 -1
  88. package/dist/FHIR-R4/classes/exampleScenarioActor.js +1 -1
  89. package/dist/FHIR-R4/classes/explanationOfBenefit.js +1 -1
  90. package/dist/FHIR-R4/classes/explanationOfBenefitProcessNote.js +1 -1
  91. package/dist/FHIR-R4/classes/expression.js +1 -1
  92. package/dist/FHIR-R4/classes/familyMemberHistory.js +1 -1
  93. package/dist/FHIR-R4/classes/flag.js +1 -1
  94. package/dist/FHIR-R4/classes/goal.js +1 -1
  95. package/dist/FHIR-R4/classes/graphDefinition.js +1 -1
  96. package/dist/FHIR-R4/classes/graphDefinitionCompartment.js +1 -1
  97. package/dist/FHIR-R4/classes/group.js +1 -1
  98. package/dist/FHIR-R4/classes/guidanceResponse.js +1 -1
  99. package/dist/FHIR-R4/classes/humanName.js +1 -1
  100. package/dist/FHIR-R4/classes/identifier.js +1 -1
  101. package/dist/FHIR-R4/classes/imagingStudy.js +1 -1
  102. package/dist/FHIR-R4/classes/implementationGuide.js +1 -1
  103. package/dist/FHIR-R4/classes/implementationGuidePage.js +1 -1
  104. package/dist/FHIR-R4/classes/implementationGuideParameter.js +1 -1
  105. package/dist/FHIR-R4/classes/insurancePlan.js +1 -1
  106. package/dist/FHIR-R4/classes/invoice.js +1 -1
  107. package/dist/FHIR-R4/classes/invoicePriceComponent.js +1 -1
  108. package/dist/FHIR-R4/classes/library.js +1 -1
  109. package/dist/FHIR-R4/classes/linkageItem.js +1 -1
  110. package/dist/FHIR-R4/classes/list.js +1 -1
  111. package/dist/FHIR-R4/classes/location.js +1 -1
  112. package/dist/FHIR-R4/classes/measure.js +1 -1
  113. package/dist/FHIR-R4/classes/measureReport.js +1 -1
  114. package/dist/FHIR-R4/classes/messageDefinition.js +1 -1
  115. package/dist/FHIR-R4/classes/messageHeaderResponse.js +1 -1
  116. package/dist/FHIR-R4/classes/molecularSequence.js +1 -1
  117. package/dist/FHIR-R4/classes/molecularSequenceQuality.js +1 -1
  118. package/dist/FHIR-R4/classes/molecularSequenceReferenceSeq.js +1 -1
  119. package/dist/FHIR-R4/classes/molecularSequenceRepository.js +1 -1
  120. package/dist/FHIR-R4/classes/namingSystem.js +1 -1
  121. package/dist/FHIR-R4/classes/namingSystemUniqueId.js +1 -1
  122. package/dist/FHIR-R4/classes/narrative.js +1 -1
  123. package/dist/FHIR-R4/classes/observation.js +1 -1
  124. package/dist/FHIR-R4/classes/observationDefinitionQualifiedInterval.js +1 -1
  125. package/dist/FHIR-R4/classes/operationDefinition.js +1 -1
  126. package/dist/FHIR-R4/classes/operationDefinitionBinding.js +1 -1
  127. package/dist/FHIR-R4/classes/operationDefinitionParameter.js +1 -1
  128. package/dist/FHIR-R4/classes/patient.js +1 -1
  129. package/dist/FHIR-R4/classes/patientContact.js +1 -1
  130. package/dist/FHIR-R4/classes/patientLink.js +1 -1
  131. package/dist/FHIR-R4/classes/paymentReconciliation.js +1 -1
  132. package/dist/FHIR-R4/classes/paymentReconciliationProcessNote.js +1 -1
  133. package/dist/FHIR-R4/classes/person.js +1 -1
  134. package/dist/FHIR-R4/classes/personLink.js +1 -1
  135. package/dist/FHIR-R4/classes/planDefinition.js +1 -1
  136. package/dist/FHIR-R4/classes/planDefinitionAction.js +1 -1
  137. package/dist/FHIR-R4/classes/planDefinitionCondition.js +1 -1
  138. package/dist/FHIR-R4/classes/planDefinitionParticipant.js +1 -1
  139. package/dist/FHIR-R4/classes/planDefinitionRelatedAction.js +1 -1
  140. package/dist/FHIR-R4/classes/practitioner.js +1 -1
  141. package/dist/FHIR-R4/classes/provenanceEntity.js +1 -1
  142. package/dist/FHIR-R4/classes/quantity.js +1 -1
  143. package/dist/FHIR-R4/classes/questionnaire.js +1 -1
  144. package/dist/FHIR-R4/classes/questionnaireEnableWhen.js +1 -1
  145. package/dist/FHIR-R4/classes/questionnaireItem.js +1 -1
  146. package/dist/FHIR-R4/classes/questionnaireResponse.js +1 -1
  147. package/dist/FHIR-R4/classes/relatedArtifact.js +1 -1
  148. package/dist/FHIR-R4/classes/relatedPerson.js +1 -1
  149. package/dist/FHIR-R4/classes/researchDefinition.js +1 -1
  150. package/dist/FHIR-R4/classes/researchElementDefinition.js +1 -1
  151. package/dist/FHIR-R4/classes/researchElementDefinitionCharacteristic.js +1 -1
  152. package/dist/FHIR-R4/classes/researchStudy.js +1 -1
  153. package/dist/FHIR-R4/classes/researchSubject.js +1 -1
  154. package/dist/FHIR-R4/classes/riskEvidenceSynthesis.js +1 -1
  155. package/dist/FHIR-R4/classes/searchParameter.js +1 -1
  156. package/dist/FHIR-R4/classes/slot.js +1 -1
  157. package/dist/FHIR-R4/classes/specimen.js +1 -1
  158. package/dist/FHIR-R4/classes/specimenDefinitionTypeTested.js +1 -1
  159. package/dist/FHIR-R4/classes/structureDefinition.js +1 -1
  160. package/dist/FHIR-R4/classes/structureDefinitionContext.js +1 -1
  161. package/dist/FHIR-R4/classes/structureMap.js +1 -1
  162. package/dist/FHIR-R4/classes/structureMapGroup.js +1 -1
  163. package/dist/FHIR-R4/classes/structureMapInput.js +1 -1
  164. package/dist/FHIR-R4/classes/structureMapSource.js +1 -1
  165. package/dist/FHIR-R4/classes/structureMapStructure.js +1 -1
  166. package/dist/FHIR-R4/classes/structureMapTarget.js +1 -1
  167. package/dist/FHIR-R4/classes/subscription.js +1 -1
  168. package/dist/FHIR-R4/classes/subscriptionChannel.js +1 -1
  169. package/dist/FHIR-R4/classes/substance.js +1 -1
  170. package/dist/FHIR-R4/classes/supplyDelivery.js +1 -1
  171. package/dist/FHIR-R4/classes/supplyRequest.js +1 -1
  172. package/dist/FHIR-R4/classes/task.js +1 -1
  173. package/dist/FHIR-R4/classes/terminologyCapabilities.js +1 -1
  174. package/dist/FHIR-R4/classes/testReport.js +1 -1
  175. package/dist/FHIR-R4/classes/testReportAssert.js +1 -1
  176. package/dist/FHIR-R4/classes/testReportOperation.js +1 -1
  177. package/dist/FHIR-R4/classes/testReportParticipant.js +1 -1
  178. package/dist/FHIR-R4/classes/testScript.js +1 -1
  179. package/dist/FHIR-R4/classes/testScriptAssert.js +1 -1
  180. package/dist/FHIR-R4/classes/testScriptOperation.js +1 -1
  181. package/dist/FHIR-R4/classes/timingRepeat.js +1 -1
  182. package/dist/FHIR-R4/classes/triggerDefinition.js +1 -1
  183. package/dist/FHIR-R4/classes/valueSet.js +1 -1
  184. package/dist/FHIR-R4/classes/valueSetFilter.js +1 -1
  185. package/dist/FHIR-R4/classes/visionPrescriptionLensSpecification.js +1 -1
  186. package/dist/FHIR-R4/classes/visionPrescriptionPrism.js +1 -1
  187. package/dist/FHIR-R4/interfaces/IAccount.js +1 -1
  188. package/dist/FHIR-R4/interfaces/IActivityDefinition.js +1 -1
  189. package/dist/FHIR-R4/interfaces/IAdverseEvent.js +1 -1
  190. package/dist/FHIR-R4/interfaces/IAllergyIntolerance.js +1 -1
  191. package/dist/FHIR-R4/interfaces/IAppointment.js +1 -1
  192. package/dist/FHIR-R4/interfaces/IAuditEvent.js +1 -1
  193. package/dist/FHIR-R4/interfaces/IBiologicallyDerivedProduct.js +1 -1
  194. package/dist/FHIR-R4/interfaces/IBundle.js +1 -1
  195. package/dist/FHIR-R4/interfaces/ICapabilityStatement.js +1 -1
  196. package/dist/FHIR-R4/interfaces/ICareTeam.js +1 -1
  197. package/dist/FHIR-R4/interfaces/ICatalogEntry.js +1 -1
  198. package/dist/FHIR-R4/interfaces/IChargeItem.js +1 -1
  199. package/dist/FHIR-R4/interfaces/IChargeItemDefinition.js +1 -1
  200. package/dist/FHIR-R4/interfaces/IClaim.js +1 -1
  201. package/dist/FHIR-R4/interfaces/ICodeSystem.js +1 -1
  202. package/dist/FHIR-R4/interfaces/ICompartmentDefinition.js +1 -1
  203. package/dist/FHIR-R4/interfaces/IComposition.js +1 -1
  204. package/dist/FHIR-R4/interfaces/IConceptMap.js +1 -1
  205. package/dist/FHIR-R4/interfaces/IConsent.js +1 -1
  206. package/dist/FHIR-R4/interfaces/ICoverageEligibilityResponse.js +1 -1
  207. package/dist/FHIR-R4/interfaces/IDetectedIssue.js +1 -1
  208. package/dist/FHIR-R4/interfaces/IDevice.js +1 -1
  209. package/dist/FHIR-R4/interfaces/IDeviceMetric.js +1 -1
  210. package/dist/FHIR-R4/interfaces/IDeviceUseStatement.js +1 -1
  211. package/dist/FHIR-R4/interfaces/IDiagnosticReport.js +1 -1
  212. package/dist/FHIR-R4/interfaces/IDocumentManifest.js +1 -1
  213. package/dist/FHIR-R4/interfaces/IDocumentReference.js +1 -1
  214. package/dist/FHIR-R4/interfaces/IEffectEvidenceSynthesis.js +1 -1
  215. package/dist/FHIR-R4/interfaces/IEncounter.js +1 -1
  216. package/dist/FHIR-R4/interfaces/IEndpoint.js +1 -1
  217. package/dist/FHIR-R4/interfaces/IEnrollmentResponse.js +1 -1
  218. package/dist/FHIR-R4/interfaces/IEpisodeOfCare.js +1 -1
  219. package/dist/FHIR-R4/interfaces/IEventDefinition.js +1 -1
  220. package/dist/FHIR-R4/interfaces/IEvidence.js +1 -1
  221. package/dist/FHIR-R4/interfaces/IEvidenceVariable.js +1 -1
  222. package/dist/FHIR-R4/interfaces/IExampleScenario.js +1 -1
  223. package/dist/FHIR-R4/interfaces/IExplanationOfBenefit.js +1 -1
  224. package/dist/FHIR-R4/interfaces/IFamilyMemberHistory.js +1 -1
  225. package/dist/FHIR-R4/interfaces/IFlag.js +1 -1
  226. package/dist/FHIR-R4/interfaces/IGoal.js +1 -1
  227. package/dist/FHIR-R4/interfaces/IGraphDefinition.js +1 -1
  228. package/dist/FHIR-R4/interfaces/IGroup.js +1 -1
  229. package/dist/FHIR-R4/interfaces/IGuidanceResponse.js +1 -1
  230. package/dist/FHIR-R4/interfaces/IImagingStudy.js +1 -1
  231. package/dist/FHIR-R4/interfaces/IImplementationGuide.js +1 -1
  232. package/dist/FHIR-R4/interfaces/IInsurancePlan.js +1 -1
  233. package/dist/FHIR-R4/interfaces/IInvoice.js +1 -1
  234. package/dist/FHIR-R4/interfaces/ILibrary.js +1 -1
  235. package/dist/FHIR-R4/interfaces/IList.js +1 -1
  236. package/dist/FHIR-R4/interfaces/ILocation.js +1 -1
  237. package/dist/FHIR-R4/interfaces/IMeasure.js +1 -1
  238. package/dist/FHIR-R4/interfaces/IMeasureReport.js +1 -1
  239. package/dist/FHIR-R4/interfaces/IMessageDefinition.js +1 -1
  240. package/dist/FHIR-R4/interfaces/IMolecularSequence.js +1 -1
  241. package/dist/FHIR-R4/interfaces/INamingSystem.js +1 -1
  242. package/dist/FHIR-R4/interfaces/IObservation.js +1 -1
  243. package/dist/FHIR-R4/interfaces/IOperationDefinition.js +1 -1
  244. package/dist/FHIR-R4/interfaces/IPatient.js +1 -1
  245. package/dist/FHIR-R4/interfaces/IPaymentReconciliation.js +1 -1
  246. package/dist/FHIR-R4/interfaces/IPerson.js +1 -1
  247. package/dist/FHIR-R4/interfaces/IPlanDefinition.js +1 -1
  248. package/dist/FHIR-R4/interfaces/IPractitioner.js +1 -1
  249. package/dist/FHIR-R4/interfaces/IQuestionnaire.js +1 -1
  250. package/dist/FHIR-R4/interfaces/IQuestionnaireResponse.js +1 -1
  251. package/dist/FHIR-R4/interfaces/IRelatedPerson.js +1 -1
  252. package/dist/FHIR-R4/interfaces/IResearchDefinition.js +1 -1
  253. package/dist/FHIR-R4/interfaces/IResearchElementDefinition.js +1 -1
  254. package/dist/FHIR-R4/interfaces/IResearchStudy.js +1 -1
  255. package/dist/FHIR-R4/interfaces/IResearchSubject.js +1 -1
  256. package/dist/FHIR-R4/interfaces/IRiskEvidenceSynthesis.js +1 -1
  257. package/dist/FHIR-R4/interfaces/ISearchParameter.js +1 -1
  258. package/dist/FHIR-R4/interfaces/ISlot.js +1 -1
  259. package/dist/FHIR-R4/interfaces/ISpecimen.js +1 -1
  260. package/dist/FHIR-R4/interfaces/IStructureDefinition.js +1 -1
  261. package/dist/FHIR-R4/interfaces/IStructureMap.js +1 -1
  262. package/dist/FHIR-R4/interfaces/ISubscription.js +1 -1
  263. package/dist/FHIR-R4/interfaces/ISubstance.js +1 -1
  264. package/dist/FHIR-R4/interfaces/ISupplyDelivery.js +1 -1
  265. package/dist/FHIR-R4/interfaces/ISupplyRequest.js +1 -1
  266. package/dist/FHIR-R4/interfaces/ITask.js +1 -1
  267. package/dist/FHIR-R4/interfaces/ITerminologyCapabilities.js +1 -1
  268. package/dist/FHIR-R4/interfaces/ITestReport.js +1 -1
  269. package/dist/FHIR-R4/interfaces/ITestScript.js +1 -1
  270. package/dist/FHIR-R4/interfaces/IValueSet.js +1 -1
  271. package/dist/FHIR-R5/fHIRJSONRESOURCE.d.ts +172 -0
  272. package/dist/FHIR-R5/fHIRJSONRESOURCE.js +2 -0
  273. package/dist/FHIR-R5/openApiSchemaUpdated.d.ts +172 -0
  274. package/dist/FHIR-R5/openApiSchemaUpdated.js +2 -0
  275. package/dist/index.d.ts +1 -1
  276. package/dist/index.js +39 -6
  277. package/dist/library/BundleUtils/BundleUtils.d.ts +11 -5
  278. package/dist/library/BundleUtils/BundleUtils.js +23 -5
  279. package/dist/library/BundleUtils/BundleUtils.spec.js +24 -24
  280. package/dist/library/PatchUtils/PatchUtils.d.ts +1 -1
  281. package/dist/library/PatchUtils/PatchUtils.js +31 -31
  282. package/dist/library/PatchUtils/PatchUtils.spec.js +159 -124
  283. package/dist/library/QueryBuilder/QueryBuilder.d.ts +1 -1
  284. package/dist/library/QueryBuilder/QueryBuilder.js +25 -17
  285. package/dist/library/QueryBuilder/QueryBuilder.spec.js +44 -43
  286. package/dist/library/ResourceUtils/ResourceUtils.d.ts +15 -7
  287. package/dist/library/ResourceUtils/ResourceUtils.js +19 -11
  288. package/dist/library/ResourceUtils/ResourceUtils.spec.js +113 -112
  289. package/dist/library/constants.js +2 -2
  290. package/dist/library/dataTypes.d.ts +6 -6
  291. package/eslint.config.mjs +69 -0
  292. package/package.json +21 -7
  293. package/src/FHIR-DSTU2.ts +1 -1
  294. package/src/FHIR-R3.ts +3 -1
  295. package/src/index.ts +12 -1
  296. package/src/library/BundleUtils/BundleUtils.spec.ts +26 -39
  297. package/src/library/BundleUtils/BundleUtils.ts +43 -29
  298. package/src/library/PatchUtils/PatchUtils.spec.ts +173 -129
  299. package/src/library/PatchUtils/PatchUtils.ts +39 -52
  300. package/src/library/QueryBuilder/QueryBuilder.spec.ts +54 -51
  301. package/src/library/QueryBuilder/QueryBuilder.ts +41 -31
  302. package/src/library/ResourceUtils/ResourceUtils.spec.ts +133 -164
  303. package/src/library/ResourceUtils/ResourceUtils.ts +37 -27
  304. package/src/library/constants.ts +17 -17
  305. package/src/library/dataTypes.ts +7 -7
  306. package/tsconfig.json +25 -2
@@ -1,7 +1,6 @@
1
- import { PATCH_DATATYPE, PatchAddValueParams, PatchAddBackboneElementParams } from "../constants";
2
- import { PatchUtils } from "./PatchUtils";
3
- describe("PatchUtils", () => {
4
-
1
+ import { PATCH_DATATYPE, PatchAddValueParams, PatchAddBackboneElementParams } from '../constants';
2
+ import { PatchUtils } from './PatchUtils';
3
+ describe('PatchUtils', () => {
5
4
  let patchUtils: PatchUtils;
6
5
 
7
6
  beforeEach(() => {
@@ -11,23 +10,33 @@ describe("PatchUtils", () => {
11
10
  it('createReplaceParameters() should create Parameters for FHIR patch replace operation', () => {
12
11
  // setup
13
12
  const expected = {
14
- "resourceType": "Parameters",
15
- "parameter": [ {
16
- "name": "operation",
17
- "part": [ {
18
- "name": "type",
19
- "valueCode": "replace"
20
- }, {
21
- "name": "path",
22
- "valueString": "Patient.birthDate"
23
- }, {
24
- "name": "value",
25
- "valueDate": "1930-01-01"
26
- } ]
27
- } ]
13
+ resourceType: 'Parameters',
14
+ parameter: [
15
+ {
16
+ name: 'operation',
17
+ part: [
18
+ {
19
+ name: 'type',
20
+ valueCode: 'replace',
21
+ },
22
+ {
23
+ name: 'path',
24
+ valueString: 'Patient.birthDate',
25
+ },
26
+ {
27
+ name: 'value',
28
+ valueDate: '1930-01-01',
29
+ },
30
+ ],
31
+ },
32
+ ],
28
33
  };
29
34
  // execute
30
- const actual = patchUtils.createReplaceParameters("Patient.birthDate", "1930-01-01", PATCH_DATATYPE.DATE);
35
+ const actual = patchUtils.createReplaceParameters(
36
+ 'Patient.birthDate',
37
+ '1930-01-01',
38
+ PATCH_DATATYPE.DATE
39
+ );
31
40
  // validate
32
41
  expect(actual.getPatchParameters()).toEqual(expected);
33
42
  });
@@ -35,20 +44,25 @@ describe("PatchUtils", () => {
35
44
  it('createDeleteParameters() should create Parameters for FHIR patch delete operation', () => {
36
45
  // setup
37
46
  const expected = {
38
- "resourceType": "Parameters",
39
- "parameter": [ {
40
- "name": "operation",
41
- "part": [ {
42
- "name": "type",
43
- "valueCode": "delete"
44
- }, {
45
- "name": "path",
46
- "valueString": "Patient.status"
47
- }]
48
- } ]
47
+ resourceType: 'Parameters',
48
+ parameter: [
49
+ {
50
+ name: 'operation',
51
+ part: [
52
+ {
53
+ name: 'type',
54
+ valueCode: 'delete',
55
+ },
56
+ {
57
+ name: 'path',
58
+ valueString: 'Patient.status',
59
+ },
60
+ ],
61
+ },
62
+ ],
49
63
  };
50
64
  // execute
51
- const actual = patchUtils.createDeleteParameters("Patient.status");
65
+ const actual = patchUtils.createDeleteParameters('Patient.status');
52
66
  // validate
53
67
  expect(actual.getPatchParameters()).toEqual(expected);
54
68
  });
@@ -56,26 +70,33 @@ describe("PatchUtils", () => {
56
70
  it('createMoveParameters() should create Parameters for FHIR patch move operation', () => {
57
71
  // setup
58
72
  const expected = {
59
- "resourceType": "Parameters",
60
- "parameter": [ {
61
- "name": "operation",
62
- "part": [ {
63
- "name": "type",
64
- "valueCode": "move"
65
- }, {
66
- "name": "path",
67
- "valueString": "Patient.identifier"
68
- }, {
69
- "name": "source",
70
- "valueInteger": 0
71
- }, {
72
- "name": "destination",
73
- "valueInteger": 1
74
- }]
75
- } ]
73
+ resourceType: 'Parameters',
74
+ parameter: [
75
+ {
76
+ name: 'operation',
77
+ part: [
78
+ {
79
+ name: 'type',
80
+ valueCode: 'move',
81
+ },
82
+ {
83
+ name: 'path',
84
+ valueString: 'Patient.identifier',
85
+ },
86
+ {
87
+ name: 'source',
88
+ valueInteger: 0,
89
+ },
90
+ {
91
+ name: 'destination',
92
+ valueInteger: 1,
93
+ },
94
+ ],
95
+ },
96
+ ],
76
97
  };
77
98
  // execute
78
- const actual = patchUtils.createMoveParameters("Patient.identifier", 0, 1);
99
+ const actual = patchUtils.createMoveParameters('Patient.identifier', 0, 1);
79
100
  // validate
80
101
  expect(actual.getPatchParameters()).toEqual(expected);
81
102
  });
@@ -83,30 +104,37 @@ describe("PatchUtils", () => {
83
104
  it('createAddParameters() should create Parameters for FHIR patch add operation', () => {
84
105
  // setup
85
106
  const expected = {
86
- "resourceType": "Parameters",
87
- "parameter": [ {
88
- "name": "operation",
89
- "part": [ {
90
- "name": "type",
91
- "valueCode": "add"
92
- }, {
93
- "name": "path",
94
- "valueString": "Patient"
95
- }, {
96
- "name": "name",
97
- "valueString": "birthDate"
98
- }, {
99
- "name": "value",
100
- "valueDate": "1930-01-01"
101
- }]
102
- } ]
107
+ resourceType: 'Parameters',
108
+ parameter: [
109
+ {
110
+ name: 'operation',
111
+ part: [
112
+ {
113
+ name: 'type',
114
+ valueCode: 'add',
115
+ },
116
+ {
117
+ name: 'path',
118
+ valueString: 'Patient',
119
+ },
120
+ {
121
+ name: 'name',
122
+ valueString: 'birthDate',
123
+ },
124
+ {
125
+ name: 'value',
126
+ valueDate: '1930-01-01',
127
+ },
128
+ ],
129
+ },
130
+ ],
103
131
  };
104
132
  const params: PatchAddValueParams = {
105
- "value": "1930-01-01",
106
- "valueDataType": PATCH_DATATYPE.DATE
133
+ value: '1930-01-01',
134
+ valueDataType: PATCH_DATATYPE.DATE,
107
135
  };
108
136
  // execute
109
- const actual = patchUtils.createAddParameters("Patient", "birthDate", params);
137
+ const actual = patchUtils.createAddParameters('Patient', 'birthDate', params);
110
138
  // validate
111
139
  expect(actual.getPatchParameters()).toEqual(expected);
112
140
  });
@@ -114,59 +142,62 @@ describe("PatchUtils", () => {
114
142
  it('createAddParametersForBackboneElement() should create Parameters for FHIR patch add operation', () => {
115
143
  // setup
116
144
  const expected = {
117
- "resourceType": "Parameters",
118
- "parameter": [
145
+ resourceType: 'Parameters',
146
+ parameter: [
119
147
  {
120
- "name": "operation",
121
- "part": [
148
+ name: 'operation',
149
+ part: [
122
150
  {
123
- "name": "type",
124
- "valueCode": "add"
151
+ name: 'type',
152
+ valueCode: 'add',
125
153
  },
126
154
  {
127
- "name": "path",
128
- "valueString": "Patient"
155
+ name: 'path',
156
+ valueString: 'Patient',
129
157
  },
130
158
  {
131
- "name": "name",
132
- "valueString": "contact"
159
+ name: 'name',
160
+ valueString: 'contact',
133
161
  },
134
162
  {
135
- "name": "value",
136
- "part": [
163
+ name: 'value',
164
+ part: [
137
165
  {
138
- "name": "address",
139
- "valueAddress": {
140
- "use": "work"
141
- }
166
+ name: 'address',
167
+ valueAddress: {
168
+ use: 'work',
169
+ },
142
170
  },
143
171
  {
144
- "name": "name",
145
- "valueHumanName": {
146
- "use": "official"
147
- }
148
- }
149
- ]
150
- }
151
- ]
172
+ name: 'name',
173
+ valueHumanName: {
174
+ use: 'official',
175
+ },
176
+ },
177
+ ],
178
+ },
179
+ ],
152
180
  },
153
- ]
181
+ ],
154
182
  };
155
- const params: PatchAddBackboneElementParams[] = [{
156
- "value": {
157
- "use": "work"
183
+ const params: PatchAddBackboneElementParams[] = [
184
+ {
185
+ value: {
186
+ use: 'work',
187
+ },
188
+ valueDataType: PATCH_DATATYPE.ADDRESS,
189
+ backBoneElementProperty: 'address',
158
190
  },
159
- "valueDataType": PATCH_DATATYPE.ADDRESS,
160
- "backBoneElementProperty": "address"
161
- }, {
162
- "value": {
163
- "use": "official"
191
+ {
192
+ value: {
193
+ use: 'official',
194
+ },
195
+ valueDataType: PATCH_DATATYPE.HUMAN_NAME,
196
+ backBoneElementProperty: 'name',
164
197
  },
165
- "valueDataType": PATCH_DATATYPE.HUMAN_NAME,
166
- "backBoneElementProperty": "name"
167
- }]
198
+ ];
168
199
  // execute
169
- const actual = patchUtils.createAddParametersForBackboneElement("Patient", "contact", params);
200
+ const actual = patchUtils.createAddParametersForBackboneElement('Patient', 'contact', params);
170
201
  // validate
171
202
  expect(actual.getPatchParameters()).toEqual(expected);
172
203
  });
@@ -174,30 +205,42 @@ describe("PatchUtils", () => {
174
205
  it('createInsertParameters() should create Parameters for FHIR patch add operation', () => {
175
206
  // setup
176
207
  const identifier = {
177
- "system": "http://some-system.com",
178
- "value": "someValue"
179
- }
208
+ system: 'http://some-system.com',
209
+ value: 'someValue',
210
+ };
180
211
  const expected = {
181
- "resourceType": "Parameters",
182
- "parameter": [ {
183
- "name": "operation",
184
- "part": [ {
185
- "name": "type",
186
- "valueCode": "insert"
187
- }, {
188
- "name": "path",
189
- "valueString": "Patient.identifier"
190
- }, {
191
- "name": "index",
192
- "valueInteger": 1
193
- }, {
194
- "name": "value",
195
- "valueIdentifier": identifier
196
- }]
197
- } ]
212
+ resourceType: 'Parameters',
213
+ parameter: [
214
+ {
215
+ name: 'operation',
216
+ part: [
217
+ {
218
+ name: 'type',
219
+ valueCode: 'insert',
220
+ },
221
+ {
222
+ name: 'path',
223
+ valueString: 'Patient.identifier',
224
+ },
225
+ {
226
+ name: 'index',
227
+ valueInteger: 1,
228
+ },
229
+ {
230
+ name: 'value',
231
+ valueIdentifier: identifier,
232
+ },
233
+ ],
234
+ },
235
+ ],
198
236
  };
199
237
  // execute
200
- const actual = patchUtils.createInsertParameters("Patient.identifier", identifier, PATCH_DATATYPE.IDENTIFIER, 1);
238
+ const actual = patchUtils.createInsertParameters(
239
+ 'Patient.identifier',
240
+ identifier,
241
+ PATCH_DATATYPE.IDENTIFIER,
242
+ 1
243
+ );
201
244
  // validate
202
245
  expect(actual.getPatchParameters()).toEqual(expected);
203
246
  });
@@ -205,11 +248,12 @@ describe("PatchUtils", () => {
205
248
  it('resetPatchParameters() should reset Parameter property inside Parameters resource for PATCH operation', () => {
206
249
  // setup
207
250
  // validate delete params are present
208
- expect(patchUtils.createDeleteParameters("Patient.status").getPatchParameters().parameter).toHaveSize(1);
251
+ expect(
252
+ patchUtils.createDeleteParameters('Patient.status').getPatchParameters().parameter
253
+ ).toHaveSize(1);
209
254
  // execute
210
255
  const actual = patchUtils.resetPatchParameters().getPatchParameters();
211
256
  // validate
212
257
  expect(actual.parameter).toHaveSize(0);
213
258
  });
214
-
215
259
  });
@@ -1,18 +1,18 @@
1
- import { PATCH_DATATYPE, PatchAddValueParams, PatchAddBackboneElementParams } from "../constants";
1
+ import { PATCH_DATATYPE, PatchAddValueParams, PatchAddBackboneElementParams } from '../constants';
2
2
 
3
3
  /**
4
4
  * This a simple utility to create Parameters resource for FHIR patch operation
5
5
  * https://www.hl7.org/fhir/fhirpatch.html
6
6
  */
7
7
  export class PatchUtils {
8
- private REPLACE_OPERATION_NAME = "replace";
9
- private DELETE_OPERATION_NAME = "delete";
10
- private MOVE_OPERATION_NAME = "move";
11
- private ADD_OPERATION_NAME = "add";
12
- private INSERT_OPERATION_NAME = "insert";
13
- private readonly PARAMETER_PROPERTY_NAME = "parameter";
14
- private baseParameters = {
15
- resourceType: "Parameters",
8
+ private REPLACE_OPERATION_NAME = 'replace';
9
+ private DELETE_OPERATION_NAME = 'delete';
10
+ private MOVE_OPERATION_NAME = 'move';
11
+ private ADD_OPERATION_NAME = 'add';
12
+ private INSERT_OPERATION_NAME = 'insert';
13
+ private readonly PARAMETER_PROPERTY_NAME = 'parameter';
14
+ private baseParameters: { resourceType: string; parameter: any[] } = {
15
+ resourceType: 'Parameters',
16
16
  parameter: [],
17
17
  };
18
18
 
@@ -23,24 +23,20 @@ export class PatchUtils {
23
23
  * @param valueDataType the data type of value
24
24
  * @returns Parameters resource for FHIR patch replace operation
25
25
  */
26
- createReplaceParameters(
27
- path: string,
28
- value: any,
29
- valueDataType: PATCH_DATATYPE
30
- ) {
26
+ createReplaceParameters(path: string, value: any, valueDataType: PATCH_DATATYPE) {
31
27
  const replaceParameters = {
32
- name: "operation",
28
+ name: 'operation',
33
29
  part: [
34
30
  {
35
- name: "type",
31
+ name: 'type',
36
32
  valueCode: this.REPLACE_OPERATION_NAME,
37
33
  },
38
34
  {
39
- name: "path",
35
+ name: 'path',
40
36
  valueString: path,
41
37
  },
42
38
  {
43
- name: "value",
39
+ name: 'value',
44
40
  [valueDataType]: value,
45
41
  },
46
42
  ],
@@ -56,14 +52,14 @@ export class PatchUtils {
56
52
  */
57
53
  createDeleteParameters(path: string) {
58
54
  const deleteParameters = {
59
- name: "operation",
55
+ name: 'operation',
60
56
  part: [
61
57
  {
62
- name: "type",
58
+ name: 'type',
63
59
  valueCode: this.DELETE_OPERATION_NAME,
64
60
  },
65
61
  {
66
- name: "path",
62
+ name: 'path',
67
63
  valueString: path,
68
64
  },
69
65
  ],
@@ -81,22 +77,22 @@ export class PatchUtils {
81
77
  */
82
78
  createMoveParameters(path: string, source: number, destination: number) {
83
79
  const moveParameters = {
84
- name: "operation",
80
+ name: 'operation',
85
81
  part: [
86
82
  {
87
- name: "type",
83
+ name: 'type',
88
84
  valueCode: this.MOVE_OPERATION_NAME,
89
85
  },
90
86
  {
91
- name: "path",
87
+ name: 'path',
92
88
  valueString: path,
93
89
  },
94
90
  {
95
- name: "source",
91
+ name: 'source',
96
92
  valueInteger: source,
97
93
  },
98
94
  {
99
- name: "destination",
95
+ name: 'destination',
100
96
  valueInteger: destination,
101
97
  },
102
98
  ],
@@ -111,17 +107,13 @@ export class PatchUtils {
111
107
  * @param patchAddValueParams the value to replace with & the data type of value
112
108
  * @returns Parameters resource for FHIR patch add operation
113
109
  */
114
- createAddParameters(
115
- path: string,
116
- name: string,
117
- patchAddValueParams: PatchAddValueParams
118
- ) {
110
+ createAddParameters(path: string, name: string, patchAddValueParams: PatchAddValueParams) {
119
111
  const addParameters = {
120
- name: "operation",
112
+ name: 'operation',
121
113
  part: [
122
114
  ...this.getCommonAddParameters(path, name),
123
115
  {
124
- name: "value",
116
+ name: 'value',
125
117
  [patchAddValueParams.valueDataType]: patchAddValueParams.value,
126
118
  },
127
119
  ],
@@ -131,18 +123,18 @@ export class PatchUtils {
131
123
  }
132
124
 
133
125
  /**
134
- *
126
+ *
135
127
  * @param path the path at which to add the content
136
128
  * @param name name of the property to add
137
129
  * @param patchAddValueParams the value to replace with, the data type of value & the backbone element property
138
- * @returns
130
+ * @returns
139
131
  */
140
132
  createAddParametersForBackboneElement(
141
133
  path: string,
142
134
  name: string,
143
135
  patchAddValueParams: PatchAddBackboneElementParams[]
144
136
  ) {
145
- const parts = [];
137
+ const parts: any[] = [];
146
138
  patchAddValueParams.forEach((x) => {
147
139
  parts.push({
148
140
  name: x.backBoneElementProperty,
@@ -150,11 +142,11 @@ export class PatchUtils {
150
142
  });
151
143
  });
152
144
  const addParameters = {
153
- name: "operation",
145
+ name: 'operation',
154
146
  part: [
155
147
  ...this.getCommonAddParameters(path, name),
156
148
  {
157
- name: "value",
149
+ name: 'value',
158
150
  part: parts,
159
151
  },
160
152
  ],
@@ -171,29 +163,24 @@ export class PatchUtils {
171
163
  * @param index the index at which the value should be inserted
172
164
  * @returns Parameters resource for FHIR patch insert operation
173
165
  */
174
- createInsertParameters(
175
- path: string,
176
- value: any,
177
- valueDataType: PATCH_DATATYPE,
178
- index: number
179
- ) {
166
+ createInsertParameters(path: string, value: any, valueDataType: PATCH_DATATYPE, index: number) {
180
167
  const insertParameters = {
181
- name: "operation",
168
+ name: 'operation',
182
169
  part: [
183
170
  {
184
- name: "type",
171
+ name: 'type',
185
172
  valueCode: this.INSERT_OPERATION_NAME,
186
173
  },
187
174
  {
188
- name: "path",
175
+ name: 'path',
189
176
  valueString: path,
190
177
  },
191
178
  {
192
- name: "index",
179
+ name: 'index',
193
180
  valueInteger: index,
194
181
  },
195
182
  {
196
- name: "value",
183
+ name: 'value',
197
184
  [valueDataType]: value,
198
185
  },
199
186
  ],
@@ -220,15 +207,15 @@ export class PatchUtils {
220
207
  private getCommonAddParameters(path: string, name: string) {
221
208
  return [
222
209
  {
223
- name: "type",
210
+ name: 'type',
224
211
  valueCode: this.ADD_OPERATION_NAME,
225
212
  },
226
213
  {
227
- name: "path",
214
+ name: 'path',
228
215
  valueString: path,
229
216
  },
230
217
  {
231
- name: "name",
218
+ name: 'name',
232
219
  valueString: name,
233
220
  },
234
221
  ];