@imranq2/fhirpatientsummary 0.0.1

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 (307) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +81 -0
  3. package/lib/src/generators/fhir_summary_generator.d.ts +46 -0
  4. package/lib/src/generators/fhir_summary_generator.js +228 -0
  5. package/lib/src/generators/narrative_generator.d.ts +40 -0
  6. package/lib/src/generators/narrative_generator.js +80 -0
  7. package/lib/src/narratives/templates/typescript/AdvanceDirectivesTemplate.d.ts +22 -0
  8. package/lib/src/narratives/templates/typescript/AdvanceDirectivesTemplate.js +70 -0
  9. package/lib/src/narratives/templates/typescript/AllergyIntoleranceTemplate.d.ts +31 -0
  10. package/lib/src/narratives/templates/typescript/AllergyIntoleranceTemplate.js +155 -0
  11. package/lib/src/narratives/templates/typescript/ClinicalImpressionTemplate.d.ts +15 -0
  12. package/lib/src/narratives/templates/typescript/ClinicalImpressionTemplate.js +111 -0
  13. package/lib/src/narratives/templates/typescript/DiagnosticResultsTemplate.d.ts +50 -0
  14. package/lib/src/narratives/templates/typescript/DiagnosticResultsTemplate.js +153 -0
  15. package/lib/src/narratives/templates/typescript/FamilyHistoryTemplate.d.ts +15 -0
  16. package/lib/src/narratives/templates/typescript/FamilyHistoryTemplate.js +103 -0
  17. package/lib/src/narratives/templates/typescript/FunctionalStatusTemplate.d.ts +22 -0
  18. package/lib/src/narratives/templates/typescript/FunctionalStatusTemplate.js +70 -0
  19. package/lib/src/narratives/templates/typescript/HistoryOfProceduresTemplate.d.ts +22 -0
  20. package/lib/src/narratives/templates/typescript/HistoryOfProceduresTemplate.js +66 -0
  21. package/lib/src/narratives/templates/typescript/ImmunizationsTemplate.d.ts +22 -0
  22. package/lib/src/narratives/templates/typescript/ImmunizationsTemplate.js +73 -0
  23. package/lib/src/narratives/templates/typescript/MedicalDevicesTemplate.d.ts +22 -0
  24. package/lib/src/narratives/templates/typescript/MedicalDevicesTemplate.js +67 -0
  25. package/lib/src/narratives/templates/typescript/MedicationSummaryTemplate.d.ts +50 -0
  26. package/lib/src/narratives/templates/typescript/MedicationSummaryTemplate.js +206 -0
  27. package/lib/src/narratives/templates/typescript/PastHistoryOfIllnessTemplate.d.ts +15 -0
  28. package/lib/src/narratives/templates/typescript/PastHistoryOfIllnessTemplate.js +59 -0
  29. package/lib/src/narratives/templates/typescript/PatientTemplate.d.ts +65 -0
  30. package/lib/src/narratives/templates/typescript/PatientTemplate.js +158 -0
  31. package/lib/src/narratives/templates/typescript/PlanOfCareTemplate.d.ts +15 -0
  32. package/lib/src/narratives/templates/typescript/PlanOfCareTemplate.js +63 -0
  33. package/lib/src/narratives/templates/typescript/PregnancyTemplate.d.ts +22 -0
  34. package/lib/src/narratives/templates/typescript/PregnancyTemplate.js +68 -0
  35. package/lib/src/narratives/templates/typescript/ProblemListTemplate.d.ts +22 -0
  36. package/lib/src/narratives/templates/typescript/ProblemListTemplate.js +119 -0
  37. package/lib/src/narratives/templates/typescript/SocialHistoryTemplate.d.ts +22 -0
  38. package/lib/src/narratives/templates/typescript/SocialHistoryTemplate.js +70 -0
  39. package/lib/src/narratives/templates/typescript/TemplateUtilities.d.ts +251 -0
  40. package/lib/src/narratives/templates/typescript/TemplateUtilities.js +696 -0
  41. package/lib/src/narratives/templates/typescript/TypeScriptTemplateMapper.d.ts +17 -0
  42. package/lib/src/narratives/templates/typescript/TypeScriptTemplateMapper.js +64 -0
  43. package/lib/src/narratives/templates/typescript/VitalSignsTemplate.d.ts +22 -0
  44. package/lib/src/narratives/templates/typescript/VitalSignsTemplate.js +74 -0
  45. package/lib/src/narratives/templates/typescript/interfaces/ITemplate.d.ts +13 -0
  46. package/lib/src/narratives/templates/typescript/interfaces/ITemplate.js +2 -0
  47. package/lib/src/profiles/ips_resource_profile_registry.d.ts +7 -0
  48. package/lib/src/profiles/ips_resource_profile_registry.js +143 -0
  49. package/lib/src/structures/ips_mandatory_sections.d.ts +7 -0
  50. package/lib/src/structures/ips_mandatory_sections.js +11 -0
  51. package/lib/src/structures/ips_recommended_sections.d.ts +8 -0
  52. package/lib/src/structures/ips_recommended_sections.js +12 -0
  53. package/lib/src/structures/ips_resource_profile.d.ts +7 -0
  54. package/lib/src/structures/ips_resource_profile.js +2 -0
  55. package/lib/src/structures/ips_section_loinc_codes.d.ts +4 -0
  56. package/lib/src/structures/ips_section_loinc_codes.js +48 -0
  57. package/lib/src/structures/ips_section_resource_map.d.ts +8 -0
  58. package/lib/src/structures/ips_section_resource_map.js +69 -0
  59. package/lib/src/structures/ips_sections.d.ts +19 -0
  60. package/lib/src/structures/ips_sections.js +27 -0
  61. package/lib/src/types/partials/Address.d.ts +16 -0
  62. package/lib/src/types/partials/Address.js +3 -0
  63. package/lib/src/types/partials/AllergyIntoleranceReaction.d.ts +16 -0
  64. package/lib/src/types/partials/AllergyIntoleranceReaction.js +3 -0
  65. package/lib/src/types/partials/Annotation.d.ts +12 -0
  66. package/lib/src/types/partials/Annotation.js +3 -0
  67. package/lib/src/types/partials/Attachment.d.ts +17 -0
  68. package/lib/src/types/partials/Attachment.js +3 -0
  69. package/lib/src/types/partials/BundleEntry.d.ts +18 -0
  70. package/lib/src/types/partials/BundleEntry.js +3 -0
  71. package/lib/src/types/partials/BundleLink.d.ts +9 -0
  72. package/lib/src/types/partials/BundleLink.js +3 -0
  73. package/lib/src/types/partials/BundleRequest.d.ts +14 -0
  74. package/lib/src/types/partials/BundleRequest.js +3 -0
  75. package/lib/src/types/partials/BundleResponse.d.ts +14 -0
  76. package/lib/src/types/partials/BundleResponse.js +3 -0
  77. package/lib/src/types/partials/BundleSearch.d.ts +9 -0
  78. package/lib/src/types/partials/BundleSearch.js +3 -0
  79. package/lib/src/types/partials/CarePlanActivity.d.ts +15 -0
  80. package/lib/src/types/partials/CarePlanActivity.js +3 -0
  81. package/lib/src/types/partials/CarePlanDetail.d.ts +33 -0
  82. package/lib/src/types/partials/CarePlanDetail.js +3 -0
  83. package/lib/src/types/partials/ClinicalImpressionFinding.d.ts +11 -0
  84. package/lib/src/types/partials/ClinicalImpressionFinding.js +3 -0
  85. package/lib/src/types/partials/ClinicalImpressionInvestigation.d.ts +10 -0
  86. package/lib/src/types/partials/ClinicalImpressionInvestigation.js +3 -0
  87. package/lib/src/types/partials/CodeableConcept.d.ts +8 -0
  88. package/lib/src/types/partials/CodeableConcept.js +3 -0
  89. package/lib/src/types/partials/CodeableReference.d.ts +9 -0
  90. package/lib/src/types/partials/CodeableReference.js +3 -0
  91. package/lib/src/types/partials/Coding.d.ts +11 -0
  92. package/lib/src/types/partials/Coding.js +3 -0
  93. package/lib/src/types/partials/CompositionAttester.d.ts +11 -0
  94. package/lib/src/types/partials/CompositionAttester.js +3 -0
  95. package/lib/src/types/partials/CompositionEvent.d.ts +12 -0
  96. package/lib/src/types/partials/CompositionEvent.js +3 -0
  97. package/lib/src/types/partials/CompositionRelatesTo.d.ts +11 -0
  98. package/lib/src/types/partials/CompositionRelatesTo.js +3 -0
  99. package/lib/src/types/partials/CompositionSection.d.ts +19 -0
  100. package/lib/src/types/partials/CompositionSection.js +3 -0
  101. package/lib/src/types/partials/ConditionEvidence.d.ts +10 -0
  102. package/lib/src/types/partials/ConditionEvidence.js +3 -0
  103. package/lib/src/types/partials/ConditionStage.d.ts +11 -0
  104. package/lib/src/types/partials/ConditionStage.js +3 -0
  105. package/lib/src/types/partials/ConsentActor.d.ts +10 -0
  106. package/lib/src/types/partials/ConsentActor.js +3 -0
  107. package/lib/src/types/partials/ConsentData.d.ts +9 -0
  108. package/lib/src/types/partials/ConsentData.js +3 -0
  109. package/lib/src/types/partials/ConsentPolicy.d.ts +9 -0
  110. package/lib/src/types/partials/ConsentPolicy.js +3 -0
  111. package/lib/src/types/partials/ConsentProvision.d.ts +22 -0
  112. package/lib/src/types/partials/ConsentProvision.js +3 -0
  113. package/lib/src/types/partials/ConsentVerification.d.ts +11 -0
  114. package/lib/src/types/partials/ConsentVerification.js +3 -0
  115. package/lib/src/types/partials/ContactDetail.d.ts +8 -0
  116. package/lib/src/types/partials/ContactDetail.js +3 -0
  117. package/lib/src/types/partials/ContactPoint.d.ts +12 -0
  118. package/lib/src/types/partials/ContactPoint.js +3 -0
  119. package/lib/src/types/partials/Contributor.d.ts +9 -0
  120. package/lib/src/types/partials/Contributor.js +3 -0
  121. package/lib/src/types/partials/DataRequirement.d.ts +21 -0
  122. package/lib/src/types/partials/DataRequirement.js +3 -0
  123. package/lib/src/types/partials/DataRequirementCodeFilter.d.ts +11 -0
  124. package/lib/src/types/partials/DataRequirementCodeFilter.js +3 -0
  125. package/lib/src/types/partials/DataRequirementDateFilter.d.ts +13 -0
  126. package/lib/src/types/partials/DataRequirementDateFilter.js +3 -0
  127. package/lib/src/types/partials/DataRequirementSort.d.ts +7 -0
  128. package/lib/src/types/partials/DataRequirementSort.js +3 -0
  129. package/lib/src/types/partials/DeviceDeviceName.d.ts +8 -0
  130. package/lib/src/types/partials/DeviceDeviceName.js +3 -0
  131. package/lib/src/types/partials/DeviceProperty.d.ts +11 -0
  132. package/lib/src/types/partials/DeviceProperty.js +3 -0
  133. package/lib/src/types/partials/DeviceSpecialization.d.ts +9 -0
  134. package/lib/src/types/partials/DeviceSpecialization.js +3 -0
  135. package/lib/src/types/partials/DeviceUdiCarrier.d.ts +14 -0
  136. package/lib/src/types/partials/DeviceUdiCarrier.js +3 -0
  137. package/lib/src/types/partials/DeviceVersion.d.ts +11 -0
  138. package/lib/src/types/partials/DeviceVersion.js +3 -0
  139. package/lib/src/types/partials/DiagnosticReportMedia.d.ts +9 -0
  140. package/lib/src/types/partials/DiagnosticReportMedia.js +3 -0
  141. package/lib/src/types/partials/Dosage.d.ts +26 -0
  142. package/lib/src/types/partials/Dosage.js +3 -0
  143. package/lib/src/types/partials/DosageDoseAndRate.d.ts +16 -0
  144. package/lib/src/types/partials/DosageDoseAndRate.js +3 -0
  145. package/lib/src/types/partials/Expression.d.ts +12 -0
  146. package/lib/src/types/partials/Expression.js +3 -0
  147. package/lib/src/types/partials/Extension.d.ts +99 -0
  148. package/lib/src/types/partials/Extension.js +3 -0
  149. package/lib/src/types/partials/FamilyMemberHistoryCondition.d.ts +19 -0
  150. package/lib/src/types/partials/FamilyMemberHistoryCondition.js +3 -0
  151. package/lib/src/types/partials/HumanName.d.ts +13 -0
  152. package/lib/src/types/partials/HumanName.js +3 -0
  153. package/lib/src/types/partials/Identifier.d.ts +15 -0
  154. package/lib/src/types/partials/Identifier.js +3 -0
  155. package/lib/src/types/partials/ImmunizationEducation.d.ts +12 -0
  156. package/lib/src/types/partials/ImmunizationEducation.js +3 -0
  157. package/lib/src/types/partials/ImmunizationPerformer.d.ts +10 -0
  158. package/lib/src/types/partials/ImmunizationPerformer.js +3 -0
  159. package/lib/src/types/partials/ImmunizationProtocolApplied.d.ts +16 -0
  160. package/lib/src/types/partials/ImmunizationProtocolApplied.js +3 -0
  161. package/lib/src/types/partials/ImmunizationReaction.d.ts +11 -0
  162. package/lib/src/types/partials/ImmunizationReaction.js +3 -0
  163. package/lib/src/types/partials/MedicationBatch.d.ts +9 -0
  164. package/lib/src/types/partials/MedicationBatch.js +3 -0
  165. package/lib/src/types/partials/MedicationIngredient.d.ts +13 -0
  166. package/lib/src/types/partials/MedicationIngredient.js +3 -0
  167. package/lib/src/types/partials/MedicationRequestDispenseRequest.d.ts +18 -0
  168. package/lib/src/types/partials/MedicationRequestDispenseRequest.js +3 -0
  169. package/lib/src/types/partials/MedicationRequestInitialFill.d.ts +9 -0
  170. package/lib/src/types/partials/MedicationRequestInitialFill.js +3 -0
  171. package/lib/src/types/partials/MedicationRequestSubstitution.d.ts +10 -0
  172. package/lib/src/types/partials/MedicationRequestSubstitution.js +3 -0
  173. package/lib/src/types/partials/Meta.d.ts +16 -0
  174. package/lib/src/types/partials/Meta.js +3 -0
  175. package/lib/src/types/partials/Money.d.ts +8 -0
  176. package/lib/src/types/partials/Money.js +3 -0
  177. package/lib/src/types/partials/Narrative.d.ts +8 -0
  178. package/lib/src/types/partials/Narrative.js +3 -0
  179. package/lib/src/types/partials/ObservationComponent.d.ts +31 -0
  180. package/lib/src/types/partials/ObservationComponent.js +3 -0
  181. package/lib/src/types/partials/ObservationReferenceRange.d.ts +15 -0
  182. package/lib/src/types/partials/ObservationReferenceRange.js +3 -0
  183. package/lib/src/types/partials/OrganizationContact.d.ts +14 -0
  184. package/lib/src/types/partials/OrganizationContact.js +3 -0
  185. package/lib/src/types/partials/ParameterDefinition.d.ts +14 -0
  186. package/lib/src/types/partials/ParameterDefinition.js +3 -0
  187. package/lib/src/types/partials/PatientCommunication.d.ts +9 -0
  188. package/lib/src/types/partials/PatientCommunication.js +3 -0
  189. package/lib/src/types/partials/PatientContact.d.ts +19 -0
  190. package/lib/src/types/partials/PatientContact.js +3 -0
  191. package/lib/src/types/partials/PatientLink.d.ts +9 -0
  192. package/lib/src/types/partials/PatientLink.js +3 -0
  193. package/lib/src/types/partials/Period.d.ts +8 -0
  194. package/lib/src/types/partials/Period.js +3 -0
  195. package/lib/src/types/partials/ProcedureFocalDevice.d.ts +10 -0
  196. package/lib/src/types/partials/ProcedureFocalDevice.js +3 -0
  197. package/lib/src/types/partials/ProcedurePerformer.d.ts +11 -0
  198. package/lib/src/types/partials/ProcedurePerformer.js +3 -0
  199. package/lib/src/types/partials/Quantity.d.ts +12 -0
  200. package/lib/src/types/partials/Quantity.js +3 -0
  201. package/lib/src/types/partials/Range.d.ts +8 -0
  202. package/lib/src/types/partials/Range.js +3 -0
  203. package/lib/src/types/partials/Ratio.d.ts +8 -0
  204. package/lib/src/types/partials/Ratio.js +3 -0
  205. package/lib/src/types/partials/RatioRange.d.ts +9 -0
  206. package/lib/src/types/partials/RatioRange.js +3 -0
  207. package/lib/src/types/partials/Reference.d.ts +14 -0
  208. package/lib/src/types/partials/Reference.js +3 -0
  209. package/lib/src/types/partials/RelatedArtifact.d.ts +16 -0
  210. package/lib/src/types/partials/RelatedArtifact.js +3 -0
  211. package/lib/src/types/partials/SampledData.d.ts +15 -0
  212. package/lib/src/types/partials/SampledData.js +3 -0
  213. package/lib/src/types/partials/Signature.d.ts +16 -0
  214. package/lib/src/types/partials/Signature.js +3 -0
  215. package/lib/src/types/partials/Timing.d.ts +12 -0
  216. package/lib/src/types/partials/Timing.js +3 -0
  217. package/lib/src/types/partials/TimingRepeat.d.ts +30 -0
  218. package/lib/src/types/partials/TimingRepeat.js +3 -0
  219. package/lib/src/types/partials/TriggerDefinition.d.ts +19 -0
  220. package/lib/src/types/partials/TriggerDefinition.js +3 -0
  221. package/lib/src/types/partials/UsageContext.d.ts +15 -0
  222. package/lib/src/types/partials/UsageContext.js +3 -0
  223. package/lib/src/types/resources/AllergyIntolerance.d.ts +45 -0
  224. package/lib/src/types/resources/AllergyIntolerance.js +3 -0
  225. package/lib/src/types/resources/Bundle.d.ts +22 -0
  226. package/lib/src/types/resources/Bundle.js +3 -0
  227. package/lib/src/types/resources/CarePlan.d.ts +47 -0
  228. package/lib/src/types/resources/CarePlan.js +3 -0
  229. package/lib/src/types/resources/ClinicalImpression.d.ts +45 -0
  230. package/lib/src/types/resources/ClinicalImpression.js +3 -0
  231. package/lib/src/types/resources/Composition.d.ts +39 -0
  232. package/lib/src/types/resources/Composition.js +3 -0
  233. package/lib/src/types/resources/Condition.d.ts +51 -0
  234. package/lib/src/types/resources/Condition.js +3 -0
  235. package/lib/src/types/resources/Consent.d.ts +38 -0
  236. package/lib/src/types/resources/Consent.js +3 -0
  237. package/lib/src/types/resources/Device.d.ts +53 -0
  238. package/lib/src/types/resources/Device.js +3 -0
  239. package/lib/src/types/resources/DeviceUseStatement.d.ts +38 -0
  240. package/lib/src/types/resources/DeviceUseStatement.js +3 -0
  241. package/lib/src/types/resources/DiagnosticReport.d.ts +43 -0
  242. package/lib/src/types/resources/DiagnosticReport.js +3 -0
  243. package/lib/src/types/resources/DomainResource.d.ts +16 -0
  244. package/lib/src/types/resources/DomainResource.js +3 -0
  245. package/lib/src/types/resources/FamilyMemberHistory.d.ts +53 -0
  246. package/lib/src/types/resources/FamilyMemberHistory.js +3 -0
  247. package/lib/src/types/resources/Immunization.d.ts +56 -0
  248. package/lib/src/types/resources/Immunization.js +3 -0
  249. package/lib/src/types/resources/Medication.d.ts +30 -0
  250. package/lib/src/types/resources/Medication.js +3 -0
  251. package/lib/src/types/resources/MedicationRequest.d.ts +59 -0
  252. package/lib/src/types/resources/MedicationRequest.js +3 -0
  253. package/lib/src/types/resources/MedicationStatement.d.ts +42 -0
  254. package/lib/src/types/resources/MedicationStatement.js +3 -0
  255. package/lib/src/types/resources/Observation.d.ts +69 -0
  256. package/lib/src/types/resources/Observation.js +3 -0
  257. package/lib/src/types/resources/Organization.d.ts +32 -0
  258. package/lib/src/types/resources/Organization.js +3 -0
  259. package/lib/src/types/resources/Patient.d.ts +47 -0
  260. package/lib/src/types/resources/Patient.js +3 -0
  261. package/lib/src/types/resources/Procedure.d.ts +59 -0
  262. package/lib/src/types/resources/Procedure.js +3 -0
  263. package/lib/src/types/simpleTypes/Base64Binary.d.ts +1 -0
  264. package/lib/src/types/simpleTypes/Base64Binary.js +2 -0
  265. package/lib/src/types/simpleTypes/Canonical.d.ts +1 -0
  266. package/lib/src/types/simpleTypes/Canonical.js +2 -0
  267. package/lib/src/types/simpleTypes/Date.d.ts +1 -0
  268. package/lib/src/types/simpleTypes/Date.js +2 -0
  269. package/lib/src/types/simpleTypes/DateTime.d.ts +1 -0
  270. package/lib/src/types/simpleTypes/DateTime.js +2 -0
  271. package/lib/src/types/simpleTypes/Decimal.d.ts +1 -0
  272. package/lib/src/types/simpleTypes/Decimal.js +2 -0
  273. package/lib/src/types/simpleTypes/Id.d.ts +1 -0
  274. package/lib/src/types/simpleTypes/Id.js +2 -0
  275. package/lib/src/types/simpleTypes/Instant.d.ts +1 -0
  276. package/lib/src/types/simpleTypes/Instant.js +2 -0
  277. package/lib/src/types/simpleTypes/Int.d.ts +1 -0
  278. package/lib/src/types/simpleTypes/Int.js +2 -0
  279. package/lib/src/types/simpleTypes/Markdown.d.ts +1 -0
  280. package/lib/src/types/simpleTypes/Markdown.js +2 -0
  281. package/lib/src/types/simpleTypes/Oid.d.ts +1 -0
  282. package/lib/src/types/simpleTypes/Oid.js +2 -0
  283. package/lib/src/types/simpleTypes/ResourceContainer.d.ts +1 -0
  284. package/lib/src/types/simpleTypes/ResourceContainer.js +2 -0
  285. package/lib/src/types/simpleTypes/Time.d.ts +1 -0
  286. package/lib/src/types/simpleTypes/Time.js +2 -0
  287. package/lib/src/types/simpleTypes/UnsignedInt.d.ts +1 -0
  288. package/lib/src/types/simpleTypes/UnsignedInt.js +2 -0
  289. package/lib/src/types/simpleTypes/Uri.d.ts +1 -0
  290. package/lib/src/types/simpleTypes/Uri.js +2 -0
  291. package/lib/src/types/simpleTypes/Url.d.ts +1 -0
  292. package/lib/src/types/simpleTypes/Url.js +2 -0
  293. package/lib/src/types/simpleTypes/Uuid.d.ts +1 -0
  294. package/lib/src/types/simpleTypes/Uuid.js +2 -0
  295. package/lib/src/types/simpleTypes/Xhtml.d.ts +1 -0
  296. package/lib/src/types/simpleTypes/Xhtml.js +2 -0
  297. package/lib/test/fhir-summary-bundle/fhir-summary-bundle.test.d.ts +1 -0
  298. package/lib/test/fhir-summary-bundle/fhir-summary-bundle.test.js +72 -0
  299. package/lib/test/ips-test/ips.test.d.ts +1 -0
  300. package/lib/test/ips-test/ips.test.js +389 -0
  301. package/lib/test/narrativeGenerator/narrativeGenerator.test.d.ts +1 -0
  302. package/lib/test/narrativeGenerator/narrativeGenerator.test.js +676 -0
  303. package/lib/test/summary.test.d.ts +1 -0
  304. package/lib/test/summary.test.js +452 -0
  305. package/lib/test/utilities/testHelpers.d.ts +21 -0
  306. package/lib/test/utilities/testHelpers.js +137 -0
  307. package/package.json +126 -0
@@ -0,0 +1,50 @@
1
+ import { TBundle } from '../../../types/resources/Bundle';
2
+ import { ITemplate } from './interfaces/ITemplate';
3
+ /**
4
+ * Class to generate HTML narrative for Medication resources
5
+ * This replaces the Jinja2 medicationsummary.j2 template
6
+ */
7
+ export declare class MedicationSummaryTemplate implements ITemplate {
8
+ /**
9
+ * Generate HTML narrative for Medication resources
10
+ * @param resource - FHIR Bundle containing Medication resources
11
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
12
+ * @returns HTML string for rendering
13
+ */
14
+ generateNarrative(resource: TBundle, timezone: string | undefined): string;
15
+ /**
16
+ * Internal static implementation that actually generates the narrative
17
+ * @param resource - FHIR Bundle containing Medication resources
18
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
19
+ * @returns HTML string for rendering
20
+ */
21
+ private static generateStaticNarrative;
22
+ /**
23
+ * Extract MedicationRequest resources from the bundle
24
+ * @param templateUtilities - Instance of TemplateUtilities for utility functions
25
+ * @param resource - FHIR Bundle
26
+ * @returns Array of MedicationRequest resources
27
+ */
28
+ private static getMedicationRequests;
29
+ /**
30
+ * Extract MedicationStatement resources from the bundle
31
+ * @param templateUtilities - Instance of TemplateUtilities for utility functions
32
+ * @param resource - FHIR Bundle
33
+ * @returns Array of MedicationStatement resources
34
+ */
35
+ private static getMedicationStatements;
36
+ /**
37
+ * Render HTML table for MedicationRequest resources
38
+ * @param templateUtilities - Instance of TemplateUtilities for utility functions
39
+ * @param medications - Array of MedicationRequest resources
40
+ * @returns HTML string for rendering
41
+ */
42
+ private static renderMedicationRequests;
43
+ /**
44
+ * Render HTML table for MedicationStatement resources
45
+ * @param templateUtilities - Instance of TemplateUtilities for utility functions
46
+ * @param medications - Array of MedicationStatement resources
47
+ * @returns HTML string for rendering
48
+ */
49
+ private static renderMedicationStatements;
50
+ }
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MedicationSummaryTemplate = void 0;
4
+ // MedicationSummaryTemplate.ts - TypeScript replacement for Jinja2 medicationsummary.j2
5
+ const TemplateUtilities_1 = require("./TemplateUtilities");
6
+ /**
7
+ * Class to generate HTML narrative for Medication resources
8
+ * This replaces the Jinja2 medicationsummary.j2 template
9
+ */
10
+ class MedicationSummaryTemplate {
11
+ /**
12
+ * Generate HTML narrative for Medication resources
13
+ * @param resource - FHIR Bundle containing Medication resources
14
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
15
+ * @returns HTML string for rendering
16
+ */
17
+ generateNarrative(resource, timezone) {
18
+ return MedicationSummaryTemplate.generateStaticNarrative(resource, timezone);
19
+ }
20
+ /**
21
+ * Internal static implementation that actually generates the narrative
22
+ * @param resource - FHIR Bundle containing Medication resources
23
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
24
+ * @returns HTML string for rendering
25
+ */
26
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
+ static generateStaticNarrative(resource, timezone) {
28
+ const templateUtilities = new TemplateUtilities_1.TemplateUtilities(resource);
29
+ let html = '';
30
+ // Add Medication Requests section if we have any
31
+ const medicationRequests = this.getMedicationRequests(templateUtilities, resource);
32
+ if (medicationRequests.length > 0) {
33
+ html += this.renderMedicationRequests(templateUtilities, medicationRequests);
34
+ }
35
+ // Add Medication Statements section if we have any
36
+ const medicationStatements = this.getMedicationStatements(templateUtilities, resource);
37
+ if (medicationStatements.length > 0) {
38
+ html += this.renderMedicationStatements(templateUtilities, medicationStatements);
39
+ }
40
+ return html;
41
+ }
42
+ /**
43
+ * Extract MedicationRequest resources from the bundle
44
+ * @param templateUtilities - Instance of TemplateUtilities for utility functions
45
+ * @param resource - FHIR Bundle
46
+ * @returns Array of MedicationRequest resources
47
+ */
48
+ static getMedicationRequests(templateUtilities, resource) {
49
+ if (!resource.entry || !Array.isArray(resource.entry)) {
50
+ return [];
51
+ }
52
+ return resource.entry
53
+ .filter(entry => { var _a; return ((_a = entry.resource) === null || _a === void 0 ? void 0 : _a.resourceType) === 'MedicationRequest'; })
54
+ .map(entry => ({
55
+ resource: entry.resource,
56
+ extension: templateUtilities.narrativeLinkExtension(entry.resource)
57
+ }));
58
+ }
59
+ /**
60
+ * Extract MedicationStatement resources from the bundle
61
+ * @param templateUtilities - Instance of TemplateUtilities for utility functions
62
+ * @param resource - FHIR Bundle
63
+ * @returns Array of MedicationStatement resources
64
+ */
65
+ static getMedicationStatements(templateUtilities, resource) {
66
+ if (!resource.entry || !Array.isArray(resource.entry)) {
67
+ return [];
68
+ }
69
+ return resource.entry
70
+ .filter(entry => { var _a; return ((_a = entry.resource) === null || _a === void 0 ? void 0 : _a.resourceType) === 'MedicationStatement'; })
71
+ .map(entry => ({
72
+ resource: entry.resource,
73
+ extension: templateUtilities.narrativeLinkExtension(entry.resource)
74
+ }));
75
+ }
76
+ /**
77
+ * Render HTML table for MedicationRequest resources
78
+ * @param templateUtilities - Instance of TemplateUtilities for utility functions
79
+ * @param medications - Array of MedicationRequest resources
80
+ * @returns HTML string for rendering
81
+ */
82
+ static renderMedicationRequests(templateUtilities, medications) {
83
+ var _a, _b, _c, _d;
84
+ let html = `<div xmlns="http://www.w3.org/1999/xhtml">
85
+ <table>
86
+ <thead>
87
+ <tr>
88
+ <th>Medication</th>
89
+ <th>Sig</th>
90
+ <th>Dispense Quantity</th>
91
+ <th>Refills</th>
92
+ <th>Start Date</th>
93
+ <th>End Date</th>
94
+ <th>Status</th>
95
+ </tr>
96
+ </thead>
97
+ <tbody>`;
98
+ for (const { resource: mr, extension } of medications) {
99
+ // Use the narrativeLinkId utility function to extract the ID
100
+ const narrativeLinkId = templateUtilities.narrativeLinkId(extension);
101
+ // Format status
102
+ const status = mr.status ? String(mr.status) : '-';
103
+ // Get medication name using the new shared function
104
+ const medication = templateUtilities.getMedicationName(mr.medicationReference || mr.medicationCodeableConcept);
105
+ // Get Sig/dosage instructions
106
+ const sig = templateUtilities.concat(mr.dosageInstruction, 'text') || '-';
107
+ // Get dispense quantity
108
+ let dispenseQuantity = '-';
109
+ if ((_a = mr.dispenseRequest) === null || _a === void 0 ? void 0 : _a.quantity) {
110
+ const quantity = mr.dispenseRequest.quantity;
111
+ if (quantity.value) {
112
+ dispenseQuantity = `${quantity.value} ${quantity.unit || quantity.code || ''}`.trim();
113
+ }
114
+ }
115
+ // Get refills
116
+ const refills = ((_c = (_b = mr.dispenseRequest) === null || _b === void 0 ? void 0 : _b.numberOfRepeatsAllowed) === null || _c === void 0 ? void 0 : _c.toString()) || '-';
117
+ // Get dates
118
+ let startDate = '-';
119
+ let endDate = '-';
120
+ if ((_d = mr.dispenseRequest) === null || _d === void 0 ? void 0 : _d.validityPeriod) {
121
+ startDate = mr.dispenseRequest.validityPeriod.start || '-';
122
+ endDate = mr.dispenseRequest.validityPeriod.end || '-';
123
+ }
124
+ else {
125
+ // Use authored date as fallback for start date
126
+ startDate = mr.authoredOn || '-';
127
+ }
128
+ // Add table row
129
+ html += `
130
+ <tr${narrativeLinkId ? ` id="${narrativeLinkId}"` : ''}>
131
+ <td>${medication}<ul></ul></td>
132
+ <td>${sig}</td>
133
+ <td>${dispenseQuantity}</td>
134
+ <td>${refills}</td>
135
+ <td>${startDate}</td>
136
+ <td>${endDate}</td>
137
+ <td>${status}</td>
138
+ </tr>`;
139
+ }
140
+ html += `
141
+ </tbody>
142
+ </table></div>`;
143
+ return html;
144
+ }
145
+ /**
146
+ * Render HTML table for MedicationStatement resources
147
+ * @param templateUtilities - Instance of TemplateUtilities for utility functions
148
+ * @param medications - Array of MedicationStatement resources
149
+ * @returns HTML string for rendering
150
+ */
151
+ static renderMedicationStatements(templateUtilities, medications) {
152
+ let html = `<div xmlns="http://www.w3.org/1999/xhtml">
153
+ <table>
154
+ <thead>
155
+ <tr>
156
+ <th>Medication</th>
157
+ <th>Sig</th>
158
+ <th>Dispense Quantity</th>
159
+ <th>Refills</th>
160
+ <th>Start Date</th>
161
+ <th>End Date</th>
162
+ <th>Status</th>
163
+ </tr>
164
+ </thead>
165
+ <tbody>`;
166
+ for (const { resource: ms, extension } of medications) {
167
+ // Use the narrativeLinkId utility function to extract the ID
168
+ const narrativeLinkId = templateUtilities.narrativeLinkId(extension);
169
+ // Format status
170
+ const status = ms.status ? String(ms.status) : '-';
171
+ // Get medication name using the new shared function
172
+ const medication = templateUtilities.getMedicationName(ms.medicationReference || ms.medicationCodeableConcept);
173
+ // Get Sig/dosage instructions
174
+ const sig = templateUtilities.concat(ms.dosage, 'text') || '-';
175
+ // Dispense quantity and refills aren't typically in MedicationStatement
176
+ const dispenseQuantity = '-';
177
+ const refills = '-';
178
+ // Get dates
179
+ let startDate = '-';
180
+ let endDate = '-';
181
+ if (ms.effectiveDateTime) {
182
+ startDate = ms.effectiveDateTime;
183
+ }
184
+ else if (ms.effectivePeriod) {
185
+ startDate = ms.effectivePeriod.start || '-';
186
+ endDate = ms.effectivePeriod.end || '-';
187
+ }
188
+ // Add table row
189
+ html += `
190
+ <tr${narrativeLinkId ? ` id="${narrativeLinkId}"` : ''}>
191
+ <td>${medication}<ul></ul></td>
192
+ <td>${sig}</td>
193
+ <td>${dispenseQuantity}</td>
194
+ <td>${refills}</td>
195
+ <td>${startDate}</td>
196
+ <td>${endDate}</td>
197
+ <td>${status}</td>
198
+ </tr>`;
199
+ }
200
+ html += `
201
+ </tbody>
202
+ </table></div>`;
203
+ return html;
204
+ }
205
+ }
206
+ exports.MedicationSummaryTemplate = MedicationSummaryTemplate;
@@ -0,0 +1,15 @@
1
+ import { TBundle } from '../../../types/resources/Bundle';
2
+ import { ITemplate } from './interfaces/ITemplate';
3
+ /**
4
+ * Class to generate HTML narrative for Past History of Illness (Condition resources)
5
+ * This replaces the Jinja2 pasthistoryofillness.j2 template
6
+ */
7
+ export declare class PastHistoryOfIllnessTemplate implements ITemplate {
8
+ /**
9
+ * Generate HTML narrative for Past History of Illnesses
10
+ * @param resource - FHIR Bundle containing Condition resources
11
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
12
+ * @returns HTML string for rendering
13
+ */
14
+ generateNarrative(resource: TBundle, timezone: string | undefined): string;
15
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PastHistoryOfIllnessTemplate = void 0;
4
+ // PastHistoryOfIllnessTemplate.ts - TypeScript replacement for Jinja2 pasthistoryofillness.j2
5
+ const TemplateUtilities_1 = require("./TemplateUtilities");
6
+ /**
7
+ * Class to generate HTML narrative for Past History of Illness (Condition resources)
8
+ * This replaces the Jinja2 pasthistoryofillness.j2 template
9
+ */
10
+ class PastHistoryOfIllnessTemplate {
11
+ /**
12
+ * Generate HTML narrative for Past History of Illnesses
13
+ * @param resource - FHIR Bundle containing Condition resources
14
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
15
+ * @returns HTML string for rendering
16
+ */
17
+ generateNarrative(resource, timezone) {
18
+ const templateUtilities = new TemplateUtilities_1.TemplateUtilities(resource);
19
+ // Start building the HTML table
20
+ let html = `
21
+ <h5>Past History of Illnesses</h5>
22
+ <table class="hapiPropertyTable">
23
+ <thead>
24
+ <tr>
25
+ <th>Medical Problems</th>
26
+ <th>Status</th>
27
+ <th>Comments</th>
28
+ <th>Date</th>
29
+ </tr>
30
+ </thead>
31
+ <tbody>`;
32
+ // Check if we have entries in the bundle
33
+ if (resource.entry && Array.isArray(resource.entry)) {
34
+ // Loop through entries in the bundle
35
+ for (const entry of resource.entry) {
36
+ const cond = entry.resource;
37
+ // Skip Composition resources
38
+ if (cond.resourceType === 'Composition') {
39
+ continue;
40
+ }
41
+ // Use the enhanced narrativeLinkId utility function to extract the ID directly from the resource
42
+ // Add a table row for this condition
43
+ html += `
44
+ <tr id="${(templateUtilities.narrativeLinkId(cond))}">
45
+ <td>${templateUtilities.codeableConcept(cond.code, 'display')}</td>
46
+ <td>${templateUtilities.codeableConcept(cond.clinicalStatus, 'code')}</td>
47
+ <td>${templateUtilities.renderNotes(cond.note, timezone)}</td>
48
+ <td>${templateUtilities.renderTime(cond.onsetDateTime, timezone)}</td>
49
+ </tr>`;
50
+ }
51
+ }
52
+ // Close the HTML table
53
+ html += `
54
+ </tbody>
55
+ </table>`;
56
+ return html;
57
+ }
58
+ }
59
+ exports.PastHistoryOfIllnessTemplate = PastHistoryOfIllnessTemplate;
@@ -0,0 +1,65 @@
1
+ import { TBundle } from '../../../types/resources/Bundle';
2
+ import { ITemplate } from './interfaces/ITemplate';
3
+ /**
4
+ * Class to generate HTML narrative for Patient resources
5
+ * This replaces the Jinja2 patient.j2 template
6
+ */
7
+ export declare class PatientTemplate implements ITemplate {
8
+ /**
9
+ * Generate HTML narrative for Patient resource
10
+ * @param resource - FHIR Bundle containing Patient resource
11
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
12
+ * @returns HTML string for rendering
13
+ */
14
+ generateNarrative(resource: TBundle, timezone: string | undefined): string;
15
+ /**
16
+ * Internal static implementation that actually generates the narrative
17
+ * @param resource - FHIR Bundle containing Patient resource
18
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
19
+ * @returns HTML string for rendering
20
+ */
21
+ private static generateStaticNarrative;
22
+ /**
23
+ * Renders patient names as HTML list items
24
+ * @param patient - Patient resource
25
+ * @returns HTML string of list items
26
+ */
27
+ private static renderNames;
28
+ /**
29
+ * Renders patient identifiers as HTML list items
30
+ * @param patient - Patient resource
31
+ * @returns HTML string of list items
32
+ */
33
+ private static renderIdentifiers;
34
+ /**
35
+ * Renders patient telecom information as HTML list items
36
+ * @param patient - Patient resource
37
+ * @returns HTML string of list items
38
+ */
39
+ private static renderTelecom;
40
+ /**
41
+ * Renders patient addresses as HTML list items
42
+ * @param patient - Patient resource
43
+ * @returns HTML string of list items
44
+ */
45
+ private static renderAddresses;
46
+ /**
47
+ * Renders patient deceased status
48
+ * @param patient - Patient resource
49
+ * @returns HTML string for deceased status
50
+ */
51
+ private static renderDeceased;
52
+ /**
53
+ * Renders patient communication preferences as HTML list items
54
+ * @param templateUtilities - Instance of TemplateUtilities for utility functions
55
+ * @param patient - Patient resource
56
+ * @returns HTML string of list items
57
+ */
58
+ private static renderCommunication;
59
+ /**
60
+ * Capitalizes first letter of a string
61
+ * @param str - String to capitalize
62
+ * @returns Capitalized string
63
+ */
64
+ private static capitalize;
65
+ }
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PatientTemplate = void 0;
4
+ // PatientTemplate.ts - TypeScript replacement for Jinja2 patient.j2
5
+ const TemplateUtilities_1 = require("./TemplateUtilities");
6
+ /**
7
+ * Class to generate HTML narrative for Patient resources
8
+ * This replaces the Jinja2 patient.j2 template
9
+ */
10
+ class PatientTemplate {
11
+ /**
12
+ * Generate HTML narrative for Patient resource
13
+ * @param resource - FHIR Bundle containing Patient resource
14
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
15
+ * @returns HTML string for rendering
16
+ */
17
+ generateNarrative(resource, timezone) {
18
+ return PatientTemplate.generateStaticNarrative(resource, timezone);
19
+ }
20
+ /**
21
+ * Internal static implementation that actually generates the narrative
22
+ * @param resource - FHIR Bundle containing Patient resource
23
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
24
+ * @returns HTML string for rendering
25
+ */
26
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
+ static generateStaticNarrative(resource, timezone) {
28
+ var _a, _b;
29
+ const templateUtilities = new TemplateUtilities_1.TemplateUtilities(resource);
30
+ let html = '';
31
+ // Loop through bundle entries to find Patient resources
32
+ for (const entry of resource.entry || []) {
33
+ if (((_a = entry.resource) === null || _a === void 0 ? void 0 : _a.resourceType) === 'Patient') {
34
+ const patient = entry.resource;
35
+ html += `
36
+ <div>
37
+ <h2>Patient Summary</h2>
38
+ <ul>
39
+ <li><strong>Name(s):</strong>${this.renderNames(patient)}</li>
40
+ <li><strong>Gender:</strong>${patient.gender ? this.capitalize(patient.gender) : ''}</li>
41
+ <li><strong>Date of Birth:</strong>${patient.birthDate || ''}</li>
42
+ <li><strong>Identifier(s):</strong>${this.renderIdentifiers(patient)}</li>
43
+ <li><strong>Telecom:</strong>${this.renderTelecom(patient)}</li>
44
+ <li><strong>Address(es):</strong>${this.renderAddresses(patient)}</li>
45
+ <li><strong>Marital Status:</strong> ${((_b = patient.maritalStatus) === null || _b === void 0 ? void 0 : _b.text) || ''}</li>
46
+ <li><strong>Deceased:</strong>${this.renderDeceased(patient)}</li>
47
+ <li><strong>Language(s):</strong>${this.renderCommunication(templateUtilities, patient)}</li>
48
+ </ul>
49
+ </div>`;
50
+ }
51
+ }
52
+ return html;
53
+ }
54
+ /**
55
+ * Renders patient names as HTML list items
56
+ * @param patient - Patient resource
57
+ * @returns HTML string of list items
58
+ */
59
+ static renderNames(patient) {
60
+ if (!patient.name || patient.name.length === 0) {
61
+ return '';
62
+ }
63
+ return patient.name.map(name => {
64
+ const nameText = name.text ||
65
+ ((name.given || []).join(' ') + ' ' + (name.family || '')).trim();
66
+ return `<ul><li>${nameText}</li></ul>`;
67
+ }).join('');
68
+ }
69
+ /**
70
+ * Renders patient identifiers as HTML list items
71
+ * @param patient - Patient resource
72
+ * @returns HTML string of list items
73
+ */
74
+ static renderIdentifiers(patient) {
75
+ if (!patient.identifier || patient.identifier.length === 0) {
76
+ return '';
77
+ }
78
+ return patient.identifier.map(id => {
79
+ const system = id.system || '';
80
+ const value = id.value || '';
81
+ return `<ul><li>${system}: ${value}</li></ul>`;
82
+ }).join('');
83
+ }
84
+ /**
85
+ * Renders patient telecom information as HTML list items
86
+ * @param patient - Patient resource
87
+ * @returns HTML string of list items
88
+ */
89
+ static renderTelecom(patient) {
90
+ if (!patient.telecom || patient.telecom.length === 0) {
91
+ return '';
92
+ }
93
+ return patient.telecom.map(telecom => {
94
+ const system = telecom.system ? this.capitalize(telecom.system) : '';
95
+ const value = telecom.value || '';
96
+ const use = telecom.use ? ` (${telecom.use})` : '';
97
+ return `<ul><li>${system}: ${value}${use}</li></ul>`;
98
+ }).join('');
99
+ }
100
+ /**
101
+ * Renders patient addresses as HTML list items
102
+ * @param patient - Patient resource
103
+ * @returns HTML string of list items
104
+ */
105
+ static renderAddresses(patient) {
106
+ if (!patient.address || patient.address.length === 0) {
107
+ return '';
108
+ }
109
+ return patient.address.map(address => {
110
+ const addressText = address.text ||
111
+ ((address.line || []).join(', ') + ', ' + (address.city || '') + ', ' + (address.country || '')).trim();
112
+ return `<ul><li>${addressText}</li></ul>`;
113
+ }).join('');
114
+ }
115
+ /**
116
+ * Renders patient deceased status
117
+ * @param patient - Patient resource
118
+ * @returns HTML string for deceased status
119
+ */
120
+ static renderDeceased(patient) {
121
+ if (patient.deceasedBoolean !== undefined) {
122
+ return patient.deceasedBoolean ? 'Yes' : 'No';
123
+ }
124
+ if (patient.deceasedDateTime) {
125
+ return patient.deceasedDateTime;
126
+ }
127
+ return '';
128
+ }
129
+ /**
130
+ * Renders patient communication preferences as HTML list items
131
+ * @param templateUtilities - Instance of TemplateUtilities for utility functions
132
+ * @param patient - Patient resource
133
+ * @returns HTML string of list items
134
+ */
135
+ static renderCommunication(templateUtilities, patient) {
136
+ if (!patient.communication || patient.communication.length === 0) {
137
+ return '';
138
+ }
139
+ return patient.communication.map(comm => {
140
+ if (!comm.language)
141
+ return '';
142
+ const language = templateUtilities.codeableConcept(comm.language);
143
+ const preferred = comm.preferred ? ' (preferred)' : '';
144
+ return `<ul><li>${language}${preferred}</li></ul>`;
145
+ }).join('');
146
+ }
147
+ /**
148
+ * Capitalizes first letter of a string
149
+ * @param str - String to capitalize
150
+ * @returns Capitalized string
151
+ */
152
+ static capitalize(str) {
153
+ if (!str)
154
+ return '';
155
+ return str.charAt(0).toUpperCase() + str.slice(1);
156
+ }
157
+ }
158
+ exports.PatientTemplate = PatientTemplate;
@@ -0,0 +1,15 @@
1
+ import { TBundle } from '../../../types/resources/Bundle';
2
+ import { ITemplate } from './interfaces/ITemplate';
3
+ /**
4
+ * Class to generate HTML narrative for Plan of Care (CarePlan resources)
5
+ * This replaces the Jinja2 planofcare.j2 template
6
+ */
7
+ export declare class PlanOfCareTemplate implements ITemplate {
8
+ /**
9
+ * Generate HTML narrative for Plan of Care
10
+ * @param resource - FHIR Bundle containing CarePlan resources
11
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
12
+ * @returns HTML string for rendering
13
+ */
14
+ generateNarrative(resource: TBundle, timezone: string | undefined): string;
15
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlanOfCareTemplate = void 0;
4
+ // PlanOfCareTemplate.ts - TypeScript replacement for Jinja2 planofcare.j2
5
+ const TemplateUtilities_1 = require("./TemplateUtilities");
6
+ /**
7
+ * Class to generate HTML narrative for Plan of Care (CarePlan resources)
8
+ * This replaces the Jinja2 planofcare.j2 template
9
+ */
10
+ class PlanOfCareTemplate {
11
+ /**
12
+ * Generate HTML narrative for Plan of Care
13
+ * @param resource - FHIR Bundle containing CarePlan resources
14
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
15
+ * @returns HTML string for rendering
16
+ */
17
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
18
+ generateNarrative(resource, timezone) {
19
+ var _a, _b;
20
+ const templateUtilities = new TemplateUtilities_1.TemplateUtilities(resource);
21
+ // Start building the HTML table
22
+ let html = `
23
+ <h5>Plan of Care</h5>
24
+ <table class="hapiPropertyTable">
25
+ <thead>
26
+ <tr>
27
+ <th>Activity</th>
28
+ <th>Intent</th>
29
+ <th>Comments</th>
30
+ <th>Planned Start</th>
31
+ <th>Planned End</th>
32
+ </tr>
33
+ </thead>
34
+ <tbody>`;
35
+ // Check if we have entries in the bundle
36
+ if (resource.entry && Array.isArray(resource.entry)) {
37
+ // Loop through entries in the bundle
38
+ for (const entry of resource.entry) {
39
+ const cp = entry.resource;
40
+ // Skip Composition resources
41
+ if (cp.resourceType === 'Composition') {
42
+ continue;
43
+ }
44
+ // Use the enhanced narrativeLinkId utility function to extract the ID directly from the resource
45
+ // Add a table row for this care plan
46
+ html += `
47
+ <tr id="${(templateUtilities.narrativeLinkId(cp))}">
48
+ <td>${cp.description || ''}</td>
49
+ <td>${cp.intent || cp.intent || ''}</td>
50
+ <td>${templateUtilities.concat(cp.note, 'text')}</td>
51
+ <td>${((_a = cp.period) === null || _a === void 0 ? void 0 : _a.start) || ''}</td>
52
+ <td>${((_b = cp.period) === null || _b === void 0 ? void 0 : _b.end) || ''}</td>
53
+ </tr>`;
54
+ }
55
+ }
56
+ // Close the HTML table
57
+ html += `
58
+ </tbody>
59
+ </table>`;
60
+ return html;
61
+ }
62
+ }
63
+ exports.PlanOfCareTemplate = PlanOfCareTemplate;
@@ -0,0 +1,22 @@
1
+ import { TBundle } from '../../../types/resources/Bundle';
2
+ import { ITemplate } from './interfaces/ITemplate';
3
+ /**
4
+ * Class to generate HTML narrative for Pregnancy (Observation resources)
5
+ * This replaces the Jinja2 pregnancy.j2 template
6
+ */
7
+ export declare class PregnancyTemplate implements ITemplate {
8
+ /**
9
+ * Generate HTML narrative for Pregnancy
10
+ * @param resource - FHIR Bundle containing Observation resources
11
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
12
+ * @returns HTML string for rendering
13
+ */
14
+ generateNarrative(resource: TBundle, timezone: string | undefined): string;
15
+ /**
16
+ * Internal static implementation that actually generates the narrative
17
+ * @param resource - FHIR Bundle containing Observation resources
18
+ * @param timezone - Optional timezone to use for date formatting (e.g., 'America/New_York', 'Europe/London')
19
+ * @returns HTML string for rendering
20
+ */
21
+ private static generateStaticNarrative;
22
+ }