@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.
- package/.claude/settings.local.json +12 -0
- package/.github/workflows/npm-publish.yml +12 -6
- package/.github/workflows/pr-build.yml +7 -3
- package/.prettierignore +22 -0
- package/.prettierrc +10 -0
- package/GETTINGSTARTED.md +57 -15
- package/dist/FHIR-DSTU2.js +1 -1
- package/dist/FHIR-R3.js +3 -1
- package/dist/FHIR-R4/classes/account.js +1 -1
- package/dist/FHIR-R4/classes/activityDefinition.js +1 -1
- package/dist/FHIR-R4/classes/address.js +1 -1
- package/dist/FHIR-R4/classes/adverseEvent.js +1 -1
- package/dist/FHIR-R4/classes/age.js +1 -1
- package/dist/FHIR-R4/classes/allergyIntolerance.js +1 -1
- package/dist/FHIR-R4/classes/allergyIntoleranceReaction.js +1 -1
- package/dist/FHIR-R4/classes/appointment.js +1 -1
- package/dist/FHIR-R4/classes/appointmentParticipant.js +1 -1
- package/dist/FHIR-R4/classes/auditEvent.js +1 -1
- package/dist/FHIR-R4/classes/auditEventNetwork.js +1 -1
- package/dist/FHIR-R4/classes/biologicallyDerivedProduct.js +1 -1
- package/dist/FHIR-R4/classes/biologicallyDerivedProductStorage.js +1 -1
- package/dist/FHIR-R4/classes/bundle.js +1 -1
- package/dist/FHIR-R4/classes/capabilityStatement.js +1 -1
- package/dist/FHIR-R4/classes/capabilityStatementDocument.js +1 -1
- package/dist/FHIR-R4/classes/capabilityStatementInteraction.js +1 -1
- package/dist/FHIR-R4/classes/capabilityStatementInteraction1.js +1 -1
- package/dist/FHIR-R4/classes/capabilityStatementResource.js +1 -1
- package/dist/FHIR-R4/classes/capabilityStatementRest.js +1 -1
- package/dist/FHIR-R4/classes/capabilityStatementSearchParam.js +1 -1
- package/dist/FHIR-R4/classes/capabilityStatementSupportedMessage.js +1 -1
- package/dist/FHIR-R4/classes/carePlanDetail.js +1 -1
- package/dist/FHIR-R4/classes/careTeam.js +1 -1
- package/dist/FHIR-R4/classes/catalogEntry.js +1 -1
- package/dist/FHIR-R4/classes/catalogEntryRelatedEntry.js +1 -1
- package/dist/FHIR-R4/classes/chargeItem.js +1 -1
- package/dist/FHIR-R4/classes/chargeItemDefinition.js +1 -1
- package/dist/FHIR-R4/classes/claim.js +1 -1
- package/dist/FHIR-R4/classes/claimResponseProcessNote.js +1 -1
- package/dist/FHIR-R4/classes/codeSystem.js +1 -1
- package/dist/FHIR-R4/classes/codeSystemProperty.js +1 -1
- package/dist/FHIR-R4/classes/compartmentDefinition.js +1 -1
- package/dist/FHIR-R4/classes/composition.js +1 -1
- package/dist/FHIR-R4/classes/compositionAttester.js +1 -1
- package/dist/FHIR-R4/classes/conceptMap.js +1 -1
- package/dist/FHIR-R4/classes/conceptMapTarget.js +1 -1
- package/dist/FHIR-R4/classes/conceptMapUnmapped.js +1 -1
- package/dist/FHIR-R4/classes/consent.js +1 -1
- package/dist/FHIR-R4/classes/consentData.js +1 -1
- package/dist/FHIR-R4/classes/consentProvision.js +1 -1
- package/dist/FHIR-R4/classes/contactPoint.js +1 -1
- package/dist/FHIR-R4/classes/contributor.js +1 -1
- package/dist/FHIR-R4/classes/count.js +1 -1
- package/dist/FHIR-R4/classes/coverageEligibilityResponse.js +1 -1
- package/dist/FHIR-R4/classes/dataRequirementSort.js +1 -1
- package/dist/FHIR-R4/classes/detectedIssue.js +1 -1
- package/dist/FHIR-R4/classes/device.js +1 -1
- package/dist/FHIR-R4/classes/deviceDefinitionDeviceName.js +1 -1
- package/dist/FHIR-R4/classes/deviceDeviceName.js +1 -1
- package/dist/FHIR-R4/classes/deviceMetric.js +1 -1
- package/dist/FHIR-R4/classes/deviceMetricCalibration.js +1 -1
- package/dist/FHIR-R4/classes/deviceUdiCarrier.js +1 -1
- package/dist/FHIR-R4/classes/deviceUseStatement.js +1 -1
- package/dist/FHIR-R4/classes/diagnosticReport.js +1 -1
- package/dist/FHIR-R4/classes/distance.js +1 -1
- package/dist/FHIR-R4/classes/documentManifest.js +1 -1
- package/dist/FHIR-R4/classes/documentReference.js +1 -1
- package/dist/FHIR-R4/classes/documentReferenceRelatesTo.js +1 -1
- package/dist/FHIR-R4/classes/duration.js +1 -1
- package/dist/FHIR-R4/classes/effectEvidenceSynthesis.js +1 -1
- package/dist/FHIR-R4/classes/effectEvidenceSynthesisResultsByExposure.js +1 -1
- package/dist/FHIR-R4/classes/elementDefinitionBinding.js +1 -1
- package/dist/FHIR-R4/classes/elementDefinitionConstraint.js +1 -1
- package/dist/FHIR-R4/classes/elementDefinitionDiscriminator.js +1 -1
- package/dist/FHIR-R4/classes/elementDefinitionSlicing.js +1 -1
- package/dist/FHIR-R4/classes/elementDefinitionType.js +1 -1
- package/dist/FHIR-R4/classes/encounter.js +1 -1
- package/dist/FHIR-R4/classes/encounterLocation.js +1 -1
- package/dist/FHIR-R4/classes/encounterStatusHistory.js +1 -1
- package/dist/FHIR-R4/classes/endpoint.js +1 -1
- package/dist/FHIR-R4/classes/enrollmentResponse.js +1 -1
- package/dist/FHIR-R4/classes/episodeOfCare.js +1 -1
- package/dist/FHIR-R4/classes/episodeOfCareStatusHistory.js +1 -1
- package/dist/FHIR-R4/classes/eventDefinition.js +1 -1
- package/dist/FHIR-R4/classes/evidence.js +1 -1
- package/dist/FHIR-R4/classes/evidenceVariable.js +1 -1
- package/dist/FHIR-R4/classes/evidenceVariableCharacteristic.js +1 -1
- package/dist/FHIR-R4/classes/exampleScenario.js +1 -1
- package/dist/FHIR-R4/classes/exampleScenarioActor.js +1 -1
- package/dist/FHIR-R4/classes/explanationOfBenefit.js +1 -1
- package/dist/FHIR-R4/classes/explanationOfBenefitProcessNote.js +1 -1
- package/dist/FHIR-R4/classes/expression.js +1 -1
- package/dist/FHIR-R4/classes/familyMemberHistory.js +1 -1
- package/dist/FHIR-R4/classes/flag.js +1 -1
- package/dist/FHIR-R4/classes/goal.js +1 -1
- package/dist/FHIR-R4/classes/graphDefinition.js +1 -1
- package/dist/FHIR-R4/classes/graphDefinitionCompartment.js +1 -1
- package/dist/FHIR-R4/classes/group.js +1 -1
- package/dist/FHIR-R4/classes/guidanceResponse.js +1 -1
- package/dist/FHIR-R4/classes/humanName.js +1 -1
- package/dist/FHIR-R4/classes/identifier.js +1 -1
- package/dist/FHIR-R4/classes/imagingStudy.js +1 -1
- package/dist/FHIR-R4/classes/implementationGuide.js +1 -1
- package/dist/FHIR-R4/classes/implementationGuidePage.js +1 -1
- package/dist/FHIR-R4/classes/implementationGuideParameter.js +1 -1
- package/dist/FHIR-R4/classes/insurancePlan.js +1 -1
- package/dist/FHIR-R4/classes/invoice.js +1 -1
- package/dist/FHIR-R4/classes/invoicePriceComponent.js +1 -1
- package/dist/FHIR-R4/classes/library.js +1 -1
- package/dist/FHIR-R4/classes/linkageItem.js +1 -1
- package/dist/FHIR-R4/classes/list.js +1 -1
- package/dist/FHIR-R4/classes/location.js +1 -1
- package/dist/FHIR-R4/classes/measure.js +1 -1
- package/dist/FHIR-R4/classes/measureReport.js +1 -1
- package/dist/FHIR-R4/classes/messageDefinition.js +1 -1
- package/dist/FHIR-R4/classes/messageHeaderResponse.js +1 -1
- package/dist/FHIR-R4/classes/molecularSequence.js +1 -1
- package/dist/FHIR-R4/classes/molecularSequenceQuality.js +1 -1
- package/dist/FHIR-R4/classes/molecularSequenceReferenceSeq.js +1 -1
- package/dist/FHIR-R4/classes/molecularSequenceRepository.js +1 -1
- package/dist/FHIR-R4/classes/namingSystem.js +1 -1
- package/dist/FHIR-R4/classes/namingSystemUniqueId.js +1 -1
- package/dist/FHIR-R4/classes/narrative.js +1 -1
- package/dist/FHIR-R4/classes/observation.js +1 -1
- package/dist/FHIR-R4/classes/observationDefinitionQualifiedInterval.js +1 -1
- package/dist/FHIR-R4/classes/operationDefinition.js +1 -1
- package/dist/FHIR-R4/classes/operationDefinitionBinding.js +1 -1
- package/dist/FHIR-R4/classes/operationDefinitionParameter.js +1 -1
- package/dist/FHIR-R4/classes/patient.js +1 -1
- package/dist/FHIR-R4/classes/patientContact.js +1 -1
- package/dist/FHIR-R4/classes/patientLink.js +1 -1
- package/dist/FHIR-R4/classes/paymentReconciliation.js +1 -1
- package/dist/FHIR-R4/classes/paymentReconciliationProcessNote.js +1 -1
- package/dist/FHIR-R4/classes/person.js +1 -1
- package/dist/FHIR-R4/classes/personLink.js +1 -1
- package/dist/FHIR-R4/classes/planDefinition.js +1 -1
- package/dist/FHIR-R4/classes/planDefinitionAction.js +1 -1
- package/dist/FHIR-R4/classes/planDefinitionCondition.js +1 -1
- package/dist/FHIR-R4/classes/planDefinitionParticipant.js +1 -1
- package/dist/FHIR-R4/classes/planDefinitionRelatedAction.js +1 -1
- package/dist/FHIR-R4/classes/practitioner.js +1 -1
- package/dist/FHIR-R4/classes/provenanceEntity.js +1 -1
- package/dist/FHIR-R4/classes/quantity.js +1 -1
- package/dist/FHIR-R4/classes/questionnaire.js +1 -1
- package/dist/FHIR-R4/classes/questionnaireEnableWhen.js +1 -1
- package/dist/FHIR-R4/classes/questionnaireItem.js +1 -1
- package/dist/FHIR-R4/classes/questionnaireResponse.js +1 -1
- package/dist/FHIR-R4/classes/relatedArtifact.js +1 -1
- package/dist/FHIR-R4/classes/relatedPerson.js +1 -1
- package/dist/FHIR-R4/classes/researchDefinition.js +1 -1
- package/dist/FHIR-R4/classes/researchElementDefinition.js +1 -1
- package/dist/FHIR-R4/classes/researchElementDefinitionCharacteristic.js +1 -1
- package/dist/FHIR-R4/classes/researchStudy.js +1 -1
- package/dist/FHIR-R4/classes/researchSubject.js +1 -1
- package/dist/FHIR-R4/classes/riskEvidenceSynthesis.js +1 -1
- package/dist/FHIR-R4/classes/searchParameter.js +1 -1
- package/dist/FHIR-R4/classes/slot.js +1 -1
- package/dist/FHIR-R4/classes/specimen.js +1 -1
- package/dist/FHIR-R4/classes/specimenDefinitionTypeTested.js +1 -1
- package/dist/FHIR-R4/classes/structureDefinition.js +1 -1
- package/dist/FHIR-R4/classes/structureDefinitionContext.js +1 -1
- package/dist/FHIR-R4/classes/structureMap.js +1 -1
- package/dist/FHIR-R4/classes/structureMapGroup.js +1 -1
- package/dist/FHIR-R4/classes/structureMapInput.js +1 -1
- package/dist/FHIR-R4/classes/structureMapSource.js +1 -1
- package/dist/FHIR-R4/classes/structureMapStructure.js +1 -1
- package/dist/FHIR-R4/classes/structureMapTarget.js +1 -1
- package/dist/FHIR-R4/classes/subscription.js +1 -1
- package/dist/FHIR-R4/classes/subscriptionChannel.js +1 -1
- package/dist/FHIR-R4/classes/substance.js +1 -1
- package/dist/FHIR-R4/classes/supplyDelivery.js +1 -1
- package/dist/FHIR-R4/classes/supplyRequest.js +1 -1
- package/dist/FHIR-R4/classes/task.js +1 -1
- package/dist/FHIR-R4/classes/terminologyCapabilities.js +1 -1
- package/dist/FHIR-R4/classes/testReport.js +1 -1
- package/dist/FHIR-R4/classes/testReportAssert.js +1 -1
- package/dist/FHIR-R4/classes/testReportOperation.js +1 -1
- package/dist/FHIR-R4/classes/testReportParticipant.js +1 -1
- package/dist/FHIR-R4/classes/testScript.js +1 -1
- package/dist/FHIR-R4/classes/testScriptAssert.js +1 -1
- package/dist/FHIR-R4/classes/testScriptOperation.js +1 -1
- package/dist/FHIR-R4/classes/timingRepeat.js +1 -1
- package/dist/FHIR-R4/classes/triggerDefinition.js +1 -1
- package/dist/FHIR-R4/classes/valueSet.js +1 -1
- package/dist/FHIR-R4/classes/valueSetFilter.js +1 -1
- package/dist/FHIR-R4/classes/visionPrescriptionLensSpecification.js +1 -1
- package/dist/FHIR-R4/classes/visionPrescriptionPrism.js +1 -1
- package/dist/FHIR-R4/interfaces/IAccount.js +1 -1
- package/dist/FHIR-R4/interfaces/IActivityDefinition.js +1 -1
- package/dist/FHIR-R4/interfaces/IAdverseEvent.js +1 -1
- package/dist/FHIR-R4/interfaces/IAllergyIntolerance.js +1 -1
- package/dist/FHIR-R4/interfaces/IAppointment.js +1 -1
- package/dist/FHIR-R4/interfaces/IAuditEvent.js +1 -1
- package/dist/FHIR-R4/interfaces/IBiologicallyDerivedProduct.js +1 -1
- package/dist/FHIR-R4/interfaces/IBundle.js +1 -1
- package/dist/FHIR-R4/interfaces/ICapabilityStatement.js +1 -1
- package/dist/FHIR-R4/interfaces/ICareTeam.js +1 -1
- package/dist/FHIR-R4/interfaces/ICatalogEntry.js +1 -1
- package/dist/FHIR-R4/interfaces/IChargeItem.js +1 -1
- package/dist/FHIR-R4/interfaces/IChargeItemDefinition.js +1 -1
- package/dist/FHIR-R4/interfaces/IClaim.js +1 -1
- package/dist/FHIR-R4/interfaces/ICodeSystem.js +1 -1
- package/dist/FHIR-R4/interfaces/ICompartmentDefinition.js +1 -1
- package/dist/FHIR-R4/interfaces/IComposition.js +1 -1
- package/dist/FHIR-R4/interfaces/IConceptMap.js +1 -1
- package/dist/FHIR-R4/interfaces/IConsent.js +1 -1
- package/dist/FHIR-R4/interfaces/ICoverageEligibilityResponse.js +1 -1
- package/dist/FHIR-R4/interfaces/IDetectedIssue.js +1 -1
- package/dist/FHIR-R4/interfaces/IDevice.js +1 -1
- package/dist/FHIR-R4/interfaces/IDeviceMetric.js +1 -1
- package/dist/FHIR-R4/interfaces/IDeviceUseStatement.js +1 -1
- package/dist/FHIR-R4/interfaces/IDiagnosticReport.js +1 -1
- package/dist/FHIR-R4/interfaces/IDocumentManifest.js +1 -1
- package/dist/FHIR-R4/interfaces/IDocumentReference.js +1 -1
- package/dist/FHIR-R4/interfaces/IEffectEvidenceSynthesis.js +1 -1
- package/dist/FHIR-R4/interfaces/IEncounter.js +1 -1
- package/dist/FHIR-R4/interfaces/IEndpoint.js +1 -1
- package/dist/FHIR-R4/interfaces/IEnrollmentResponse.js +1 -1
- package/dist/FHIR-R4/interfaces/IEpisodeOfCare.js +1 -1
- package/dist/FHIR-R4/interfaces/IEventDefinition.js +1 -1
- package/dist/FHIR-R4/interfaces/IEvidence.js +1 -1
- package/dist/FHIR-R4/interfaces/IEvidenceVariable.js +1 -1
- package/dist/FHIR-R4/interfaces/IExampleScenario.js +1 -1
- package/dist/FHIR-R4/interfaces/IExplanationOfBenefit.js +1 -1
- package/dist/FHIR-R4/interfaces/IFamilyMemberHistory.js +1 -1
- package/dist/FHIR-R4/interfaces/IFlag.js +1 -1
- package/dist/FHIR-R4/interfaces/IGoal.js +1 -1
- package/dist/FHIR-R4/interfaces/IGraphDefinition.js +1 -1
- package/dist/FHIR-R4/interfaces/IGroup.js +1 -1
- package/dist/FHIR-R4/interfaces/IGuidanceResponse.js +1 -1
- package/dist/FHIR-R4/interfaces/IImagingStudy.js +1 -1
- package/dist/FHIR-R4/interfaces/IImplementationGuide.js +1 -1
- package/dist/FHIR-R4/interfaces/IInsurancePlan.js +1 -1
- package/dist/FHIR-R4/interfaces/IInvoice.js +1 -1
- package/dist/FHIR-R4/interfaces/ILibrary.js +1 -1
- package/dist/FHIR-R4/interfaces/IList.js +1 -1
- package/dist/FHIR-R4/interfaces/ILocation.js +1 -1
- package/dist/FHIR-R4/interfaces/IMeasure.js +1 -1
- package/dist/FHIR-R4/interfaces/IMeasureReport.js +1 -1
- package/dist/FHIR-R4/interfaces/IMessageDefinition.js +1 -1
- package/dist/FHIR-R4/interfaces/IMolecularSequence.js +1 -1
- package/dist/FHIR-R4/interfaces/INamingSystem.js +1 -1
- package/dist/FHIR-R4/interfaces/IObservation.js +1 -1
- package/dist/FHIR-R4/interfaces/IOperationDefinition.js +1 -1
- package/dist/FHIR-R4/interfaces/IPatient.js +1 -1
- package/dist/FHIR-R4/interfaces/IPaymentReconciliation.js +1 -1
- package/dist/FHIR-R4/interfaces/IPerson.js +1 -1
- package/dist/FHIR-R4/interfaces/IPlanDefinition.js +1 -1
- package/dist/FHIR-R4/interfaces/IPractitioner.js +1 -1
- package/dist/FHIR-R4/interfaces/IQuestionnaire.js +1 -1
- package/dist/FHIR-R4/interfaces/IQuestionnaireResponse.js +1 -1
- package/dist/FHIR-R4/interfaces/IRelatedPerson.js +1 -1
- package/dist/FHIR-R4/interfaces/IResearchDefinition.js +1 -1
- package/dist/FHIR-R4/interfaces/IResearchElementDefinition.js +1 -1
- package/dist/FHIR-R4/interfaces/IResearchStudy.js +1 -1
- package/dist/FHIR-R4/interfaces/IResearchSubject.js +1 -1
- package/dist/FHIR-R4/interfaces/IRiskEvidenceSynthesis.js +1 -1
- package/dist/FHIR-R4/interfaces/ISearchParameter.js +1 -1
- package/dist/FHIR-R4/interfaces/ISlot.js +1 -1
- package/dist/FHIR-R4/interfaces/ISpecimen.js +1 -1
- package/dist/FHIR-R4/interfaces/IStructureDefinition.js +1 -1
- package/dist/FHIR-R4/interfaces/IStructureMap.js +1 -1
- package/dist/FHIR-R4/interfaces/ISubscription.js +1 -1
- package/dist/FHIR-R4/interfaces/ISubstance.js +1 -1
- package/dist/FHIR-R4/interfaces/ISupplyDelivery.js +1 -1
- package/dist/FHIR-R4/interfaces/ISupplyRequest.js +1 -1
- package/dist/FHIR-R4/interfaces/ITask.js +1 -1
- package/dist/FHIR-R4/interfaces/ITerminologyCapabilities.js +1 -1
- package/dist/FHIR-R4/interfaces/ITestReport.js +1 -1
- package/dist/FHIR-R4/interfaces/ITestScript.js +1 -1
- package/dist/FHIR-R4/interfaces/IValueSet.js +1 -1
- package/dist/FHIR-R5/fHIRJSONRESOURCE.d.ts +172 -0
- package/dist/FHIR-R5/fHIRJSONRESOURCE.js +2 -0
- package/dist/FHIR-R5/openApiSchemaUpdated.d.ts +172 -0
- package/dist/FHIR-R5/openApiSchemaUpdated.js +2 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +39 -6
- package/dist/library/BundleUtils/BundleUtils.d.ts +11 -5
- package/dist/library/BundleUtils/BundleUtils.js +23 -5
- package/dist/library/BundleUtils/BundleUtils.spec.js +24 -24
- package/dist/library/PatchUtils/PatchUtils.d.ts +1 -1
- package/dist/library/PatchUtils/PatchUtils.js +31 -31
- package/dist/library/PatchUtils/PatchUtils.spec.js +159 -124
- package/dist/library/QueryBuilder/QueryBuilder.d.ts +1 -1
- package/dist/library/QueryBuilder/QueryBuilder.js +25 -17
- package/dist/library/QueryBuilder/QueryBuilder.spec.js +44 -43
- package/dist/library/ResourceUtils/ResourceUtils.d.ts +15 -7
- package/dist/library/ResourceUtils/ResourceUtils.js +19 -11
- package/dist/library/ResourceUtils/ResourceUtils.spec.js +113 -112
- package/dist/library/constants.js +2 -2
- package/dist/library/dataTypes.d.ts +6 -6
- package/eslint.config.mjs +69 -0
- package/package.json +21 -7
- package/src/FHIR-DSTU2.ts +1 -1
- package/src/FHIR-R3.ts +3 -1
- package/src/index.ts +12 -1
- package/src/library/BundleUtils/BundleUtils.spec.ts +26 -39
- package/src/library/BundleUtils/BundleUtils.ts +43 -29
- package/src/library/PatchUtils/PatchUtils.spec.ts +173 -129
- package/src/library/PatchUtils/PatchUtils.ts +39 -52
- package/src/library/QueryBuilder/QueryBuilder.spec.ts +54 -51
- package/src/library/QueryBuilder/QueryBuilder.ts +41 -31
- package/src/library/ResourceUtils/ResourceUtils.spec.ts +133 -164
- package/src/library/ResourceUtils/ResourceUtils.ts +37 -27
- package/src/library/constants.ts +17 -17
- package/src/library/dataTypes.ts +7 -7
- package/tsconfig.json +25 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CodingKeys, IdentifierKeys } from
|
|
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:
|
|
11
|
+
getResourceProperty(inputJson: Record<string, any>, propertyName: string) {
|
|
12
12
|
let resourcePropertyValue = null;
|
|
13
|
-
if (
|
|
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
|
-
):
|
|
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):
|
|
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
|
-
):
|
|
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):
|
|
78
|
+
getValuesAtResourcePath<T = any>(resource: any, elementPath: string): T[] {
|
|
73
79
|
const pathSections = elementPath.split('.');
|
|
74
|
-
if (!resource ||
|
|
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
|
-
|
|
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
|
-
|
|
94
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
128
|
+
const references = [];
|
|
120
129
|
let cursor = stringifiedResource.indexOf(referenceJsonString, 0);
|
|
121
130
|
while (cursor > -1) {
|
|
122
|
-
const referenceStart =
|
|
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
|
+
}
|
package/src/library/constants.ts
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
export enum SORT_ORDER {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
ASCENDING,
|
|
3
|
+
DESCENDING,
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
export enum PATCH_DATATYPE {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
22
|
-
|
|
21
|
+
value: any;
|
|
22
|
+
valueDataType: PATCH_DATATYPE;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export interface PatchAddBackboneElementParams extends PatchAddValueParams {
|
|
26
|
-
|
|
27
|
-
}
|
|
26
|
+
backBoneElementProperty: string;
|
|
27
|
+
}
|
package/src/library/dataTypes.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { fhirR5 } from
|
|
2
|
-
import * as DSTU2 from
|
|
3
|
-
import * as fhirR3 from
|
|
4
|
-
import { Coding as r4Coding } from
|
|
5
|
-
import { Extension as r4Extension } from
|
|
6
|
-
import { Identifier as r4Identifier } from
|
|
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
|
}
|