@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,4 +1,4 @@
1
- import { CodingKeys, IdentifierKeys } from "../dataTypes";
1
+ import { CodingKeys, IdentifierKeys } from '../dataTypes';
2
2
 
3
3
  export class ResourceUtils {
4
4
  /**
@@ -8,94 +8,103 @@ export class ResourceUtils {
8
8
  * @returns json property if it exists
9
9
  * @limitation currently just supports get for top level property on resource
10
10
  */
11
- getResourceProperty(inputJson: object, propertyName: string) {
11
+ getResourceProperty(inputJson: Record<string, any>, propertyName: string) {
12
12
  let resourcePropertyValue = null;
13
- if (inputJson.hasOwnProperty(propertyName)) {
13
+ if (Object.prototype.hasOwnProperty.call(inputJson, propertyName)) {
14
14
  resourcePropertyValue = inputJson[propertyName];
15
15
  }
16
16
  return resourcePropertyValue;
17
17
  }
18
18
 
19
19
  /**
20
+ * Get identifiers from a list filtered by property value
20
21
  *
22
+ * @template T - The identifier type to return (defaults to any for backward compatibility)
21
23
  * @param identifierList list of identifiers
22
24
  * @param propertyToCompare identifier property to compare
23
25
  * @param propertyValue value we want to compare against
24
26
  * @returns array of matches
25
27
  * @limitations currently does not work with identifier.type, identifier.period & identifier.assigner
26
28
  */
27
- getIdentifiersByProperty(
28
- identifierList: any[],
29
+ getIdentifiersByProperty<T = any>(
30
+ identifierList: any[] | null,
29
31
  propertyToCompare: IdentifierKeys,
30
32
  propertyValue: any[IdentifierKeys]
31
- ): any[] {
33
+ ): T[] {
32
34
  return identifierList?.length
33
35
  ? identifierList.filter((x) => x[propertyToCompare] === propertyValue)
34
36
  : [];
35
37
  }
36
38
 
37
39
  /**
40
+ * Get extensions from a list filtered by URL
38
41
  *
42
+ * @template T - The extension type to return (defaults to any for backward compatibility)
39
43
  * @param extensionList list of extensions
40
44
  * @param extensionUrl Extension.url to compare
41
45
  * @returns array of matches
42
46
  */
43
- getExtensionsByUrl(extensionList: any[], extensionUrl: string): any[] {
44
- return extensionList?.length
45
- ? extensionList.filter((x) => x["url"] === extensionUrl)
46
- : [];
47
+ getExtensionsByUrl<T = any>(extensionList: any[] | null, extensionUrl: string): T[] {
48
+ return extensionList?.length ? extensionList.filter((x) => x['url'] === extensionUrl) : [];
47
49
  }
48
50
 
49
51
  /**
52
+ * Get codings from a list filtered by property value
50
53
  *
54
+ * @template T - The coding type to return (defaults to any for backward compatibility)
51
55
  * @param codingList list of codings
52
56
  * @param propertyToCompare coding property to compare
53
57
  * @param propertyValue value we want to compare against string or boolean
54
58
  * @returns array of matches
55
59
  */
56
- getCodingsByProperty(
57
- codingList: any[],
60
+ getCodingsByProperty<T = any>(
61
+ codingList: any[] | null,
58
62
  propertyToCompare: CodingKeys,
59
63
  propertyValue: any[CodingKeys]
60
- ): any[] {
64
+ ): T[] {
61
65
  return codingList?.length
62
66
  ? codingList.filter((x) => x[propertyToCompare] === propertyValue)
63
67
  : [];
64
68
  }
65
69
 
66
70
  /**
71
+ * Get values at a specific path in a FHIR resource
67
72
  *
73
+ * @template T - The value type to return (defaults to any for backward compatibility)
68
74
  * @param resource resource for which path needs to be validated
69
- * @param elementPath path to validate in resource
75
+ * @param elementPath path to validate in resource (e.g., "Patient.name.given")
70
76
  * @returns array of elements found at the provided path
71
77
  */
72
- getValuesAtResourcePath(resource: any, elementPath: string): any[] {
78
+ getValuesAtResourcePath<T = any>(resource: any, elementPath: string): T[] {
73
79
  const pathSections = elementPath.split('.');
74
- if (!resource || (resource.resourceType !== pathSections[0])) return [];
80
+ if (!resource || resource.resourceType !== pathSections[0]) {
81
+ return [];
82
+ }
75
83
  return this.getValuesAtResourcePathInner(resource, pathSections);
76
84
  }
77
85
 
78
86
  private getValuesAtResourcePathInner(resource: any, pathSections: string[]): any[] {
79
- let resourcePathValue;
87
+ let resourcePathValue: any;
80
88
  for (let index = 1; index < pathSections.length; index++) {
81
- const subPaths = pathSections[index];
89
+ const subPaths: string = pathSections[index] ?? '';
82
90
  resourcePathValue = resourcePathValue ? resourcePathValue[subPaths] : resource[subPaths];
83
91
  if (resourcePathValue) {
84
92
  if (this.isPrimitive(resourcePathValue) || pathSections.length === 2) {
85
93
  return Array.isArray(resourcePathValue) ? [...resourcePathValue] : [resourcePathValue];
86
94
  } else if (Array.isArray(resourcePathValue) && resourcePathValue.length > 0) {
87
- let resultSet = [];
95
+ const resultSet = [];
88
96
  for (let subPathIndex = 0; subPathIndex < resourcePathValue.length; subPathIndex++) {
89
97
  const subPathValue = resourcePathValue[subPathIndex];
90
98
  if (this.isPrimitive(subPathValue)) {
91
99
  resultSet.push(subPathValue);
92
- }
93
- else {
94
- resultSet.push(...this.getValuesAtResourcePathInner(subPathValue, pathSections.slice(index)));
100
+ } else {
101
+ resultSet.push(
102
+ ...this.getValuesAtResourcePathInner(subPathValue, pathSections.slice(index))
103
+ );
95
104
  }
96
105
  }
97
106
  return resultSet;
98
- } else if (typeof (resourcePathValue) === 'object') {
107
+ } else if (typeof resourcePathValue === 'object') {
99
108
  return this.getValuesAtResourcePathInner(resourcePathValue, pathSections.slice(index));
100
109
  }
101
110
  } else {
@@ -106,7 +115,7 @@ export class ResourceUtils {
106
115
  }
107
116
 
108
117
  private isPrimitive(value: any) {
109
- return typeof (value) === "boolean" || typeof (value) === "string";
118
+ return typeof value === 'boolean' || typeof value === 'string';
110
119
  }
111
120
 
112
121
  /**
@@ -116,10 +125,11 @@ export class ResourceUtils {
116
125
  getAllReferencesFromResource(resource: any): string[] {
117
126
  const stringifiedResource = JSON.stringify(resource);
118
127
  const referenceJsonString = '"reference":';
119
- let references = [];
128
+ const references = [];
120
129
  let cursor = stringifiedResource.indexOf(referenceJsonString, 0);
121
130
  while (cursor > -1) {
122
- const referenceStart = stringifiedResource.indexOf(referenceJsonString, cursor) + referenceJsonString.length;
131
+ const referenceStart =
132
+ stringifiedResource.indexOf(referenceJsonString, cursor) + referenceJsonString.length;
123
133
  const referenceEnd = stringifiedResource.indexOf('"', referenceStart + 1);
124
134
  const reference = stringifiedResource.substring(referenceStart, referenceEnd);
125
135
  // this means the reference ends started reading from start again
@@ -131,4 +141,4 @@ export class ResourceUtils {
131
141
  }
132
142
  return references;
133
143
  }
134
- }
144
+ }
@@ -1,27 +1,27 @@
1
1
  export enum SORT_ORDER {
2
- ASCENDING,
3
- DESCENDING
2
+ ASCENDING,
3
+ DESCENDING,
4
4
  }
5
5
 
6
6
  export enum PATCH_DATATYPE {
7
- CODE = "valueCode",
8
- DATE = "valueDate",
9
- DATE_TIME = "valueDateTime",
10
- BOOLEAN = "valueBoolean",
11
- CODEABLE_CONCEPT = "valueCodeableConcept",
12
- CODING = "valueCoding",
13
- IDENTIFIER = "valueIdentifier",
14
- HUMAN_NAME = "valueHumanName",
15
- STRING = "valueString",
16
- ADDRESS = "valueAddress",
17
- REFERENCE = "valueReference"
7
+ CODE = 'valueCode',
8
+ DATE = 'valueDate',
9
+ DATE_TIME = 'valueDateTime',
10
+ BOOLEAN = 'valueBoolean',
11
+ CODEABLE_CONCEPT = 'valueCodeableConcept',
12
+ CODING = 'valueCoding',
13
+ IDENTIFIER = 'valueIdentifier',
14
+ HUMAN_NAME = 'valueHumanName',
15
+ STRING = 'valueString',
16
+ ADDRESS = 'valueAddress',
17
+ REFERENCE = 'valueReference',
18
18
  }
19
19
 
20
20
  export interface PatchAddValueParams {
21
- value: any;
22
- valueDataType: PATCH_DATATYPE;
21
+ value: any;
22
+ valueDataType: PATCH_DATATYPE;
23
23
  }
24
24
 
25
25
  export interface PatchAddBackboneElementParams extends PatchAddValueParams {
26
- backBoneElementProperty: string;
27
- }
26
+ backBoneElementProperty: string;
27
+ }
@@ -1,12 +1,12 @@
1
- import { fhirR5 } from "..";
2
- import * as DSTU2 from "../FHIR-DSTU2";
3
- import * as fhirR3 from "../FHIR-R3";
4
- import { Coding as r4Coding } from "../FHIR-R4/classes/coding";
5
- import { Extension as r4Extension } from "../FHIR-R4/classes/extension";
6
- import { Identifier as r4Identifier } from "../FHIR-R4/classes/identifier";
1
+ import { fhirR5 } from '..';
2
+ import * as DSTU2 from '../FHIR-DSTU2';
3
+ import * as fhirR3 from '../FHIR-R3';
4
+ import { Coding as r4Coding } from '../FHIR-R4/classes/coding';
5
+ import { Extension as r4Extension } from '../FHIR-R4/classes/extension';
6
+ import { Identifier as r4Identifier } from '../FHIR-R4/classes/identifier';
7
7
 
8
8
  export type Identifier = r4Identifier & fhirR3.Identifier & DSTU2.Identifier & fhirR5.Identifier;
9
9
  export type IdentifierKeys = keyof Identifier;
10
10
  export type Extension = r4Extension & fhirR3.Extension & DSTU2.Extension & fhirR5.Extension;
11
11
  export type Coding = r4Coding & fhirR3.Coding & DSTU2.Coding & fhirR5.Coding;
12
- export type CodingKeys = keyof Coding;
12
+ export type CodingKeys = keyof Coding;
package/tsconfig.json CHANGED
@@ -6,12 +6,35 @@
6
6
  "outDir": "./dist",
7
7
  "lib": [
8
8
  "es2017"
9
- ]
9
+ ],
10
+ "moduleResolution": "node",
11
+ "esModuleInterop": true,
12
+ "skipLibCheck": true,
13
+ /* Strict Type-Checking Options */
14
+ "strict": true,
15
+ "noImplicitAny": true,
16
+ "strictNullChecks": true,
17
+ "strictFunctionTypes": true,
18
+ "strictBindCallApply": true,
19
+ "strictPropertyInitialization": false, // Disabled for FHIR DTOs with optional properties
20
+ "noImplicitThis": true,
21
+ "alwaysStrict": true,
22
+ /* Additional Checks */
23
+ "noUnusedLocals": false, // Disabled due to auto-generated FHIR classes
24
+ "noUnusedParameters": false, // Disabled due to auto-generated FHIR classes
25
+ "noImplicitReturns": true,
26
+ "noFallthroughCasesInSwitch": true,
27
+ "noUncheckedIndexedAccess": true // Adds undefined to index signatures for safety
10
28
  },
11
29
  "include": [
12
30
  "src/**/*"
13
31
  ],
14
32
  "exclude": [
15
33
  "node_modules"
16
- ]
34
+ ],
35
+ "ts-node": {
36
+ "compilerOptions": {
37
+ "module": "commonjs"
38
+ }
39
+ }
17
40
  }