@icure/api 5.3.6 → 5.3.8

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 (1843) hide show
  1. package/{dist/icc-api → icc-api}/model/models.d.ts +2 -2
  2. package/{dist/icc-x-api → icc-x-api}/auth/AuthenticationProvider.js +6 -6
  3. package/icc-x-api/auth/AuthenticationProvider.js.map +1 -0
  4. package/{dist/icc-x-api → icc-x-api}/crypto/AES.d.ts +1 -0
  5. package/{dist/icc-x-api → icc-x-api}/crypto/AES.js +13 -4
  6. package/icc-x-api/crypto/AES.js.map +1 -0
  7. package/{dist/icc-x-api → icc-x-api}/filters/filters.d.ts +1 -1
  8. package/{dist/icc-x-api → icc-x-api}/icc-accesslog-x-api.js +9 -6
  9. package/icc-x-api/icc-accesslog-x-api.js.map +1 -0
  10. package/{dist/icc-x-api → icc-x-api}/icc-bekmehr-x-api.d.ts +1 -1
  11. package/{dist/icc-x-api → icc-x-api}/icc-calendar-item-x-api.js +8 -2
  12. package/icc-x-api/icc-calendar-item-x-api.js.map +1 -0
  13. package/{dist/icc-x-api → icc-x-api}/icc-contact-x-api.js +11 -7
  14. package/icc-x-api/icc-contact-x-api.js.map +1 -0
  15. package/{dist/icc-x-api → icc-x-api}/icc-crypto-x-api.d.ts +7 -1
  16. package/{dist/icc-x-api → icc-x-api}/icc-crypto-x-api.js +57 -41
  17. package/icc-x-api/icc-crypto-x-api.js.map +1 -0
  18. package/{dist/icc-x-api → icc-x-api}/icc-form-x-api.js +2 -1
  19. package/icc-x-api/icc-form-x-api.js.map +1 -0
  20. package/{dist/icc-x-api → icc-x-api}/icc-helement-x-api.js +8 -2
  21. package/icc-x-api/icc-helement-x-api.js.map +1 -0
  22. package/{dist/icc-x-api → icc-x-api}/icc-maintenance-task-x-api.js +8 -2
  23. package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -0
  24. package/{dist/icc-x-api → icc-x-api}/icc-patient-x-api.js +62 -57
  25. package/icc-x-api/icc-patient-x-api.js.map +1 -0
  26. package/{dist/icc-x-api → icc-x-api}/utils/asn1-packer.d.ts +1 -1
  27. package/{dist/icc-x-api → icc-x-api}/utils/asn1-parser.d.ts +1 -1
  28. package/{dist/icc-x-api → icc-x-api}/utils/net-utils.d.ts +2 -2
  29. package/package.json +3 -65
  30. package/.editorconfig +0 -11
  31. package/.eslintrc.js +0 -31
  32. package/.github/workflows/build.yml +0 -41
  33. package/.gitmodules +0 -3
  34. package/.nyc_output/4fb11039-5260-43aa-bbec-20ed9a7243b5.json +0 -1
  35. package/.nyc_output/d3da738f-2735-4cbe-9ce5-8270e16e2706.json +0 -1
  36. package/.nyc_output/processinfo/4fb11039-5260-43aa-bbec-20ed9a7243b5.json +0 -1
  37. package/.nyc_output/processinfo/d3da738f-2735-4cbe-9ce5-8270e16e2706.json +0 -1
  38. package/.nyc_output/processinfo/index.json +0 -1
  39. package/.pre-commit-config.yaml +0 -22
  40. package/.prettierrc +0 -5
  41. package/.secrets.baseline +0 -174
  42. package/CHANGELOG.md +0 -112
  43. package/Dockerfile +0 -25
  44. package/InstantiateIccXApiWithAuthProvider.md +0 -72
  45. package/LICENSE +0 -7
  46. package/README.md +0 -75
  47. package/apidocs/.swagger-codegen-ignore +0 -23
  48. package/ci/cloudbuild.yaml +0 -16
  49. package/dist/icc-x-api/auth/AuthenticationProvider.js.map +0 -1
  50. package/dist/icc-x-api/crypto/AES.js.map +0 -1
  51. package/dist/icc-x-api/icc-accesslog-x-api.js.map +0 -1
  52. package/dist/icc-x-api/icc-calendar-item-x-api.js.map +0 -1
  53. package/dist/icc-x-api/icc-contact-x-api.js.map +0 -1
  54. package/dist/icc-x-api/icc-crypto-x-api.js.map +0 -1
  55. package/dist/icc-x-api/icc-form-x-api.js.map +0 -1
  56. package/dist/icc-x-api/icc-helement-x-api.js.map +0 -1
  57. package/dist/icc-x-api/icc-maintenance-task-x-api.js.map +0 -1
  58. package/dist/icc-x-api/icc-patient-x-api.js.map +0 -1
  59. package/dist/package.json +0 -22
  60. package/fake-secrets.txt +0 -3
  61. package/icc-api/.swagger-codegen/VERSION +0 -1
  62. package/icc-api/.swagger-codegen-ignore +0 -23
  63. package/icc-api/LICENSE +0 -201
  64. package/icc-api/api/IccAccesslogApi.ts +0 -265
  65. package/icc-api/api/IccAgendaApi.ts +0 -151
  66. package/icc-api/api/IccAnonymousAccessApi.ts +0 -126
  67. package/icc-api/api/IccApplicationsettingsApi.ts +0 -89
  68. package/icc-api/api/IccArticleApi.ts +0 -120
  69. package/icc-api/api/IccAuthApi.ts +0 -235
  70. package/icc-api/api/IccBeefactApi.ts +0 -66
  71. package/icc-api/api/IccBekmehrApi.ts +0 -909
  72. package/icc-api/api/IccBeresultexportApi.ts +0 -134
  73. package/icc-api/api/IccBeresultimportApi.ts +0 -130
  74. package/icc-api/api/IccBesamv2Api.ts +0 -790
  75. package/icc-api/api/IccCalendarItemApi.ts +0 -353
  76. package/icc-api/api/IccCalendarItemTypeApi.ts +0 -134
  77. package/icc-api/api/IccClassificationApi.ts +0 -180
  78. package/icc-api/api/IccClassificationTemplateApi.ts +0 -188
  79. package/icc-api/api/IccCodeApi.ts +0 -423
  80. package/icc-api/api/IccContactApi.ts +0 -669
  81. package/icc-api/api/IccDataownerApi.ts +0 -66
  82. package/icc-api/api/IccDeviceApi.ts +0 -358
  83. package/icc-api/api/IccDoctemplateApi.ts +0 -258
  84. package/icc-api/api/IccDocumentApi.ts +0 -444
  85. package/icc-api/api/IccDocumentTemplateApi.ts +0 -261
  86. package/icc-api/api/IccEntityrefApi.ts +0 -73
  87. package/icc-api/api/IccEntitytemplateApi.ts +0 -249
  88. package/icc-api/api/IccFormApi.ts +0 -547
  89. package/icc-api/api/IccFrontendmigrationApi.ts +0 -135
  90. package/icc-api/api/IccGroupApi.ts +0 -504
  91. package/icc-api/api/IccHcpartyApi.ts +0 -487
  92. package/icc-api/api/IccHelementApi.ts +0 -330
  93. package/icc-api/api/IccIcureApi.ts +0 -303
  94. package/icc-api/api/IccInsuranceApi.ts +0 -154
  95. package/icc-api/api/IccInvoiceApi.ts +0 -721
  96. package/icc-api/api/IccKeywordApi.ts +0 -135
  97. package/icc-api/api/IccMaintenanceTaskApi.ts +0 -133
  98. package/icc-api/api/IccMedexApi.ts +0 -58
  99. package/icc-api/api/IccMedicallocationApi.ts +0 -120
  100. package/icc-api/api/IccMessageApi.ts +0 -478
  101. package/icc-api/api/IccPatientApi.ts +0 -822
  102. package/icc-api/api/IccPermissionApi.ts +0 -59
  103. package/icc-api/api/IccPlaceApi.ts +0 -120
  104. package/icc-api/api/IccPubsubApi.ts +0 -106
  105. package/icc-api/api/IccReceiptApi.ts +0 -168
  106. package/icc-api/api/IccReplicationApi.ts +0 -106
  107. package/icc-api/api/IccTarificationApi.ts +0 -236
  108. package/icc-api/api/IccTimeTableApi.ts +0 -146
  109. package/icc-api/api/IccTmpApi.ts +0 -1298
  110. package/icc-api/api/IccUserApi.ts +0 -525
  111. package/icc-api/api/XHR.ts +0 -146
  112. package/icc-api/iccApi.ts +0 -46
  113. package/icc-api/index.ts +0 -44
  114. package/icc-api/model/AbstractFilterCode.ts +0 -19
  115. package/icc-api/model/AbstractFilterContact.ts +0 -19
  116. package/icc-api/model/AbstractFilterDevice.ts +0 -19
  117. package/icc-api/model/AbstractFilterHealthElement.ts +0 -19
  118. package/icc-api/model/AbstractFilterHealthcareParty.ts +0 -19
  119. package/icc-api/model/AbstractFilterInvoice.ts +0 -19
  120. package/icc-api/model/AbstractFilterMaintenanceTask.ts +0 -19
  121. package/icc-api/model/AbstractFilterPatient.ts +0 -19
  122. package/icc-api/model/AbstractFilterService.ts +0 -19
  123. package/icc-api/model/AbstractFilterUser.ts +0 -19
  124. package/icc-api/model/AccessLog.ts +0 -108
  125. package/icc-api/model/AddedDocument.ts +0 -27
  126. package/icc-api/model/Address.ts +0 -99
  127. package/icc-api/model/AdministrationQuantity.ts +0 -22
  128. package/icc-api/model/Agenda.ts +0 -61
  129. package/icc-api/model/AgreementAppendix.ts +0 -22
  130. package/icc-api/model/Amp.ts +0 -57
  131. package/icc-api/model/AmpComponent.ts +0 -51
  132. package/icc-api/model/Ampp.ts +0 -75
  133. package/icc-api/model/AmppComponent.ts +0 -36
  134. package/icc-api/model/Annotation.ts +0 -42
  135. package/icc-api/model/ApplicationSettings.ts +0 -58
  136. package/icc-api/model/Appointment.ts +0 -31
  137. package/icc-api/model/AppointmentImport.ts +0 -39
  138. package/icc-api/model/AppointmentTypeAndPlace.ts +0 -27
  139. package/icc-api/model/Article.ts +0 -82
  140. package/icc-api/model/Atc.ts +0 -20
  141. package/icc-api/model/Attachment.ts +0 -23
  142. package/icc-api/model/AttachmentMetadata.ts +0 -25
  143. package/icc-api/model/AuthenticationResponse.ts +0 -27
  144. package/icc-api/model/AuthenticationToken.ts +0 -35
  145. package/icc-api/model/Basic.ts +0 -20
  146. package/icc-api/model/Body.ts +0 -20
  147. package/icc-api/model/Body3.ts +0 -20
  148. package/icc-api/model/BulkAttachmentUpdateOptions.ts +0 -30
  149. package/icc-api/model/ByteArray.ts +0 -20
  150. package/icc-api/model/CalendarItem.ts +0 -105
  151. package/icc-api/model/CalendarItemTag.ts +0 -22
  152. package/icc-api/model/CalendarItemType.ts +0 -32
  153. package/icc-api/model/CareTeamMember.ts +0 -38
  154. package/icc-api/model/CareTeamMembership.ts +0 -39
  155. package/icc-api/model/CheckSMFPatientResult.ts +0 -24
  156. package/icc-api/model/Classification.ts +0 -81
  157. package/icc-api/model/ClassificationTemplate.ts +0 -80
  158. package/icc-api/model/Code.ts +0 -202
  159. package/icc-api/model/CodeStub.ts +0 -24
  160. package/icc-api/model/CodeType.ts +0 -19
  161. package/icc-api/model/CommentedClassification.ts +0 -21
  162. package/icc-api/model/Commercialization.ts +0 -25
  163. package/icc-api/model/Company.ts +0 -35
  164. package/icc-api/model/Contact.ts +0 -129
  165. package/icc-api/model/Content.ts +0 -45
  166. package/icc-api/model/Copayment.ts +0 -22
  167. package/icc-api/model/Data.ts +0 -17
  168. package/icc-api/model/DataAttachment.ts +0 -34
  169. package/icc-api/model/DataOwnerRegistrationSuccess.ts +0 -21
  170. package/icc-api/model/DataOwnerWithType.ts +0 -19
  171. package/icc-api/model/DatabaseInfo.ts +0 -28
  172. package/icc-api/model/DatabaseInitialisation.ts +0 -27
  173. package/icc-api/model/DatabaseSynchronization.ts +0 -30
  174. package/icc-api/model/Delegation.ts +0 -25
  175. package/icc-api/model/DeletedAttachment.ts +0 -38
  176. package/icc-api/model/Device.ts +0 -93
  177. package/icc-api/model/DeviceType.ts +0 -23
  178. package/icc-api/model/DiaryNoteExportInfo.ts +0 -30
  179. package/icc-api/model/Dmpp.ts +0 -45
  180. package/icc-api/model/DocIdentifier.ts +0 -20
  181. package/icc-api/model/Document.ts +0 -274
  182. package/icc-api/model/DocumentGroup.ts +0 -20
  183. package/icc-api/model/DocumentTemplate.ts +0 -162
  184. package/icc-api/model/Duration.ts +0 -21
  185. package/icc-api/model/EIDItem.ts +0 -23
  186. package/icc-api/model/Editor.ts +0 -37
  187. package/icc-api/model/EfactInvoice.ts +0 -43
  188. package/icc-api/model/EmailOrSmsMessage.ts +0 -39
  189. package/icc-api/model/EmailTemplate.ts +0 -20
  190. package/icc-api/model/Employer.ts +0 -21
  191. package/icc-api/model/EmploymentInfo.ts +0 -24
  192. package/icc-api/model/EntityReference.ts +0 -25
  193. package/icc-api/model/EntityTemplate.ts +0 -31
  194. package/icc-api/model/Episode.ts +0 -30
  195. package/icc-api/model/FilterChainCode.ts +0 -23
  196. package/icc-api/model/FilterChainContact.ts +0 -23
  197. package/icc-api/model/FilterChainDevice.ts +0 -23
  198. package/icc-api/model/FilterChainHealthElement.ts +0 -23
  199. package/icc-api/model/FilterChainHealthcareParty.ts +0 -23
  200. package/icc-api/model/FilterChainInvoice.ts +0 -23
  201. package/icc-api/model/FilterChainMaintenanceTask.ts +0 -23
  202. package/icc-api/model/FilterChainPatient.ts +0 -23
  203. package/icc-api/model/FilterChainService.ts +0 -23
  204. package/icc-api/model/FilterChainUser.ts +0 -23
  205. package/icc-api/model/FinancialInstitutionInformation.ts +0 -32
  206. package/icc-api/model/FlatRateTarification.ts +0 -39
  207. package/icc-api/model/FlowItem.ts +0 -51
  208. package/icc-api/model/Form.ts +0 -116
  209. package/icc-api/model/FormColumn.ts +0 -22
  210. package/icc-api/model/FormDataOption.ts +0 -20
  211. package/icc-api/model/FormLayout.ts +0 -29
  212. package/icc-api/model/FormLayoutData.ts +0 -44
  213. package/icc-api/model/FormPlanning.ts +0 -26
  214. package/icc-api/model/FormSection.ts +0 -23
  215. package/icc-api/model/FormTemplate.ts +0 -48
  216. package/icc-api/model/FormTemplateLayout.ts +0 -23
  217. package/icc-api/model/Formula.ts +0 -31
  218. package/icc-api/model/FrontEndMigration.ts +0 -47
  219. package/icc-api/model/Group.ts +0 -69
  220. package/icc-api/model/GroupDatabasesInfo.ts +0 -22
  221. package/icc-api/model/GroupDeletionReport.ts +0 -21
  222. package/icc-api/model/GuiCode.ts +0 -20
  223. package/icc-api/model/GuiCodeType.ts +0 -19
  224. package/icc-api/model/HealthElement.ts +0 -159
  225. package/icc-api/model/HealthcareParty.ts +0 -224
  226. package/icc-api/model/HealthcarePartyHistoryStatus.ts +0 -33
  227. package/icc-api/model/IcureStub.ts +0 -74
  228. package/icc-api/model/IdWithRev.ts +0 -20
  229. package/icc-api/model/Identifier.ts +0 -27
  230. package/icc-api/model/IdentityDocumentReader.ts +0 -24
  231. package/icc-api/model/ImportMapping.ts +0 -24
  232. package/icc-api/model/ImportResult.ts +0 -34
  233. package/icc-api/model/IncapacityExportInfo.ts +0 -54
  234. package/icc-api/model/IndexedIdentifier.ts +0 -21
  235. package/icc-api/model/IndexingInfo.ts +0 -19
  236. package/icc-api/model/Ingredient.ts +0 -36
  237. package/icc-api/model/Insurability.ts +0 -61
  238. package/icc-api/model/Insurance.ts +0 -33
  239. package/icc-api/model/Invoice.ts +0 -205
  240. package/icc-api/model/InvoiceItem.ts +0 -97
  241. package/icc-api/model/InvoiceSender.ts +0 -28
  242. package/icc-api/model/InvoicesBatch.ts +0 -29
  243. package/icc-api/model/InvoicingCode.ts +0 -86
  244. package/icc-api/model/Keyword.ts +0 -61
  245. package/icc-api/model/KeywordSubword.ts +0 -20
  246. package/icc-api/model/LabelledOccurence.ts +0 -20
  247. package/icc-api/model/LetterValue.ts +0 -22
  248. package/icc-api/model/ListOfIds.ts +0 -22
  249. package/icc-api/model/ListOfProperties.ts +0 -23
  250. package/icc-api/model/LoginCredentials.ts +0 -20
  251. package/icc-api/model/MaintenanceTask.ts +0 -93
  252. package/icc-api/model/MapOfIds.ts +0 -19
  253. package/icc-api/model/Measure.ts +0 -31
  254. package/icc-api/model/MedexInfo.ts +0 -33
  255. package/icc-api/model/MedicalHouseContract.ts +0 -81
  256. package/icc-api/model/MedicalLocation.ts +0 -37
  257. package/icc-api/model/Medication.ts +0 -72
  258. package/icc-api/model/MedicationSchemeExportInfo.ts +0 -25
  259. package/icc-api/model/Medicinalproduct.ts +0 -24
  260. package/icc-api/model/Message.ts +0 -145
  261. package/icc-api/model/MessageReadStatus.ts +0 -23
  262. package/icc-api/model/MessageWithBatch.ts +0 -22
  263. package/icc-api/model/MessagesReadStatusUpdate.ts +0 -22
  264. package/icc-api/model/MikronoAppointmentTypeRest.ts +0 -25
  265. package/icc-api/model/MikronoCredentials.ts +0 -21
  266. package/icc-api/model/MimeAttachment.ts +0 -22
  267. package/icc-api/model/ModelHelper.ts +0 -87
  268. package/icc-api/model/Nmp.ts +0 -34
  269. package/icc-api/model/NoGenericPrescriptionReason.ts +0 -21
  270. package/icc-api/model/NoSwitchReason.ts +0 -21
  271. package/icc-api/model/NumeratorRange.ts +0 -21
  272. package/icc-api/model/OperationToken.ts +0 -22
  273. package/icc-api/model/PackagingType.ts +0 -23
  274. package/icc-api/model/PaginatedDocumentKeyIdPairObject.ts +0 -20
  275. package/icc-api/model/PaginatedListAccessLog.ts +0 -24
  276. package/icc-api/model/PaginatedListAmp.ts +0 -24
  277. package/icc-api/model/PaginatedListCalendarItem.ts +0 -24
  278. package/icc-api/model/PaginatedListClassification.ts +0 -24
  279. package/icc-api/model/PaginatedListClassificationTemplate.ts +0 -24
  280. package/icc-api/model/PaginatedListCode.ts +0 -24
  281. package/icc-api/model/PaginatedListContact.ts +0 -24
  282. package/icc-api/model/PaginatedListDevice.ts +0 -24
  283. package/icc-api/model/PaginatedListDocument.ts +0 -24
  284. package/icc-api/model/PaginatedListEntityTemplate.ts +0 -24
  285. package/icc-api/model/PaginatedListForm.ts +0 -24
  286. package/icc-api/model/PaginatedListGroup.ts +0 -24
  287. package/icc-api/model/PaginatedListHealthElement.ts +0 -24
  288. package/icc-api/model/PaginatedListHealthcareParty.ts +0 -24
  289. package/icc-api/model/PaginatedListInvoice.ts +0 -24
  290. package/icc-api/model/PaginatedListMaintenanceTask.ts +0 -24
  291. package/icc-api/model/PaginatedListMessage.ts +0 -24
  292. package/icc-api/model/PaginatedListNmp.ts +0 -24
  293. package/icc-api/model/PaginatedListPatient.ts +0 -24
  294. package/icc-api/model/PaginatedListService.ts +0 -24
  295. package/icc-api/model/PaginatedListString.ts +0 -23
  296. package/icc-api/model/PaginatedListTarification.ts +0 -24
  297. package/icc-api/model/PaginatedListUser.ts +0 -24
  298. package/icc-api/model/PaginatedListVmp.ts +0 -24
  299. package/icc-api/model/PaginatedListVmpGroup.ts +0 -24
  300. package/icc-api/model/Paragraph.ts +0 -41
  301. package/icc-api/model/ParagraphAgreement.ts +0 -41
  302. package/icc-api/model/Part.ts +0 -17
  303. package/icc-api/model/Partnership.ts +0 -118
  304. package/icc-api/model/Patient.ts +0 -370
  305. package/icc-api/model/PatientByHcPartyGenderEducationProfession.ts +0 -35
  306. package/icc-api/model/PatientHealthCareParty.ts +0 -64
  307. package/icc-api/model/PatientRegistrationSuccess.ts +0 -21
  308. package/icc-api/model/Payment.ts +0 -34
  309. package/icc-api/model/Periodicity.ts +0 -21
  310. package/icc-api/model/Permission.ts +0 -30
  311. package/icc-api/model/PermissionCriterion.ts +0 -46
  312. package/icc-api/model/PermissionItem.ts +0 -56
  313. package/icc-api/model/PersonName.ts +0 -66
  314. package/icc-api/model/PharmaceuticalForm.ts +0 -29
  315. package/icc-api/model/PharmaceuticalFormStub.ts +0 -24
  316. package/icc-api/model/Place.ts +0 -27
  317. package/icc-api/model/PlanOfAction.ts +0 -114
  318. package/icc-api/model/Predicate.ts +0 -17
  319. package/icc-api/model/Pricing.ts +0 -21
  320. package/icc-api/model/PropertyStub.ts +0 -31
  321. package/icc-api/model/PropertyTypeStub.ts +0 -32
  322. package/icc-api/model/PublicKey.ts +0 -20
  323. package/icc-api/model/Quantity.ts +0 -20
  324. package/icc-api/model/Receipt.ts +0 -83
  325. package/icc-api/model/ReferralPeriod.ts +0 -33
  326. package/icc-api/model/RefreshTokenExpiredError.ts +0 -5
  327. package/icc-api/model/RegimenItem.ts +0 -27
  328. package/icc-api/model/RegistrationInformation.ts +0 -23
  329. package/icc-api/model/RegistrationSuccess.ts +0 -21
  330. package/icc-api/model/Reimbursement.ts +0 -57
  331. package/icc-api/model/ReimbursementCriterion.ts +0 -22
  332. package/icc-api/model/Remote.ts +0 -21
  333. package/icc-api/model/RemoteAuthentication.ts +0 -20
  334. package/icc-api/model/Renewal.ts +0 -21
  335. package/icc-api/model/ReplicateCommand.ts +0 -25
  336. package/icc-api/model/Replication.ts +0 -28
  337. package/icc-api/model/ReplicationInfo.ts +0 -22
  338. package/icc-api/model/ReplicationStats.ts +0 -27
  339. package/icc-api/model/ReplicatorDocument.ts +0 -34
  340. package/icc-api/model/ReplicatorResponse.ts +0 -23
  341. package/icc-api/model/ResultInfo.ts +0 -33
  342. package/icc-api/model/RevisionInfo.ts +0 -20
  343. package/icc-api/model/Right.ts +0 -22
  344. package/icc-api/model/RouteOfAdministration.ts +0 -22
  345. package/icc-api/model/SamText.ts +0 -22
  346. package/icc-api/model/SamVersion.ts +0 -26
  347. package/icc-api/model/SchoolingInfo.ts +0 -23
  348. package/icc-api/model/Section.ts +0 -23
  349. package/icc-api/model/Service.ts +0 -155
  350. package/icc-api/model/ServiceLink.ts +0 -22
  351. package/icc-api/model/SoftwareMedicalFileExport.ts +0 -23
  352. package/icc-api/model/StandardSubstance.ts +0 -33
  353. package/icc-api/model/StrengthRange.ts +0 -22
  354. package/icc-api/model/StructureElement.ts +0 -17
  355. package/icc-api/model/SubContact.ts +0 -89
  356. package/icc-api/model/Substance.ts +0 -31
  357. package/icc-api/model/SubstanceStub.ts +0 -26
  358. package/icc-api/model/Substanceproduct.ts +0 -24
  359. package/icc-api/model/Suggest.ts +0 -23
  360. package/icc-api/model/SumehrContent.ts +0 -26
  361. package/icc-api/model/SumehrExportInfo.ts +0 -30
  362. package/icc-api/model/SumehrValidity.ts +0 -27
  363. package/icc-api/model/SupplyProblem.ts +0 -25
  364. package/icc-api/model/Suspension.ts +0 -22
  365. package/icc-api/model/Tag.ts +0 -20
  366. package/icc-api/model/Tarification.ts +0 -213
  367. package/icc-api/model/Telecom.ts +0 -64
  368. package/icc-api/model/TimeSeries.ts +0 -28
  369. package/icc-api/model/TimeTable.ts +0 -84
  370. package/icc-api/model/TimeTableHour.ts +0 -20
  371. package/icc-api/model/TimeTableItem.ts +0 -30
  372. package/icc-api/model/TokenWithGroup.ts +0 -21
  373. package/icc-api/model/TypedValueObject.ts +0 -40
  374. package/icc-api/model/Unit.ts +0 -17
  375. package/icc-api/model/User.ts +0 -132
  376. package/icc-api/model/UserAndHealthcareParty.ts +0 -25
  377. package/icc-api/model/UserGroup.ts +0 -31
  378. package/icc-api/model/Valorisation.ts +0 -31
  379. package/icc-api/model/Verse.ts +0 -65
  380. package/icc-api/model/VirtualForm.ts +0 -22
  381. package/icc-api/model/VirtualIngredient.ts +0 -33
  382. package/icc-api/model/Vmp.ts +0 -40
  383. package/icc-api/model/VmpComponent.ts +0 -28
  384. package/icc-api/model/VmpGroup.ts +0 -34
  385. package/icc-api/model/VmpGroupStub.ts +0 -23
  386. package/icc-api/model/VmpStub.ts +0 -24
  387. package/icc-api/model/Vtm.ts +0 -23
  388. package/icc-api/model/Wada.ts +0 -22
  389. package/icc-api/model/WebSession.ts +0 -26
  390. package/icc-api/model/WebSessionMaxIdleTime.ts +0 -24
  391. package/icc-api/model/WebSessionMaxIdleTimeUnits.ts +0 -21
  392. package/icc-api/model/Weekday.ts +0 -21
  393. package/icc-api/model/models.ts +0 -289
  394. package/icc-x-api/auth/AuthService.ts +0 -18
  395. package/icc-x-api/auth/AuthenticationProvider.ts +0 -92
  396. package/icc-x-api/auth/BasicAuthService.ts +0 -25
  397. package/icc-x-api/auth/EnsembleAuthService.ts +0 -64
  398. package/icc-x-api/auth/JwtAuthService.ts +0 -82
  399. package/icc-x-api/auth/JwtBridgedAuthService.ts +0 -127
  400. package/icc-x-api/auth/NoAuthService.ts +0 -18
  401. package/icc-x-api/crypto/AES.ts +0 -173
  402. package/icc-x-api/crypto/RSA.ts +0 -170
  403. package/icc-x-api/crypto/shamir.ts +0 -326
  404. package/icc-x-api/crypto/utils.ts +0 -0
  405. package/icc-x-api/filters/AllCodesFilter.ts +0 -22
  406. package/icc-x-api/filters/AllDevicesFilter.ts +0 -23
  407. package/icc-x-api/filters/AllHealthcarePartiesFilter.ts +0 -23
  408. package/icc-x-api/filters/AllUsersFilter.ts +0 -23
  409. package/icc-x-api/filters/CodeByIdsFilter.ts +0 -25
  410. package/icc-x-api/filters/CodeByRegionTypeLabelLanguageFilter.ts +0 -28
  411. package/icc-x-api/filters/CodeIdsByTypeCodeVersionIntervalFilter.ts +0 -30
  412. package/icc-x-api/filters/ComplementFilter.ts +0 -13
  413. package/icc-x-api/filters/ConstantFilter.ts +0 -9
  414. package/icc-x-api/filters/ContactByHcPartyFilter.ts +0 -25
  415. package/icc-x-api/filters/ContactByHcPartyPatientTagCodeDateFilter.ts +0 -32
  416. package/icc-x-api/filters/ContactByHcPartyTagCodeDateFilter.ts +0 -32
  417. package/icc-x-api/filters/ContactByServiceIdsFilter.ts +0 -24
  418. package/icc-x-api/filters/DeviceByHcPartyFilter.ts +0 -26
  419. package/icc-x-api/filters/DeviceByIdsFilter.ts +0 -26
  420. package/icc-x-api/filters/HealthElementByHcPartyFilter.ts +0 -24
  421. package/icc-x-api/filters/HealthElementByHcPartyIdentifiersFilter.ts +0 -26
  422. package/icc-x-api/filters/HealthElementByHcPartySecretForeignKeysFilter.ts +0 -27
  423. package/icc-x-api/filters/HealthElementByHcPartyTagCodeFilter.ts +0 -29
  424. package/icc-x-api/filters/HealthElementByIdsFilter.ts +0 -24
  425. package/icc-x-api/filters/HealthcarePartyByIdsFilter.ts +0 -24
  426. package/icc-x-api/filters/HealthcarePartyByTagCodeFilter.ts +0 -27
  427. package/icc-x-api/filters/IntersectionFilter.ts +0 -11
  428. package/icc-x-api/filters/InvoiceByHcPartyCodeDateFilter.ts +0 -27
  429. package/icc-x-api/filters/MaintenanceTaskAfterDateFilter.ts +0 -25
  430. package/icc-x-api/filters/MaintenanceTaskByHcPartyAndIdentifiersFilter.ts +0 -26
  431. package/icc-x-api/filters/MaintenanceTaskByHcPartyAndTypeFilter.ts +0 -25
  432. package/icc-x-api/filters/MaintenanceTaskByIdsFilter.ts +0 -24
  433. package/icc-x-api/filters/PatientByHcPartyAndActiveFilter.ts +0 -25
  434. package/icc-x-api/filters/PatientByHcPartyAndAddressFilter.ts +0 -27
  435. package/icc-x-api/filters/PatientByHcPartyAndExternalIdFilter.ts +0 -25
  436. package/icc-x-api/filters/PatientByHcPartyAndIdentifiersFilter.ts +0 -26
  437. package/icc-x-api/filters/PatientByHcPartyAndSsinFilter.ts +0 -25
  438. package/icc-x-api/filters/PatientByHcPartyAndSsinsFilter.ts +0 -25
  439. package/icc-x-api/filters/PatientByHcPartyDateOfBirthBetweenFilter.ts +0 -26
  440. package/icc-x-api/filters/PatientByHcPartyDateOfBirthFilter.ts +0 -25
  441. package/icc-x-api/filters/PatientByHcPartyFilter.ts +0 -24
  442. package/icc-x-api/filters/PatientByHcPartyGenderEducationProfession.ts +0 -19
  443. package/icc-x-api/filters/PatientByHcPartyNameContainsFuzzyFilter.ts +0 -25
  444. package/icc-x-api/filters/PatientByHcPartyNameFilter.ts +0 -25
  445. package/icc-x-api/filters/PatientByIdsFilter.ts +0 -24
  446. package/icc-x-api/filters/ServiceByContactsAndSubcontactsFilter.ts +0 -28
  447. package/icc-x-api/filters/ServiceByHcPartyFilter.ts +0 -24
  448. package/icc-x-api/filters/ServiceByHcPartyHealthElementIdsFilter.ts +0 -25
  449. package/icc-x-api/filters/ServiceByHcPartyIdentifiersFilter.ts +0 -26
  450. package/icc-x-api/filters/ServiceByHcPartyTagCodeDateFilter.ts +0 -31
  451. package/icc-x-api/filters/ServiceByIdsFilter.ts +0 -24
  452. package/icc-x-api/filters/ServiceBySecretForeignKeys.ts +0 -25
  453. package/icc-x-api/filters/UnionFilter.ts +0 -10
  454. package/icc-x-api/filters/UserByIdsFilter.ts +0 -24
  455. package/icc-x-api/filters/UserByNameEmailPhoneFilter.ts +0 -24
  456. package/icc-x-api/filters/UsersByPatientIdFilter.ts +0 -25
  457. package/icc-x-api/filters/filters.ts +0 -361
  458. package/icc-x-api/icc-accesslog-x-api.ts +0 -342
  459. package/icc-x-api/icc-bekmehr-x-api.ts +0 -360
  460. package/icc-x-api/icc-calendar-item-x-api.ts +0 -325
  461. package/icc-x-api/icc-classification-x-api.ts +0 -108
  462. package/icc-x-api/icc-code-x-api.ts +0 -133
  463. package/icc-x-api/icc-contact-x-api.ts +0 -979
  464. package/icc-x-api/icc-crypto-x-api.ts +0 -2350
  465. package/icc-x-api/icc-data-owner-x-api.ts +0 -37
  466. package/icc-x-api/icc-doctemplate-x-api.ts +0 -104
  467. package/icc-x-api/icc-document-x-api.ts +0 -772
  468. package/icc-x-api/icc-form-x-api.ts +0 -186
  469. package/icc-x-api/icc-hcparty-x-api.ts +0 -150
  470. package/icc-x-api/icc-helement-x-api.ts +0 -433
  471. package/icc-x-api/icc-invoice-x-api.ts +0 -207
  472. package/icc-x-api/icc-maintenance-task-x-api.ts +0 -243
  473. package/icc-x-api/icc-message-x-api.ts +0 -92
  474. package/icc-x-api/icc-patient-x-api.ts +0 -1275
  475. package/icc-x-api/icc-receipt-x-api.ts +0 -105
  476. package/icc-x-api/icc-time-table-x-api.ts +0 -69
  477. package/icc-x-api/icc-user-x-api.ts +0 -20
  478. package/icc-x-api/index.ts +0 -227
  479. package/icc-x-api/rsrc/codelng.ts +0 -8
  480. package/icc-x-api/rsrc/contact.i18n.ts +0 -110
  481. package/icc-x-api/rsrc/icd10.ts +0 -113
  482. package/icc-x-api/rsrc/icpc2.ts +0 -22
  483. package/icc-x-api/storage/KeyStorageFacade.ts +0 -35
  484. package/icc-x-api/storage/KeyStorageImpl.ts +0 -37
  485. package/icc-x-api/storage/LocalStorageImpl.ts +0 -24
  486. package/icc-x-api/storage/StorageFacade.ts +0 -21
  487. package/icc-x-api/utils/asn1-packer.ts +0 -87
  488. package/icc-x-api/utils/asn1-parser.ts +0 -151
  489. package/icc-x-api/utils/binary-utils.ts +0 -163
  490. package/icc-x-api/utils/code-util.ts +0 -39
  491. package/icc-x-api/utils/crypto-utils.ts +0 -235
  492. package/icc-x-api/utils/error-reporting.ts +0 -416
  493. package/icc-x-api/utils/formatting-util.ts +0 -220
  494. package/icc-x-api/utils/functional-util.ts +0 -16
  495. package/icc-x-api/utils/hcp-util.ts +0 -122
  496. package/icc-x-api/utils/index.ts +0 -7
  497. package/icc-x-api/utils/insurability-util.ts +0 -54
  498. package/icc-x-api/utils/net-utils.ts +0 -243
  499. package/icc-x-api/utils/person-util.ts +0 -29
  500. package/icc-x-api/utils/uuid-encoder.ts +0 -127
  501. package/icure-pre-commit/.pre-commit-config.yaml +0 -16
  502. package/icure-pre-commit/.secrets.baseline +0 -109
  503. package/icure-pre-commit/README.md +0 -18
  504. package/icure-pre-commit/basic.pre-commit-config.yaml +0 -16
  505. package/icure-pre-commit/icure_detect_secrets/filters/is_icure_safe_data.py +0 -89
  506. package/icure-pre-commit/icure_detect_secrets/filters/is_key_format.py +0 -9
  507. package/icure-pre-commit/icure_detect_secrets/plugins/EncodedFileDetector.py +0 -71
  508. package/icure-pre-commit/icure_detect_secrets/plugins/KeyFileDetector.py +0 -57
  509. package/icure-pre-commit/install_optional_detect-secrets.sh +0 -45
  510. package/icure-pre-commit/install_required_tools.sh +0 -35
  511. package/icure-pre-commit/kotlin.pre-commit-config.yaml +0 -21
  512. package/icure-pre-commit/scan-secrets.sh +0 -7
  513. package/index.ts +0 -8
  514. package/node-compat.ts +0 -11
  515. package/package-lock.json +0 -26824
  516. package/sonar-project.properties +0 -20
  517. package/test/icc-api/api/IccDocumentApi.ts +0 -141
  518. package/test/icc-api/api/IccUserApi.ts +0 -22
  519. package/test/icc-api/e2e/IccCalendarItemApi.ts +0 -37
  520. package/test/icc-api/model/modelHelpersTest.ts +0 -54
  521. package/test/icc-x-api/auth/jwt-concurrency-test.ts +0 -142
  522. package/test/icc-x-api/crypto/concurrency.ts +0 -33
  523. package/test/icc-x-api/crypto/crypto-utils.ts +0 -89
  524. package/test/icc-x-api/crypto/cryptoTest.ts +0 -291
  525. package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.ts +0 -168
  526. package/test/icc-x-api/crypto/full-crypto-test.ts +0 -569
  527. package/test/icc-x-api/crypto/shamir.ts +0 -46
  528. package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.ts +0 -137
  529. package/test/icc-x-api/error-reporting-test.ts +0 -85
  530. package/test/icc-x-api/filters/filters.ts +0 -58
  531. package/test/icc-x-api/icc-accesslog-x-api.ts +0 -104
  532. package/test/icc-x-api/icc-auth-api.ts +0 -44
  533. package/test/icc-x-api/icc-calendar-item-x-api.ts +0 -97
  534. package/test/icc-x-api/icc-contact-x-api.ts +0 -235
  535. package/test/icc-x-api/icc-form-x-api-test.ts +0 -273
  536. package/test/icc-x-api/icc-form-x-api.ts +0 -97
  537. package/test/icc-x-api/icc-helement-x-api-test.ts +0 -150
  538. package/test/icc-x-api/icc-invoice-x-api.ts +0 -100
  539. package/test/icc-x-api/icc-maintenance-task-x-api-test.ts +0 -273
  540. package/test/icc-x-api/icc-patient-x-api-test.ts +0 -58
  541. package/test/icc-x-api/icc-time-table-x-api.ts +0 -84
  542. package/test/icc-x-api/patient-user.ts +0 -154
  543. package/test/icc-x-api/storage/storage.ts +0 -51
  544. package/test/mocha.opts +0 -1
  545. package/test/scratch/docker-compose-cloud.yaml +0 -121
  546. package/test/scratch/docker-compose.yaml +0 -46
  547. package/test/scratch/docker.ini +0 -9
  548. package/test/scratch/haproxy/haproxy.cfg +0 -26
  549. package/test/support/CSM-87.ts +0 -30
  550. package/test/support/CSM-93.ts +0 -127
  551. package/test/utils/test-utils-decorators.ts +0 -409
  552. package/test/utils/test_utils.ts +0 -167
  553. package/test-scripts/cleanup.ts +0 -26
  554. package/tsconfig.json +0 -21
  555. /package/{dist/icc-api → icc-api}/api/IccAccesslogApi.d.ts +0 -0
  556. /package/{dist/icc-api → icc-api}/api/IccAccesslogApi.js +0 -0
  557. /package/{dist/icc-api → icc-api}/api/IccAccesslogApi.js.map +0 -0
  558. /package/{dist/icc-api → icc-api}/api/IccAgendaApi.d.ts +0 -0
  559. /package/{dist/icc-api → icc-api}/api/IccAgendaApi.js +0 -0
  560. /package/{dist/icc-api → icc-api}/api/IccAgendaApi.js.map +0 -0
  561. /package/{dist/icc-api → icc-api}/api/IccAnonymousAccessApi.d.ts +0 -0
  562. /package/{dist/icc-api → icc-api}/api/IccAnonymousAccessApi.js +0 -0
  563. /package/{dist/icc-api → icc-api}/api/IccAnonymousAccessApi.js.map +0 -0
  564. /package/{dist/icc-api → icc-api}/api/IccApplicationsettingsApi.d.ts +0 -0
  565. /package/{dist/icc-api → icc-api}/api/IccApplicationsettingsApi.js +0 -0
  566. /package/{dist/icc-api → icc-api}/api/IccApplicationsettingsApi.js.map +0 -0
  567. /package/{dist/icc-api → icc-api}/api/IccArticleApi.d.ts +0 -0
  568. /package/{dist/icc-api → icc-api}/api/IccArticleApi.js +0 -0
  569. /package/{dist/icc-api → icc-api}/api/IccArticleApi.js.map +0 -0
  570. /package/{dist/icc-api → icc-api}/api/IccAuthApi.d.ts +0 -0
  571. /package/{dist/icc-api → icc-api}/api/IccAuthApi.js +0 -0
  572. /package/{dist/icc-api → icc-api}/api/IccAuthApi.js.map +0 -0
  573. /package/{dist/icc-api → icc-api}/api/IccBeefactApi.d.ts +0 -0
  574. /package/{dist/icc-api → icc-api}/api/IccBeefactApi.js +0 -0
  575. /package/{dist/icc-api → icc-api}/api/IccBeefactApi.js.map +0 -0
  576. /package/{dist/icc-api → icc-api}/api/IccBekmehrApi.d.ts +0 -0
  577. /package/{dist/icc-api → icc-api}/api/IccBekmehrApi.js +0 -0
  578. /package/{dist/icc-api → icc-api}/api/IccBekmehrApi.js.map +0 -0
  579. /package/{dist/icc-api → icc-api}/api/IccBeresultexportApi.d.ts +0 -0
  580. /package/{dist/icc-api → icc-api}/api/IccBeresultexportApi.js +0 -0
  581. /package/{dist/icc-api → icc-api}/api/IccBeresultexportApi.js.map +0 -0
  582. /package/{dist/icc-api → icc-api}/api/IccBeresultimportApi.d.ts +0 -0
  583. /package/{dist/icc-api → icc-api}/api/IccBeresultimportApi.js +0 -0
  584. /package/{dist/icc-api → icc-api}/api/IccBeresultimportApi.js.map +0 -0
  585. /package/{dist/icc-api → icc-api}/api/IccBesamv2Api.d.ts +0 -0
  586. /package/{dist/icc-api → icc-api}/api/IccBesamv2Api.js +0 -0
  587. /package/{dist/icc-api → icc-api}/api/IccBesamv2Api.js.map +0 -0
  588. /package/{dist/icc-api → icc-api}/api/IccCalendarItemApi.d.ts +0 -0
  589. /package/{dist/icc-api → icc-api}/api/IccCalendarItemApi.js +0 -0
  590. /package/{dist/icc-api → icc-api}/api/IccCalendarItemApi.js.map +0 -0
  591. /package/{dist/icc-api → icc-api}/api/IccCalendarItemTypeApi.d.ts +0 -0
  592. /package/{dist/icc-api → icc-api}/api/IccCalendarItemTypeApi.js +0 -0
  593. /package/{dist/icc-api → icc-api}/api/IccCalendarItemTypeApi.js.map +0 -0
  594. /package/{dist/icc-api → icc-api}/api/IccClassificationApi.d.ts +0 -0
  595. /package/{dist/icc-api → icc-api}/api/IccClassificationApi.js +0 -0
  596. /package/{dist/icc-api → icc-api}/api/IccClassificationApi.js.map +0 -0
  597. /package/{dist/icc-api → icc-api}/api/IccClassificationTemplateApi.d.ts +0 -0
  598. /package/{dist/icc-api → icc-api}/api/IccClassificationTemplateApi.js +0 -0
  599. /package/{dist/icc-api → icc-api}/api/IccClassificationTemplateApi.js.map +0 -0
  600. /package/{dist/icc-api → icc-api}/api/IccCodeApi.d.ts +0 -0
  601. /package/{dist/icc-api → icc-api}/api/IccCodeApi.js +0 -0
  602. /package/{dist/icc-api → icc-api}/api/IccCodeApi.js.map +0 -0
  603. /package/{dist/icc-api → icc-api}/api/IccContactApi.d.ts +0 -0
  604. /package/{dist/icc-api → icc-api}/api/IccContactApi.js +0 -0
  605. /package/{dist/icc-api → icc-api}/api/IccContactApi.js.map +0 -0
  606. /package/{dist/icc-api → icc-api}/api/IccDataownerApi.d.ts +0 -0
  607. /package/{dist/icc-api → icc-api}/api/IccDataownerApi.js +0 -0
  608. /package/{dist/icc-api → icc-api}/api/IccDataownerApi.js.map +0 -0
  609. /package/{dist/icc-api → icc-api}/api/IccDeviceApi.d.ts +0 -0
  610. /package/{dist/icc-api → icc-api}/api/IccDeviceApi.js +0 -0
  611. /package/{dist/icc-api → icc-api}/api/IccDeviceApi.js.map +0 -0
  612. /package/{dist/icc-api → icc-api}/api/IccDoctemplateApi.d.ts +0 -0
  613. /package/{dist/icc-api → icc-api}/api/IccDoctemplateApi.js +0 -0
  614. /package/{dist/icc-api → icc-api}/api/IccDoctemplateApi.js.map +0 -0
  615. /package/{dist/icc-api → icc-api}/api/IccDocumentApi.d.ts +0 -0
  616. /package/{dist/icc-api → icc-api}/api/IccDocumentApi.js +0 -0
  617. /package/{dist/icc-api → icc-api}/api/IccDocumentApi.js.map +0 -0
  618. /package/{dist/icc-api → icc-api}/api/IccDocumentTemplateApi.d.ts +0 -0
  619. /package/{dist/icc-api → icc-api}/api/IccDocumentTemplateApi.js +0 -0
  620. /package/{dist/icc-api → icc-api}/api/IccDocumentTemplateApi.js.map +0 -0
  621. /package/{dist/icc-api → icc-api}/api/IccEntityrefApi.d.ts +0 -0
  622. /package/{dist/icc-api → icc-api}/api/IccEntityrefApi.js +0 -0
  623. /package/{dist/icc-api → icc-api}/api/IccEntityrefApi.js.map +0 -0
  624. /package/{dist/icc-api → icc-api}/api/IccEntitytemplateApi.d.ts +0 -0
  625. /package/{dist/icc-api → icc-api}/api/IccEntitytemplateApi.js +0 -0
  626. /package/{dist/icc-api → icc-api}/api/IccEntitytemplateApi.js.map +0 -0
  627. /package/{dist/icc-api → icc-api}/api/IccFormApi.d.ts +0 -0
  628. /package/{dist/icc-api → icc-api}/api/IccFormApi.js +0 -0
  629. /package/{dist/icc-api → icc-api}/api/IccFormApi.js.map +0 -0
  630. /package/{dist/icc-api → icc-api}/api/IccFrontendmigrationApi.d.ts +0 -0
  631. /package/{dist/icc-api → icc-api}/api/IccFrontendmigrationApi.js +0 -0
  632. /package/{dist/icc-api → icc-api}/api/IccFrontendmigrationApi.js.map +0 -0
  633. /package/{dist/icc-api → icc-api}/api/IccGroupApi.d.ts +0 -0
  634. /package/{dist/icc-api → icc-api}/api/IccGroupApi.js +0 -0
  635. /package/{dist/icc-api → icc-api}/api/IccGroupApi.js.map +0 -0
  636. /package/{dist/icc-api → icc-api}/api/IccHcpartyApi.d.ts +0 -0
  637. /package/{dist/icc-api → icc-api}/api/IccHcpartyApi.js +0 -0
  638. /package/{dist/icc-api → icc-api}/api/IccHcpartyApi.js.map +0 -0
  639. /package/{dist/icc-api → icc-api}/api/IccHelementApi.d.ts +0 -0
  640. /package/{dist/icc-api → icc-api}/api/IccHelementApi.js +0 -0
  641. /package/{dist/icc-api → icc-api}/api/IccHelementApi.js.map +0 -0
  642. /package/{dist/icc-api → icc-api}/api/IccIcureApi.d.ts +0 -0
  643. /package/{dist/icc-api → icc-api}/api/IccIcureApi.js +0 -0
  644. /package/{dist/icc-api → icc-api}/api/IccIcureApi.js.map +0 -0
  645. /package/{dist/icc-api → icc-api}/api/IccInsuranceApi.d.ts +0 -0
  646. /package/{dist/icc-api → icc-api}/api/IccInsuranceApi.js +0 -0
  647. /package/{dist/icc-api → icc-api}/api/IccInsuranceApi.js.map +0 -0
  648. /package/{dist/icc-api → icc-api}/api/IccInvoiceApi.d.ts +0 -0
  649. /package/{dist/icc-api → icc-api}/api/IccInvoiceApi.js +0 -0
  650. /package/{dist/icc-api → icc-api}/api/IccInvoiceApi.js.map +0 -0
  651. /package/{dist/icc-api → icc-api}/api/IccKeywordApi.d.ts +0 -0
  652. /package/{dist/icc-api → icc-api}/api/IccKeywordApi.js +0 -0
  653. /package/{dist/icc-api → icc-api}/api/IccKeywordApi.js.map +0 -0
  654. /package/{dist/icc-api → icc-api}/api/IccMaintenanceTaskApi.d.ts +0 -0
  655. /package/{dist/icc-api → icc-api}/api/IccMaintenanceTaskApi.js +0 -0
  656. /package/{dist/icc-api → icc-api}/api/IccMaintenanceTaskApi.js.map +0 -0
  657. /package/{dist/icc-api → icc-api}/api/IccMedexApi.d.ts +0 -0
  658. /package/{dist/icc-api → icc-api}/api/IccMedexApi.js +0 -0
  659. /package/{dist/icc-api → icc-api}/api/IccMedexApi.js.map +0 -0
  660. /package/{dist/icc-api → icc-api}/api/IccMedicallocationApi.d.ts +0 -0
  661. /package/{dist/icc-api → icc-api}/api/IccMedicallocationApi.js +0 -0
  662. /package/{dist/icc-api → icc-api}/api/IccMedicallocationApi.js.map +0 -0
  663. /package/{dist/icc-api → icc-api}/api/IccMessageApi.d.ts +0 -0
  664. /package/{dist/icc-api → icc-api}/api/IccMessageApi.js +0 -0
  665. /package/{dist/icc-api → icc-api}/api/IccMessageApi.js.map +0 -0
  666. /package/{dist/icc-api → icc-api}/api/IccPatientApi.d.ts +0 -0
  667. /package/{dist/icc-api → icc-api}/api/IccPatientApi.js +0 -0
  668. /package/{dist/icc-api → icc-api}/api/IccPatientApi.js.map +0 -0
  669. /package/{dist/icc-api → icc-api}/api/IccPermissionApi.d.ts +0 -0
  670. /package/{dist/icc-api → icc-api}/api/IccPermissionApi.js +0 -0
  671. /package/{dist/icc-api → icc-api}/api/IccPermissionApi.js.map +0 -0
  672. /package/{dist/icc-api → icc-api}/api/IccPlaceApi.d.ts +0 -0
  673. /package/{dist/icc-api → icc-api}/api/IccPlaceApi.js +0 -0
  674. /package/{dist/icc-api → icc-api}/api/IccPlaceApi.js.map +0 -0
  675. /package/{dist/icc-api → icc-api}/api/IccPubsubApi.d.ts +0 -0
  676. /package/{dist/icc-api → icc-api}/api/IccPubsubApi.js +0 -0
  677. /package/{dist/icc-api → icc-api}/api/IccPubsubApi.js.map +0 -0
  678. /package/{dist/icc-api → icc-api}/api/IccReceiptApi.d.ts +0 -0
  679. /package/{dist/icc-api → icc-api}/api/IccReceiptApi.js +0 -0
  680. /package/{dist/icc-api → icc-api}/api/IccReceiptApi.js.map +0 -0
  681. /package/{dist/icc-api → icc-api}/api/IccReplicationApi.d.ts +0 -0
  682. /package/{dist/icc-api → icc-api}/api/IccReplicationApi.js +0 -0
  683. /package/{dist/icc-api → icc-api}/api/IccReplicationApi.js.map +0 -0
  684. /package/{dist/icc-api → icc-api}/api/IccTarificationApi.d.ts +0 -0
  685. /package/{dist/icc-api → icc-api}/api/IccTarificationApi.js +0 -0
  686. /package/{dist/icc-api → icc-api}/api/IccTarificationApi.js.map +0 -0
  687. /package/{dist/icc-api → icc-api}/api/IccTimeTableApi.d.ts +0 -0
  688. /package/{dist/icc-api → icc-api}/api/IccTimeTableApi.js +0 -0
  689. /package/{dist/icc-api → icc-api}/api/IccTimeTableApi.js.map +0 -0
  690. /package/{dist/icc-api → icc-api}/api/IccTmpApi.d.ts +0 -0
  691. /package/{dist/icc-api → icc-api}/api/IccTmpApi.js +0 -0
  692. /package/{dist/icc-api → icc-api}/api/IccTmpApi.js.map +0 -0
  693. /package/{dist/icc-api → icc-api}/api/IccUserApi.d.ts +0 -0
  694. /package/{dist/icc-api → icc-api}/api/IccUserApi.js +0 -0
  695. /package/{dist/icc-api → icc-api}/api/IccUserApi.js.map +0 -0
  696. /package/{dist/icc-api → icc-api}/api/XHR.d.ts +0 -0
  697. /package/{dist/icc-api → icc-api}/api/XHR.js +0 -0
  698. /package/{dist/icc-api → icc-api}/api/XHR.js.map +0 -0
  699. /package/{dist/icc-api → icc-api}/iccApi.d.ts +0 -0
  700. /package/{dist/icc-api → icc-api}/iccApi.js +0 -0
  701. /package/{dist/icc-api → icc-api}/iccApi.js.map +0 -0
  702. /package/{dist/icc-api → icc-api}/index.d.ts +0 -0
  703. /package/{dist/icc-api → icc-api}/index.js +0 -0
  704. /package/{dist/icc-api → icc-api}/index.js.map +0 -0
  705. /package/{dist/icc-api → icc-api}/model/AbstractFilterCode.d.ts +0 -0
  706. /package/{dist/icc-api → icc-api}/model/AbstractFilterCode.js +0 -0
  707. /package/{dist/icc-api → icc-api}/model/AbstractFilterCode.js.map +0 -0
  708. /package/{dist/icc-api → icc-api}/model/AbstractFilterContact.d.ts +0 -0
  709. /package/{dist/icc-api → icc-api}/model/AbstractFilterContact.js +0 -0
  710. /package/{dist/icc-api → icc-api}/model/AbstractFilterContact.js.map +0 -0
  711. /package/{dist/icc-api → icc-api}/model/AbstractFilterDevice.d.ts +0 -0
  712. /package/{dist/icc-api → icc-api}/model/AbstractFilterDevice.js +0 -0
  713. /package/{dist/icc-api → icc-api}/model/AbstractFilterDevice.js.map +0 -0
  714. /package/{dist/icc-api → icc-api}/model/AbstractFilterHealthElement.d.ts +0 -0
  715. /package/{dist/icc-api → icc-api}/model/AbstractFilterHealthElement.js +0 -0
  716. /package/{dist/icc-api → icc-api}/model/AbstractFilterHealthElement.js.map +0 -0
  717. /package/{dist/icc-api → icc-api}/model/AbstractFilterHealthcareParty.d.ts +0 -0
  718. /package/{dist/icc-api → icc-api}/model/AbstractFilterHealthcareParty.js +0 -0
  719. /package/{dist/icc-api → icc-api}/model/AbstractFilterHealthcareParty.js.map +0 -0
  720. /package/{dist/icc-api → icc-api}/model/AbstractFilterInvoice.d.ts +0 -0
  721. /package/{dist/icc-api → icc-api}/model/AbstractFilterInvoice.js +0 -0
  722. /package/{dist/icc-api → icc-api}/model/AbstractFilterInvoice.js.map +0 -0
  723. /package/{dist/icc-api → icc-api}/model/AbstractFilterMaintenanceTask.d.ts +0 -0
  724. /package/{dist/icc-api → icc-api}/model/AbstractFilterMaintenanceTask.js +0 -0
  725. /package/{dist/icc-api → icc-api}/model/AbstractFilterMaintenanceTask.js.map +0 -0
  726. /package/{dist/icc-api → icc-api}/model/AbstractFilterPatient.d.ts +0 -0
  727. /package/{dist/icc-api → icc-api}/model/AbstractFilterPatient.js +0 -0
  728. /package/{dist/icc-api → icc-api}/model/AbstractFilterPatient.js.map +0 -0
  729. /package/{dist/icc-api → icc-api}/model/AbstractFilterService.d.ts +0 -0
  730. /package/{dist/icc-api → icc-api}/model/AbstractFilterService.js +0 -0
  731. /package/{dist/icc-api → icc-api}/model/AbstractFilterService.js.map +0 -0
  732. /package/{dist/icc-api → icc-api}/model/AbstractFilterUser.d.ts +0 -0
  733. /package/{dist/icc-api → icc-api}/model/AbstractFilterUser.js +0 -0
  734. /package/{dist/icc-api → icc-api}/model/AbstractFilterUser.js.map +0 -0
  735. /package/{dist/icc-api → icc-api}/model/AccessLog.d.ts +0 -0
  736. /package/{dist/icc-api → icc-api}/model/AccessLog.js +0 -0
  737. /package/{dist/icc-api → icc-api}/model/AccessLog.js.map +0 -0
  738. /package/{dist/icc-api → icc-api}/model/AddedDocument.d.ts +0 -0
  739. /package/{dist/icc-api → icc-api}/model/AddedDocument.js +0 -0
  740. /package/{dist/icc-api → icc-api}/model/AddedDocument.js.map +0 -0
  741. /package/{dist/icc-api → icc-api}/model/Address.d.ts +0 -0
  742. /package/{dist/icc-api → icc-api}/model/Address.js +0 -0
  743. /package/{dist/icc-api → icc-api}/model/Address.js.map +0 -0
  744. /package/{dist/icc-api → icc-api}/model/AdministrationQuantity.d.ts +0 -0
  745. /package/{dist/icc-api → icc-api}/model/AdministrationQuantity.js +0 -0
  746. /package/{dist/icc-api → icc-api}/model/AdministrationQuantity.js.map +0 -0
  747. /package/{dist/icc-api → icc-api}/model/Agenda.d.ts +0 -0
  748. /package/{dist/icc-api → icc-api}/model/Agenda.js +0 -0
  749. /package/{dist/icc-api → icc-api}/model/Agenda.js.map +0 -0
  750. /package/{dist/icc-api → icc-api}/model/AgreementAppendix.d.ts +0 -0
  751. /package/{dist/icc-api → icc-api}/model/AgreementAppendix.js +0 -0
  752. /package/{dist/icc-api → icc-api}/model/AgreementAppendix.js.map +0 -0
  753. /package/{dist/icc-api → icc-api}/model/Amp.d.ts +0 -0
  754. /package/{dist/icc-api → icc-api}/model/Amp.js +0 -0
  755. /package/{dist/icc-api → icc-api}/model/Amp.js.map +0 -0
  756. /package/{dist/icc-api → icc-api}/model/AmpComponent.d.ts +0 -0
  757. /package/{dist/icc-api → icc-api}/model/AmpComponent.js +0 -0
  758. /package/{dist/icc-api → icc-api}/model/AmpComponent.js.map +0 -0
  759. /package/{dist/icc-api → icc-api}/model/Ampp.d.ts +0 -0
  760. /package/{dist/icc-api → icc-api}/model/Ampp.js +0 -0
  761. /package/{dist/icc-api → icc-api}/model/Ampp.js.map +0 -0
  762. /package/{dist/icc-api → icc-api}/model/AmppComponent.d.ts +0 -0
  763. /package/{dist/icc-api → icc-api}/model/AmppComponent.js +0 -0
  764. /package/{dist/icc-api → icc-api}/model/AmppComponent.js.map +0 -0
  765. /package/{dist/icc-api → icc-api}/model/Annotation.d.ts +0 -0
  766. /package/{dist/icc-api → icc-api}/model/Annotation.js +0 -0
  767. /package/{dist/icc-api → icc-api}/model/Annotation.js.map +0 -0
  768. /package/{dist/icc-api → icc-api}/model/ApplicationSettings.d.ts +0 -0
  769. /package/{dist/icc-api → icc-api}/model/ApplicationSettings.js +0 -0
  770. /package/{dist/icc-api → icc-api}/model/ApplicationSettings.js.map +0 -0
  771. /package/{dist/icc-api → icc-api}/model/Appointment.d.ts +0 -0
  772. /package/{dist/icc-api → icc-api}/model/Appointment.js +0 -0
  773. /package/{dist/icc-api → icc-api}/model/Appointment.js.map +0 -0
  774. /package/{dist/icc-api → icc-api}/model/AppointmentImport.d.ts +0 -0
  775. /package/{dist/icc-api → icc-api}/model/AppointmentImport.js +0 -0
  776. /package/{dist/icc-api → icc-api}/model/AppointmentImport.js.map +0 -0
  777. /package/{dist/icc-api → icc-api}/model/AppointmentTypeAndPlace.d.ts +0 -0
  778. /package/{dist/icc-api → icc-api}/model/AppointmentTypeAndPlace.js +0 -0
  779. /package/{dist/icc-api → icc-api}/model/AppointmentTypeAndPlace.js.map +0 -0
  780. /package/{dist/icc-api → icc-api}/model/Article.d.ts +0 -0
  781. /package/{dist/icc-api → icc-api}/model/Article.js +0 -0
  782. /package/{dist/icc-api → icc-api}/model/Article.js.map +0 -0
  783. /package/{dist/icc-api → icc-api}/model/Atc.d.ts +0 -0
  784. /package/{dist/icc-api → icc-api}/model/Atc.js +0 -0
  785. /package/{dist/icc-api → icc-api}/model/Atc.js.map +0 -0
  786. /package/{dist/icc-api → icc-api}/model/Attachment.d.ts +0 -0
  787. /package/{dist/icc-api → icc-api}/model/Attachment.js +0 -0
  788. /package/{dist/icc-api → icc-api}/model/Attachment.js.map +0 -0
  789. /package/{dist/icc-api → icc-api}/model/AttachmentMetadata.d.ts +0 -0
  790. /package/{dist/icc-api → icc-api}/model/AttachmentMetadata.js +0 -0
  791. /package/{dist/icc-api → icc-api}/model/AttachmentMetadata.js.map +0 -0
  792. /package/{dist/icc-api → icc-api}/model/AuthenticationResponse.d.ts +0 -0
  793. /package/{dist/icc-api → icc-api}/model/AuthenticationResponse.js +0 -0
  794. /package/{dist/icc-api → icc-api}/model/AuthenticationResponse.js.map +0 -0
  795. /package/{dist/icc-api → icc-api}/model/AuthenticationToken.d.ts +0 -0
  796. /package/{dist/icc-api → icc-api}/model/AuthenticationToken.js +0 -0
  797. /package/{dist/icc-api → icc-api}/model/AuthenticationToken.js.map +0 -0
  798. /package/{dist/icc-api → icc-api}/model/Basic.d.ts +0 -0
  799. /package/{dist/icc-api → icc-api}/model/Basic.js +0 -0
  800. /package/{dist/icc-api → icc-api}/model/Basic.js.map +0 -0
  801. /package/{dist/icc-api → icc-api}/model/Body.d.ts +0 -0
  802. /package/{dist/icc-api → icc-api}/model/Body.js +0 -0
  803. /package/{dist/icc-api → icc-api}/model/Body.js.map +0 -0
  804. /package/{dist/icc-api → icc-api}/model/Body3.d.ts +0 -0
  805. /package/{dist/icc-api → icc-api}/model/Body3.js +0 -0
  806. /package/{dist/icc-api → icc-api}/model/Body3.js.map +0 -0
  807. /package/{dist/icc-api → icc-api}/model/BulkAttachmentUpdateOptions.d.ts +0 -0
  808. /package/{dist/icc-api → icc-api}/model/BulkAttachmentUpdateOptions.js +0 -0
  809. /package/{dist/icc-api → icc-api}/model/BulkAttachmentUpdateOptions.js.map +0 -0
  810. /package/{dist/icc-api → icc-api}/model/ByteArray.d.ts +0 -0
  811. /package/{dist/icc-api → icc-api}/model/ByteArray.js +0 -0
  812. /package/{dist/icc-api → icc-api}/model/ByteArray.js.map +0 -0
  813. /package/{dist/icc-api → icc-api}/model/CalendarItem.d.ts +0 -0
  814. /package/{dist/icc-api → icc-api}/model/CalendarItem.js +0 -0
  815. /package/{dist/icc-api → icc-api}/model/CalendarItem.js.map +0 -0
  816. /package/{dist/icc-api → icc-api}/model/CalendarItemTag.d.ts +0 -0
  817. /package/{dist/icc-api → icc-api}/model/CalendarItemTag.js +0 -0
  818. /package/{dist/icc-api → icc-api}/model/CalendarItemTag.js.map +0 -0
  819. /package/{dist/icc-api → icc-api}/model/CalendarItemType.d.ts +0 -0
  820. /package/{dist/icc-api → icc-api}/model/CalendarItemType.js +0 -0
  821. /package/{dist/icc-api → icc-api}/model/CalendarItemType.js.map +0 -0
  822. /package/{dist/icc-api → icc-api}/model/CareTeamMember.d.ts +0 -0
  823. /package/{dist/icc-api → icc-api}/model/CareTeamMember.js +0 -0
  824. /package/{dist/icc-api → icc-api}/model/CareTeamMember.js.map +0 -0
  825. /package/{dist/icc-api → icc-api}/model/CareTeamMembership.d.ts +0 -0
  826. /package/{dist/icc-api → icc-api}/model/CareTeamMembership.js +0 -0
  827. /package/{dist/icc-api → icc-api}/model/CareTeamMembership.js.map +0 -0
  828. /package/{dist/icc-api → icc-api}/model/CheckSMFPatientResult.d.ts +0 -0
  829. /package/{dist/icc-api → icc-api}/model/CheckSMFPatientResult.js +0 -0
  830. /package/{dist/icc-api → icc-api}/model/CheckSMFPatientResult.js.map +0 -0
  831. /package/{dist/icc-api → icc-api}/model/Classification.d.ts +0 -0
  832. /package/{dist/icc-api → icc-api}/model/Classification.js +0 -0
  833. /package/{dist/icc-api → icc-api}/model/Classification.js.map +0 -0
  834. /package/{dist/icc-api → icc-api}/model/ClassificationTemplate.d.ts +0 -0
  835. /package/{dist/icc-api → icc-api}/model/ClassificationTemplate.js +0 -0
  836. /package/{dist/icc-api → icc-api}/model/ClassificationTemplate.js.map +0 -0
  837. /package/{dist/icc-api → icc-api}/model/Code.d.ts +0 -0
  838. /package/{dist/icc-api → icc-api}/model/Code.js +0 -0
  839. /package/{dist/icc-api → icc-api}/model/Code.js.map +0 -0
  840. /package/{dist/icc-api → icc-api}/model/CodeStub.d.ts +0 -0
  841. /package/{dist/icc-api → icc-api}/model/CodeStub.js +0 -0
  842. /package/{dist/icc-api → icc-api}/model/CodeStub.js.map +0 -0
  843. /package/{dist/icc-api → icc-api}/model/CodeType.d.ts +0 -0
  844. /package/{dist/icc-api → icc-api}/model/CodeType.js +0 -0
  845. /package/{dist/icc-api → icc-api}/model/CodeType.js.map +0 -0
  846. /package/{dist/icc-api → icc-api}/model/CommentedClassification.d.ts +0 -0
  847. /package/{dist/icc-api → icc-api}/model/CommentedClassification.js +0 -0
  848. /package/{dist/icc-api → icc-api}/model/CommentedClassification.js.map +0 -0
  849. /package/{dist/icc-api → icc-api}/model/Commercialization.d.ts +0 -0
  850. /package/{dist/icc-api → icc-api}/model/Commercialization.js +0 -0
  851. /package/{dist/icc-api → icc-api}/model/Commercialization.js.map +0 -0
  852. /package/{dist/icc-api → icc-api}/model/Company.d.ts +0 -0
  853. /package/{dist/icc-api → icc-api}/model/Company.js +0 -0
  854. /package/{dist/icc-api → icc-api}/model/Company.js.map +0 -0
  855. /package/{dist/icc-api → icc-api}/model/Contact.d.ts +0 -0
  856. /package/{dist/icc-api → icc-api}/model/Contact.js +0 -0
  857. /package/{dist/icc-api → icc-api}/model/Contact.js.map +0 -0
  858. /package/{dist/icc-api → icc-api}/model/Content.d.ts +0 -0
  859. /package/{dist/icc-api → icc-api}/model/Content.js +0 -0
  860. /package/{dist/icc-api → icc-api}/model/Content.js.map +0 -0
  861. /package/{dist/icc-api → icc-api}/model/Copayment.d.ts +0 -0
  862. /package/{dist/icc-api → icc-api}/model/Copayment.js +0 -0
  863. /package/{dist/icc-api → icc-api}/model/Copayment.js.map +0 -0
  864. /package/{dist/icc-api → icc-api}/model/Data.d.ts +0 -0
  865. /package/{dist/icc-api → icc-api}/model/Data.js +0 -0
  866. /package/{dist/icc-api → icc-api}/model/Data.js.map +0 -0
  867. /package/{dist/icc-api → icc-api}/model/DataAttachment.d.ts +0 -0
  868. /package/{dist/icc-api → icc-api}/model/DataAttachment.js +0 -0
  869. /package/{dist/icc-api → icc-api}/model/DataAttachment.js.map +0 -0
  870. /package/{dist/icc-api → icc-api}/model/DataOwnerRegistrationSuccess.d.ts +0 -0
  871. /package/{dist/icc-api → icc-api}/model/DataOwnerRegistrationSuccess.js +0 -0
  872. /package/{dist/icc-api → icc-api}/model/DataOwnerRegistrationSuccess.js.map +0 -0
  873. /package/{dist/icc-api → icc-api}/model/DataOwnerWithType.d.ts +0 -0
  874. /package/{dist/icc-api → icc-api}/model/DataOwnerWithType.js +0 -0
  875. /package/{dist/icc-api → icc-api}/model/DataOwnerWithType.js.map +0 -0
  876. /package/{dist/icc-api → icc-api}/model/DatabaseInfo.d.ts +0 -0
  877. /package/{dist/icc-api → icc-api}/model/DatabaseInfo.js +0 -0
  878. /package/{dist/icc-api → icc-api}/model/DatabaseInfo.js.map +0 -0
  879. /package/{dist/icc-api → icc-api}/model/DatabaseInitialisation.d.ts +0 -0
  880. /package/{dist/icc-api → icc-api}/model/DatabaseInitialisation.js +0 -0
  881. /package/{dist/icc-api → icc-api}/model/DatabaseInitialisation.js.map +0 -0
  882. /package/{dist/icc-api → icc-api}/model/DatabaseSynchronization.d.ts +0 -0
  883. /package/{dist/icc-api → icc-api}/model/DatabaseSynchronization.js +0 -0
  884. /package/{dist/icc-api → icc-api}/model/DatabaseSynchronization.js.map +0 -0
  885. /package/{dist/icc-api → icc-api}/model/Delegation.d.ts +0 -0
  886. /package/{dist/icc-api → icc-api}/model/Delegation.js +0 -0
  887. /package/{dist/icc-api → icc-api}/model/Delegation.js.map +0 -0
  888. /package/{dist/icc-api → icc-api}/model/DeletedAttachment.d.ts +0 -0
  889. /package/{dist/icc-api → icc-api}/model/DeletedAttachment.js +0 -0
  890. /package/{dist/icc-api → icc-api}/model/DeletedAttachment.js.map +0 -0
  891. /package/{dist/icc-api → icc-api}/model/Device.d.ts +0 -0
  892. /package/{dist/icc-api → icc-api}/model/Device.js +0 -0
  893. /package/{dist/icc-api → icc-api}/model/Device.js.map +0 -0
  894. /package/{dist/icc-api → icc-api}/model/DeviceType.d.ts +0 -0
  895. /package/{dist/icc-api → icc-api}/model/DeviceType.js +0 -0
  896. /package/{dist/icc-api → icc-api}/model/DeviceType.js.map +0 -0
  897. /package/{dist/icc-api → icc-api}/model/DiaryNoteExportInfo.d.ts +0 -0
  898. /package/{dist/icc-api → icc-api}/model/DiaryNoteExportInfo.js +0 -0
  899. /package/{dist/icc-api → icc-api}/model/DiaryNoteExportInfo.js.map +0 -0
  900. /package/{dist/icc-api → icc-api}/model/Dmpp.d.ts +0 -0
  901. /package/{dist/icc-api → icc-api}/model/Dmpp.js +0 -0
  902. /package/{dist/icc-api → icc-api}/model/Dmpp.js.map +0 -0
  903. /package/{dist/icc-api → icc-api}/model/DocIdentifier.d.ts +0 -0
  904. /package/{dist/icc-api → icc-api}/model/DocIdentifier.js +0 -0
  905. /package/{dist/icc-api → icc-api}/model/DocIdentifier.js.map +0 -0
  906. /package/{dist/icc-api → icc-api}/model/Document.d.ts +0 -0
  907. /package/{dist/icc-api → icc-api}/model/Document.js +0 -0
  908. /package/{dist/icc-api → icc-api}/model/Document.js.map +0 -0
  909. /package/{dist/icc-api → icc-api}/model/DocumentGroup.d.ts +0 -0
  910. /package/{dist/icc-api → icc-api}/model/DocumentGroup.js +0 -0
  911. /package/{dist/icc-api → icc-api}/model/DocumentGroup.js.map +0 -0
  912. /package/{dist/icc-api → icc-api}/model/DocumentTemplate.d.ts +0 -0
  913. /package/{dist/icc-api → icc-api}/model/DocumentTemplate.js +0 -0
  914. /package/{dist/icc-api → icc-api}/model/DocumentTemplate.js.map +0 -0
  915. /package/{dist/icc-api → icc-api}/model/Duration.d.ts +0 -0
  916. /package/{dist/icc-api → icc-api}/model/Duration.js +0 -0
  917. /package/{dist/icc-api → icc-api}/model/Duration.js.map +0 -0
  918. /package/{dist/icc-api → icc-api}/model/EIDItem.d.ts +0 -0
  919. /package/{dist/icc-api → icc-api}/model/EIDItem.js +0 -0
  920. /package/{dist/icc-api → icc-api}/model/EIDItem.js.map +0 -0
  921. /package/{dist/icc-api → icc-api}/model/Editor.d.ts +0 -0
  922. /package/{dist/icc-api → icc-api}/model/Editor.js +0 -0
  923. /package/{dist/icc-api → icc-api}/model/Editor.js.map +0 -0
  924. /package/{dist/icc-api → icc-api}/model/EfactInvoice.d.ts +0 -0
  925. /package/{dist/icc-api → icc-api}/model/EfactInvoice.js +0 -0
  926. /package/{dist/icc-api → icc-api}/model/EfactInvoice.js.map +0 -0
  927. /package/{dist/icc-api → icc-api}/model/EmailOrSmsMessage.d.ts +0 -0
  928. /package/{dist/icc-api → icc-api}/model/EmailOrSmsMessage.js +0 -0
  929. /package/{dist/icc-api → icc-api}/model/EmailOrSmsMessage.js.map +0 -0
  930. /package/{dist/icc-api → icc-api}/model/EmailTemplate.d.ts +0 -0
  931. /package/{dist/icc-api → icc-api}/model/EmailTemplate.js +0 -0
  932. /package/{dist/icc-api → icc-api}/model/EmailTemplate.js.map +0 -0
  933. /package/{dist/icc-api → icc-api}/model/Employer.d.ts +0 -0
  934. /package/{dist/icc-api → icc-api}/model/Employer.js +0 -0
  935. /package/{dist/icc-api → icc-api}/model/Employer.js.map +0 -0
  936. /package/{dist/icc-api → icc-api}/model/EmploymentInfo.d.ts +0 -0
  937. /package/{dist/icc-api → icc-api}/model/EmploymentInfo.js +0 -0
  938. /package/{dist/icc-api → icc-api}/model/EmploymentInfo.js.map +0 -0
  939. /package/{dist/icc-api → icc-api}/model/EntityReference.d.ts +0 -0
  940. /package/{dist/icc-api → icc-api}/model/EntityReference.js +0 -0
  941. /package/{dist/icc-api → icc-api}/model/EntityReference.js.map +0 -0
  942. /package/{dist/icc-api → icc-api}/model/EntityTemplate.d.ts +0 -0
  943. /package/{dist/icc-api → icc-api}/model/EntityTemplate.js +0 -0
  944. /package/{dist/icc-api → icc-api}/model/EntityTemplate.js.map +0 -0
  945. /package/{dist/icc-api → icc-api}/model/Episode.d.ts +0 -0
  946. /package/{dist/icc-api → icc-api}/model/Episode.js +0 -0
  947. /package/{dist/icc-api → icc-api}/model/Episode.js.map +0 -0
  948. /package/{dist/icc-api → icc-api}/model/FilterChainCode.d.ts +0 -0
  949. /package/{dist/icc-api → icc-api}/model/FilterChainCode.js +0 -0
  950. /package/{dist/icc-api → icc-api}/model/FilterChainCode.js.map +0 -0
  951. /package/{dist/icc-api → icc-api}/model/FilterChainContact.d.ts +0 -0
  952. /package/{dist/icc-api → icc-api}/model/FilterChainContact.js +0 -0
  953. /package/{dist/icc-api → icc-api}/model/FilterChainContact.js.map +0 -0
  954. /package/{dist/icc-api → icc-api}/model/FilterChainDevice.d.ts +0 -0
  955. /package/{dist/icc-api → icc-api}/model/FilterChainDevice.js +0 -0
  956. /package/{dist/icc-api → icc-api}/model/FilterChainDevice.js.map +0 -0
  957. /package/{dist/icc-api → icc-api}/model/FilterChainHealthElement.d.ts +0 -0
  958. /package/{dist/icc-api → icc-api}/model/FilterChainHealthElement.js +0 -0
  959. /package/{dist/icc-api → icc-api}/model/FilterChainHealthElement.js.map +0 -0
  960. /package/{dist/icc-api → icc-api}/model/FilterChainHealthcareParty.d.ts +0 -0
  961. /package/{dist/icc-api → icc-api}/model/FilterChainHealthcareParty.js +0 -0
  962. /package/{dist/icc-api → icc-api}/model/FilterChainHealthcareParty.js.map +0 -0
  963. /package/{dist/icc-api → icc-api}/model/FilterChainInvoice.d.ts +0 -0
  964. /package/{dist/icc-api → icc-api}/model/FilterChainInvoice.js +0 -0
  965. /package/{dist/icc-api → icc-api}/model/FilterChainInvoice.js.map +0 -0
  966. /package/{dist/icc-api → icc-api}/model/FilterChainMaintenanceTask.d.ts +0 -0
  967. /package/{dist/icc-api → icc-api}/model/FilterChainMaintenanceTask.js +0 -0
  968. /package/{dist/icc-api → icc-api}/model/FilterChainMaintenanceTask.js.map +0 -0
  969. /package/{dist/icc-api → icc-api}/model/FilterChainPatient.d.ts +0 -0
  970. /package/{dist/icc-api → icc-api}/model/FilterChainPatient.js +0 -0
  971. /package/{dist/icc-api → icc-api}/model/FilterChainPatient.js.map +0 -0
  972. /package/{dist/icc-api → icc-api}/model/FilterChainService.d.ts +0 -0
  973. /package/{dist/icc-api → icc-api}/model/FilterChainService.js +0 -0
  974. /package/{dist/icc-api → icc-api}/model/FilterChainService.js.map +0 -0
  975. /package/{dist/icc-api → icc-api}/model/FilterChainUser.d.ts +0 -0
  976. /package/{dist/icc-api → icc-api}/model/FilterChainUser.js +0 -0
  977. /package/{dist/icc-api → icc-api}/model/FilterChainUser.js.map +0 -0
  978. /package/{dist/icc-api → icc-api}/model/FinancialInstitutionInformation.d.ts +0 -0
  979. /package/{dist/icc-api → icc-api}/model/FinancialInstitutionInformation.js +0 -0
  980. /package/{dist/icc-api → icc-api}/model/FinancialInstitutionInformation.js.map +0 -0
  981. /package/{dist/icc-api → icc-api}/model/FlatRateTarification.d.ts +0 -0
  982. /package/{dist/icc-api → icc-api}/model/FlatRateTarification.js +0 -0
  983. /package/{dist/icc-api → icc-api}/model/FlatRateTarification.js.map +0 -0
  984. /package/{dist/icc-api → icc-api}/model/FlowItem.d.ts +0 -0
  985. /package/{dist/icc-api → icc-api}/model/FlowItem.js +0 -0
  986. /package/{dist/icc-api → icc-api}/model/FlowItem.js.map +0 -0
  987. /package/{dist/icc-api → icc-api}/model/Form.d.ts +0 -0
  988. /package/{dist/icc-api → icc-api}/model/Form.js +0 -0
  989. /package/{dist/icc-api → icc-api}/model/Form.js.map +0 -0
  990. /package/{dist/icc-api → icc-api}/model/FormColumn.d.ts +0 -0
  991. /package/{dist/icc-api → icc-api}/model/FormColumn.js +0 -0
  992. /package/{dist/icc-api → icc-api}/model/FormColumn.js.map +0 -0
  993. /package/{dist/icc-api → icc-api}/model/FormDataOption.d.ts +0 -0
  994. /package/{dist/icc-api → icc-api}/model/FormDataOption.js +0 -0
  995. /package/{dist/icc-api → icc-api}/model/FormDataOption.js.map +0 -0
  996. /package/{dist/icc-api → icc-api}/model/FormLayout.d.ts +0 -0
  997. /package/{dist/icc-api → icc-api}/model/FormLayout.js +0 -0
  998. /package/{dist/icc-api → icc-api}/model/FormLayout.js.map +0 -0
  999. /package/{dist/icc-api → icc-api}/model/FormLayoutData.d.ts +0 -0
  1000. /package/{dist/icc-api → icc-api}/model/FormLayoutData.js +0 -0
  1001. /package/{dist/icc-api → icc-api}/model/FormLayoutData.js.map +0 -0
  1002. /package/{dist/icc-api → icc-api}/model/FormPlanning.d.ts +0 -0
  1003. /package/{dist/icc-api → icc-api}/model/FormPlanning.js +0 -0
  1004. /package/{dist/icc-api → icc-api}/model/FormPlanning.js.map +0 -0
  1005. /package/{dist/icc-api → icc-api}/model/FormSection.d.ts +0 -0
  1006. /package/{dist/icc-api → icc-api}/model/FormSection.js +0 -0
  1007. /package/{dist/icc-api → icc-api}/model/FormSection.js.map +0 -0
  1008. /package/{dist/icc-api → icc-api}/model/FormTemplate.d.ts +0 -0
  1009. /package/{dist/icc-api → icc-api}/model/FormTemplate.js +0 -0
  1010. /package/{dist/icc-api → icc-api}/model/FormTemplate.js.map +0 -0
  1011. /package/{dist/icc-api → icc-api}/model/FormTemplateLayout.d.ts +0 -0
  1012. /package/{dist/icc-api → icc-api}/model/FormTemplateLayout.js +0 -0
  1013. /package/{dist/icc-api → icc-api}/model/FormTemplateLayout.js.map +0 -0
  1014. /package/{dist/icc-api → icc-api}/model/Formula.d.ts +0 -0
  1015. /package/{dist/icc-api → icc-api}/model/Formula.js +0 -0
  1016. /package/{dist/icc-api → icc-api}/model/Formula.js.map +0 -0
  1017. /package/{dist/icc-api → icc-api}/model/FrontEndMigration.d.ts +0 -0
  1018. /package/{dist/icc-api → icc-api}/model/FrontEndMigration.js +0 -0
  1019. /package/{dist/icc-api → icc-api}/model/FrontEndMigration.js.map +0 -0
  1020. /package/{dist/icc-api → icc-api}/model/Group.d.ts +0 -0
  1021. /package/{dist/icc-api → icc-api}/model/Group.js +0 -0
  1022. /package/{dist/icc-api → icc-api}/model/Group.js.map +0 -0
  1023. /package/{dist/icc-api → icc-api}/model/GroupDatabasesInfo.d.ts +0 -0
  1024. /package/{dist/icc-api → icc-api}/model/GroupDatabasesInfo.js +0 -0
  1025. /package/{dist/icc-api → icc-api}/model/GroupDatabasesInfo.js.map +0 -0
  1026. /package/{dist/icc-api → icc-api}/model/GroupDeletionReport.d.ts +0 -0
  1027. /package/{dist/icc-api → icc-api}/model/GroupDeletionReport.js +0 -0
  1028. /package/{dist/icc-api → icc-api}/model/GroupDeletionReport.js.map +0 -0
  1029. /package/{dist/icc-api → icc-api}/model/GuiCode.d.ts +0 -0
  1030. /package/{dist/icc-api → icc-api}/model/GuiCode.js +0 -0
  1031. /package/{dist/icc-api → icc-api}/model/GuiCode.js.map +0 -0
  1032. /package/{dist/icc-api → icc-api}/model/GuiCodeType.d.ts +0 -0
  1033. /package/{dist/icc-api → icc-api}/model/GuiCodeType.js +0 -0
  1034. /package/{dist/icc-api → icc-api}/model/GuiCodeType.js.map +0 -0
  1035. /package/{dist/icc-api → icc-api}/model/HealthElement.d.ts +0 -0
  1036. /package/{dist/icc-api → icc-api}/model/HealthElement.js +0 -0
  1037. /package/{dist/icc-api → icc-api}/model/HealthElement.js.map +0 -0
  1038. /package/{dist/icc-api → icc-api}/model/HealthcareParty.d.ts +0 -0
  1039. /package/{dist/icc-api → icc-api}/model/HealthcareParty.js +0 -0
  1040. /package/{dist/icc-api → icc-api}/model/HealthcareParty.js.map +0 -0
  1041. /package/{dist/icc-api → icc-api}/model/HealthcarePartyHistoryStatus.d.ts +0 -0
  1042. /package/{dist/icc-api → icc-api}/model/HealthcarePartyHistoryStatus.js +0 -0
  1043. /package/{dist/icc-api → icc-api}/model/HealthcarePartyHistoryStatus.js.map +0 -0
  1044. /package/{dist/icc-api → icc-api}/model/IcureStub.d.ts +0 -0
  1045. /package/{dist/icc-api → icc-api}/model/IcureStub.js +0 -0
  1046. /package/{dist/icc-api → icc-api}/model/IcureStub.js.map +0 -0
  1047. /package/{dist/icc-api → icc-api}/model/IdWithRev.d.ts +0 -0
  1048. /package/{dist/icc-api → icc-api}/model/IdWithRev.js +0 -0
  1049. /package/{dist/icc-api → icc-api}/model/IdWithRev.js.map +0 -0
  1050. /package/{dist/icc-api → icc-api}/model/Identifier.d.ts +0 -0
  1051. /package/{dist/icc-api → icc-api}/model/Identifier.js +0 -0
  1052. /package/{dist/icc-api → icc-api}/model/Identifier.js.map +0 -0
  1053. /package/{dist/icc-api → icc-api}/model/IdentityDocumentReader.d.ts +0 -0
  1054. /package/{dist/icc-api → icc-api}/model/IdentityDocumentReader.js +0 -0
  1055. /package/{dist/icc-api → icc-api}/model/IdentityDocumentReader.js.map +0 -0
  1056. /package/{dist/icc-api → icc-api}/model/ImportMapping.d.ts +0 -0
  1057. /package/{dist/icc-api → icc-api}/model/ImportMapping.js +0 -0
  1058. /package/{dist/icc-api → icc-api}/model/ImportMapping.js.map +0 -0
  1059. /package/{dist/icc-api → icc-api}/model/ImportResult.d.ts +0 -0
  1060. /package/{dist/icc-api → icc-api}/model/ImportResult.js +0 -0
  1061. /package/{dist/icc-api → icc-api}/model/ImportResult.js.map +0 -0
  1062. /package/{dist/icc-api → icc-api}/model/IncapacityExportInfo.d.ts +0 -0
  1063. /package/{dist/icc-api → icc-api}/model/IncapacityExportInfo.js +0 -0
  1064. /package/{dist/icc-api → icc-api}/model/IncapacityExportInfo.js.map +0 -0
  1065. /package/{dist/icc-api → icc-api}/model/IndexedIdentifier.d.ts +0 -0
  1066. /package/{dist/icc-api → icc-api}/model/IndexedIdentifier.js +0 -0
  1067. /package/{dist/icc-api → icc-api}/model/IndexedIdentifier.js.map +0 -0
  1068. /package/{dist/icc-api → icc-api}/model/IndexingInfo.d.ts +0 -0
  1069. /package/{dist/icc-api → icc-api}/model/IndexingInfo.js +0 -0
  1070. /package/{dist/icc-api → icc-api}/model/IndexingInfo.js.map +0 -0
  1071. /package/{dist/icc-api → icc-api}/model/Ingredient.d.ts +0 -0
  1072. /package/{dist/icc-api → icc-api}/model/Ingredient.js +0 -0
  1073. /package/{dist/icc-api → icc-api}/model/Ingredient.js.map +0 -0
  1074. /package/{dist/icc-api → icc-api}/model/Insurability.d.ts +0 -0
  1075. /package/{dist/icc-api → icc-api}/model/Insurability.js +0 -0
  1076. /package/{dist/icc-api → icc-api}/model/Insurability.js.map +0 -0
  1077. /package/{dist/icc-api → icc-api}/model/Insurance.d.ts +0 -0
  1078. /package/{dist/icc-api → icc-api}/model/Insurance.js +0 -0
  1079. /package/{dist/icc-api → icc-api}/model/Insurance.js.map +0 -0
  1080. /package/{dist/icc-api → icc-api}/model/Invoice.d.ts +0 -0
  1081. /package/{dist/icc-api → icc-api}/model/Invoice.js +0 -0
  1082. /package/{dist/icc-api → icc-api}/model/Invoice.js.map +0 -0
  1083. /package/{dist/icc-api → icc-api}/model/InvoiceItem.d.ts +0 -0
  1084. /package/{dist/icc-api → icc-api}/model/InvoiceItem.js +0 -0
  1085. /package/{dist/icc-api → icc-api}/model/InvoiceItem.js.map +0 -0
  1086. /package/{dist/icc-api → icc-api}/model/InvoiceSender.d.ts +0 -0
  1087. /package/{dist/icc-api → icc-api}/model/InvoiceSender.js +0 -0
  1088. /package/{dist/icc-api → icc-api}/model/InvoiceSender.js.map +0 -0
  1089. /package/{dist/icc-api → icc-api}/model/InvoicesBatch.d.ts +0 -0
  1090. /package/{dist/icc-api → icc-api}/model/InvoicesBatch.js +0 -0
  1091. /package/{dist/icc-api → icc-api}/model/InvoicesBatch.js.map +0 -0
  1092. /package/{dist/icc-api → icc-api}/model/InvoicingCode.d.ts +0 -0
  1093. /package/{dist/icc-api → icc-api}/model/InvoicingCode.js +0 -0
  1094. /package/{dist/icc-api → icc-api}/model/InvoicingCode.js.map +0 -0
  1095. /package/{dist/icc-api → icc-api}/model/Keyword.d.ts +0 -0
  1096. /package/{dist/icc-api → icc-api}/model/Keyword.js +0 -0
  1097. /package/{dist/icc-api → icc-api}/model/Keyword.js.map +0 -0
  1098. /package/{dist/icc-api → icc-api}/model/KeywordSubword.d.ts +0 -0
  1099. /package/{dist/icc-api → icc-api}/model/KeywordSubword.js +0 -0
  1100. /package/{dist/icc-api → icc-api}/model/KeywordSubword.js.map +0 -0
  1101. /package/{dist/icc-api → icc-api}/model/LabelledOccurence.d.ts +0 -0
  1102. /package/{dist/icc-api → icc-api}/model/LabelledOccurence.js +0 -0
  1103. /package/{dist/icc-api → icc-api}/model/LabelledOccurence.js.map +0 -0
  1104. /package/{dist/icc-api → icc-api}/model/LetterValue.d.ts +0 -0
  1105. /package/{dist/icc-api → icc-api}/model/LetterValue.js +0 -0
  1106. /package/{dist/icc-api → icc-api}/model/LetterValue.js.map +0 -0
  1107. /package/{dist/icc-api → icc-api}/model/ListOfIds.d.ts +0 -0
  1108. /package/{dist/icc-api → icc-api}/model/ListOfIds.js +0 -0
  1109. /package/{dist/icc-api → icc-api}/model/ListOfIds.js.map +0 -0
  1110. /package/{dist/icc-api → icc-api}/model/ListOfProperties.d.ts +0 -0
  1111. /package/{dist/icc-api → icc-api}/model/ListOfProperties.js +0 -0
  1112. /package/{dist/icc-api → icc-api}/model/ListOfProperties.js.map +0 -0
  1113. /package/{dist/icc-api → icc-api}/model/LoginCredentials.d.ts +0 -0
  1114. /package/{dist/icc-api → icc-api}/model/LoginCredentials.js +0 -0
  1115. /package/{dist/icc-api → icc-api}/model/LoginCredentials.js.map +0 -0
  1116. /package/{dist/icc-api → icc-api}/model/MaintenanceTask.d.ts +0 -0
  1117. /package/{dist/icc-api → icc-api}/model/MaintenanceTask.js +0 -0
  1118. /package/{dist/icc-api → icc-api}/model/MaintenanceTask.js.map +0 -0
  1119. /package/{dist/icc-api → icc-api}/model/MapOfIds.d.ts +0 -0
  1120. /package/{dist/icc-api → icc-api}/model/MapOfIds.js +0 -0
  1121. /package/{dist/icc-api → icc-api}/model/MapOfIds.js.map +0 -0
  1122. /package/{dist/icc-api → icc-api}/model/Measure.d.ts +0 -0
  1123. /package/{dist/icc-api → icc-api}/model/Measure.js +0 -0
  1124. /package/{dist/icc-api → icc-api}/model/Measure.js.map +0 -0
  1125. /package/{dist/icc-api → icc-api}/model/MedexInfo.d.ts +0 -0
  1126. /package/{dist/icc-api → icc-api}/model/MedexInfo.js +0 -0
  1127. /package/{dist/icc-api → icc-api}/model/MedexInfo.js.map +0 -0
  1128. /package/{dist/icc-api → icc-api}/model/MedicalHouseContract.d.ts +0 -0
  1129. /package/{dist/icc-api → icc-api}/model/MedicalHouseContract.js +0 -0
  1130. /package/{dist/icc-api → icc-api}/model/MedicalHouseContract.js.map +0 -0
  1131. /package/{dist/icc-api → icc-api}/model/MedicalLocation.d.ts +0 -0
  1132. /package/{dist/icc-api → icc-api}/model/MedicalLocation.js +0 -0
  1133. /package/{dist/icc-api → icc-api}/model/MedicalLocation.js.map +0 -0
  1134. /package/{dist/icc-api → icc-api}/model/Medication.d.ts +0 -0
  1135. /package/{dist/icc-api → icc-api}/model/Medication.js +0 -0
  1136. /package/{dist/icc-api → icc-api}/model/Medication.js.map +0 -0
  1137. /package/{dist/icc-api → icc-api}/model/MedicationSchemeExportInfo.d.ts +0 -0
  1138. /package/{dist/icc-api → icc-api}/model/MedicationSchemeExportInfo.js +0 -0
  1139. /package/{dist/icc-api → icc-api}/model/MedicationSchemeExportInfo.js.map +0 -0
  1140. /package/{dist/icc-api → icc-api}/model/Medicinalproduct.d.ts +0 -0
  1141. /package/{dist/icc-api → icc-api}/model/Medicinalproduct.js +0 -0
  1142. /package/{dist/icc-api → icc-api}/model/Medicinalproduct.js.map +0 -0
  1143. /package/{dist/icc-api → icc-api}/model/Message.d.ts +0 -0
  1144. /package/{dist/icc-api → icc-api}/model/Message.js +0 -0
  1145. /package/{dist/icc-api → icc-api}/model/Message.js.map +0 -0
  1146. /package/{dist/icc-api → icc-api}/model/MessageReadStatus.d.ts +0 -0
  1147. /package/{dist/icc-api → icc-api}/model/MessageReadStatus.js +0 -0
  1148. /package/{dist/icc-api → icc-api}/model/MessageReadStatus.js.map +0 -0
  1149. /package/{dist/icc-api → icc-api}/model/MessageWithBatch.d.ts +0 -0
  1150. /package/{dist/icc-api → icc-api}/model/MessageWithBatch.js +0 -0
  1151. /package/{dist/icc-api → icc-api}/model/MessageWithBatch.js.map +0 -0
  1152. /package/{dist/icc-api → icc-api}/model/MessagesReadStatusUpdate.d.ts +0 -0
  1153. /package/{dist/icc-api → icc-api}/model/MessagesReadStatusUpdate.js +0 -0
  1154. /package/{dist/icc-api → icc-api}/model/MessagesReadStatusUpdate.js.map +0 -0
  1155. /package/{dist/icc-api → icc-api}/model/MikronoAppointmentTypeRest.d.ts +0 -0
  1156. /package/{dist/icc-api → icc-api}/model/MikronoAppointmentTypeRest.js +0 -0
  1157. /package/{dist/icc-api → icc-api}/model/MikronoAppointmentTypeRest.js.map +0 -0
  1158. /package/{dist/icc-api → icc-api}/model/MikronoCredentials.d.ts +0 -0
  1159. /package/{dist/icc-api → icc-api}/model/MikronoCredentials.js +0 -0
  1160. /package/{dist/icc-api → icc-api}/model/MikronoCredentials.js.map +0 -0
  1161. /package/{dist/icc-api → icc-api}/model/MimeAttachment.d.ts +0 -0
  1162. /package/{dist/icc-api → icc-api}/model/MimeAttachment.js +0 -0
  1163. /package/{dist/icc-api → icc-api}/model/MimeAttachment.js.map +0 -0
  1164. /package/{dist/icc-api → icc-api}/model/ModelHelper.d.ts +0 -0
  1165. /package/{dist/icc-api → icc-api}/model/ModelHelper.js +0 -0
  1166. /package/{dist/icc-api → icc-api}/model/ModelHelper.js.map +0 -0
  1167. /package/{dist/icc-api → icc-api}/model/Nmp.d.ts +0 -0
  1168. /package/{dist/icc-api → icc-api}/model/Nmp.js +0 -0
  1169. /package/{dist/icc-api → icc-api}/model/Nmp.js.map +0 -0
  1170. /package/{dist/icc-api → icc-api}/model/NoGenericPrescriptionReason.d.ts +0 -0
  1171. /package/{dist/icc-api → icc-api}/model/NoGenericPrescriptionReason.js +0 -0
  1172. /package/{dist/icc-api → icc-api}/model/NoGenericPrescriptionReason.js.map +0 -0
  1173. /package/{dist/icc-api → icc-api}/model/NoSwitchReason.d.ts +0 -0
  1174. /package/{dist/icc-api → icc-api}/model/NoSwitchReason.js +0 -0
  1175. /package/{dist/icc-api → icc-api}/model/NoSwitchReason.js.map +0 -0
  1176. /package/{dist/icc-api → icc-api}/model/NumeratorRange.d.ts +0 -0
  1177. /package/{dist/icc-api → icc-api}/model/NumeratorRange.js +0 -0
  1178. /package/{dist/icc-api → icc-api}/model/NumeratorRange.js.map +0 -0
  1179. /package/{dist/icc-api → icc-api}/model/OperationToken.d.ts +0 -0
  1180. /package/{dist/icc-api → icc-api}/model/OperationToken.js +0 -0
  1181. /package/{dist/icc-api → icc-api}/model/OperationToken.js.map +0 -0
  1182. /package/{dist/icc-api → icc-api}/model/PackagingType.d.ts +0 -0
  1183. /package/{dist/icc-api → icc-api}/model/PackagingType.js +0 -0
  1184. /package/{dist/icc-api → icc-api}/model/PackagingType.js.map +0 -0
  1185. /package/{dist/icc-api → icc-api}/model/PaginatedDocumentKeyIdPairObject.d.ts +0 -0
  1186. /package/{dist/icc-api → icc-api}/model/PaginatedDocumentKeyIdPairObject.js +0 -0
  1187. /package/{dist/icc-api → icc-api}/model/PaginatedDocumentKeyIdPairObject.js.map +0 -0
  1188. /package/{dist/icc-api → icc-api}/model/PaginatedListAccessLog.d.ts +0 -0
  1189. /package/{dist/icc-api → icc-api}/model/PaginatedListAccessLog.js +0 -0
  1190. /package/{dist/icc-api → icc-api}/model/PaginatedListAccessLog.js.map +0 -0
  1191. /package/{dist/icc-api → icc-api}/model/PaginatedListAmp.d.ts +0 -0
  1192. /package/{dist/icc-api → icc-api}/model/PaginatedListAmp.js +0 -0
  1193. /package/{dist/icc-api → icc-api}/model/PaginatedListAmp.js.map +0 -0
  1194. /package/{dist/icc-api → icc-api}/model/PaginatedListCalendarItem.d.ts +0 -0
  1195. /package/{dist/icc-api → icc-api}/model/PaginatedListCalendarItem.js +0 -0
  1196. /package/{dist/icc-api → icc-api}/model/PaginatedListCalendarItem.js.map +0 -0
  1197. /package/{dist/icc-api → icc-api}/model/PaginatedListClassification.d.ts +0 -0
  1198. /package/{dist/icc-api → icc-api}/model/PaginatedListClassification.js +0 -0
  1199. /package/{dist/icc-api → icc-api}/model/PaginatedListClassification.js.map +0 -0
  1200. /package/{dist/icc-api → icc-api}/model/PaginatedListClassificationTemplate.d.ts +0 -0
  1201. /package/{dist/icc-api → icc-api}/model/PaginatedListClassificationTemplate.js +0 -0
  1202. /package/{dist/icc-api → icc-api}/model/PaginatedListClassificationTemplate.js.map +0 -0
  1203. /package/{dist/icc-api → icc-api}/model/PaginatedListCode.d.ts +0 -0
  1204. /package/{dist/icc-api → icc-api}/model/PaginatedListCode.js +0 -0
  1205. /package/{dist/icc-api → icc-api}/model/PaginatedListCode.js.map +0 -0
  1206. /package/{dist/icc-api → icc-api}/model/PaginatedListContact.d.ts +0 -0
  1207. /package/{dist/icc-api → icc-api}/model/PaginatedListContact.js +0 -0
  1208. /package/{dist/icc-api → icc-api}/model/PaginatedListContact.js.map +0 -0
  1209. /package/{dist/icc-api → icc-api}/model/PaginatedListDevice.d.ts +0 -0
  1210. /package/{dist/icc-api → icc-api}/model/PaginatedListDevice.js +0 -0
  1211. /package/{dist/icc-api → icc-api}/model/PaginatedListDevice.js.map +0 -0
  1212. /package/{dist/icc-api → icc-api}/model/PaginatedListDocument.d.ts +0 -0
  1213. /package/{dist/icc-api → icc-api}/model/PaginatedListDocument.js +0 -0
  1214. /package/{dist/icc-api → icc-api}/model/PaginatedListDocument.js.map +0 -0
  1215. /package/{dist/icc-api → icc-api}/model/PaginatedListEntityTemplate.d.ts +0 -0
  1216. /package/{dist/icc-api → icc-api}/model/PaginatedListEntityTemplate.js +0 -0
  1217. /package/{dist/icc-api → icc-api}/model/PaginatedListEntityTemplate.js.map +0 -0
  1218. /package/{dist/icc-api → icc-api}/model/PaginatedListForm.d.ts +0 -0
  1219. /package/{dist/icc-api → icc-api}/model/PaginatedListForm.js +0 -0
  1220. /package/{dist/icc-api → icc-api}/model/PaginatedListForm.js.map +0 -0
  1221. /package/{dist/icc-api → icc-api}/model/PaginatedListGroup.d.ts +0 -0
  1222. /package/{dist/icc-api → icc-api}/model/PaginatedListGroup.js +0 -0
  1223. /package/{dist/icc-api → icc-api}/model/PaginatedListGroup.js.map +0 -0
  1224. /package/{dist/icc-api → icc-api}/model/PaginatedListHealthElement.d.ts +0 -0
  1225. /package/{dist/icc-api → icc-api}/model/PaginatedListHealthElement.js +0 -0
  1226. /package/{dist/icc-api → icc-api}/model/PaginatedListHealthElement.js.map +0 -0
  1227. /package/{dist/icc-api → icc-api}/model/PaginatedListHealthcareParty.d.ts +0 -0
  1228. /package/{dist/icc-api → icc-api}/model/PaginatedListHealthcareParty.js +0 -0
  1229. /package/{dist/icc-api → icc-api}/model/PaginatedListHealthcareParty.js.map +0 -0
  1230. /package/{dist/icc-api → icc-api}/model/PaginatedListInvoice.d.ts +0 -0
  1231. /package/{dist/icc-api → icc-api}/model/PaginatedListInvoice.js +0 -0
  1232. /package/{dist/icc-api → icc-api}/model/PaginatedListInvoice.js.map +0 -0
  1233. /package/{dist/icc-api → icc-api}/model/PaginatedListMaintenanceTask.d.ts +0 -0
  1234. /package/{dist/icc-api → icc-api}/model/PaginatedListMaintenanceTask.js +0 -0
  1235. /package/{dist/icc-api → icc-api}/model/PaginatedListMaintenanceTask.js.map +0 -0
  1236. /package/{dist/icc-api → icc-api}/model/PaginatedListMessage.d.ts +0 -0
  1237. /package/{dist/icc-api → icc-api}/model/PaginatedListMessage.js +0 -0
  1238. /package/{dist/icc-api → icc-api}/model/PaginatedListMessage.js.map +0 -0
  1239. /package/{dist/icc-api → icc-api}/model/PaginatedListNmp.d.ts +0 -0
  1240. /package/{dist/icc-api → icc-api}/model/PaginatedListNmp.js +0 -0
  1241. /package/{dist/icc-api → icc-api}/model/PaginatedListNmp.js.map +0 -0
  1242. /package/{dist/icc-api → icc-api}/model/PaginatedListPatient.d.ts +0 -0
  1243. /package/{dist/icc-api → icc-api}/model/PaginatedListPatient.js +0 -0
  1244. /package/{dist/icc-api → icc-api}/model/PaginatedListPatient.js.map +0 -0
  1245. /package/{dist/icc-api → icc-api}/model/PaginatedListService.d.ts +0 -0
  1246. /package/{dist/icc-api → icc-api}/model/PaginatedListService.js +0 -0
  1247. /package/{dist/icc-api → icc-api}/model/PaginatedListService.js.map +0 -0
  1248. /package/{dist/icc-api → icc-api}/model/PaginatedListString.d.ts +0 -0
  1249. /package/{dist/icc-api → icc-api}/model/PaginatedListString.js +0 -0
  1250. /package/{dist/icc-api → icc-api}/model/PaginatedListString.js.map +0 -0
  1251. /package/{dist/icc-api → icc-api}/model/PaginatedListTarification.d.ts +0 -0
  1252. /package/{dist/icc-api → icc-api}/model/PaginatedListTarification.js +0 -0
  1253. /package/{dist/icc-api → icc-api}/model/PaginatedListTarification.js.map +0 -0
  1254. /package/{dist/icc-api → icc-api}/model/PaginatedListUser.d.ts +0 -0
  1255. /package/{dist/icc-api → icc-api}/model/PaginatedListUser.js +0 -0
  1256. /package/{dist/icc-api → icc-api}/model/PaginatedListUser.js.map +0 -0
  1257. /package/{dist/icc-api → icc-api}/model/PaginatedListVmp.d.ts +0 -0
  1258. /package/{dist/icc-api → icc-api}/model/PaginatedListVmp.js +0 -0
  1259. /package/{dist/icc-api → icc-api}/model/PaginatedListVmp.js.map +0 -0
  1260. /package/{dist/icc-api → icc-api}/model/PaginatedListVmpGroup.d.ts +0 -0
  1261. /package/{dist/icc-api → icc-api}/model/PaginatedListVmpGroup.js +0 -0
  1262. /package/{dist/icc-api → icc-api}/model/PaginatedListVmpGroup.js.map +0 -0
  1263. /package/{dist/icc-api → icc-api}/model/Paragraph.d.ts +0 -0
  1264. /package/{dist/icc-api → icc-api}/model/Paragraph.js +0 -0
  1265. /package/{dist/icc-api → icc-api}/model/Paragraph.js.map +0 -0
  1266. /package/{dist/icc-api → icc-api}/model/ParagraphAgreement.d.ts +0 -0
  1267. /package/{dist/icc-api → icc-api}/model/ParagraphAgreement.js +0 -0
  1268. /package/{dist/icc-api → icc-api}/model/ParagraphAgreement.js.map +0 -0
  1269. /package/{dist/icc-api → icc-api}/model/Part.d.ts +0 -0
  1270. /package/{dist/icc-api → icc-api}/model/Part.js +0 -0
  1271. /package/{dist/icc-api → icc-api}/model/Part.js.map +0 -0
  1272. /package/{dist/icc-api → icc-api}/model/Partnership.d.ts +0 -0
  1273. /package/{dist/icc-api → icc-api}/model/Partnership.js +0 -0
  1274. /package/{dist/icc-api → icc-api}/model/Partnership.js.map +0 -0
  1275. /package/{dist/icc-api → icc-api}/model/Patient.d.ts +0 -0
  1276. /package/{dist/icc-api → icc-api}/model/Patient.js +0 -0
  1277. /package/{dist/icc-api → icc-api}/model/Patient.js.map +0 -0
  1278. /package/{dist/icc-api → icc-api}/model/PatientByHcPartyGenderEducationProfession.d.ts +0 -0
  1279. /package/{dist/icc-api → icc-api}/model/PatientByHcPartyGenderEducationProfession.js +0 -0
  1280. /package/{dist/icc-api → icc-api}/model/PatientByHcPartyGenderEducationProfession.js.map +0 -0
  1281. /package/{dist/icc-api → icc-api}/model/PatientHealthCareParty.d.ts +0 -0
  1282. /package/{dist/icc-api → icc-api}/model/PatientHealthCareParty.js +0 -0
  1283. /package/{dist/icc-api → icc-api}/model/PatientHealthCareParty.js.map +0 -0
  1284. /package/{dist/icc-api → icc-api}/model/PatientRegistrationSuccess.d.ts +0 -0
  1285. /package/{dist/icc-api → icc-api}/model/PatientRegistrationSuccess.js +0 -0
  1286. /package/{dist/icc-api → icc-api}/model/PatientRegistrationSuccess.js.map +0 -0
  1287. /package/{dist/icc-api → icc-api}/model/Payment.d.ts +0 -0
  1288. /package/{dist/icc-api → icc-api}/model/Payment.js +0 -0
  1289. /package/{dist/icc-api → icc-api}/model/Payment.js.map +0 -0
  1290. /package/{dist/icc-api → icc-api}/model/Periodicity.d.ts +0 -0
  1291. /package/{dist/icc-api → icc-api}/model/Periodicity.js +0 -0
  1292. /package/{dist/icc-api → icc-api}/model/Periodicity.js.map +0 -0
  1293. /package/{dist/icc-api → icc-api}/model/Permission.d.ts +0 -0
  1294. /package/{dist/icc-api → icc-api}/model/Permission.js +0 -0
  1295. /package/{dist/icc-api → icc-api}/model/Permission.js.map +0 -0
  1296. /package/{dist/icc-api → icc-api}/model/PermissionCriterion.d.ts +0 -0
  1297. /package/{dist/icc-api → icc-api}/model/PermissionCriterion.js +0 -0
  1298. /package/{dist/icc-api → icc-api}/model/PermissionCriterion.js.map +0 -0
  1299. /package/{dist/icc-api → icc-api}/model/PermissionItem.d.ts +0 -0
  1300. /package/{dist/icc-api → icc-api}/model/PermissionItem.js +0 -0
  1301. /package/{dist/icc-api → icc-api}/model/PermissionItem.js.map +0 -0
  1302. /package/{dist/icc-api → icc-api}/model/PersonName.d.ts +0 -0
  1303. /package/{dist/icc-api → icc-api}/model/PersonName.js +0 -0
  1304. /package/{dist/icc-api → icc-api}/model/PersonName.js.map +0 -0
  1305. /package/{dist/icc-api → icc-api}/model/PharmaceuticalForm.d.ts +0 -0
  1306. /package/{dist/icc-api → icc-api}/model/PharmaceuticalForm.js +0 -0
  1307. /package/{dist/icc-api → icc-api}/model/PharmaceuticalForm.js.map +0 -0
  1308. /package/{dist/icc-api → icc-api}/model/PharmaceuticalFormStub.d.ts +0 -0
  1309. /package/{dist/icc-api → icc-api}/model/PharmaceuticalFormStub.js +0 -0
  1310. /package/{dist/icc-api → icc-api}/model/PharmaceuticalFormStub.js.map +0 -0
  1311. /package/{dist/icc-api → icc-api}/model/Place.d.ts +0 -0
  1312. /package/{dist/icc-api → icc-api}/model/Place.js +0 -0
  1313. /package/{dist/icc-api → icc-api}/model/Place.js.map +0 -0
  1314. /package/{dist/icc-api → icc-api}/model/PlanOfAction.d.ts +0 -0
  1315. /package/{dist/icc-api → icc-api}/model/PlanOfAction.js +0 -0
  1316. /package/{dist/icc-api → icc-api}/model/PlanOfAction.js.map +0 -0
  1317. /package/{dist/icc-api → icc-api}/model/Predicate.d.ts +0 -0
  1318. /package/{dist/icc-api → icc-api}/model/Predicate.js +0 -0
  1319. /package/{dist/icc-api → icc-api}/model/Predicate.js.map +0 -0
  1320. /package/{dist/icc-api → icc-api}/model/Pricing.d.ts +0 -0
  1321. /package/{dist/icc-api → icc-api}/model/Pricing.js +0 -0
  1322. /package/{dist/icc-api → icc-api}/model/Pricing.js.map +0 -0
  1323. /package/{dist/icc-api → icc-api}/model/PropertyStub.d.ts +0 -0
  1324. /package/{dist/icc-api → icc-api}/model/PropertyStub.js +0 -0
  1325. /package/{dist/icc-api → icc-api}/model/PropertyStub.js.map +0 -0
  1326. /package/{dist/icc-api → icc-api}/model/PropertyTypeStub.d.ts +0 -0
  1327. /package/{dist/icc-api → icc-api}/model/PropertyTypeStub.js +0 -0
  1328. /package/{dist/icc-api → icc-api}/model/PropertyTypeStub.js.map +0 -0
  1329. /package/{dist/icc-api → icc-api}/model/PublicKey.d.ts +0 -0
  1330. /package/{dist/icc-api → icc-api}/model/PublicKey.js +0 -0
  1331. /package/{dist/icc-api → icc-api}/model/PublicKey.js.map +0 -0
  1332. /package/{dist/icc-api → icc-api}/model/Quantity.d.ts +0 -0
  1333. /package/{dist/icc-api → icc-api}/model/Quantity.js +0 -0
  1334. /package/{dist/icc-api → icc-api}/model/Quantity.js.map +0 -0
  1335. /package/{dist/icc-api → icc-api}/model/Receipt.d.ts +0 -0
  1336. /package/{dist/icc-api → icc-api}/model/Receipt.js +0 -0
  1337. /package/{dist/icc-api → icc-api}/model/Receipt.js.map +0 -0
  1338. /package/{dist/icc-api → icc-api}/model/ReferralPeriod.d.ts +0 -0
  1339. /package/{dist/icc-api → icc-api}/model/ReferralPeriod.js +0 -0
  1340. /package/{dist/icc-api → icc-api}/model/ReferralPeriod.js.map +0 -0
  1341. /package/{dist/icc-api → icc-api}/model/RefreshTokenExpiredError.d.ts +0 -0
  1342. /package/{dist/icc-api → icc-api}/model/RefreshTokenExpiredError.js +0 -0
  1343. /package/{dist/icc-api → icc-api}/model/RefreshTokenExpiredError.js.map +0 -0
  1344. /package/{dist/icc-api → icc-api}/model/RegimenItem.d.ts +0 -0
  1345. /package/{dist/icc-api → icc-api}/model/RegimenItem.js +0 -0
  1346. /package/{dist/icc-api → icc-api}/model/RegimenItem.js.map +0 -0
  1347. /package/{dist/icc-api → icc-api}/model/RegistrationInformation.d.ts +0 -0
  1348. /package/{dist/icc-api → icc-api}/model/RegistrationInformation.js +0 -0
  1349. /package/{dist/icc-api → icc-api}/model/RegistrationInformation.js.map +0 -0
  1350. /package/{dist/icc-api → icc-api}/model/RegistrationSuccess.d.ts +0 -0
  1351. /package/{dist/icc-api → icc-api}/model/RegistrationSuccess.js +0 -0
  1352. /package/{dist/icc-api → icc-api}/model/RegistrationSuccess.js.map +0 -0
  1353. /package/{dist/icc-api → icc-api}/model/Reimbursement.d.ts +0 -0
  1354. /package/{dist/icc-api → icc-api}/model/Reimbursement.js +0 -0
  1355. /package/{dist/icc-api → icc-api}/model/Reimbursement.js.map +0 -0
  1356. /package/{dist/icc-api → icc-api}/model/ReimbursementCriterion.d.ts +0 -0
  1357. /package/{dist/icc-api → icc-api}/model/ReimbursementCriterion.js +0 -0
  1358. /package/{dist/icc-api → icc-api}/model/ReimbursementCriterion.js.map +0 -0
  1359. /package/{dist/icc-api → icc-api}/model/Remote.d.ts +0 -0
  1360. /package/{dist/icc-api → icc-api}/model/Remote.js +0 -0
  1361. /package/{dist/icc-api → icc-api}/model/Remote.js.map +0 -0
  1362. /package/{dist/icc-api → icc-api}/model/RemoteAuthentication.d.ts +0 -0
  1363. /package/{dist/icc-api → icc-api}/model/RemoteAuthentication.js +0 -0
  1364. /package/{dist/icc-api → icc-api}/model/RemoteAuthentication.js.map +0 -0
  1365. /package/{dist/icc-api → icc-api}/model/Renewal.d.ts +0 -0
  1366. /package/{dist/icc-api → icc-api}/model/Renewal.js +0 -0
  1367. /package/{dist/icc-api → icc-api}/model/Renewal.js.map +0 -0
  1368. /package/{dist/icc-api → icc-api}/model/ReplicateCommand.d.ts +0 -0
  1369. /package/{dist/icc-api → icc-api}/model/ReplicateCommand.js +0 -0
  1370. /package/{dist/icc-api → icc-api}/model/ReplicateCommand.js.map +0 -0
  1371. /package/{dist/icc-api → icc-api}/model/Replication.d.ts +0 -0
  1372. /package/{dist/icc-api → icc-api}/model/Replication.js +0 -0
  1373. /package/{dist/icc-api → icc-api}/model/Replication.js.map +0 -0
  1374. /package/{dist/icc-api → icc-api}/model/ReplicationInfo.d.ts +0 -0
  1375. /package/{dist/icc-api → icc-api}/model/ReplicationInfo.js +0 -0
  1376. /package/{dist/icc-api → icc-api}/model/ReplicationInfo.js.map +0 -0
  1377. /package/{dist/icc-api → icc-api}/model/ReplicationStats.d.ts +0 -0
  1378. /package/{dist/icc-api → icc-api}/model/ReplicationStats.js +0 -0
  1379. /package/{dist/icc-api → icc-api}/model/ReplicationStats.js.map +0 -0
  1380. /package/{dist/icc-api → icc-api}/model/ReplicatorDocument.d.ts +0 -0
  1381. /package/{dist/icc-api → icc-api}/model/ReplicatorDocument.js +0 -0
  1382. /package/{dist/icc-api → icc-api}/model/ReplicatorDocument.js.map +0 -0
  1383. /package/{dist/icc-api → icc-api}/model/ReplicatorResponse.d.ts +0 -0
  1384. /package/{dist/icc-api → icc-api}/model/ReplicatorResponse.js +0 -0
  1385. /package/{dist/icc-api → icc-api}/model/ReplicatorResponse.js.map +0 -0
  1386. /package/{dist/icc-api → icc-api}/model/ResultInfo.d.ts +0 -0
  1387. /package/{dist/icc-api → icc-api}/model/ResultInfo.js +0 -0
  1388. /package/{dist/icc-api → icc-api}/model/ResultInfo.js.map +0 -0
  1389. /package/{dist/icc-api → icc-api}/model/RevisionInfo.d.ts +0 -0
  1390. /package/{dist/icc-api → icc-api}/model/RevisionInfo.js +0 -0
  1391. /package/{dist/icc-api → icc-api}/model/RevisionInfo.js.map +0 -0
  1392. /package/{dist/icc-api → icc-api}/model/Right.d.ts +0 -0
  1393. /package/{dist/icc-api → icc-api}/model/Right.js +0 -0
  1394. /package/{dist/icc-api → icc-api}/model/Right.js.map +0 -0
  1395. /package/{dist/icc-api → icc-api}/model/RouteOfAdministration.d.ts +0 -0
  1396. /package/{dist/icc-api → icc-api}/model/RouteOfAdministration.js +0 -0
  1397. /package/{dist/icc-api → icc-api}/model/RouteOfAdministration.js.map +0 -0
  1398. /package/{dist/icc-api → icc-api}/model/SamText.d.ts +0 -0
  1399. /package/{dist/icc-api → icc-api}/model/SamText.js +0 -0
  1400. /package/{dist/icc-api → icc-api}/model/SamText.js.map +0 -0
  1401. /package/{dist/icc-api → icc-api}/model/SamVersion.d.ts +0 -0
  1402. /package/{dist/icc-api → icc-api}/model/SamVersion.js +0 -0
  1403. /package/{dist/icc-api → icc-api}/model/SamVersion.js.map +0 -0
  1404. /package/{dist/icc-api → icc-api}/model/SchoolingInfo.d.ts +0 -0
  1405. /package/{dist/icc-api → icc-api}/model/SchoolingInfo.js +0 -0
  1406. /package/{dist/icc-api → icc-api}/model/SchoolingInfo.js.map +0 -0
  1407. /package/{dist/icc-api → icc-api}/model/Section.d.ts +0 -0
  1408. /package/{dist/icc-api → icc-api}/model/Section.js +0 -0
  1409. /package/{dist/icc-api → icc-api}/model/Section.js.map +0 -0
  1410. /package/{dist/icc-api → icc-api}/model/Service.d.ts +0 -0
  1411. /package/{dist/icc-api → icc-api}/model/Service.js +0 -0
  1412. /package/{dist/icc-api → icc-api}/model/Service.js.map +0 -0
  1413. /package/{dist/icc-api → icc-api}/model/ServiceLink.d.ts +0 -0
  1414. /package/{dist/icc-api → icc-api}/model/ServiceLink.js +0 -0
  1415. /package/{dist/icc-api → icc-api}/model/ServiceLink.js.map +0 -0
  1416. /package/{dist/icc-api → icc-api}/model/SoftwareMedicalFileExport.d.ts +0 -0
  1417. /package/{dist/icc-api → icc-api}/model/SoftwareMedicalFileExport.js +0 -0
  1418. /package/{dist/icc-api → icc-api}/model/SoftwareMedicalFileExport.js.map +0 -0
  1419. /package/{dist/icc-api → icc-api}/model/StandardSubstance.d.ts +0 -0
  1420. /package/{dist/icc-api → icc-api}/model/StandardSubstance.js +0 -0
  1421. /package/{dist/icc-api → icc-api}/model/StandardSubstance.js.map +0 -0
  1422. /package/{dist/icc-api → icc-api}/model/StrengthRange.d.ts +0 -0
  1423. /package/{dist/icc-api → icc-api}/model/StrengthRange.js +0 -0
  1424. /package/{dist/icc-api → icc-api}/model/StrengthRange.js.map +0 -0
  1425. /package/{dist/icc-api → icc-api}/model/StructureElement.d.ts +0 -0
  1426. /package/{dist/icc-api → icc-api}/model/StructureElement.js +0 -0
  1427. /package/{dist/icc-api → icc-api}/model/StructureElement.js.map +0 -0
  1428. /package/{dist/icc-api → icc-api}/model/SubContact.d.ts +0 -0
  1429. /package/{dist/icc-api → icc-api}/model/SubContact.js +0 -0
  1430. /package/{dist/icc-api → icc-api}/model/SubContact.js.map +0 -0
  1431. /package/{dist/icc-api → icc-api}/model/Substance.d.ts +0 -0
  1432. /package/{dist/icc-api → icc-api}/model/Substance.js +0 -0
  1433. /package/{dist/icc-api → icc-api}/model/Substance.js.map +0 -0
  1434. /package/{dist/icc-api → icc-api}/model/SubstanceStub.d.ts +0 -0
  1435. /package/{dist/icc-api → icc-api}/model/SubstanceStub.js +0 -0
  1436. /package/{dist/icc-api → icc-api}/model/SubstanceStub.js.map +0 -0
  1437. /package/{dist/icc-api → icc-api}/model/Substanceproduct.d.ts +0 -0
  1438. /package/{dist/icc-api → icc-api}/model/Substanceproduct.js +0 -0
  1439. /package/{dist/icc-api → icc-api}/model/Substanceproduct.js.map +0 -0
  1440. /package/{dist/icc-api → icc-api}/model/Suggest.d.ts +0 -0
  1441. /package/{dist/icc-api → icc-api}/model/Suggest.js +0 -0
  1442. /package/{dist/icc-api → icc-api}/model/Suggest.js.map +0 -0
  1443. /package/{dist/icc-api → icc-api}/model/SumehrContent.d.ts +0 -0
  1444. /package/{dist/icc-api → icc-api}/model/SumehrContent.js +0 -0
  1445. /package/{dist/icc-api → icc-api}/model/SumehrContent.js.map +0 -0
  1446. /package/{dist/icc-api → icc-api}/model/SumehrExportInfo.d.ts +0 -0
  1447. /package/{dist/icc-api → icc-api}/model/SumehrExportInfo.js +0 -0
  1448. /package/{dist/icc-api → icc-api}/model/SumehrExportInfo.js.map +0 -0
  1449. /package/{dist/icc-api → icc-api}/model/SumehrValidity.d.ts +0 -0
  1450. /package/{dist/icc-api → icc-api}/model/SumehrValidity.js +0 -0
  1451. /package/{dist/icc-api → icc-api}/model/SumehrValidity.js.map +0 -0
  1452. /package/{dist/icc-api → icc-api}/model/SupplyProblem.d.ts +0 -0
  1453. /package/{dist/icc-api → icc-api}/model/SupplyProblem.js +0 -0
  1454. /package/{dist/icc-api → icc-api}/model/SupplyProblem.js.map +0 -0
  1455. /package/{dist/icc-api → icc-api}/model/Suspension.d.ts +0 -0
  1456. /package/{dist/icc-api → icc-api}/model/Suspension.js +0 -0
  1457. /package/{dist/icc-api → icc-api}/model/Suspension.js.map +0 -0
  1458. /package/{dist/icc-api → icc-api}/model/Tag.d.ts +0 -0
  1459. /package/{dist/icc-api → icc-api}/model/Tag.js +0 -0
  1460. /package/{dist/icc-api → icc-api}/model/Tag.js.map +0 -0
  1461. /package/{dist/icc-api → icc-api}/model/Tarification.d.ts +0 -0
  1462. /package/{dist/icc-api → icc-api}/model/Tarification.js +0 -0
  1463. /package/{dist/icc-api → icc-api}/model/Tarification.js.map +0 -0
  1464. /package/{dist/icc-api → icc-api}/model/Telecom.d.ts +0 -0
  1465. /package/{dist/icc-api → icc-api}/model/Telecom.js +0 -0
  1466. /package/{dist/icc-api → icc-api}/model/Telecom.js.map +0 -0
  1467. /package/{dist/icc-api → icc-api}/model/TimeSeries.d.ts +0 -0
  1468. /package/{dist/icc-api → icc-api}/model/TimeSeries.js +0 -0
  1469. /package/{dist/icc-api → icc-api}/model/TimeSeries.js.map +0 -0
  1470. /package/{dist/icc-api → icc-api}/model/TimeTable.d.ts +0 -0
  1471. /package/{dist/icc-api → icc-api}/model/TimeTable.js +0 -0
  1472. /package/{dist/icc-api → icc-api}/model/TimeTable.js.map +0 -0
  1473. /package/{dist/icc-api → icc-api}/model/TimeTableHour.d.ts +0 -0
  1474. /package/{dist/icc-api → icc-api}/model/TimeTableHour.js +0 -0
  1475. /package/{dist/icc-api → icc-api}/model/TimeTableHour.js.map +0 -0
  1476. /package/{dist/icc-api → icc-api}/model/TimeTableItem.d.ts +0 -0
  1477. /package/{dist/icc-api → icc-api}/model/TimeTableItem.js +0 -0
  1478. /package/{dist/icc-api → icc-api}/model/TimeTableItem.js.map +0 -0
  1479. /package/{dist/icc-api → icc-api}/model/TokenWithGroup.d.ts +0 -0
  1480. /package/{dist/icc-api → icc-api}/model/TokenWithGroup.js +0 -0
  1481. /package/{dist/icc-api → icc-api}/model/TokenWithGroup.js.map +0 -0
  1482. /package/{dist/icc-api → icc-api}/model/TypedValueObject.d.ts +0 -0
  1483. /package/{dist/icc-api → icc-api}/model/TypedValueObject.js +0 -0
  1484. /package/{dist/icc-api → icc-api}/model/TypedValueObject.js.map +0 -0
  1485. /package/{dist/icc-api → icc-api}/model/Unit.d.ts +0 -0
  1486. /package/{dist/icc-api → icc-api}/model/Unit.js +0 -0
  1487. /package/{dist/icc-api → icc-api}/model/Unit.js.map +0 -0
  1488. /package/{dist/icc-api → icc-api}/model/User.d.ts +0 -0
  1489. /package/{dist/icc-api → icc-api}/model/User.js +0 -0
  1490. /package/{dist/icc-api → icc-api}/model/User.js.map +0 -0
  1491. /package/{dist/icc-api → icc-api}/model/UserAndHealthcareParty.d.ts +0 -0
  1492. /package/{dist/icc-api → icc-api}/model/UserAndHealthcareParty.js +0 -0
  1493. /package/{dist/icc-api → icc-api}/model/UserAndHealthcareParty.js.map +0 -0
  1494. /package/{dist/icc-api → icc-api}/model/UserGroup.d.ts +0 -0
  1495. /package/{dist/icc-api → icc-api}/model/UserGroup.js +0 -0
  1496. /package/{dist/icc-api → icc-api}/model/UserGroup.js.map +0 -0
  1497. /package/{dist/icc-api → icc-api}/model/Valorisation.d.ts +0 -0
  1498. /package/{dist/icc-api → icc-api}/model/Valorisation.js +0 -0
  1499. /package/{dist/icc-api → icc-api}/model/Valorisation.js.map +0 -0
  1500. /package/{dist/icc-api → icc-api}/model/Verse.d.ts +0 -0
  1501. /package/{dist/icc-api → icc-api}/model/Verse.js +0 -0
  1502. /package/{dist/icc-api → icc-api}/model/Verse.js.map +0 -0
  1503. /package/{dist/icc-api → icc-api}/model/VirtualForm.d.ts +0 -0
  1504. /package/{dist/icc-api → icc-api}/model/VirtualForm.js +0 -0
  1505. /package/{dist/icc-api → icc-api}/model/VirtualForm.js.map +0 -0
  1506. /package/{dist/icc-api → icc-api}/model/VirtualIngredient.d.ts +0 -0
  1507. /package/{dist/icc-api → icc-api}/model/VirtualIngredient.js +0 -0
  1508. /package/{dist/icc-api → icc-api}/model/VirtualIngredient.js.map +0 -0
  1509. /package/{dist/icc-api → icc-api}/model/Vmp.d.ts +0 -0
  1510. /package/{dist/icc-api → icc-api}/model/Vmp.js +0 -0
  1511. /package/{dist/icc-api → icc-api}/model/Vmp.js.map +0 -0
  1512. /package/{dist/icc-api → icc-api}/model/VmpComponent.d.ts +0 -0
  1513. /package/{dist/icc-api → icc-api}/model/VmpComponent.js +0 -0
  1514. /package/{dist/icc-api → icc-api}/model/VmpComponent.js.map +0 -0
  1515. /package/{dist/icc-api → icc-api}/model/VmpGroup.d.ts +0 -0
  1516. /package/{dist/icc-api → icc-api}/model/VmpGroup.js +0 -0
  1517. /package/{dist/icc-api → icc-api}/model/VmpGroup.js.map +0 -0
  1518. /package/{dist/icc-api → icc-api}/model/VmpGroupStub.d.ts +0 -0
  1519. /package/{dist/icc-api → icc-api}/model/VmpGroupStub.js +0 -0
  1520. /package/{dist/icc-api → icc-api}/model/VmpGroupStub.js.map +0 -0
  1521. /package/{dist/icc-api → icc-api}/model/VmpStub.d.ts +0 -0
  1522. /package/{dist/icc-api → icc-api}/model/VmpStub.js +0 -0
  1523. /package/{dist/icc-api → icc-api}/model/VmpStub.js.map +0 -0
  1524. /package/{dist/icc-api → icc-api}/model/Vtm.d.ts +0 -0
  1525. /package/{dist/icc-api → icc-api}/model/Vtm.js +0 -0
  1526. /package/{dist/icc-api → icc-api}/model/Vtm.js.map +0 -0
  1527. /package/{dist/icc-api → icc-api}/model/Wada.d.ts +0 -0
  1528. /package/{dist/icc-api → icc-api}/model/Wada.js +0 -0
  1529. /package/{dist/icc-api → icc-api}/model/Wada.js.map +0 -0
  1530. /package/{dist/icc-api → icc-api}/model/WebSession.d.ts +0 -0
  1531. /package/{dist/icc-api → icc-api}/model/WebSession.js +0 -0
  1532. /package/{dist/icc-api → icc-api}/model/WebSession.js.map +0 -0
  1533. /package/{dist/icc-api → icc-api}/model/WebSessionMaxIdleTime.d.ts +0 -0
  1534. /package/{dist/icc-api → icc-api}/model/WebSessionMaxIdleTime.js +0 -0
  1535. /package/{dist/icc-api → icc-api}/model/WebSessionMaxIdleTime.js.map +0 -0
  1536. /package/{dist/icc-api → icc-api}/model/WebSessionMaxIdleTimeUnits.d.ts +0 -0
  1537. /package/{dist/icc-api → icc-api}/model/WebSessionMaxIdleTimeUnits.js +0 -0
  1538. /package/{dist/icc-api → icc-api}/model/WebSessionMaxIdleTimeUnits.js.map +0 -0
  1539. /package/{dist/icc-api → icc-api}/model/Weekday.d.ts +0 -0
  1540. /package/{dist/icc-api → icc-api}/model/Weekday.js +0 -0
  1541. /package/{dist/icc-api → icc-api}/model/Weekday.js.map +0 -0
  1542. /package/{dist/icc-api → icc-api}/model/models.js +0 -0
  1543. /package/{dist/icc-api → icc-api}/model/models.js.map +0 -0
  1544. /package/{dist/icc-x-api → icc-x-api}/auth/AuthService.d.ts +0 -0
  1545. /package/{dist/icc-x-api → icc-x-api}/auth/AuthService.js +0 -0
  1546. /package/{dist/icc-x-api → icc-x-api}/auth/AuthService.js.map +0 -0
  1547. /package/{dist/icc-x-api → icc-x-api}/auth/AuthenticationProvider.d.ts +0 -0
  1548. /package/{dist/icc-x-api → icc-x-api}/auth/BasicAuthService.d.ts +0 -0
  1549. /package/{dist/icc-x-api → icc-x-api}/auth/BasicAuthService.js +0 -0
  1550. /package/{dist/icc-x-api → icc-x-api}/auth/BasicAuthService.js.map +0 -0
  1551. /package/{dist/icc-x-api → icc-x-api}/auth/EnsembleAuthService.d.ts +0 -0
  1552. /package/{dist/icc-x-api → icc-x-api}/auth/EnsembleAuthService.js +0 -0
  1553. /package/{dist/icc-x-api → icc-x-api}/auth/EnsembleAuthService.js.map +0 -0
  1554. /package/{dist/icc-x-api → icc-x-api}/auth/JwtAuthService.d.ts +0 -0
  1555. /package/{dist/icc-x-api → icc-x-api}/auth/JwtAuthService.js +0 -0
  1556. /package/{dist/icc-x-api → icc-x-api}/auth/JwtAuthService.js.map +0 -0
  1557. /package/{dist/icc-x-api → icc-x-api}/auth/JwtBridgedAuthService.d.ts +0 -0
  1558. /package/{dist/icc-x-api → icc-x-api}/auth/JwtBridgedAuthService.js +0 -0
  1559. /package/{dist/icc-x-api → icc-x-api}/auth/JwtBridgedAuthService.js.map +0 -0
  1560. /package/{dist/icc-x-api → icc-x-api}/auth/NoAuthService.d.ts +0 -0
  1561. /package/{dist/icc-x-api → icc-x-api}/auth/NoAuthService.js +0 -0
  1562. /package/{dist/icc-x-api → icc-x-api}/auth/NoAuthService.js.map +0 -0
  1563. /package/{dist/icc-x-api → icc-x-api}/crypto/RSA.d.ts +0 -0
  1564. /package/{dist/icc-x-api → icc-x-api}/crypto/RSA.js +0 -0
  1565. /package/{dist/icc-x-api → icc-x-api}/crypto/RSA.js.map +0 -0
  1566. /package/{dist/icc-x-api → icc-x-api}/crypto/shamir.d.ts +0 -0
  1567. /package/{dist/icc-x-api → icc-x-api}/crypto/shamir.js +0 -0
  1568. /package/{dist/icc-x-api → icc-x-api}/crypto/shamir.js.map +0 -0
  1569. /package/{dist/icc-x-api → icc-x-api}/crypto/utils.d.ts +0 -0
  1570. /package/{dist/icc-x-api → icc-x-api}/crypto/utils.js +0 -0
  1571. /package/{dist/icc-x-api → icc-x-api}/crypto/utils.js.map +0 -0
  1572. /package/{dist/icc-x-api → icc-x-api}/filters/AllCodesFilter.d.ts +0 -0
  1573. /package/{dist/icc-x-api → icc-x-api}/filters/AllCodesFilter.js +0 -0
  1574. /package/{dist/icc-x-api → icc-x-api}/filters/AllCodesFilter.js.map +0 -0
  1575. /package/{dist/icc-x-api → icc-x-api}/filters/AllDevicesFilter.d.ts +0 -0
  1576. /package/{dist/icc-x-api → icc-x-api}/filters/AllDevicesFilter.js +0 -0
  1577. /package/{dist/icc-x-api → icc-x-api}/filters/AllDevicesFilter.js.map +0 -0
  1578. /package/{dist/icc-x-api → icc-x-api}/filters/AllHealthcarePartiesFilter.d.ts +0 -0
  1579. /package/{dist/icc-x-api → icc-x-api}/filters/AllHealthcarePartiesFilter.js +0 -0
  1580. /package/{dist/icc-x-api → icc-x-api}/filters/AllHealthcarePartiesFilter.js.map +0 -0
  1581. /package/{dist/icc-x-api → icc-x-api}/filters/AllUsersFilter.d.ts +0 -0
  1582. /package/{dist/icc-x-api → icc-x-api}/filters/AllUsersFilter.js +0 -0
  1583. /package/{dist/icc-x-api → icc-x-api}/filters/AllUsersFilter.js.map +0 -0
  1584. /package/{dist/icc-x-api → icc-x-api}/filters/CodeByIdsFilter.d.ts +0 -0
  1585. /package/{dist/icc-x-api → icc-x-api}/filters/CodeByIdsFilter.js +0 -0
  1586. /package/{dist/icc-x-api → icc-x-api}/filters/CodeByIdsFilter.js.map +0 -0
  1587. /package/{dist/icc-x-api → icc-x-api}/filters/CodeByRegionTypeLabelLanguageFilter.d.ts +0 -0
  1588. /package/{dist/icc-x-api → icc-x-api}/filters/CodeByRegionTypeLabelLanguageFilter.js +0 -0
  1589. /package/{dist/icc-x-api → icc-x-api}/filters/CodeByRegionTypeLabelLanguageFilter.js.map +0 -0
  1590. /package/{dist/icc-x-api → icc-x-api}/filters/CodeIdsByTypeCodeVersionIntervalFilter.d.ts +0 -0
  1591. /package/{dist/icc-x-api → icc-x-api}/filters/CodeIdsByTypeCodeVersionIntervalFilter.js +0 -0
  1592. /package/{dist/icc-x-api → icc-x-api}/filters/CodeIdsByTypeCodeVersionIntervalFilter.js.map +0 -0
  1593. /package/{dist/icc-x-api → icc-x-api}/filters/ComplementFilter.d.ts +0 -0
  1594. /package/{dist/icc-x-api → icc-x-api}/filters/ComplementFilter.js +0 -0
  1595. /package/{dist/icc-x-api → icc-x-api}/filters/ComplementFilter.js.map +0 -0
  1596. /package/{dist/icc-x-api → icc-x-api}/filters/ConstantFilter.d.ts +0 -0
  1597. /package/{dist/icc-x-api → icc-x-api}/filters/ConstantFilter.js +0 -0
  1598. /package/{dist/icc-x-api → icc-x-api}/filters/ConstantFilter.js.map +0 -0
  1599. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByHcPartyFilter.d.ts +0 -0
  1600. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByHcPartyFilter.js +0 -0
  1601. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByHcPartyFilter.js.map +0 -0
  1602. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByHcPartyPatientTagCodeDateFilter.d.ts +0 -0
  1603. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByHcPartyPatientTagCodeDateFilter.js +0 -0
  1604. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByHcPartyPatientTagCodeDateFilter.js.map +0 -0
  1605. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByHcPartyTagCodeDateFilter.d.ts +0 -0
  1606. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByHcPartyTagCodeDateFilter.js +0 -0
  1607. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByHcPartyTagCodeDateFilter.js.map +0 -0
  1608. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByServiceIdsFilter.d.ts +0 -0
  1609. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByServiceIdsFilter.js +0 -0
  1610. /package/{dist/icc-x-api → icc-x-api}/filters/ContactByServiceIdsFilter.js.map +0 -0
  1611. /package/{dist/icc-x-api → icc-x-api}/filters/DeviceByHcPartyFilter.d.ts +0 -0
  1612. /package/{dist/icc-x-api → icc-x-api}/filters/DeviceByHcPartyFilter.js +0 -0
  1613. /package/{dist/icc-x-api → icc-x-api}/filters/DeviceByHcPartyFilter.js.map +0 -0
  1614. /package/{dist/icc-x-api → icc-x-api}/filters/DeviceByIdsFilter.d.ts +0 -0
  1615. /package/{dist/icc-x-api → icc-x-api}/filters/DeviceByIdsFilter.js +0 -0
  1616. /package/{dist/icc-x-api → icc-x-api}/filters/DeviceByIdsFilter.js.map +0 -0
  1617. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartyFilter.d.ts +0 -0
  1618. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartyFilter.js +0 -0
  1619. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartyFilter.js.map +0 -0
  1620. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartyIdentifiersFilter.d.ts +0 -0
  1621. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartyIdentifiersFilter.js +0 -0
  1622. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartyIdentifiersFilter.js.map +0 -0
  1623. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartySecretForeignKeysFilter.d.ts +0 -0
  1624. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartySecretForeignKeysFilter.js +0 -0
  1625. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartySecretForeignKeysFilter.js.map +0 -0
  1626. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartyTagCodeFilter.d.ts +0 -0
  1627. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartyTagCodeFilter.js +0 -0
  1628. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByHcPartyTagCodeFilter.js.map +0 -0
  1629. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByIdsFilter.d.ts +0 -0
  1630. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByIdsFilter.js +0 -0
  1631. /package/{dist/icc-x-api → icc-x-api}/filters/HealthElementByIdsFilter.js.map +0 -0
  1632. /package/{dist/icc-x-api → icc-x-api}/filters/HealthcarePartyByIdsFilter.d.ts +0 -0
  1633. /package/{dist/icc-x-api → icc-x-api}/filters/HealthcarePartyByIdsFilter.js +0 -0
  1634. /package/{dist/icc-x-api → icc-x-api}/filters/HealthcarePartyByIdsFilter.js.map +0 -0
  1635. /package/{dist/icc-x-api → icc-x-api}/filters/HealthcarePartyByTagCodeFilter.d.ts +0 -0
  1636. /package/{dist/icc-x-api → icc-x-api}/filters/HealthcarePartyByTagCodeFilter.js +0 -0
  1637. /package/{dist/icc-x-api → icc-x-api}/filters/HealthcarePartyByTagCodeFilter.js.map +0 -0
  1638. /package/{dist/icc-x-api → icc-x-api}/filters/IntersectionFilter.d.ts +0 -0
  1639. /package/{dist/icc-x-api → icc-x-api}/filters/IntersectionFilter.js +0 -0
  1640. /package/{dist/icc-x-api → icc-x-api}/filters/IntersectionFilter.js.map +0 -0
  1641. /package/{dist/icc-x-api → icc-x-api}/filters/InvoiceByHcPartyCodeDateFilter.d.ts +0 -0
  1642. /package/{dist/icc-x-api → icc-x-api}/filters/InvoiceByHcPartyCodeDateFilter.js +0 -0
  1643. /package/{dist/icc-x-api → icc-x-api}/filters/InvoiceByHcPartyCodeDateFilter.js.map +0 -0
  1644. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskAfterDateFilter.d.ts +0 -0
  1645. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskAfterDateFilter.js +0 -0
  1646. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskAfterDateFilter.js.map +0 -0
  1647. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskByHcPartyAndIdentifiersFilter.d.ts +0 -0
  1648. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskByHcPartyAndIdentifiersFilter.js +0 -0
  1649. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskByHcPartyAndIdentifiersFilter.js.map +0 -0
  1650. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskByHcPartyAndTypeFilter.d.ts +0 -0
  1651. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskByHcPartyAndTypeFilter.js +0 -0
  1652. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskByHcPartyAndTypeFilter.js.map +0 -0
  1653. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskByIdsFilter.d.ts +0 -0
  1654. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskByIdsFilter.js +0 -0
  1655. /package/{dist/icc-x-api → icc-x-api}/filters/MaintenanceTaskByIdsFilter.js.map +0 -0
  1656. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndActiveFilter.d.ts +0 -0
  1657. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndActiveFilter.js +0 -0
  1658. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndActiveFilter.js.map +0 -0
  1659. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndAddressFilter.d.ts +0 -0
  1660. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndAddressFilter.js +0 -0
  1661. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndAddressFilter.js.map +0 -0
  1662. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndExternalIdFilter.d.ts +0 -0
  1663. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndExternalIdFilter.js +0 -0
  1664. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndExternalIdFilter.js.map +0 -0
  1665. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndIdentifiersFilter.d.ts +0 -0
  1666. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndIdentifiersFilter.js +0 -0
  1667. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndIdentifiersFilter.js.map +0 -0
  1668. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndSsinFilter.d.ts +0 -0
  1669. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndSsinFilter.js +0 -0
  1670. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndSsinFilter.js.map +0 -0
  1671. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndSsinsFilter.d.ts +0 -0
  1672. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndSsinsFilter.js +0 -0
  1673. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyAndSsinsFilter.js.map +0 -0
  1674. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyDateOfBirthBetweenFilter.d.ts +0 -0
  1675. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyDateOfBirthBetweenFilter.js +0 -0
  1676. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyDateOfBirthBetweenFilter.js.map +0 -0
  1677. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyDateOfBirthFilter.d.ts +0 -0
  1678. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyDateOfBirthFilter.js +0 -0
  1679. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyDateOfBirthFilter.js.map +0 -0
  1680. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyFilter.d.ts +0 -0
  1681. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyFilter.js +0 -0
  1682. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyFilter.js.map +0 -0
  1683. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyGenderEducationProfession.d.ts +0 -0
  1684. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyGenderEducationProfession.js +0 -0
  1685. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyGenderEducationProfession.js.map +0 -0
  1686. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyNameContainsFuzzyFilter.d.ts +0 -0
  1687. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyNameContainsFuzzyFilter.js +0 -0
  1688. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyNameContainsFuzzyFilter.js.map +0 -0
  1689. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyNameFilter.d.ts +0 -0
  1690. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyNameFilter.js +0 -0
  1691. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByHcPartyNameFilter.js.map +0 -0
  1692. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByIdsFilter.d.ts +0 -0
  1693. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByIdsFilter.js +0 -0
  1694. /package/{dist/icc-x-api → icc-x-api}/filters/PatientByIdsFilter.js.map +0 -0
  1695. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByContactsAndSubcontactsFilter.d.ts +0 -0
  1696. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByContactsAndSubcontactsFilter.js +0 -0
  1697. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByContactsAndSubcontactsFilter.js.map +0 -0
  1698. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyFilter.d.ts +0 -0
  1699. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyFilter.js +0 -0
  1700. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyFilter.js.map +0 -0
  1701. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyHealthElementIdsFilter.d.ts +0 -0
  1702. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyHealthElementIdsFilter.js +0 -0
  1703. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyHealthElementIdsFilter.js.map +0 -0
  1704. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyIdentifiersFilter.d.ts +0 -0
  1705. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyIdentifiersFilter.js +0 -0
  1706. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyIdentifiersFilter.js.map +0 -0
  1707. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyTagCodeDateFilter.d.ts +0 -0
  1708. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyTagCodeDateFilter.js +0 -0
  1709. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByHcPartyTagCodeDateFilter.js.map +0 -0
  1710. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByIdsFilter.d.ts +0 -0
  1711. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByIdsFilter.js +0 -0
  1712. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceByIdsFilter.js.map +0 -0
  1713. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceBySecretForeignKeys.d.ts +0 -0
  1714. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceBySecretForeignKeys.js +0 -0
  1715. /package/{dist/icc-x-api → icc-x-api}/filters/ServiceBySecretForeignKeys.js.map +0 -0
  1716. /package/{dist/icc-x-api → icc-x-api}/filters/UnionFilter.d.ts +0 -0
  1717. /package/{dist/icc-x-api → icc-x-api}/filters/UnionFilter.js +0 -0
  1718. /package/{dist/icc-x-api → icc-x-api}/filters/UnionFilter.js.map +0 -0
  1719. /package/{dist/icc-x-api → icc-x-api}/filters/UserByIdsFilter.d.ts +0 -0
  1720. /package/{dist/icc-x-api → icc-x-api}/filters/UserByIdsFilter.js +0 -0
  1721. /package/{dist/icc-x-api → icc-x-api}/filters/UserByIdsFilter.js.map +0 -0
  1722. /package/{dist/icc-x-api → icc-x-api}/filters/UserByNameEmailPhoneFilter.d.ts +0 -0
  1723. /package/{dist/icc-x-api → icc-x-api}/filters/UserByNameEmailPhoneFilter.js +0 -0
  1724. /package/{dist/icc-x-api → icc-x-api}/filters/UserByNameEmailPhoneFilter.js.map +0 -0
  1725. /package/{dist/icc-x-api → icc-x-api}/filters/UsersByPatientIdFilter.d.ts +0 -0
  1726. /package/{dist/icc-x-api → icc-x-api}/filters/UsersByPatientIdFilter.js +0 -0
  1727. /package/{dist/icc-x-api → icc-x-api}/filters/UsersByPatientIdFilter.js.map +0 -0
  1728. /package/{dist/icc-x-api → icc-x-api}/filters/filters.js +0 -0
  1729. /package/{dist/icc-x-api → icc-x-api}/filters/filters.js.map +0 -0
  1730. /package/{dist/icc-x-api → icc-x-api}/icc-accesslog-x-api.d.ts +0 -0
  1731. /package/{dist/icc-x-api → icc-x-api}/icc-bekmehr-x-api.js +0 -0
  1732. /package/{dist/icc-x-api → icc-x-api}/icc-bekmehr-x-api.js.map +0 -0
  1733. /package/{dist/icc-x-api → icc-x-api}/icc-calendar-item-x-api.d.ts +0 -0
  1734. /package/{dist/icc-x-api → icc-x-api}/icc-classification-x-api.d.ts +0 -0
  1735. /package/{dist/icc-x-api → icc-x-api}/icc-classification-x-api.js +0 -0
  1736. /package/{dist/icc-x-api → icc-x-api}/icc-classification-x-api.js.map +0 -0
  1737. /package/{dist/icc-x-api → icc-x-api}/icc-code-x-api.d.ts +0 -0
  1738. /package/{dist/icc-x-api → icc-x-api}/icc-code-x-api.js +0 -0
  1739. /package/{dist/icc-x-api → icc-x-api}/icc-code-x-api.js.map +0 -0
  1740. /package/{dist/icc-x-api → icc-x-api}/icc-contact-x-api.d.ts +0 -0
  1741. /package/{dist/icc-x-api → icc-x-api}/icc-data-owner-x-api.d.ts +0 -0
  1742. /package/{dist/icc-x-api → icc-x-api}/icc-data-owner-x-api.js +0 -0
  1743. /package/{dist/icc-x-api → icc-x-api}/icc-data-owner-x-api.js.map +0 -0
  1744. /package/{dist/icc-x-api → icc-x-api}/icc-doctemplate-x-api.d.ts +0 -0
  1745. /package/{dist/icc-x-api → icc-x-api}/icc-doctemplate-x-api.js +0 -0
  1746. /package/{dist/icc-x-api → icc-x-api}/icc-doctemplate-x-api.js.map +0 -0
  1747. /package/{dist/icc-x-api → icc-x-api}/icc-document-x-api.d.ts +0 -0
  1748. /package/{dist/icc-x-api → icc-x-api}/icc-document-x-api.js +0 -0
  1749. /package/{dist/icc-x-api → icc-x-api}/icc-document-x-api.js.map +0 -0
  1750. /package/{dist/icc-x-api → icc-x-api}/icc-form-x-api.d.ts +0 -0
  1751. /package/{dist/icc-x-api → icc-x-api}/icc-hcparty-x-api.d.ts +0 -0
  1752. /package/{dist/icc-x-api → icc-x-api}/icc-hcparty-x-api.js +0 -0
  1753. /package/{dist/icc-x-api → icc-x-api}/icc-hcparty-x-api.js.map +0 -0
  1754. /package/{dist/icc-x-api → icc-x-api}/icc-helement-x-api.d.ts +0 -0
  1755. /package/{dist/icc-x-api → icc-x-api}/icc-invoice-x-api.d.ts +0 -0
  1756. /package/{dist/icc-x-api → icc-x-api}/icc-invoice-x-api.js +0 -0
  1757. /package/{dist/icc-x-api → icc-x-api}/icc-invoice-x-api.js.map +0 -0
  1758. /package/{dist/icc-x-api → icc-x-api}/icc-maintenance-task-x-api.d.ts +0 -0
  1759. /package/{dist/icc-x-api → icc-x-api}/icc-message-x-api.d.ts +0 -0
  1760. /package/{dist/icc-x-api → icc-x-api}/icc-message-x-api.js +0 -0
  1761. /package/{dist/icc-x-api → icc-x-api}/icc-message-x-api.js.map +0 -0
  1762. /package/{dist/icc-x-api → icc-x-api}/icc-patient-x-api.d.ts +0 -0
  1763. /package/{dist/icc-x-api → icc-x-api}/icc-receipt-x-api.d.ts +0 -0
  1764. /package/{dist/icc-x-api → icc-x-api}/icc-receipt-x-api.js +0 -0
  1765. /package/{dist/icc-x-api → icc-x-api}/icc-receipt-x-api.js.map +0 -0
  1766. /package/{dist/icc-x-api → icc-x-api}/icc-time-table-x-api.d.ts +0 -0
  1767. /package/{dist/icc-x-api → icc-x-api}/icc-time-table-x-api.js +0 -0
  1768. /package/{dist/icc-x-api → icc-x-api}/icc-time-table-x-api.js.map +0 -0
  1769. /package/{dist/icc-x-api → icc-x-api}/icc-user-x-api.d.ts +0 -0
  1770. /package/{dist/icc-x-api → icc-x-api}/icc-user-x-api.js +0 -0
  1771. /package/{dist/icc-x-api → icc-x-api}/icc-user-x-api.js.map +0 -0
  1772. /package/{dist/icc-x-api → icc-x-api}/index.d.ts +0 -0
  1773. /package/{dist/icc-x-api → icc-x-api}/index.js +0 -0
  1774. /package/{dist/icc-x-api → icc-x-api}/index.js.map +0 -0
  1775. /package/{dist/icc-x-api → icc-x-api}/rsrc/codelng.d.ts +0 -0
  1776. /package/{dist/icc-x-api → icc-x-api}/rsrc/codelng.js +0 -0
  1777. /package/{dist/icc-x-api → icc-x-api}/rsrc/codelng.js.map +0 -0
  1778. /package/{dist/icc-x-api → icc-x-api}/rsrc/contact.i18n.d.ts +0 -0
  1779. /package/{dist/icc-x-api → icc-x-api}/rsrc/contact.i18n.js +0 -0
  1780. /package/{dist/icc-x-api → icc-x-api}/rsrc/contact.i18n.js.map +0 -0
  1781. /package/{dist/icc-x-api → icc-x-api}/rsrc/icd10.d.ts +0 -0
  1782. /package/{dist/icc-x-api → icc-x-api}/rsrc/icd10.js +0 -0
  1783. /package/{dist/icc-x-api → icc-x-api}/rsrc/icd10.js.map +0 -0
  1784. /package/{dist/icc-x-api → icc-x-api}/rsrc/icpc2.d.ts +0 -0
  1785. /package/{dist/icc-x-api → icc-x-api}/rsrc/icpc2.js +0 -0
  1786. /package/{dist/icc-x-api → icc-x-api}/rsrc/icpc2.js.map +0 -0
  1787. /package/{dist/icc-x-api → icc-x-api}/storage/KeyStorageFacade.d.ts +0 -0
  1788. /package/{dist/icc-x-api → icc-x-api}/storage/KeyStorageFacade.js +0 -0
  1789. /package/{dist/icc-x-api → icc-x-api}/storage/KeyStorageFacade.js.map +0 -0
  1790. /package/{dist/icc-x-api → icc-x-api}/storage/KeyStorageImpl.d.ts +0 -0
  1791. /package/{dist/icc-x-api → icc-x-api}/storage/KeyStorageImpl.js +0 -0
  1792. /package/{dist/icc-x-api → icc-x-api}/storage/KeyStorageImpl.js.map +0 -0
  1793. /package/{dist/icc-x-api → icc-x-api}/storage/LocalStorageImpl.d.ts +0 -0
  1794. /package/{dist/icc-x-api → icc-x-api}/storage/LocalStorageImpl.js +0 -0
  1795. /package/{dist/icc-x-api → icc-x-api}/storage/LocalStorageImpl.js.map +0 -0
  1796. /package/{dist/icc-x-api → icc-x-api}/storage/StorageFacade.d.ts +0 -0
  1797. /package/{dist/icc-x-api → icc-x-api}/storage/StorageFacade.js +0 -0
  1798. /package/{dist/icc-x-api → icc-x-api}/storage/StorageFacade.js.map +0 -0
  1799. /package/{dist/icc-x-api → icc-x-api}/utils/asn1-packer.js +0 -0
  1800. /package/{dist/icc-x-api → icc-x-api}/utils/asn1-packer.js.map +0 -0
  1801. /package/{dist/icc-x-api → icc-x-api}/utils/asn1-parser.js +0 -0
  1802. /package/{dist/icc-x-api → icc-x-api}/utils/asn1-parser.js.map +0 -0
  1803. /package/{dist/icc-x-api → icc-x-api}/utils/binary-utils.d.ts +0 -0
  1804. /package/{dist/icc-x-api → icc-x-api}/utils/binary-utils.js +0 -0
  1805. /package/{dist/icc-x-api → icc-x-api}/utils/binary-utils.js.map +0 -0
  1806. /package/{dist/icc-x-api → icc-x-api}/utils/code-util.d.ts +0 -0
  1807. /package/{dist/icc-x-api → icc-x-api}/utils/code-util.js +0 -0
  1808. /package/{dist/icc-x-api → icc-x-api}/utils/code-util.js.map +0 -0
  1809. /package/{dist/icc-x-api → icc-x-api}/utils/crypto-utils.d.ts +0 -0
  1810. /package/{dist/icc-x-api → icc-x-api}/utils/crypto-utils.js +0 -0
  1811. /package/{dist/icc-x-api → icc-x-api}/utils/crypto-utils.js.map +0 -0
  1812. /package/{dist/icc-x-api → icc-x-api}/utils/error-reporting.d.ts +0 -0
  1813. /package/{dist/icc-x-api → icc-x-api}/utils/error-reporting.js +0 -0
  1814. /package/{dist/icc-x-api → icc-x-api}/utils/error-reporting.js.map +0 -0
  1815. /package/{dist/icc-x-api → icc-x-api}/utils/formatting-util.d.ts +0 -0
  1816. /package/{dist/icc-x-api → icc-x-api}/utils/formatting-util.js +0 -0
  1817. /package/{dist/icc-x-api → icc-x-api}/utils/formatting-util.js.map +0 -0
  1818. /package/{dist/icc-x-api → icc-x-api}/utils/functional-util.d.ts +0 -0
  1819. /package/{dist/icc-x-api → icc-x-api}/utils/functional-util.js +0 -0
  1820. /package/{dist/icc-x-api → icc-x-api}/utils/functional-util.js.map +0 -0
  1821. /package/{dist/icc-x-api → icc-x-api}/utils/hcp-util.d.ts +0 -0
  1822. /package/{dist/icc-x-api → icc-x-api}/utils/hcp-util.js +0 -0
  1823. /package/{dist/icc-x-api → icc-x-api}/utils/hcp-util.js.map +0 -0
  1824. /package/{dist/icc-x-api → icc-x-api}/utils/index.d.ts +0 -0
  1825. /package/{dist/icc-x-api → icc-x-api}/utils/index.js +0 -0
  1826. /package/{dist/icc-x-api → icc-x-api}/utils/index.js.map +0 -0
  1827. /package/{dist/icc-x-api → icc-x-api}/utils/insurability-util.d.ts +0 -0
  1828. /package/{dist/icc-x-api → icc-x-api}/utils/insurability-util.js +0 -0
  1829. /package/{dist/icc-x-api → icc-x-api}/utils/insurability-util.js.map +0 -0
  1830. /package/{dist/icc-x-api → icc-x-api}/utils/net-utils.js +0 -0
  1831. /package/{dist/icc-x-api → icc-x-api}/utils/net-utils.js.map +0 -0
  1832. /package/{dist/icc-x-api → icc-x-api}/utils/person-util.d.ts +0 -0
  1833. /package/{dist/icc-x-api → icc-x-api}/utils/person-util.js +0 -0
  1834. /package/{dist/icc-x-api → icc-x-api}/utils/person-util.js.map +0 -0
  1835. /package/{dist/icc-x-api → icc-x-api}/utils/uuid-encoder.d.ts +0 -0
  1836. /package/{dist/icc-x-api → icc-x-api}/utils/uuid-encoder.js +0 -0
  1837. /package/{dist/icc-x-api → icc-x-api}/utils/uuid-encoder.js.map +0 -0
  1838. /package/{dist/index.d.ts → index.d.ts} +0 -0
  1839. /package/{dist/index.js → index.js} +0 -0
  1840. /package/{dist/index.js.map → index.js.map} +0 -0
  1841. /package/{dist/node-compat.d.ts → node-compat.d.ts} +0 -0
  1842. /package/{dist/node-compat.js → node-compat.js} +0 -0
  1843. /package/{dist/node-compat.js.map → node-compat.js.map} +0 -0
@@ -1,2350 +0,0 @@
1
- /* eslint-disable */
2
- import { IccDeviceApi, IccHcpartyApi, IccPatientApi } from '../icc-api'
3
- import { AESUtils } from './crypto/AES'
4
- import { RSAUtils } from './crypto/RSA'
5
- import { ShamirClass } from './crypto/shamir'
6
-
7
- import * as _ from 'lodash'
8
- import {
9
- Delegation,
10
- Device,
11
- Document,
12
- EncryptedEntity,
13
- EncryptedParentEntity,
14
- HealthcareParty,
15
- MaintenanceTask,
16
- Patient,
17
- PropertyStub,
18
- PropertyTypeStub,
19
- TypedValueObject,
20
- User,
21
- } from '../icc-api/model/models'
22
- import { b2a, b64_2uas, hex2ua, string2ua, ua2hex, ua2string, ua2utf8, utf8_2ua } from './utils/binary-utils'
23
- import { fold, foldAsync, jwk2spki, notConcurrent, pkcs8ToJwk, retry, spkiToJwk } from './utils'
24
- import { IccMaintenanceTaskXApi } from './icc-maintenance-task-x-api'
25
- import { StorageFacade } from './storage/StorageFacade'
26
- import { LocalStorageImpl } from './storage/LocalStorageImpl'
27
- import { KeyStorageFacade } from './storage/KeyStorageFacade'
28
- import { KeyStorageImpl } from './storage/KeyStorageImpl'
29
- import { ErrorReporting } from './utils/error-reporting'
30
-
31
- /**
32
- * @internal may be changed without notice
33
- */
34
- export interface DelegatorAndKeys {
35
- delegatorId: string
36
- key: CryptoKey
37
- rawKey: string
38
- }
39
-
40
- /**
41
- * @internal may be changed without notice
42
- */
43
- export type CachedDataOwner =
44
- | {
45
- type: 'patient'
46
- dataOwner: Patient
47
- }
48
- | {
49
- type: 'device'
50
- dataOwner: Device
51
- }
52
- | {
53
- type: 'hcp'
54
- dataOwner: HealthcareParty
55
- }
56
-
57
- export class IccCryptoXApi {
58
- get crypto(): Crypto {
59
- return this._crypto
60
- }
61
-
62
- get shamir(): ShamirClass {
63
- return this._shamir
64
- }
65
-
66
- get RSA(): RSAUtils {
67
- return this._RSA
68
- }
69
-
70
- get AES(): AESUtils {
71
- return this._AES
72
- }
73
-
74
- get keyStorage(): KeyStorageFacade {
75
- return this._keyStorage
76
- }
77
-
78
- get storage(): StorageFacade<string> {
79
- return this._storage
80
- }
81
-
82
- hcPartyKeysCache: {
83
- [key: string]: DelegatorAndKeys
84
- } = {}
85
-
86
- //[delegateId][delegatorId] = delegateEncryptedHcPartyKey
87
- //for each delegate, it stores the list of delegators and the corresponding delegateEncryptedHcPartyKey (shared HcPartyKey, from delegator to delegate, encrypted with the RSA key of the delegate)
88
- hcPartyKeysRequestsCache: {
89
- [delegateId: string]: Promise<{ [key: string]: { [key: string]: { [key: string]: string } } }>
90
- } = {}
91
-
92
- cacheLastDeletionTimestamp: number | undefined = undefined
93
-
94
- dataOwnerCache: { [key: string]: Promise<CachedDataOwner> } = {}
95
-
96
- emptyHcpCache(hcpartyId: string) {
97
- delete this.hcPartyKeysRequestsCache[hcpartyId]
98
- delete this.dataOwnerCache[hcpartyId]
99
- }
100
-
101
- /**
102
- * @internal may be changed without notice
103
- * Gets all delegate encrypted HcParty keys of the delegate with the given `delegateHcPartyId`, and for each key the delegator id
104
- * If the keys are not cached, they are retrieved from the backend.
105
- *
106
- * @param delegateHcPartyId The Health Care Party id
107
- * @returns \{delegatorId: delegateEncryptedHcPartyKey\}
108
- */
109
- getEncryptedAesExchangeKeysForDelegate(delegateHcPartyId: string): Promise<{ [key: string]: { [key: string]: { [key: string]: string } } }> {
110
- return (
111
- this.hcPartyKeysRequestsCache[delegateHcPartyId] ||
112
- (this.hcPartyKeysRequestsCache[delegateHcPartyId] = this.forceGetEncryptedAesExchangeKeysForDelegate(delegateHcPartyId))
113
- )
114
- }
115
-
116
- private forceGetEncryptedAesExchangeKeysForDelegate(
117
- delegateHcPartyId: string
118
- ): Promise<{ [key: string]: { [key: string]: { [key: string]: string } } }> {
119
- return Promise.all([
120
- this.patientBaseApi.getPatientAesExchangeKeysForDelegate(delegateHcPartyId).catch(() => {}),
121
- this.hcpartyBaseApi.getAesExchangeKeysForDelegate(delegateHcPartyId).catch(() => {}),
122
- this.deviceBaseApi.getDeviceAesExchangeKeysForDelegate(delegateHcPartyId).catch(() => {}),
123
- ]).then(([a, b, c]) => ({ ...a, ...b, ...c }))
124
- }
125
-
126
- keychainLocalStoreIdPrefix = 'org.taktik.icure.ehealth.keychain.'
127
- keychainValidityDateLocalStoreIdPrefix = 'org.taktik.icure.ehealth.keychain-date.'
128
- hcpPreferenceKeyEhealthCert = 'eHealthCRTCrypt'
129
- hcpPreferenceKeyEhealthCertDate = 'eHealthCRTDate'
130
- rsaLocalStoreIdPrefix = 'org.taktik.icure.rsa.'
131
-
132
- private hcpartyBaseApi: IccHcpartyApi
133
- private patientBaseApi: IccPatientApi
134
- private deviceBaseApi: IccDeviceApi
135
- private readonly _crypto: Crypto
136
-
137
- private generateKeyConcurrencyMap: { [key: string]: PromiseLike<HealthcareParty | Patient> }
138
- /**
139
- * @internal may be changed without notice
140
- */
141
- rsaKeyPairs: { [pubKeyFingerprint: string]: { publicKey: CryptoKey; privateKey: CryptoKey } } = {}
142
-
143
- private readonly _AES: AESUtils
144
- private readonly _RSA: RSAUtils
145
- private readonly _shamir: ShamirClass
146
- private readonly _storage: StorageFacade<string>
147
- private readonly _keyStorage: KeyStorageFacade
148
-
149
- constructor(
150
- host: string,
151
- headers: { [key: string]: string },
152
- hcpartyBaseApi: IccHcpartyApi, //Init with a hcparty x api for better performances
153
- patientBaseApi: IccPatientApi,
154
- deviceBaseApi: IccDeviceApi,
155
- crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto),
156
- storage: StorageFacade<string>,
157
- keyStorage: KeyStorageFacade
158
- ) {
159
- this.hcpartyBaseApi = hcpartyBaseApi
160
- this.patientBaseApi = patientBaseApi
161
- this.deviceBaseApi = deviceBaseApi
162
- this._crypto = crypto
163
- this.generateKeyConcurrencyMap = {}
164
-
165
- this._AES = new AESUtils(crypto)
166
- this._RSA = new RSAUtils(crypto)
167
- this._shamir = new ShamirClass(crypto)
168
- this._storage = storage
169
- this._keyStorage = keyStorage
170
- }
171
-
172
- async loadAllKeysFromLocalStorage(dataOwnerId: string): Promise<void> {
173
- const pubKeys = await this.getDataOwnerHexPublicKeys((await this.getDataOwner(dataOwnerId)).dataOwner)
174
-
175
- for (const pk of pubKeys) {
176
- const fingerprint = pk.slice(-32)
177
- if (!this.rsaKeyPairs[fingerprint]) {
178
- await this.cacheKeyPair(this.loadKeyPairNotImported(dataOwnerId, fingerprint))
179
- }
180
- }
181
- }
182
-
183
- async getCachedRsaKeyPairForFingerprint(
184
- dataOwnerId: string,
185
- pubKeyOrFingerprint: string
186
- ): Promise<{ publicKey: CryptoKey; privateKey: CryptoKey }> {
187
- const fingerprint = pubKeyOrFingerprint.slice(-32)
188
- return this.rsaKeyPairs[fingerprint] ?? (await this.cacheKeyPair(this.loadKeyPairNotImported(dataOwnerId, fingerprint)))
189
- }
190
-
191
- async getPublicKeys() {
192
- return await Object.values(this.rsaKeyPairs).reduce(async (p, rsa) => {
193
- return (await p).concat([jwk2spki(await this.RSA.exportKey(rsa.publicKey, 'jwk'))])
194
- }, Promise.resolve([] as string[]))
195
- }
196
-
197
- async getPublicKeysAsSpki(): Promise<string[]> {
198
- return await Object.values(this.rsaKeyPairs).reduce(async (p, rsa) => {
199
- return (await p).concat([ua2hex(await this.RSA.exportKey(rsa.publicKey, 'spki'))])
200
- }, Promise.resolve([] as string[]))
201
- }
202
-
203
- randomUuid() {
204
- return ((1e7).toString() + -1e3 + -4e3 + -8e3 + -1e11).replace(
205
- /[018]/g,
206
- (c) => (Number(c) ^ ((this._crypto.getRandomValues(new Uint8Array(1))! as Uint8Array)[0] & (15 >> (Number(c) / 4)))).toString(16) //Keep that inlined or you will loose the random
207
- )
208
- }
209
-
210
- sha256(data: ArrayBuffer | Uint8Array) {
211
- return this._crypto.subtle.digest('SHA-256', data)
212
- }
213
-
214
- encryptShamirRSAKey(hcp: HealthcareParty, notaries: Array<HealthcareParty>, threshold?: number): Promise<HealthcareParty> {
215
- return this.loadKeyPairImported(hcp.id!).then((keyPair) =>
216
- this._RSA.exportKey(keyPair.privateKey, 'pkcs8').then(async (exportedKey) => {
217
- const privateKey = exportedKey as ArrayBuffer
218
- const nLen = notaries.length
219
- const shares = nLen == 1 ? [privateKey] : this._shamir.share(ua2hex(privateKey), nLen, threshold || nLen).map((share) => hex2ua(share))
220
- const publicKeys = await this.getPublicKeys()
221
-
222
- return _.reduce(
223
- notaries,
224
- (queue, notary, idx) => {
225
- return queue.then(async (hcp) => {
226
- const { owner: hcParty, aesExchangeKeys } = await this.getOrCreateHcPartyKeys(hcp, notary.id!)
227
- const [publicKeyIdentifier, hcPartyKeys] = Object.entries(aesExchangeKeys)[0]
228
-
229
- try {
230
- const importedAESHcPartyKey = await this.decryptHcPartyKey(
231
- notary.id!,
232
- hcParty.id!,
233
- notary.id!,
234
- publicKeyIdentifier,
235
- hcPartyKeys,
236
- publicKeys
237
- )
238
- const encryptedShamirPartition = await this.AES.encrypt(importedAESHcPartyKey.key, shares[idx])
239
-
240
- hcParty.privateKeyShamirPartitions = hcParty.privateKeyShamirPartitions || {}
241
- hcParty.privateKeyShamirPartitions[notary.id!] = ua2hex(encryptedShamirPartition)
242
- } catch (e) {
243
- console.log('Error during encryptedShamirRSAKey', notary.id, e)
244
- }
245
- return hcParty
246
- })
247
- },
248
- Promise.resolve(hcp)
249
- )
250
- })
251
- )
252
- }
253
-
254
- /* Reconstructs the hcp's private key from the notaries' shamir shares and stores it in localstorage.
255
- The retrieval procedure of the shares is not designed or implemented yet. Therefore, it currently only
256
- works if the private key of the notaries are stored in local storage (e.g. notaries = [hcp parent]).
257
- * @param hcp : the hcp whose key we want to reconstruct
258
- * @param notaries : holders of the shamir shares
259
- **/
260
- async decryptShamirRSAKey(hcp: HealthcareParty, notaries: Array<HealthcareParty>): Promise<void> {
261
- try {
262
- const publicKeys = await this.getPublicKeys()
263
- const nLen = notaries.length
264
- let decryptedPrivatedKey
265
- if (nLen == 1) {
266
- const notaryHcPartyId = notaries[0].id!
267
- const encryptedAesKeyMap = await this.getEncryptedAesExchangeKeys(hcp, notaryHcPartyId)
268
- const importedAESHcPartyKey = await Promise.all(
269
- Object.entries(encryptedAesKeyMap).map(
270
- async ([idPubKey, keysMap]) => await this.decryptHcPartyKey(notaryHcPartyId, hcp.id!, notaryHcPartyId, idPubKey, keysMap, publicKeys)
271
- )
272
- )
273
- const cryptedPrivatedKey = hcp.privateKeyShamirPartitions![notaryHcPartyId]
274
- decryptedPrivatedKey = ua2hex(
275
- await this.AES.decryptSome(
276
- importedAESHcPartyKey.map((k) => k.key),
277
- hex2ua(cryptedPrivatedKey)
278
- )
279
- )
280
- } else {
281
- const decryptedShares: string[] = await _.reduce(
282
- notaries,
283
- (queue, notary) => {
284
- return queue.then(async (shares: string[]) => {
285
- try {
286
- // TODO: now, we get the encrypted shares in db and decrypt them. This assumes that the
287
- // the notaries' private keys are in localstorage. We should implement a way for the notaries to
288
- // give hcp the decrypted shares without having to also share their private keys.
289
- const encryptedAesKeyMap = await this.getEncryptedAesExchangeKeys(hcp, notary.id!)
290
- const importedAESHcPartyKey = await Promise.all(
291
- Object.entries(encryptedAesKeyMap).map(
292
- async ([idPubKey, keysMap]) => await this.decryptHcPartyKey(notary.id!, hcp.id!, notary.id!, idPubKey, keysMap, publicKeys)
293
- )
294
- )
295
- const encryptedShare = hcp.privateKeyShamirPartitions![notary.id!]
296
- const decryptedShamirPartition = ua2hex(
297
- await this.AES.decryptSome(
298
- importedAESHcPartyKey.map((k) => k.key),
299
- hex2ua(encryptedShare)
300
- )
301
- )
302
- shares.push(decryptedShamirPartition)
303
- } catch (e) {
304
- console.log('Error during encryptedShamirRSAKey', notary.id, e)
305
- }
306
- return shares
307
- })
308
- },
309
- Promise.resolve([] as string[])
310
- )
311
-
312
- decryptedPrivatedKey = this._shamir.combine(decryptedShares)
313
- }
314
-
315
- const importedPrivateKey = await this._RSA.importKey('pkcs8', hex2ua(decryptedPrivatedKey), ['decrypt'])
316
- const importedPublicKey = await this._RSA.importKey('spki', hex2ua(hcp.publicKey!), ['encrypt'])
317
-
318
- const exportedKeyPair = await this._RSA.exportKeys({ publicKey: importedPublicKey, privateKey: importedPrivateKey }, 'jwk', 'jwk')
319
- this._keyStorage.storeKeyPair(`${this.rsaLocalStoreIdPrefix}${hcp.id!}`, exportedKeyPair)
320
- } catch (e) {
321
- console.log('Cannot decrypt shamir RSA key')
322
- }
323
- }
324
-
325
- /**
326
- * Gets the decryptedHcPartyKey for the given `encryptedHcPartyKey`
327
- *
328
- * If the decrypted key exists in the cache, retrieves it from there.
329
- * Otherwise, decrypts it using the RSA key of the delegator or delegate (depending on the value of `encryptedForDelegator`)
330
- *
331
- * @param loggedHcPartyId The logged DataOwner id or the id of his parent
332
- * @param delegatorId The id of Delegator eg, the DataOwner where this AES exchange key is stored
333
- * @param delegateHcPartyId The id of the delegate : the data owner for whom this aes exchange key has been created
334
- * @param publicKey The public key of the delegator : A unique aes exchange key is created for each public key of the delegator. This is the public key corresponding to the encryptedHcPartyKeys
335
- * @param encryptedHcPartyKeys The encryptedHcPartyKeys to be decrypted
336
- * @param publicKeys The public keys for which we might have a private key
337
- *
338
- * @returns - **delegatorId** the input param `delegatorId`
339
- * - **key** the decrypted `encryptedHcPartyKey`
340
- */
341
-
342
- async decryptHcPartyKey(
343
- loggedHcPartyId: string,
344
- delegatorId: string,
345
- delegateHcPartyId: string,
346
- publicKey: string,
347
- encryptedHcPartyKeys: { [key: string]: string },
348
- publicKeys: string[]
349
- ): Promise<DelegatorAndKeys> {
350
- if (!publicKeys.length) {
351
- const reason = `Cannot decrypt RSA encrypted AES HcPartyKey from ${delegatorId} to ${delegateHcPartyId}: no public key`
352
- console.warn(reason)
353
- throw new Error(reason)
354
- }
355
-
356
- const cacheKey = `${delegateHcPartyId}|${publicKey.slice(-32)}|${delegatorId}`
357
- const res = this.hcPartyKeysCache[cacheKey]
358
-
359
- if (res) {
360
- return res
361
- }
362
-
363
- const result = await publicKeys.reduce(async (res, pk) => {
364
- const delegatorAndKeys = await res
365
- if (delegatorAndKeys) {
366
- return delegatorAndKeys
367
- }
368
-
369
- const fingerprint = pk.slice(-32)
370
- const keyPair = this.rsaKeyPairs[fingerprint] ?? (await this.cacheKeyPair(this.loadKeyPairNotImported(loggedHcPartyId, fingerprint)))
371
- if (!keyPair) {
372
- return
373
- }
374
-
375
- // Due to past bugs the encryptedHcPartyKeys may contain the full key instead of just the fingerprint.
376
- let encryptedHcPartyKey = encryptedHcPartyKeys[fingerprint] ?? encryptedHcPartyKeys[pk]
377
- if (!encryptedHcPartyKey) {
378
- const delegate = await this.getDataOwner(delegateHcPartyId, false) //it is faster to just try to decrypt if not in cache
379
- if (!delegate?.dataOwner || delegate.dataOwner.publicKey?.endsWith(fingerprint)) {
380
- encryptedHcPartyKey = encryptedHcPartyKeys['']
381
- } else {
382
- return
383
- }
384
- }
385
-
386
- try {
387
- const decryptedAesExchangeKey = await this._RSA.decrypt(keyPair.privateKey, hex2ua(encryptedHcPartyKey))
388
- const importedAesExchangeKey = await this._AES.importKey('raw', decryptedAesExchangeKey)
389
-
390
- return (this.hcPartyKeysCache[cacheKey] = {
391
- delegatorId: delegatorId,
392
- key: importedAesExchangeKey,
393
- rawKey: ua2hex(new Uint8Array(decryptedAesExchangeKey)),
394
- })
395
- } catch (e) {
396
- const reason = `Cannot decrypt RSA encrypted AES HcPartyKey from ${delegatorId} to ${delegateHcPartyId} for pubKey ${fingerprint}: impossible to decrypt`
397
- console.log(reason)
398
- }
399
- }, Promise.resolve(undefined as DelegatorAndKeys | void))
400
-
401
- const availablePublicKeys = publicKeys.filter((pk) => this.rsaKeyPairs[pk.slice(-32)])
402
-
403
- if (!result) {
404
- //Try to find another key from the transfer keys
405
- const hcp = (await this.getDataOwner(loggedHcPartyId))!
406
- const candidates = Object.entries(hcp.dataOwner.transferKeys ?? {})
407
- .filter(([fp, _]) => availablePublicKeys.some((pk) => pk.slice(-32) === fp.slice(-32))) // only keep keys that we will be able to decrypt
408
- .flatMap(([pk, keys]) => Object.entries(keys).map(([k, v]) => [pk, k, v]))
409
- .filter(([_, k]) => !publicKeys.some((apk) => apk.slice(-32) === k.slice(-32)))
410
- if (candidates.length) {
411
- const newPublicKeys = await candidates.reduce(async (p, [decryptionKeyFingerprint, privateKeyFingerprint, encryptedPrivateKey]) => {
412
- const newKeys = await p
413
- const aesExchangeKeys = Object.entries(hcp.dataOwner.aesExchangeKeys!).find(
414
- ([fp, _]) => fp.slice(-32) === privateKeyFingerprint.slice(-32)
415
- )?.[1][loggedHcPartyId]
416
- if (aesExchangeKeys) {
417
- const encryptedAesExchangeKey = Object.entries(aesExchangeKeys).find(
418
- ([fp, _]) => fp.slice(-32) === decryptionKeyFingerprint.slice(-32)
419
- )?.[1]
420
- if (encryptedAesExchangeKey) {
421
- const keyPair = this.rsaKeyPairs[decryptionKeyFingerprint.slice(-32)]
422
- if (!keyPair) {
423
- return newKeys
424
- }
425
- const decryptedAesExchangeKey = await this._RSA.decrypt(keyPair.privateKey, hex2ua(encryptedAesExchangeKey))
426
- const importedAesExchangeKey = await this._AES.importKey('raw', decryptedAesExchangeKey)
427
-
428
- const decryptedPrivateKey = await this._AES.decrypt(importedAesExchangeKey, hex2ua(encryptedPrivateKey))
429
-
430
- const newPublicKey = Object.keys(hcp.dataOwner.aesExchangeKeys!).find((fp) => fp.slice(-32) === privateKeyFingerprint.slice(-32))!
431
- await this.cacheKeyPair({
432
- publicKey: spkiToJwk(hex2ua(newPublicKey)),
433
- privateKey: pkcs8ToJwk(decryptedPrivateKey),
434
- })
435
-
436
- return newKeys.concat([newPublicKey])
437
- }
438
- }
439
- return newKeys
440
- }, Promise.resolve([] as string[]))
441
-
442
- if (newPublicKeys.length) {
443
- return await this.decryptHcPartyKey(loggedHcPartyId, delegatorId, delegateHcPartyId, publicKey, encryptedHcPartyKeys, newPublicKeys)
444
- }
445
- }
446
-
447
- const reason = `Cannot decrypt RSA encrypted AES HcPartyKey from ${delegatorId} to ${delegateHcPartyId}: impossible to decrypt. No private key was found or could be used to decrypt the aes exchange keys`
448
- console.log(reason)
449
- throw new Error(reason)
450
- }
451
-
452
- return result
453
- }
454
-
455
- /**
456
- * Cache the RSA private/public key pair for the HcP with the given id `hcPartyKeyOwner`
457
- */
458
- cacheKeyPair(keyPairInJwk: { publicKey: JsonWebKey; privateKey: JsonWebKey }): Promise<{ publicKey: CryptoKey; privateKey: CryptoKey }> {
459
- return this._RSA.importKeyPair('jwk', keyPairInJwk.privateKey, 'jwk', keyPairInJwk.publicKey).then((importedKeyPair) => {
460
- const pk = jwk2spki(keyPairInJwk.publicKey)
461
- return (this.rsaKeyPairs[pk.slice(-32)] = importedKeyPair)
462
- })
463
- }
464
-
465
- /**
466
- * Gets the secret ID (SFKs) that should be used in the prescribed context (confidential or not) from decrypted SPKs of the given `parent`, decrypted by the HcP with the given `hcpartyId` AND by its HcP parents
467
- * @param parent :the object of which delegations (SPKs) to decrypt
468
- * @param hcpartyId :the id of the delegate HcP
469
- * @param confidential :weather the key is going to be used for a confidential piece or data or not
470
- * @returns - **extractedKeys** array containing secret IDs (SFKs) from decrypted SPKs, from both given HcP and its parents ; can contain duplicates
471
- * - **hcpartyId** the given `hcpartyId` OR, if a parent exist, the HcP id of the top parent in the hierarchy (even if that parent has no delegations)
472
- */
473
- async extractPreferredSfk(parent: EncryptedParentEntity, hcpartyId: string, confidential: boolean) {
474
- const secretForeignKeys = await this.extractSFKsHierarchyFromDelegations(parent, hcpartyId)
475
- const keys = secretForeignKeys
476
- .filter(({ extractedKeys }) => extractedKeys.length > 0)
477
- .filter((x, idx) => (confidential ? x.hcpartyId === hcpartyId : idx === 0))[0]
478
-
479
- return (
480
- (keys &&
481
- (confidential
482
- ? keys.extractedKeys.find(
483
- (k) => !secretForeignKeys.some(({ extractedKeys, hcpartyId: parentHcpId }) => hcpartyId !== parentHcpId && extractedKeys.includes(k))
484
- )
485
- : keys.extractedKeys[0])) ||
486
- undefined
487
- )
488
- }
489
-
490
- /**
491
- * Gets an array of decrypted HcPartyKeys, shared between the delegate with ID `delegateHcPartyId` and the delegators in `delegatorsHcPartyIdsSet`
492
- *
493
- * 1. Get the keys for the delegateHealthCareParty (cache/backend).
494
- * 2. For each key in the delegators, decrypt it with the delegate's private key
495
- * 3. Filter out undefined keys and return them
496
- *
497
- * @param delegatorsHcPartyIdsSet array of delegator HcP IDs that could have delegated something to the HcP with ID `delegateHcPartyId`
498
- * @param delegateHcPartyId the HcP for which the HcPs with IDs in `delegatorsHcPartyIdsSet` could have delegated something
499
- * @param minCacheDurationInSeconds The minimum cache duration
500
- * @returns - **delegatorId** : the id of the delegator HcP that shares the **key** with the `delegateHcPartyId`
501
- * - **key** the decrypted HcPartyKey, shared between **delegatorId** and `delegateHcPartyId`
502
- */
503
- async decryptAndImportAesHcPartyKeysForDelegators(
504
- delegatorsHcPartyIdsSet: Array<string>,
505
- delegateHcPartyId: string,
506
- minCacheDurationInSeconds: number = 60
507
- ): Promise<Array<DelegatorAndKeys>> {
508
- const aesExchangeKeys = await this.getEncryptedAesExchangeKeysForDelegate(delegateHcPartyId).then(
509
- async (delegatorIdsWithDelegateEncryptedHcPartyKeys: { [key: string]: { [key: string]: { [key: string]: string } } }) => {
510
- // [key: delegatorId] = delegateEncryptedHcPartyKey
511
- // For each delegatorId, obtain the AES key (decrypted HcParty Key) shared with the delegate, decrypted by the delegate
512
- return (
513
- await Promise.all(
514
- delegatorsHcPartyIdsSet.map(async (delegatorId: string) => {
515
- const encryptedHcPartyKeysForPubKeyFingerprint = delegatorIdsWithDelegateEncryptedHcPartyKeys[delegatorId]
516
- if (!encryptedHcPartyKeysForPubKeyFingerprint) {
517
- return [] as DelegatorAndKeys[]
518
- }
519
- const decryptedKeys = await Promise.all(
520
- Object.entries(encryptedHcPartyKeysForPubKeyFingerprint).map(async ([delegatorPubKeyFinerprint, encryptedAesExchangeKeys]) => {
521
- try {
522
- return await this.decryptHcPartyKey(
523
- delegateHcPartyId,
524
- delegatorId,
525
- delegateHcPartyId,
526
- delegatorPubKeyFinerprint,
527
- encryptedAesExchangeKeys,
528
- Object.keys(this.rsaKeyPairs)
529
- )
530
- } catch (e) {
531
- console.log(`failed to decrypt hcPartyKey from ${delegatorId} to ${delegateHcPartyId}`)
532
- return
533
- }
534
- })
535
- )
536
- return decryptedKeys.filter((x) => !!x) as DelegatorAndKeys[]
537
- })
538
- )
539
- ).reduce((acc, x) => [...acc, ...x], [])
540
- }
541
- )
542
-
543
- if (aesExchangeKeys.length > 0) {
544
- return aesExchangeKeys
545
- }
546
-
547
- const nowTimestamp = +new Date()
548
- if (!this.cacheLastDeletionTimestamp || (nowTimestamp - this.cacheLastDeletionTimestamp) / 1000 >= minCacheDurationInSeconds) {
549
- delete this.hcPartyKeysRequestsCache[delegateHcPartyId]
550
- this.cacheLastDeletionTimestamp = nowTimestamp
551
- return this.decryptAndImportAesHcPartyKeysForDelegators(delegatorsHcPartyIdsSet, delegateHcPartyId, minCacheDurationInSeconds)
552
- }
553
-
554
- return []
555
- }
556
-
557
- /**
558
- * Gets an array of decrypted HcPartyKeys from the given `delegations`, that are shared with / can be decrypted by the HcP with the given `healthcarePartyId` (or by its parents when `fallbackOnParent` is true)
559
- *
560
- * 1. Checks whether the delegations' object has a delegation for the
561
- * given healthCarePartyId.
562
- * 2. Enumerates all the delegators (delegation.owner) present in
563
- * the delegations.
564
- * 3. Decrypt's delegators' keys and returns them.
565
- *
566
- * @param dataOwnerId : the id of the delegate HCP
567
- * @param delegations : delegations (can be SPKs, CFKs, EKs) for all delegates
568
- * @param fallbackOnParent default true; use parent's healthCarePartyId in case there's no delegation for the `healthcarePartyId`
569
- * @returns - **delegatorId** : the id of the delegator HcP that shares the **key** with the `healthcarePartyId`
570
- * - **key** the decrypted HcPartyKey, shared between **delegatorId** and `healthcarePartyId`
571
- */
572
- async getDecryptedAesExchangeKeysOfDelegateAndParentsFromGenericDelegations(
573
- dataOwnerId: string,
574
- delegations: { [key: string]: Array<Delegation> },
575
- fallbackOnParent = true
576
- ): Promise<Array<DelegatorAndKeys>> {
577
- const delegationsArray = delegations[dataOwnerId] ?? []
578
-
579
- if (!delegationsArray.length && fallbackOnParent) {
580
- const { dataOwner: hcp } = await this.getDataOwner(dataOwnerId)
581
- return (hcp as any).parentId
582
- ? await this.getDecryptedAesExchangeKeysOfDelegateAndParentsFromGenericDelegations((hcp as any).parentId, delegations)
583
- : []
584
- } else {
585
- const delegatorIds = new Set<string>()
586
- delegationsArray.forEach((del) => delegatorIds.add(del.owner!))
587
- return this.decryptAndImportAesHcPartyKeysForDelegators(Array.from(delegatorIds), dataOwnerId)
588
- }
589
- }
590
-
591
- /**
592
- * Retrieve the owner HealthCareParty key and use it to encrypt
593
- * both the delegations (createdObject.id) and the cryptedForeignKeys
594
- * (parentObject.id), and returns them in an object.
595
- */
596
- async initObjectDelegations(
597
- createdObject: any,
598
- parentObject: any,
599
- ownerId: string,
600
- secretForeignKeyOfParent: string | null
601
- ): Promise<{
602
- owner: HealthcareParty | Device | Patient
603
- delegations: any
604
- cryptedForeignKeys: any
605
- secretForeignKeys: any[]
606
- secretId: string
607
- }> {
608
- const publicKeys = await this.getPublicKeys()
609
-
610
- this.throwDetailedExceptionForInvalidParameter('createdObject.id', createdObject.id, 'initObjectDelegations', arguments)
611
-
612
- if (parentObject) this.throwDetailedExceptionForInvalidParameter('parentObject.id', parentObject.id, 'initObjectDelegations', arguments)
613
-
614
- const secretId = this.randomUuid()
615
- return this.getDataOwner(ownerId).then(async ({ dataOwner: owner }) => {
616
- const { owner: modifiedOwner, aesExchangeKeys } = await this.getOrCreateHcPartyKeys(owner, ownerId)
617
- const importedAESHcPartyKey = await this.decryptAnyAesExchangeKeyForOwner(aesExchangeKeys, ownerId, ownerId, ownerId, publicKeys)
618
-
619
- const encryptedDelegation = await this._AES.encrypt(
620
- importedAESHcPartyKey.key,
621
- string2ua(createdObject.id + ':' + secretId).buffer as ArrayBuffer,
622
- importedAESHcPartyKey.rawKey
623
- )
624
- const encryptedSecretForeignKey = parentObject
625
- ? await this._AES.encrypt(
626
- importedAESHcPartyKey.key,
627
- string2ua(createdObject.id + ':' + parentObject.id).buffer as ArrayBuffer,
628
- importedAESHcPartyKey.rawKey
629
- )
630
- : undefined
631
-
632
- return {
633
- owner: modifiedOwner,
634
- delegations: _.fromPairs([
635
- [
636
- ownerId,
637
- [
638
- {
639
- owner: ownerId,
640
- delegatedTo: ownerId,
641
- key: ua2hex(encryptedDelegation!),
642
- },
643
- ],
644
- ],
645
- ]),
646
- cryptedForeignKeys:
647
- (encryptedSecretForeignKey
648
- ? _.fromPairs([
649
- [
650
- ownerId,
651
- [
652
- {
653
- owner: ownerId,
654
- delegatedTo: ownerId,
655
- key: ua2hex(encryptedSecretForeignKey!),
656
- },
657
- ],
658
- ],
659
- ])
660
- : {}) || {},
661
- secretForeignKeys: (secretForeignKeyOfParent && [secretForeignKeyOfParent]) || [],
662
- secretId: secretId,
663
- }
664
- })
665
- }
666
-
667
- private async decryptAnyAesExchangeKeyForOwner(
668
- aesExchangeKeys: { [p: string]: { [p: string]: string } },
669
- loggedHcPartyId: string,
670
- delegatorId: string,
671
- delegateHcPartyId: string,
672
- publicKeys: string[]
673
- ) {
674
- const importedAESHcPartyKey = await Object.entries(aesExchangeKeys).reduce(async (acc, [publicKeyIdentifier, hcPartyKeys]) => {
675
- const accValue = await acc
676
- if (accValue) {
677
- return accValue
678
- }
679
- try {
680
- return await this.decryptHcPartyKey(loggedHcPartyId, delegatorId, delegateHcPartyId, publicKeyIdentifier, hcPartyKeys, publicKeys)
681
- } catch (e) {
682
- return undefined
683
- }
684
- }, Promise.resolve(undefined as DelegatorAndKeys | undefined))
685
-
686
- if (!importedAESHcPartyKey) {
687
- throw new Error(`No hcParty key can be decrypted from ${delegatorId} to ${delegateHcPartyId} using currently available private keys`)
688
- }
689
- return importedAESHcPartyKey
690
- }
691
-
692
- /**
693
- * Gets updated instances of SPKs and CKFs for the child object `modifiedObject`.
694
- * These updated SPKs and CKFs contain new SPKs/CFKs to provide delegation from delegator HcP with id `ownerId` to delegate HcP with id `delegateId`
695
- *
696
- * 1. if `secretIdOfModifiedObject` is not provided, the method will throw an exception; this `secretIdOfModifiedObject` is used to generate a new delegation (SPK) in step 3;
697
- * the `secretIdOfModifiedObject` is returned, unmodified, as `secretId`
698
- * 2. if the owner (delegator) did not perform a delegation to the delegate, then this HcP delegation (creation of a new HcPKey) is performed now
699
- * 3. creates a new delegation (Secret Primary Keys) on the `modifiedObject` encrypted with the HcPKey from owner to the delegate;
700
- * 4. if `parentObject` != null, creates a new CFK on the `modifiedObject` encrypted with the HcPKey from owner to the delegate;
701
- * 5. this new delegation (from step 3) is added to the list of existing delegations (Secret Primary Keys) on the `modifiedObject` for the delegate given by `delegateId`
702
- * 6. if the CFK (from step 4) can be created, this new CFK is added to the list of existing CFKs on the `modifiedObject` for the delegate given by `delegateId`
703
- * 7. then some duplicates delegations (SPKs) and CKFs are removed
704
- *
705
- * @param modifiedObject : the object of which SPKs and CFKs will be cloned, the clones will be modified and then used as returned values ; it's a 'child' of `parentObject`; will NOT be mutated
706
- * @param parentObject : will NOT be mutated
707
- * @param ownerId : the HcP id of the delegator
708
- * @param delegateId : the HcP id of the delegate
709
- * @param secretIdOfModifiedObject : the secret id used in the child object to generate its SPK
710
- * @returns - **delegations** existing delegations (SPKs) of the `modifiedObject`, appended with results from step 5
711
- * - **cryptedForeignKeys** existing CFKs of the `modifiedObject`, appended with results from steps 6
712
- * - **secretId** which is the given input parameter `secretIdOfModifiedObject`
713
- */
714
-
715
- extendedDelegationsAndCryptedForeignKeys<T extends EncryptedEntity, P extends EncryptedParentEntity>(
716
- //TODO: suggested name: getExtendedChildObjectSPKandCFKwithDelegationFromDelegatorToDelegate
717
- modifiedObject: T,
718
- parentObject: P | null,
719
- ownerId: string,
720
- delegateId: string,
721
- secretIdOfModifiedObject: string | null
722
- ): Promise<{
723
- modifiedObject: T
724
- delegations: { [key: string]: Array<Delegation> }
725
- cryptedForeignKeys: { [key: string]: Array<Delegation> }
726
- secretId: string | null //TODO: why input parameter secretIdOfModifiedObject is returned?
727
- }> {
728
- this.throwDetailedExceptionForInvalidParameter('modifiedObject.id', modifiedObject.id, 'extendedDelegationsAndCryptedForeignKeys', arguments) //modifiedObject should never be null
729
-
730
- if (parentObject)
731
- this.throwDetailedExceptionForInvalidParameter('parentObject.id', parentObject?.id, 'extendedDelegationsAndCryptedForeignKeys', arguments)
732
-
733
- this.throwDetailedExceptionForInvalidParameter(
734
- 'secretIdOfModifiedObject',
735
- secretIdOfModifiedObject,
736
- 'extendedDelegationsAndCryptedForeignKeys',
737
- arguments
738
- )
739
-
740
- return this.getDataOwner(ownerId)
741
- .then(async ({ dataOwner: owner }) => {
742
- const publicKeys = await this.getPublicKeys()
743
- const { owner: modifiedOwner, aesExchangeKeys } = await this.getOrCreateHcPartyKeys(owner, delegateId)
744
- const importedAESHcPartyKey = await this.decryptAnyAesExchangeKeyForOwner(aesExchangeKeys, ownerId, delegateId, ownerId, publicKeys)
745
-
746
- modifiedObject = modifiedObject?.id === owner.id ? (modifiedOwner as T) : modifiedObject
747
-
748
- return {
749
- previousDecryptedDelegations: await Promise.all(
750
- ((modifiedObject.delegations || {})[delegateId] || []).map(
751
- (d: Delegation) =>
752
- (d.key &&
753
- d.owner === ownerId &&
754
- this._AES.decrypt(importedAESHcPartyKey.key, hex2ua(d.key), importedAESHcPartyKey.rawKey).catch(() => {
755
- console.log(
756
- `Cannot decrypt delegation from ${d.owner} to ${d.delegatedTo} for object with id ${modifiedObject.id}:`,
757
- modifiedObject
758
- )
759
- return Promise.resolve()
760
- })) ||
761
- Promise.resolve()
762
- ) as Array<Promise<ArrayBuffer>>
763
- ),
764
-
765
- previousDecryptedCryptedForeignKeys: await Promise.all(
766
- ((modifiedObject.cryptedForeignKeys || {})[delegateId] || []).map(
767
- (d: Delegation) =>
768
- (d.key &&
769
- d.owner === ownerId &&
770
- this._AES.decrypt(importedAESHcPartyKey.key, hex2ua(d.key), importedAESHcPartyKey.rawKey).catch(() => {
771
- console.log(
772
- `Cannot decrypt cryptedForeignKeys from ${d.owner} to ${d.delegatedTo} for object with id ${modifiedObject.id}:`,
773
- modifiedObject
774
- )
775
- return Promise.resolve()
776
- })) ||
777
- Promise.resolve()
778
- ) as Array<Promise<ArrayBuffer>>
779
- ),
780
-
781
- cryptedDelegation: await this._AES.encrypt(
782
- importedAESHcPartyKey.key,
783
- string2ua(modifiedObject.id + ':' + secretIdOfModifiedObject!).buffer as ArrayBuffer,
784
- importedAESHcPartyKey.rawKey
785
- ),
786
-
787
- cryptedForeignKey: parentObject
788
- ? await this._AES.encrypt(
789
- importedAESHcPartyKey.key,
790
- string2ua(modifiedObject.id + ':' + parentObject.id).buffer as ArrayBuffer,
791
- importedAESHcPartyKey.rawKey
792
- )
793
- : undefined,
794
- }
795
- })
796
- .then(({ previousDecryptedDelegations, previousDecryptedCryptedForeignKeys, cryptedDelegation, cryptedForeignKey }) => {
797
- //try to limit the extent of the modifications to the delegations by preserving the redundant delegation already present and removing duplicates
798
- //For delegate delegateId, we create:
799
- // 1. an array of objects { d : {owner,delegatedTo,encrypted(key)}} with one object for each existing delegation and the new key concatenated
800
- // 2. an array of objects { k : decrypted(key)} with one object for the existing delegations and the new key concatenated
801
- // We merge them to get one array of objects: { d: {owner,delegatedTo,encrypted(key)}, k: decrypted(key)}
802
- const delegationCryptedDecrypted = (
803
- _.merge(
804
- ((modifiedObject.delegations || {})[delegateId] || []).map((d: Delegation) => ({
805
- d,
806
- })),
807
- (previousDecryptedDelegations || []).map((dd) => (dd ? ua2string(dd) : null)).map((k) => ({ k }))
808
- ) as { d: Delegation; k: string }[]
809
- )
810
- .filter(({ d, k }) => !!k || d.owner !== ownerId) //Only keep the ones created by us that can still be decrypted
811
- .map(({ d, k }) => ({
812
- d,
813
- k: k || this.randomUuid(),
814
- })) // Use some unique id that ensures the delegation not created by us are going to be held
815
- .concat([
816
- {
817
- d: {
818
- owner: ownerId,
819
- delegatedTo: delegateId,
820
- key: ua2hex(cryptedDelegation!),
821
- },
822
- k: modifiedObject.id + ':' + secretIdOfModifiedObject!,
823
- },
824
- ])
825
-
826
- const allDelegations = _.cloneDeep(modifiedObject.delegations || {})
827
-
828
- //Only keep one version of the decrypted key
829
- allDelegations[delegateId] = _.uniqBy(delegationCryptedDecrypted, (x: any) => x.k).map((x: any) => x.d)
830
-
831
- const cryptedForeignKeysCryptedDecrypted = (
832
- _.merge(
833
- ((modifiedObject.cryptedForeignKeys || {})[delegateId] || []).map((d: Delegation) => ({
834
- d,
835
- })),
836
- (previousDecryptedCryptedForeignKeys || []).map((dd) => (dd ? ua2string(dd) : null)).map((k) => ({ k }))
837
- ) as { d: Delegation; k: string }[]
838
- )
839
- .filter(({ d, k }) => !!k || d.owner !== ownerId) //Only keep the ones created by us that can still be decrypted
840
- .map(({ d, k }: { d: Delegation; k: string }) => ({
841
- d,
842
- k: k || this.randomUuid(),
843
- })) // Use some unique id that ensures the delegation not created by us are going to be held
844
- .concat(
845
- cryptedForeignKey
846
- ? [
847
- {
848
- d: {
849
- owner: ownerId,
850
- delegatedTo: delegateId,
851
- key: ua2hex(cryptedForeignKey),
852
- },
853
- k: modifiedObject.id + ':' + parentObject?.id,
854
- },
855
- ]
856
- : []
857
- )
858
-
859
- const allCryptedForeignKeys = _.cloneDeep(modifiedObject.cryptedForeignKeys || {})
860
- if (cryptedForeignKeysCryptedDecrypted.length > 0) {
861
- allCryptedForeignKeys[delegateId] = _.uniqBy(cryptedForeignKeysCryptedDecrypted, (x: any) => x.k).map((x: any) => x.d)
862
- }
863
-
864
- return {
865
- modifiedObject,
866
- delegations: allDelegations,
867
- cryptedForeignKeys: allCryptedForeignKeys,
868
- secretId: secretIdOfModifiedObject,
869
- }
870
- })
871
- }
872
-
873
- // What we need is to find aes exchange keys on the owner ! Even just with whom he shared information, we don't care about aes exchange keys
874
- private async _getDelegateIdsOf(owner: HealthcareParty | Patient | Device): Promise<string[]> {
875
- const mapOfAesExchKeysDelegates = Object.entries(owner.aesExchangeKeys ?? {}).reduce(
876
- (map, [, aesExchKeys]) => map.concat(Object.keys(aesExchKeys).filter((delegateId) => !map.includes(delegateId))),
877
- [] as string[]
878
- )
879
-
880
- return owner.hcPartyKeys
881
- ? mapOfAesExchKeysDelegates.concat(Object.keys(owner.hcPartyKeys).filter((delegateId) => !mapOfAesExchKeysDelegates.includes(delegateId)))
882
- : mapOfAesExchKeysDelegates
883
- }
884
-
885
- async getEncryptedAesExchangeKeys(
886
- owner: HealthcareParty | Patient | Device,
887
- delegateId: string
888
- ): Promise<{ [pubKeyIdentifier: string]: { [pubKeyFingerprint: string]: string } }> {
889
- const publicKeys = await this.getPublicKeys()
890
- const mapOfAesExchangeKeys = Object.entries(owner.aesExchangeKeys ?? {})
891
- .filter((e) => e[1][delegateId] && Object.keys(e[1][delegateId]).some((k1) => publicKeys.some((pk) => pk.endsWith(k1))))
892
- .reduce((map, e) => {
893
- const candidates = Object.entries(e[1][delegateId]) //[fingerprint of delegate pub key, key], [fingerprint of owner pub key, key]
894
- const [publicKeyFingerprint, encryptedAesExchangeKey] = candidates[candidates.findIndex(([k, v]) => publicKeys.some((pk) => pk.endsWith(k)))]
895
- return { ...map, [e[0]]: { [publicKeyFingerprint]: encryptedAesExchangeKey } }
896
- }, {} as { [pubKeyIdentifier: string]: { [pubKeyFingerprint: string]: string } })
897
-
898
- if (!owner.publicKey || mapOfAesExchangeKeys[owner.publicKey] || !owner.hcPartyKeys?.[delegateId]) {
899
- return mapOfAesExchangeKeys
900
- }
901
- const delegate = (await this.getDataOwner(delegateId)).dataOwner
902
- if (delegate.publicKey && publicKeys.includes(delegate.publicKey)) {
903
- return {
904
- ...mapOfAesExchangeKeys,
905
- [owner.publicKey]: { [(await this.getDataOwner(delegateId)).dataOwner.publicKey?.slice(-32)!]: owner.hcPartyKeys[delegateId][1] },
906
- }
907
- } else if (publicKeys.includes(owner.publicKey)) {
908
- return { ...mapOfAesExchangeKeys, [owner.publicKey]: { [owner.publicKey.slice(-32)]: owner.hcPartyKeys[delegateId][0] } }
909
- }
910
- return mapOfAesExchangeKeys
911
- }
912
-
913
- async getOrCreateHcPartyKeys(
914
- owner: HealthcareParty | Patient | Device,
915
- delegateId: string
916
- ): Promise<{
917
- owner: HealthcareParty | Patient | Device
918
- aesExchangeKeys: { [pubKeyIdentifier: string]: { [pubKeyFingerprint: string]: string } }
919
- }> {
920
- const aesExchangeKeys = await this.getEncryptedAesExchangeKeys(owner, delegateId)
921
- if (Object.keys(aesExchangeKeys).length) {
922
- return { owner, aesExchangeKeys }
923
- }
924
-
925
- const modifiedOwner = await this.generateKeyForDelegate(owner.id!, delegateId)
926
- return { owner: modifiedOwner, aesExchangeKeys: await this.getEncryptedAesExchangeKeys(modifiedOwner, delegateId) }
927
- }
928
-
929
- /**
930
- * Retrieve the owners HealthCareParty key, decrypt it, and
931
- * use it to encrypt & initialize the "encryptionKeys" object
932
- * and return it.
933
- * @param createdObject
934
- * @param ownerId
935
- */
936
- initEncryptionKeys(
937
- createdObject: any,
938
- ownerId: string
939
- ): Promise<{
940
- encryptionKeys: any
941
- secretId: string
942
- }> {
943
- this.throwDetailedExceptionForInvalidParameter('createdObject.id', createdObject.id, 'initEncryptionKeys', arguments)
944
-
945
- const secretId = this.randomUuid()
946
- return this.getDataOwner(ownerId).then(async ({ dataOwner: owner }) => {
947
- const publicKeys = await this.getPublicKeys()
948
- const { owner: modifiedOwner, aesExchangeKeys } = await this.getOrCreateHcPartyKeys(owner, ownerId)
949
- const importedAESHcPartyKey = await this.decryptAnyAesExchangeKeyForOwner(aesExchangeKeys, ownerId, ownerId, ownerId, publicKeys)
950
- const encryptedEncryptionKeys = await this._AES.encrypt(
951
- importedAESHcPartyKey.key,
952
- string2ua(createdObject.id + ':' + secretId),
953
- importedAESHcPartyKey.rawKey
954
- )
955
-
956
- return {
957
- encryptionKeys: _.fromPairs([
958
- [
959
- ownerId,
960
- [
961
- {
962
- owner: ownerId,
963
- delegatedTo: ownerId,
964
- key: ua2hex(encryptedEncryptionKeys),
965
- },
966
- ],
967
- ],
968
- ]),
969
- secretId: secretId,
970
- }
971
- })
972
- }
973
-
974
- /**
975
- * Gets an updated instance of the EKs of `modifiedObject`.
976
- * The updated EKs contain a new EK to provide delegation from delegator HcP with id `ownerId` to delegate HcP with id `delegateId`.
977
- * @param modifiedObject : the object of which EKs will be cloned, the clone will be used to append the new EK, and then used as return value; will NOT be mutated
978
- * @param ownerId : delegator HcP id
979
- * @param delegateId : delegate HcP id
980
- * @param secretEncryptionKeyOfObject : secret Id for the EK (Content Encryption Key)
981
- * @returns
982
- * - **encryptionKeys** existing EKs of the `modifiedObject`, appended with a new EK item (owner: `ownerId`, delegatedTo: `delegateId`, encrypted key with secretId:
983
- * `secretEncryptionKeyOfObject` )
984
- * - **secretId** which is the given input parameter `secretEncryptionKeyOfObject`
985
- */
986
- async appendEncryptionKeys<T extends EncryptedEntity>(
987
- //TODO: suggested name: getExtendedEKwithDelegationFromDelegatorToDelegate
988
- modifiedObject: T,
989
- ownerId: string,
990
- delegateId: string,
991
- secretEncryptionKeyOfObject: string
992
- ): Promise<{
993
- modifiedObject: T
994
- encryptionKeys: { [key: string]: Array<Delegation> }
995
- secretId: string | null //secretEncryptionKeyOfObject is returned to avoid the need for a new decryption when chaining calls
996
- }> {
997
- this.throwDetailedExceptionForInvalidParameter('modifiedObject.id', modifiedObject.id, 'appendEncryptionKeys', arguments) //modifiedObject should never be null
998
-
999
- this.throwDetailedExceptionForInvalidParameter('secretEncryptionKeyOfObject', secretEncryptionKeyOfObject, 'appendEncryptionKeys', arguments)
1000
-
1001
- const owner = (await this.getDataOwner(ownerId)).dataOwner
1002
- const publicKeys = await this.getPublicKeys()
1003
- const { owner: modifiedOwner, aesExchangeKeys } = await this.getOrCreateHcPartyKeys(owner, delegateId)
1004
- modifiedObject = modifiedObject?.id === owner.id ? (modifiedOwner as T) : modifiedObject
1005
- const importedAESHcPartyKey = await this.decryptAnyAesExchangeKeyForOwner(aesExchangeKeys, ownerId, ownerId, delegateId, publicKeys)
1006
- const previousDecryptedEncryptionKeys = await Promise.all(
1007
- ((modifiedObject.encryptionKeys || {})[delegateId] || []).map(
1008
- (d: Delegation) =>
1009
- (d.key &&
1010
- d.owner === ownerId &&
1011
- this._AES.decrypt(importedAESHcPartyKey.key, hex2ua(d.key), importedAESHcPartyKey.rawKey).catch(() => {
1012
- console.log(
1013
- `Cannot decrypt encryption key from ${d.owner} to ${d.delegatedTo} for object with id ${modifiedObject.id}:`,
1014
- modifiedObject
1015
- )
1016
- return Promise.resolve()
1017
- })) ||
1018
- Promise.resolve()
1019
- ) as Array<Promise<ArrayBuffer>>
1020
- )
1021
- const encryptedEncryptionKey = await this._AES.encrypt(
1022
- importedAESHcPartyKey.key,
1023
- string2ua(modifiedObject.id + ':' + secretEncryptionKeyOfObject)
1024
- )
1025
- //try to limit the extent of the modifications to the delegations by preserving the redundant encryption keys already present and removing duplicates
1026
- //For delegate delegateId, we create:
1027
- // 1. an array of objects { d : {owner,delegatedTo,encrypted(key)}} with one object for the existing encryption keys and the new key concatenated
1028
- // 2. an array of objects { k : decrypted(key)} with one object for the existing delegations and the new key concatenated
1029
- // We merge them to get one array of objects: { d: {owner,delegatedTo,encrypted(key)}, k: decrypted(key)}
1030
- const encryptionKeysCryptedDecrypted = (
1031
- _.merge(
1032
- ((modifiedObject.encryptionKeys || {})[delegateId] || []).map((d: Delegation) => ({
1033
- d,
1034
- })),
1035
- (previousDecryptedEncryptionKeys || []).map((dd) => (dd ? ua2string(dd) : null)).map((k) => ({ k }))
1036
- ) as { d: Delegation; k: string }[]
1037
- )
1038
- .filter(({ d, k }: { d: Delegation; k: string }) => !!k || d.owner !== ownerId) //Only keep the ones created by us that can still be decrypted
1039
- .map(({ d, k }: { d: Delegation; k: string }) => ({ d, k: k || this.randomUuid() }))
1040
- .concat([
1041
- {
1042
- d: {
1043
- owner: ownerId,
1044
- delegatedTo: delegateId,
1045
- key: ua2hex(encryptedEncryptionKey),
1046
- },
1047
- k: modifiedObject.id + ':' + secretEncryptionKeyOfObject!,
1048
- },
1049
- ])
1050
-
1051
- const allEncryptionKeys = _.cloneDeep(modifiedObject.encryptionKeys || {})
1052
- allEncryptionKeys[delegateId] = _.uniqBy(encryptionKeysCryptedDecrypted, (x: any) => x.k).map((x: any) => x.d)
1053
-
1054
- return {
1055
- modifiedObject: modifiedObject,
1056
- encryptionKeys: allEncryptionKeys,
1057
- secretId: secretEncryptionKeyOfObject,
1058
- }
1059
- }
1060
-
1061
- /**
1062
- * Gets an updated `child` object that will have its SPKs, CFKs, KSs updated to include delegations from delegator HcP with id `ownerId` to delegate HcP with id `delegateId`
1063
- * The SFKs of `child` are not updated, so this method assumes this is not the initial delegation on the `child` object
1064
- * The method also performs some deduplication of all types of delegations.
1065
- * @param parent : the parent object of `child`; will NOT be mutated
1066
- * @param child : the object that will be mutated and returned
1067
- * @param ownerId delegator HcP id
1068
- * @param delegateId delegate HcP id
1069
- * @param secretDelegationKey the secret Id used in the child object to generate the SPK
1070
- * @param secretEncryptionKey the secret Id used in the child object to generate the EK (Content Encryption Key)
1071
- * @returns - an updated `child` object that will contain updated SPKs, CFKs, EKs
1072
- * */
1073
-
1074
- async addDelegationsAndEncryptionKeys<T extends EncryptedEntity>(
1075
- //TODO: suggested name: updateChildGenericDelegationsFromDelegatorToDelegate
1076
- parent: EncryptedParentEntity | null,
1077
- child: T,
1078
- ownerId: string,
1079
- delegateId: string,
1080
- secretDelegationKey: string | null,
1081
- secretEncryptionKey: string | null
1082
- ): Promise<T> {
1083
- if (parent) this.throwDetailedExceptionForInvalidParameter('parent.id', parent.id, 'addDelegationsAndEncryptionKeys', arguments)
1084
-
1085
- this.throwDetailedExceptionForInvalidParameter('child.id', child.id, 'addDelegationsAndEncryptionKeys', arguments)
1086
-
1087
- const extendedChildObjectSPKsAndCFKs = secretDelegationKey
1088
- ? await this.extendedDelegationsAndCryptedForeignKeys(child, parent, ownerId, delegateId, secretDelegationKey)
1089
- : { modifiedObject: child, delegations: {}, cryptedForeignKeys: {}, secretId: null }
1090
-
1091
- const extendedChildObjectEKs = secretEncryptionKey
1092
- ? await this.appendEncryptionKeys(extendedChildObjectSPKsAndCFKs.modifiedObject, ownerId, delegateId, secretEncryptionKey)
1093
- : { encryptionKeys: {}, modifiedObject: extendedChildObjectSPKsAndCFKs.modifiedObject }
1094
-
1095
- const latestObject = extendedChildObjectEKs.modifiedObject
1096
-
1097
- return _.assign(latestObject, {
1098
- // Conservative version ... We might want to be more aggressive with the deduplication of keys
1099
- // For each delegate, we are going to concatenate to the src (the new delegations), the object in dest (the current delegations)
1100
- // for which we do not find an equivalent delegation (same delegator, same delegate)
1101
- delegations: _.assignWith(child.delegations, extendedChildObjectSPKsAndCFKs.delegations, (dest, src) =>
1102
- (src || []).concat(_.filter(dest, (d: Delegation) => !src.some((s: Delegation) => s.owner === d.owner && s.delegatedTo === d.delegatedTo)))
1103
- ),
1104
- cryptedForeignKeys: _.assignWith(child.cryptedForeignKeys, extendedChildObjectSPKsAndCFKs.cryptedForeignKeys, (dest, src) =>
1105
- (src || []).concat(_.filter(dest, (d: Delegation) => !src.some((s: Delegation) => s.owner === d.owner && s.delegatedTo === d.delegatedTo)))
1106
- ),
1107
- encryptionKeys: _.assignWith(child.encryptionKeys, extendedChildObjectEKs.encryptionKeys, (dest, src) =>
1108
- (src || []).concat(_.filter(dest, (d: Delegation) => !src.some((s: Delegation) => s.owner === d.owner && s.delegatedTo === d.delegatedTo)))
1109
- ),
1110
- })
1111
- }
1112
-
1113
- /**
1114
- * Gets the secret IDs (SFKs) inside decrypted SPKs of the given `document`, decrypted by the HcP with the given `hcpartyId` AND by its HcP parents
1115
- * @param document : the object of which delegations (SPKs) to decrypt
1116
- * @param hcpartyId : the id of the delegate HcP
1117
- * @returns - **extractedKeys** array containing secret IDs (SFKs) from decrypted SPKs, from both given HcP and its parents ; can contain duplicates
1118
- * - **hcpartyId** the given `hcpartyId` OR, if a parent exist, the HcP id of the top parent in the hierarchy (even if that parent has no delegations)
1119
- */
1120
- //TODO: even if there are no delegations for parent HCP (but the parent exists), the returned hcpartyId will be the one of the parent; is this ok?
1121
- extractDelegationsSFKs(
1122
- //TODO: suggested name: getSecretIDsSPKofHcpAndParentsFromDocument
1123
- document: EncryptedEntity | null,
1124
- hcpartyId?: string
1125
- ): Promise<{ extractedKeys: Array<string>; hcpartyId?: string }> {
1126
- if (!document || !hcpartyId) {
1127
- return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId }) //TODO: thow exception instead?
1128
- }
1129
- const delegationsForAllDelegates = document.delegations
1130
- if (!delegationsForAllDelegates || !Object.keys(delegationsForAllDelegates).length) {
1131
- console.log(`There is no delegation in document (${document.id})`)
1132
- return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId })
1133
- }
1134
- return this.extractKeysFromDelegationsForHcpHierarchy(hcpartyId, document.id!, delegationsForAllDelegates)
1135
- }
1136
-
1137
- /**
1138
- * Gets the secret IDs (SFKs) inside decrypted SPKs of the given `document`, decrypted by the HcP with the given `hcpartyId` AND by its HcP parents
1139
- * @param document : the object of which delegations (SPKs) to decrypt
1140
- * @param hcpartyId : the id of the delegate HcP
1141
- * @returns - **extractedKeys** array containing secret IDs (SFKs) from decrypted SPKs, from both given HcP and its parents ; can contain duplicates
1142
- * - **hcpartyId** the given `hcpartyId` OR, if a parent exist, the HcP id of the top parent in the hierarchy (even if that parent has no delegations)
1143
- */
1144
- extractSFKsHierarchyFromDelegations(
1145
- document: EncryptedEntity | null,
1146
- hcpartyId?: string
1147
- ): Promise<Array<{ hcpartyId: string; extractedKeys: Array<string> }>> {
1148
- if (!document || !hcpartyId) {
1149
- return Promise.resolve([])
1150
- }
1151
- const delegationsForAllDelegates = document.delegations
1152
- if (!delegationsForAllDelegates || !Object.keys(delegationsForAllDelegates).length) {
1153
- console.log(`There is no delegation in document (${document.id})`)
1154
- return Promise.resolve([])
1155
- }
1156
- return this.extractKeysHierarchyFromDelegationLikes(hcpartyId, document.id!, delegationsForAllDelegates)
1157
- }
1158
-
1159
- // noinspection JSUnusedGlobalSymbols
1160
-
1161
- extractCryptedFKs(
1162
- //TODO: suggested name: getSecretIDsCFKofHcpAndParentsFromDocument
1163
- document: EncryptedEntity | null,
1164
- hcpartyId: string
1165
- ): Promise<{ extractedKeys: Array<string>; hcpartyId: string }> {
1166
- if (!document || !document.cryptedForeignKeys) {
1167
- return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId })
1168
- }
1169
- const cfksForAllDelegates = document.cryptedForeignKeys
1170
- if (!cfksForAllDelegates || !Object.keys(cfksForAllDelegates).length) {
1171
- console.log(`There is no cryptedForeignKeys in document (${document.id})`)
1172
- return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId })
1173
- }
1174
- return this.extractKeysFromDelegationsForHcpHierarchy(hcpartyId, document.id!, cfksForAllDelegates)
1175
- }
1176
-
1177
- extractEncryptionsSKs(
1178
- //TODO: suggested name: getSecretIDsEKofHcpAndParentsFromDocument
1179
- document: EncryptedEntity,
1180
- hcpartyId: string
1181
- ): Promise<{ extractedKeys: Array<string>; hcpartyId: string }> {
1182
- if (!document.encryptionKeys) {
1183
- return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId })
1184
- }
1185
- const eckeysForAllDelegates = document.encryptionKeys
1186
- if (!eckeysForAllDelegates || !Object.keys(eckeysForAllDelegates).length) {
1187
- return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId })
1188
- }
1189
- return this.extractKeysFromDelegationsForHcpHierarchy(hcpartyId, document.id!, eckeysForAllDelegates)
1190
- }
1191
-
1192
- extractDelegationsSFKsAndEncryptionSKs(ety: EncryptedEntity, ownerId: string) {
1193
- const delegationsSfksOwnerPromise = this.extractDelegationsSFKs(ety, ownerId).then((xks) => xks.extractedKeys) //Will climb up hierarchy
1194
- const encryptionKeysOwnerPromise = this.extractEncryptionsSKs(ety, ownerId).then((xks) => xks.extractedKeys) //Will climb up hierarchy
1195
-
1196
- return Promise.all([delegationsSfksOwnerPromise, encryptionKeysOwnerPromise])
1197
- }
1198
-
1199
- /**
1200
- * Get decrypted generic secret IDs (secretIdSPKs, parentIds, secretIdEKs) from generic delegations (SPKs, CFKs, EKs)
1201
- * 1. Get HealthCareParty from it's Id.
1202
- * 2. Decrypt the keys of the given HCP.
1203
- * 3. Decrypt the parent's key if it has parent.
1204
- * 4. Return the decrypted key corresponding to the Health Care Party.
1205
- * @param hcpartyId : the id of the delegate HcP (including its parents) for which to decrypt `extractedKeys`
1206
- * @param objectId : the id of the object/document of which delegations to decrypt ; used just to log to console a message (Cryptographic mistake) in case the object id inside SPK, CFK, EK is different from this one
1207
- * @param delegations : generic delegations (can be SPKs, CFKs, EKs) for all delegates from where to extract `extractedKeys`
1208
- * @returns - **extractedKeys** array containing secret IDs from decrypted generic delegations, from both HCP with given `hcpartyId` and its parents; can contain duplicates
1209
- * - **hcpartyId** the given `hcpartyId` OR, if a parent exist, the HCP id of the top parent in the hierarchy (even if that parent has no delegations)
1210
- */
1211
- //TODO: even if there are no delegations for parent HCP (but the parent exists), the returned hcpartyId will be the one of the parent
1212
- async extractKeysHierarchyFromDelegationLikes(
1213
- //TODO suggested name: getSecretIdsOfHcpAndParentsFromGenericDelegations
1214
- hcpartyId: string,
1215
- objectId: string,
1216
- delegations: { [key: string]: Array<Delegation> }
1217
- ): Promise<Array<{ hcpartyId: string; extractedKeys: Array<string> }>> {
1218
- const { dataOwner: hcp } = await this.getDataOwner(hcpartyId)
1219
- const extractedKeys = []
1220
- if (delegations[hcpartyId]?.length) {
1221
- const decryptedAndImportedAesHcPartyKeys = await this.getDecryptedAesExchangeKeysOfDelegateAndParentsFromGenericDelegations(
1222
- hcpartyId,
1223
- delegations,
1224
- false
1225
- )
1226
- const collatedAesKeysFromDelegatorToHcpartyId = decryptedAndImportedAesHcPartyKeys.reduce(
1227
- (map, k) => ({ ...map, [k.delegatorId]: (map[k.delegatorId] ?? []).concat([k]) }),
1228
- {} as { [key: string]: { key: CryptoKey; rawKey: string }[] }
1229
- )
1230
- extractedKeys.push(...(await this.decryptKeyInDelegationLikes(delegations[hcpartyId], collatedAesKeysFromDelegatorToHcpartyId, objectId)))
1231
- }
1232
-
1233
- return (hcp as HealthcareParty).parentId
1234
- ? [
1235
- ...(await this.extractKeysHierarchyFromDelegationLikes((hcp as HealthcareParty).parentId!, objectId, delegations)),
1236
- { extractedKeys: extractedKeys, hcpartyId: hcpartyId },
1237
- ]
1238
- : [{ extractedKeys: extractedKeys, hcpartyId: hcpartyId }]
1239
- }
1240
-
1241
- /**
1242
- * Get decrypted generic secret IDs (secretIdSPKs, parentIds, secretIdEKs) from generic delegations (SPKs, CFKs, EKs)
1243
- * 1. Get Data Owner (HCP, Patient or Device) from it's Id.
1244
- * 2. Decrypt the keys of the given data owner.
1245
- * 3. Decrypt the parent's key if it has parent.
1246
- * 4. Return the decrypted key corresponding to the Health Care Party.
1247
- * @param dataOwnerId : the id of the delegate data owner (including its parents) for which to decrypt `extractedKeys`
1248
- * @param objectId : the id of the object/document of which delegations to decrypt ; used just to log to console a message (Cryptographic mistake) in case the object id inside SPK, CFK, EK is different from this one
1249
- * @param delegations : generic delegations (can be SPKs, CFKs, EKs) for all delegates from where to extract `extractedKeys`
1250
- * @returns - **extractedKeys** array containing secret IDs from decrypted generic delegations, from both data owner with given `dataOwnerId` and its parents; can contain duplicates
1251
- * - **dataOwnerId** the given `dataOwnerId` OR, if a parent exist, the data owner id of the top parent in the hierarchy (even if that parent has no delegations)
1252
- */
1253
- //TODO: even if there are no delegations for parent HCP (but the parent exists), the returned dataOwnerId will be the one of the parent
1254
- extractKeysFromDelegationsForHcpHierarchy(
1255
- //TODO suggested name: getSecretIdsOfHcpAndParentsFromGenericDelegations
1256
- dataOwnerId: string,
1257
- objectId: string,
1258
- delegations: { [key: string]: Array<Delegation> }
1259
- ): Promise<{ extractedKeys: Array<string>; hcpartyId: string }> {
1260
- return this.getDataOwner(dataOwnerId)
1261
- .then(({ dataOwner: hcp }) =>
1262
- (delegations[dataOwnerId] && delegations[dataOwnerId].length
1263
- ? this.getDecryptedAesExchangeKeysOfDelegateAndParentsFromGenericDelegations(dataOwnerId, delegations, false).then(
1264
- (decryptedAndImportedAesHcPartyKeys) => {
1265
- const collatedAesKeysFromDelegatorToHcpartyId: {
1266
- [key: string]: { key: CryptoKey; rawKey: string }[]
1267
- } = {}
1268
- decryptedAndImportedAesHcPartyKeys.forEach((k) => {
1269
- ;(collatedAesKeysFromDelegatorToHcpartyId[k.delegatorId] ?? (collatedAesKeysFromDelegatorToHcpartyId[k.delegatorId] = [])).push(k)
1270
- })
1271
- return this.decryptKeyInDelegationLikes(delegations[dataOwnerId], collatedAesKeysFromDelegatorToHcpartyId, objectId!)
1272
- }
1273
- )
1274
- : Promise.resolve([])
1275
- )
1276
- .then(async (extractedKeys) => {
1277
- if (extractedKeys.length == 0) {
1278
- return await this._extractDelegationsKeysUsingDataOwnerDelegateAesExchangeKeys(hcp, delegations, objectId)
1279
- }
1280
- return extractedKeys
1281
- })
1282
- .then(async (extractedKeys) => {
1283
- const parentExtractedKeys = (hcp as HealthcareParty).parentId
1284
- ? await this.extractKeysFromDelegationsForHcpHierarchy((hcp as HealthcareParty).parentId!, objectId, delegations)
1285
- : { extractedKeys: [], hcpartyId: undefined }
1286
- return { extractedKeys: extractedKeys.concat(parentExtractedKeys.extractedKeys), hcpartyId: parentExtractedKeys.hcpartyId ?? dataOwnerId }
1287
- })
1288
- )
1289
- .catch((e) => {
1290
- console.error(`DataOwner with id ${dataOwnerId} cannot be resolved`)
1291
- throw e
1292
- })
1293
- }
1294
-
1295
- /**
1296
- * This method covers the use case when a DataOwner found back access to its data, and needs to use the delegations of its delegates instead
1297
- * of its own ones
1298
- *
1299
- * @param dataOwner The current data owner from whom we want to decrypt the aesExchangeKeys
1300
- * @param delegations The object delegations to decrypt
1301
- * @param objectId The object to decrypt id
1302
- * @private
1303
- */
1304
- private async _extractDelegationsKeysUsingDataOwnerDelegateAesExchangeKeys(
1305
- dataOwner: Patient | Device | HealthcareParty,
1306
- delegations: { [p: string]: Array<Delegation> },
1307
- objectId: string
1308
- ) {
1309
- // Find other keys through aesExchangeKeys
1310
- const dataOwnerPubKeys = await this.getPublicKeys()
1311
- const keysToDecrypt = fold(
1312
- Object.entries(dataOwner.aesExchangeKeys!),
1313
- {} as { [delegateId: string]: { [pubKey: string]: { [pubKeyFingerprint: string]: string } } },
1314
- (acc, [pub, aesForPub]) => {
1315
- if (dataOwnerPubKeys.find((pubKey) => pubKey.slice(-32) == pub.slice(-32)) == undefined) {
1316
- // We get AES Keys only from delegates of keys we don't currently have
1317
- // Otherwise, decrypted AES Keys would have previously worked
1318
- Object.entries(aesForPub).forEach(([delegateId, aesKeys]) => {
1319
- if (delegateId != dataOwner.id) {
1320
- const aesAcc = {} as { [pubKeyFingerprint: string]: string }
1321
- Object.entries(aesKeys)
1322
- .filter(([encrPubKey]) => dataOwnerPubKeys.some((pubKey) => pubKey.slice(-32) == encrPubKey))
1323
- .forEach(([pubKeyFingerprint, aesEncr]) => {
1324
- aesAcc[pubKeyFingerprint] = aesEncr
1325
- })
1326
-
1327
- if (acc[delegateId] == undefined) {
1328
- acc[delegateId] = {}
1329
- }
1330
- acc[delegateId][pub] = aesAcc
1331
- }
1332
- })
1333
- }
1334
- return acc
1335
- }
1336
- )
1337
-
1338
- const decryptedAndImportedAesHcPartyKeys = await foldAsync(
1339
- Object.entries(keysToDecrypt),
1340
- [] as DelegatorAndKeys[],
1341
- async (delKeysAcc, [delegateId, keysForDelegate]) => {
1342
- try {
1343
- delKeysAcc.push(await this.decryptAnyAesExchangeKeyForOwner(keysForDelegate, dataOwner.id!, dataOwner.id!, delegateId, dataOwnerPubKeys))
1344
- } catch (e) {
1345
- console.log(`Could not decrypt aesExchangeKeys for delegate ${delegateId}`)
1346
- }
1347
- return delKeysAcc
1348
- }
1349
- )
1350
-
1351
- const collatedAesKeysFromDelegatorToHcpartyId = decryptedAndImportedAesHcPartyKeys.reduce(
1352
- (map, k) => ({ ...map, [k.delegatorId]: (map[k.delegatorId] ?? []).concat([k]) }),
1353
- {} as { [key: string]: { key: CryptoKey; rawKey: string }[] }
1354
- )
1355
-
1356
- const delegateIdsWithNewExtractedAesKeys = Object.keys(keysToDecrypt)
1357
- const delegationsToDecrypt = fold(Object.entries(delegations), [] as Delegation[], (acc, [delegateId, del]) => {
1358
- if (delegateIdsWithNewExtractedAesKeys.find((id) => id == delegateId) != undefined) {
1359
- acc.push(...delegations[delegateId])
1360
- }
1361
- return acc
1362
- })
1363
-
1364
- return this.decryptKeyInDelegationLikes(delegationsToDecrypt, collatedAesKeysFromDelegatorToHcpartyId, objectId!)
1365
- }
1366
-
1367
- /**
1368
- * Gets an array of generic secret IDs decrypted from a list of generic delegations (SPKs, CFKs, EKs) `delegationsArray`
1369
- * If a particular generic delegation thows an exception when decrypted, the return value for it's secret ID will be 'false' and a message is logged to console
1370
- * For each one of the delegations in the `delegationsArray`, it tries to decrypt with the decryptedHcPartyKey of the owner of that delegation;
1371
- *
1372
- * @param delegationsArray : generic delegations array
1373
- * @param aesKeys : **key** HcP ids of delegators/owners in the `delegationsArray`, each with its own decryptedHcPartyKey
1374
- * @param masterId : is the object id to which the generic delegation belongs to
1375
- * - used only to check whether the object.id matches the one stored in the decrypted generic delegation item
1376
- * - even if there's no match, the secret ID is kept as a valid result (and a message logged to console)
1377
- * @returns array of generic secret IDs (secretIdSPK, parentId, secretIdEK)
1378
- */
1379
- async decryptKeyInDelegationLikes(
1380
- //TODO: suggested name: getSecretIdsFromGenericDelegations
1381
- delegationsArray: Array<Delegation>,
1382
- aesKeysForDataOwnerId: { [key: string]: { key: CryptoKey; rawKey: string }[] },
1383
- masterId: string
1384
- ): Promise<Array<string>> {
1385
- const decryptPromises: Array<Promise<string | undefined>> = delegationsArray.map(async (genericDelegationItem) => {
1386
- const aesKeys = aesKeysForDataOwnerId[genericDelegationItem.owner!]
1387
- if (aesKeys?.length) {
1388
- return aesKeys.reduce(async (acc, aesKey) => {
1389
- const accValue = await acc
1390
- if (accValue) {
1391
- return accValue
1392
- }
1393
- try {
1394
- const decryptedGenericDelegationKey = await this._AES.decrypt(aesKey.key, hex2ua(genericDelegationItem.key!), aesKey.rawKey)
1395
- const results = ua2string(decryptedGenericDelegationKey).split(':')
1396
-
1397
- const objectId = results[0] //must be the ID of the object, for checksum
1398
- const genericSecretId = results[1]
1399
-
1400
- const details =
1401
- 'object ID: ' + masterId + '; generic delegation from ' + genericDelegationItem.owner + ' to ' + genericDelegationItem.delegatedTo
1402
-
1403
- if (!objectId) console.warn('Object id is empty; ' + details)
1404
- if (!genericSecretId) console.warn('Secret id is empty; ' + details)
1405
-
1406
- if (objectId !== masterId) {
1407
- /*console.log(
1408
- "Cryptographic mistake: object ID is not equal to the expected concatenated id within decrypted generic delegation. This may happen when patients have been merged; " +
1409
- details
1410
- )*/
1411
- }
1412
- return genericSecretId
1413
- } catch (err) {
1414
- console.log(
1415
- `Could not decrypt generic delegation in object with ID: ${masterId} from ${genericDelegationItem.owner} to ${genericDelegationItem.delegatedTo}: ${err}`
1416
- )
1417
-
1418
- return undefined
1419
- }
1420
- }, Promise.resolve(undefined as string | undefined))
1421
- } else {
1422
- console.log(`Could not find aes key for object with ID: ${masterId}`)
1423
- }
1424
- })
1425
- return Promise.all(decryptPromises).then((genericSecretId) => genericSecretId.filter((id) => !!id) as string[])
1426
- }
1427
-
1428
- getPublicKeyFromPrivateKey(privateKey: JsonWebKey, dataOwner: Patient | Device | HealthcareParty) {
1429
- if (!privateKey.n || !privateKey.e) {
1430
- throw new Error('No public key can be deduced from incomplete private key')
1431
- }
1432
-
1433
- const publicKeyFromPrivateKey = jwk2spki(privateKey)
1434
- const publicKeys = [dataOwner.publicKey].concat(Object.keys(dataOwner.aesExchangeKeys ?? {})).filter((x) => !!x)
1435
-
1436
- if (!publicKeys.length) {
1437
- throw new Error('No public key has been defined for hcp')
1438
- }
1439
-
1440
- const publicKey = publicKeys.find((it) => it === publicKeyFromPrivateKey)
1441
- if (!publicKey) {
1442
- throw new Error('No public key can be found for this private key')
1443
- }
1444
-
1445
- return publicKey
1446
- }
1447
-
1448
- async loadKeyPairsAsTextInBrowserLocalStorage(healthcarePartyId: string, privateKey: Uint8Array) {
1449
- const { dataOwner } = await this.getDataOwner(healthcarePartyId)
1450
-
1451
- const privateKeyInJwk = pkcs8ToJwk(privateKey)
1452
- const publicKey = this.getPublicKeyFromPrivateKey(privateKeyInJwk, dataOwner)
1453
-
1454
- const keyPair: { publicKey: CryptoKey; privateKey: CryptoKey } = await this._RSA.importKeyPair(
1455
- 'jwk',
1456
- privateKeyInJwk,
1457
- 'jwk',
1458
- spkiToJwk(hex2ua(publicKey))
1459
- )
1460
- this.rsaKeyPairs[publicKey.slice(-32)] = keyPair
1461
- const exportedKeyPair = await this._RSA.exportKeys(keyPair, 'jwk', 'jwk')
1462
-
1463
- return this._keyStorage.storeKeyPair(`${this.rsaLocalStoreIdPrefix}${healthcarePartyId}.${publicKey.slice(-32)}`, exportedKeyPair)
1464
- }
1465
-
1466
- async loadKeyPairsAsJwkInBrowserLocalStorage(healthcarePartyId: string, privateKey: JsonWebKey) {
1467
- const { dataOwner } = await this.getDataOwner(healthcarePartyId)
1468
-
1469
- if ((!privateKey.n || !privateKey.e) && dataOwner.publicKey) {
1470
- //Fallback on default publicKey
1471
- console.warn('An incomplete key has been completed using the default public key of the data owner')
1472
- const publicKeyInJwk = spkiToJwk(hex2ua(dataOwner.publicKey))
1473
- privateKey.n = publicKeyInJwk.n
1474
- privateKey.e = publicKeyInJwk.e
1475
- }
1476
-
1477
- const publicKey = this.getPublicKeyFromPrivateKey(privateKey, dataOwner)
1478
-
1479
- const keyPair = await this._RSA.importKeyPair('jwk', privateKey, 'jwk', spkiToJwk(hex2ua(publicKey)))
1480
- this.rsaKeyPairs[publicKey.slice(-32)] = keyPair
1481
- const exportedKeyPair = await this._RSA.exportKeys(keyPair, 'jwk', 'jwk')
1482
-
1483
- return this._keyStorage.storeKeyPair(`${this.rsaLocalStoreIdPrefix}${healthcarePartyId}.${publicKey.slice(-32)}`, exportedKeyPair)
1484
- }
1485
-
1486
- // noinspection JSUnusedGlobalSymbols
1487
- loadKeyPairsInBrowserLocalStorage(healthcarePartyId: string, file: Blob): Promise<void> {
1488
- const fr = new FileReader()
1489
- return new Promise((resolve, reject) => {
1490
- fr.onerror = reject
1491
- fr.onabort = reject
1492
- fr.onload = (e: any) => {
1493
- //TODO remove any
1494
- const privateKey = e.target.result as string
1495
- this.loadKeyPairsAsTextInBrowserLocalStorage(healthcarePartyId, hex2ua(privateKey))
1496
- .then(() => resolve())
1497
- .catch(reject)
1498
- }
1499
- fr.readAsText(file)
1500
- })
1501
- }
1502
-
1503
- // noinspection JSUnusedGlobalSymbols
1504
- saveKeychainInBrowserLocalStorage(id: string, keychain: number) {
1505
- this._storage.setItem(
1506
- this.keychainLocalStoreIdPrefix + id,
1507
- b2a(new Uint8Array(keychain).reduce((data, byte) => data + String.fromCharCode(byte), ''))
1508
- )
1509
- }
1510
-
1511
- saveKeychainInBrowserLocalStorageAsBase64(id: string, keyChainB64: string) {
1512
- this._storage.setItem(this.keychainLocalStoreIdPrefix + id, keyChainB64)
1513
- }
1514
-
1515
- // noinspection JSUnusedGlobalSymbols
1516
- saveKeychainValidityDateInBrowserLocalStorage(id: string, date: string) {
1517
- if (!id) return
1518
-
1519
- if (!date) {
1520
- this._storage.deleteItem(this.keychainValidityDateLocalStoreIdPrefix + id)
1521
- } else {
1522
- this._storage.setItem(this.keychainValidityDateLocalStoreIdPrefix + id, date)
1523
- }
1524
- }
1525
-
1526
- /**
1527
- * Populate the HCP.options dict with an encrypted eHealth certificate and unencryped expiry date.
1528
- * Any potentially unencrypted certificates will be pruned from the HCP.
1529
- * @param hcpId Id of the hcp to modify
1530
- * @returns modified HCP
1531
- */
1532
- async saveKeyChainInHCPFromLocalStorage(hcpId: string): Promise<HealthcareParty> {
1533
- return await this.hcpartyBaseApi.getHealthcareParty(hcpId).then(async (hcp: HealthcareParty) => {
1534
- let aesKey: CryptoKey | null = null
1535
- try {
1536
- aesKey = _.find(
1537
- await this.decryptAndImportAesHcPartyKeysForDelegators([hcp.id!], hcp.id!),
1538
- (delegator: DelegatorAndKeys) => delegator.delegatorId === hcp.id
1539
- )!.key
1540
- } catch (e) {
1541
- console.error('Error while importing the AES key.')
1542
- }
1543
- if (!aesKey) {
1544
- console.error('No encryption key!')
1545
- }
1546
-
1547
- const opts = hcp.options || {}
1548
-
1549
- const crt = this.getKeychainInBrowserLocalStorageAsBase64(hcp.id!!)
1550
- if (!!aesKey && !!crt) {
1551
- let crtEncrypted: ArrayBuffer | null = null
1552
- try {
1553
- crtEncrypted = await this.AES.encrypt(aesKey, new Uint8Array(string2ua(atob(crt))))
1554
- } catch (e) {
1555
- console.error('Error while encrypting the certificate', e)
1556
- }
1557
-
1558
- // add the encrypted certificate to the options
1559
- _.set(opts, this.hcpPreferenceKeyEhealthCert, ua2string(new Uint8Array(crtEncrypted!)))
1560
- }
1561
-
1562
- const crtValidityDate = this.getKeychainValidityDateInBrowserLocalStorage(hcp.id!!)
1563
- if (!!crtValidityDate) {
1564
- _.set(opts, this.hcpPreferenceKeyEhealthCertDate, crtValidityDate)
1565
- }
1566
-
1567
- hcp.options = opts
1568
- return hcp
1569
- })
1570
- }
1571
-
1572
- importKeychainInBrowserFromHCP(hcpId: string): Promise<void> {
1573
- return this.hcpartyBaseApi.getHealthcareParty(hcpId).then(async (hcp: HealthcareParty) => {
1574
- let crtCryp: Uint8Array | null = null
1575
- if (!!hcp.options && !!hcp.options[this.hcpPreferenceKeyEhealthCert]) {
1576
- crtCryp = string2ua(hcp.options[this.hcpPreferenceKeyEhealthCert])
1577
- }
1578
-
1579
- const crtValidityDate = _.get(hcp.options, this.hcpPreferenceKeyEhealthCertDate)
1580
-
1581
- // store the validity date
1582
- if (!!crtValidityDate) {
1583
- this.saveKeychainValidityDateInBrowserLocalStorage(hcp.id!!, crtValidityDate)
1584
- }
1585
-
1586
- let crt: ArrayBuffer | null = null
1587
- let decryptionKey: CryptoKey | null = null
1588
- try {
1589
- decryptionKey = _.find(
1590
- await this.decryptAndImportAesHcPartyKeysForDelegators([hcp.id!], hcp.id!),
1591
- (delegator: DelegatorAndKeys) => delegator.delegatorId === hcp.id
1592
- )!.key
1593
- } catch (e) {
1594
- console.error('Error while importing the AES key.')
1595
- }
1596
- if (!decryptionKey) {
1597
- throw new Error('No encryption key! eHealth certificate cannot be decrypted.')
1598
- }
1599
-
1600
- if (!!crtCryp && decryptionKey) {
1601
- try {
1602
- crt = await this.AES.decrypt(decryptionKey, crtCryp)
1603
- } catch (e) {
1604
- console.error(e)
1605
- }
1606
- }
1607
-
1608
- if (!crt) {
1609
- throw new Error(`Error while saving certificate in browser local storage! Hcp ${hcp.id} has no certificate.`)
1610
- } else {
1611
- this.saveKeychainInBrowserLocalStorageAsBase64(hcp.id!!, btoa(String.fromCharCode.apply(null, Array.from(new Uint8Array(crt)))))
1612
- }
1613
-
1614
- return
1615
- })
1616
- }
1617
-
1618
- /**
1619
- * Synchronizes the eHealth certificate from the database into the LocalStorage, returning information on the presence
1620
- * of certificate data in either place.
1621
- *
1622
- * @param hcpId The healthcare party id
1623
- * @returns A Promise for an object that represents the existence of a certificate in local storage and in the DB,
1624
- * through the two boolean properties "local" and "remote".
1625
- */
1626
- syncEhealthCertificateFromDatabase(hcpId: string): Promise<{ remote: boolean; local: boolean }> {
1627
- return this.hcpartyBaseApi.getHealthcareParty(hcpId).then((hcp: HealthcareParty) => {
1628
- const remoteCertificate = _.get(hcp.options, this.hcpPreferenceKeyEhealthCert)
1629
- const localCertificate = this.getKeychainInBrowserLocalStorageAsBase64(hcp.id!)
1630
-
1631
- if (remoteCertificate) {
1632
- return this.importKeychainInBrowserFromHCP(hcp.id!)
1633
- .then(() => ({ local: true, remote: true }))
1634
- .catch(() => ({ local: !!localCertificate, remote: true }))
1635
- } else {
1636
- return { local: !!localCertificate, remote: !!remoteCertificate }
1637
- }
1638
- })
1639
- }
1640
-
1641
- getKeychainInBrowserLocalStorageAsBase64(id: string) {
1642
- return this._storage.getItem(this.keychainLocalStoreIdPrefix + id)
1643
- }
1644
-
1645
- getKeychainValidityDateInBrowserLocalStorage(id: string) {
1646
- return this._storage.getItem(this.keychainValidityDateLocalStoreIdPrefix + id)
1647
- }
1648
-
1649
- // noinspection JSUnusedGlobalSymbols
1650
- loadKeychainFromBrowserLocalStorage(id: string) {
1651
- const lsItem = this._storage.getItem(this.keychainLocalStoreIdPrefix + id)
1652
- return lsItem !== undefined ? b64_2uas(lsItem) : null
1653
- }
1654
-
1655
- /**
1656
- * loads the RSA key pair (hcparty) in JWK from local storage, not imported
1657
- *
1658
- * @param id doc id - hcpartyId
1659
- * @param publicKeyFingerPrint the 32 last characters of public key this private key is associated with
1660
- * @returns {Object} it is in JWK - not imported
1661
- */
1662
- loadKeyPairNotImported(id: string, publicKeyFingerPrint?: string): { publicKey: JsonWebKey; privateKey: JsonWebKey } {
1663
- if (typeof Storage === 'undefined') {
1664
- console.log('Your browser does not support HTML5 Browser Local Storage !')
1665
- throw 'Your browser does not support HTML5 Browser Local Storage !'
1666
- }
1667
- //TODO decryption
1668
- const item = publicKeyFingerPrint
1669
- ? this._keyStorage.getKeypair(this.rsaLocalStoreIdPrefix + id + '.' + publicKeyFingerPrint.slice(-32)) ??
1670
- this._keyStorage.getKeypair(this.rsaLocalStoreIdPrefix + id)
1671
- : this._keyStorage.getKeypair(this.rsaLocalStoreIdPrefix + id)
1672
- if (!item) {
1673
- console.warn(`No key can be found in local storage for id ${id} and publicKeyFingerPrint ${publicKeyFingerPrint}`)
1674
- }
1675
- return item!
1676
- }
1677
-
1678
- /**
1679
- * Loads and imports the RSA key pair (hcparty) from local storage
1680
- *
1681
- * @param id doc id - hcPartyId
1682
- * @returns {Promise} -> {CryptoKey} - imported RSA
1683
- */
1684
- async loadKeyPairImported(id: string): Promise<{ publicKey: CryptoKey; privateKey: CryptoKey }> {
1685
- let jwkKeyPair = this._keyStorage.getKeypair(this.rsaLocalStoreIdPrefix + id)
1686
- if (!jwkKeyPair) {
1687
- const { dataOwner } = await this.getDataOwner(id)
1688
- if (dataOwner.publicKey) {
1689
- jwkKeyPair = this._keyStorage.getKeypair(this.rsaLocalStoreIdPrefix + id + '.' + dataOwner.publicKey.slice(-32))
1690
- } else {
1691
- console.warn('Attempting to load default public key for data owner without default public key')
1692
- }
1693
- }
1694
- if (jwkKeyPair !== undefined) {
1695
- if (jwkKeyPair.publicKey && jwkKeyPair.privateKey) {
1696
- return await this._RSA.importKeyPair('jwk', jwkKeyPair.privateKey, 'jwk', jwkKeyPair.publicKey).catch((err) => {
1697
- console.error('Error in RSA.importKeyPair: ' + err)
1698
- throw err
1699
- })
1700
- } else {
1701
- const message = 'Error in RSA.importKeyPair: Invalid key'
1702
- console.error(message)
1703
- throw Error(message)
1704
- }
1705
- } else {
1706
- const message = 'Error in RSA.importKeyPair: Missing key'
1707
- console.error(message)
1708
- throw Error(message)
1709
- }
1710
- }
1711
-
1712
- /**
1713
- * When a user lost his keys, people to whom he shared information may call this method to give access back to him, re-encrypting their common
1714
- * AES key using the new user public key.
1715
- *
1716
- * @param accessGiver User, in charge of giving access back to the person who previously gave him some access (should be the current user)
1717
- * @param ownerId Id of the data owner to which we would like to get access back
1718
- * @param ownerNewPublicKey New Data Owner Public Key we want to use to re-encrypt previously created AES key
1719
- */
1720
- async giveAccessBackTo(accessGiver: User, ownerId: string, ownerNewPublicKey: string): Promise<void> {
1721
- const newPubKeyCryptoKey = await this._RSA.importKey('spki', hex2ua(ownerNewPublicKey), ['encrypt'])
1722
- const giverDoId = accessGiver.healthcarePartyId ?? accessGiver.patientId ?? accessGiver.deviceId
1723
- if (!giverDoId) {
1724
- throw new Error(`Access giver ${accessGiver.id} must be a data Owner`)
1725
- }
1726
- const giverDoKeys = await this.getDataOwner(giverDoId).then(
1727
- (doData) => [doData.dataOwner.publicKey, ...Object.keys(doData.dataOwner.aesExchangeKeys ?? {})].filter((x) => !!x) as string[]
1728
- )
1729
-
1730
- const giveAccessBackToExchangeKey = async (
1731
- exchangeKeys: { [pubKey: string]: { [delegateId: string]: { [pubKeyFp: string]: string } } },
1732
- delegatorId: string, // Getter for getter exchange keys, giver for giver exchange keys
1733
- delegateId: string // Giver for getter exchange keys, getter for giver exchange keys
1734
- ): Promise<{ [pubKey: string]: { [delegateId: string]: { [pubKeyFp: string]: string } } }> => {
1735
- const updatedExchangeKeys = _.cloneDeep(exchangeKeys)
1736
- for (const [publicKey, mapsByDelegate] of Object.entries(updatedExchangeKeys)) {
1737
- const mapOfDelegate = mapsByDelegate[delegateId]
1738
- if (!!mapOfDelegate && !mapOfDelegate[ownerNewPublicKey.slice(-32)]) {
1739
- const decryptedKey = await this.decryptHcPartyKey(giverDoId, delegatorId, delegateId, publicKey, mapOfDelegate, giverDoKeys)
1740
- .then((x) => x?.rawKey)
1741
- .catch(() => undefined)
1742
- if (decryptedKey) {
1743
- mapOfDelegate[ownerNewPublicKey.slice(-32)] = await this.encryptAesKeyOnlyForProvidedKeys(decryptedKey, delegateId, [
1744
- newPubKeyCryptoKey,
1745
- ]).then((encrAes) => Object.values(Object.values(encrAes)[0])[0])
1746
- }
1747
- }
1748
- }
1749
- return updatedExchangeKeys
1750
- }
1751
-
1752
- await retry(
1753
- async () => {
1754
- const getterDo = await this.getDataOwner(ownerId)
1755
- const updatedGetterKeys = await giveAccessBackToExchangeKey(getterDo.dataOwner.aesExchangeKeys ?? {}, ownerId, giverDoId)
1756
- await this._saveDataOwner({
1757
- type: getterDo.type,
1758
- dataOwner: { ...getterDo.dataOwner, aesExchangeKeys: updatedGetterKeys },
1759
- })
1760
- },
1761
- 3,
1762
- 5_000,
1763
- 1
1764
- )
1765
- await retry(
1766
- async () => {
1767
- const giverDo = await this.getDataOwner(giverDoId)
1768
- const updatedGiverKeys = await giveAccessBackToExchangeKey(giverDo.dataOwner.aesExchangeKeys ?? {}, giverDoId, ownerId)
1769
- await this._saveDataOwner({
1770
- type: giverDo.type,
1771
- dataOwner: { ...giverDo.dataOwner, aesExchangeKeys: updatedGiverKeys },
1772
- } as CachedDataOwner)
1773
- },
1774
- 3,
1775
- 5_000,
1776
- 1
1777
- )
1778
- }
1779
-
1780
- async addNewKeyPairForOwnerId(
1781
- maintenanceTasksApi: IccMaintenanceTaskXApi,
1782
- user: User,
1783
- ownerId: string,
1784
- generateTransferKey: boolean = true,
1785
- sendMaintenanceTasks: boolean = true
1786
- ): Promise<{ dataOwner: HealthcareParty | Patient | Device; publicKey: string; privateKey: string }> {
1787
- return this.addNewKeyPairForOwner(maintenanceTasksApi, user, await this.getDataOwner(ownerId), generateTransferKey, sendMaintenanceTasks)
1788
- }
1789
-
1790
- async addNewKeyPairForOwner(
1791
- maintenanceTasksApi: IccMaintenanceTaskXApi,
1792
- user: User,
1793
- cdo: CachedDataOwner,
1794
- generateTransferKey: boolean = true,
1795
- sendMaintenanceTasks: boolean = true
1796
- ): Promise<{ dataOwner: HealthcareParty | Patient | Device; publicKey: string; privateKey: string }> {
1797
- const generatedKeypair = await this.RSA.generateKeyPair()
1798
- return this.addKeyPairForOwner(maintenanceTasksApi, user, cdo, generatedKeypair, generateTransferKey, sendMaintenanceTasks)
1799
- }
1800
-
1801
- async addRawKeyPairForOwnerId(
1802
- maintenanceTasksApi: IccMaintenanceTaskXApi,
1803
- user: User,
1804
- ownerId: string,
1805
- keypair: { publicKey: string; privateKey: string },
1806
- generateTransferKey: boolean = true,
1807
- sendMaintenanceTasks: boolean = true
1808
- ): Promise<{ dataOwner: HealthcareParty | Patient | Device; publicKey: string; privateKey: string }> {
1809
- return this.addRawKeyPairForOwner(maintenanceTasksApi, user, await this.getDataOwner(ownerId), keypair, generateTransferKey, sendMaintenanceTasks)
1810
- }
1811
-
1812
- async addRawKeyPairForOwner(
1813
- maintenanceTasksApi: IccMaintenanceTaskXApi,
1814
- user: User,
1815
- cdo: CachedDataOwner,
1816
- keypair: { publicKey: string; privateKey: string },
1817
- generateTransferKey: boolean = true,
1818
- sendMaintenanceTasks: boolean = true
1819
- ): Promise<{ dataOwner: HealthcareParty | Patient | Device; publicKey: string; privateKey: string }> {
1820
- const importedPrivateKey = await this._RSA.importKey('pkcs8', hex2ua(keypair.privateKey), ['decrypt'])
1821
- const importedPublicKey = await this._RSA.importKey('spki', hex2ua(keypair.publicKey), ['encrypt'])
1822
-
1823
- return this.addKeyPairForOwner(
1824
- maintenanceTasksApi,
1825
- user,
1826
- cdo,
1827
- { publicKey: importedPublicKey, privateKey: importedPrivateKey },
1828
- generateTransferKey,
1829
- sendMaintenanceTasks
1830
- )
1831
- }
1832
-
1833
- async addKeyPairForOwner(
1834
- maintenanceTasksApi: IccMaintenanceTaskXApi,
1835
- user: User,
1836
- cdo: CachedDataOwner,
1837
- keypair: { publicKey: CryptoKey; privateKey: CryptoKey },
1838
- generateTransferKey: boolean = true,
1839
- sendMaintenanceTasks: boolean = true
1840
- ): Promise<{ dataOwner: HealthcareParty | Patient | Device; publicKey: string; privateKey: string }> {
1841
- const publicKeyHex = ua2hex(await this.RSA.exportKey(keypair.publicKey!, 'spki'))
1842
-
1843
- const gen = (await this._AES.generateCryptoKey(true)) as string
1844
-
1845
- await this.cacheKeyPair({
1846
- publicKey: await this.RSA.exportKey(keypair.publicKey!, 'jwk'),
1847
- privateKey: await this.RSA.exportKey(keypair.privateKey!, 'jwk'),
1848
- })
1849
-
1850
- const { type: ownerType, dataOwner: ownerToUpdate } = await this.createOrUpdateAesExchangeKeysFor(cdo, gen, {
1851
- pubKey: keypair.publicKey,
1852
- privKey: keypair.privateKey,
1853
- }).then(async (dataOwnerWithUpdatedAesKeys) =>
1854
- generateTransferKey
1855
- ? await this.createOrUpdateTransferKeysFor(dataOwnerWithUpdatedAesKeys, gen, { pubKey: keypair.publicKey, privKey: keypair.privateKey })
1856
- : dataOwnerWithUpdatedAesKeys
1857
- )
1858
-
1859
- const modifiedDataOwnerAndType = await this._saveDataOwner({ type: ownerType, dataOwner: ownerToUpdate })
1860
- const sentMaintenanceTasks = sendMaintenanceTasks
1861
- ? await this.sendMaintenanceTasks(maintenanceTasksApi, user, modifiedDataOwnerAndType.dataOwner, keypair.publicKey)
1862
- : []
1863
-
1864
- return {
1865
- dataOwner: sentMaintenanceTasks.length
1866
- ? await this.retrieveDataOwnerInfoAfterPotentialUpdate(modifiedDataOwnerAndType.dataOwner)
1867
- : modifiedDataOwnerAndType.dataOwner,
1868
- publicKey: publicKeyHex,
1869
- privateKey: ua2hex((await this.RSA.exportKey(keypair.privateKey!, 'pkcs8')) as ArrayBuffer),
1870
- }
1871
- }
1872
-
1873
- private async _saveDataOwner(dataOwner: CachedDataOwner): Promise<CachedDataOwner> {
1874
- const ownerType = dataOwner.type
1875
- const ownerToUpdate = dataOwner.dataOwner
1876
-
1877
- return ownerType === 'hcp'
1878
- ? await (this.dataOwnerCache[ownerToUpdate.id!] = this.hcpartyBaseApi
1879
- .modifyHealthcareParty(ownerToUpdate as HealthcareParty)
1880
- .then((x) => ({ type: 'hcp', dataOwner: x } as CachedDataOwner)))
1881
- : ownerType === 'patient'
1882
- ? await (this.dataOwnerCache[ownerToUpdate.id!] = this.patientBaseApi
1883
- .modifyPatient(ownerToUpdate as Patient)
1884
- .then((x) => ({ type: 'patient', dataOwner: x } as CachedDataOwner)))
1885
- : await (this.dataOwnerCache[ownerToUpdate.id!] = this.deviceBaseApi
1886
- .updateDevice(ownerToUpdate as Device)
1887
- .then((x) => ({ type: 'device', dataOwner: x } as CachedDataOwner)))
1888
- }
1889
-
1890
- private async createOrUpdateAesExchangeKeysFor(
1891
- cdo: CachedDataOwner,
1892
- decryptedAesExchangeKey: string,
1893
- keyToEncrypt: { pubKey: CryptoKey; privKey: CryptoKey }
1894
- ): Promise<CachedDataOwner> {
1895
- const publicKeyHex = ua2hex(await this.RSA.exportKey(keyToEncrypt.pubKey!, 'spki'))
1896
- const existingAesExchangeKeys = cdo.dataOwner.aesExchangeKeys ?? {}
1897
- existingAesExchangeKeys[publicKeyHex] = await this.encryptAesKeyFor(decryptedAesExchangeKey, cdo.dataOwner, keyToEncrypt.pubKey)
1898
-
1899
- return { type: cdo.type, dataOwner: { ...cdo.dataOwner, aesExchangeKeys: existingAesExchangeKeys } } as CachedDataOwner
1900
- }
1901
-
1902
- private async createOrUpdateTransferKeysFor(
1903
- dataOwner: CachedDataOwner,
1904
- decryptedAesExchangeKey: string,
1905
- keyToEncrypt: { pubKey: CryptoKey; privKey: CryptoKey }
1906
- ): Promise<CachedDataOwner> {
1907
- const pubKeyToEncryptHex = ua2hex(await this.RSA.exportKey(keyToEncrypt.pubKey, 'spki'))
1908
-
1909
- const encryptedKey = ua2hex(
1910
- await this._AES.encrypt(
1911
- await this._AES.importKey('raw', hex2ua(decryptedAesExchangeKey)),
1912
- (await this.RSA.exportKey(keyToEncrypt.privKey!, 'pkcs8')) as ArrayBuffer,
1913
- decryptedAesExchangeKey
1914
- )
1915
- )
1916
-
1917
- const dataOwnerExistingPubKeys = Array.from(await this.getDataOwnerHexPublicKeys(dataOwner.dataOwner))
1918
-
1919
- const transferKeys = fold(dataOwnerExistingPubKeys, dataOwner.dataOwner.transferKeys ?? {}, (pubAcc, pubKeyHex) => {
1920
- if (pubKeyHex !== pubKeyToEncryptHex) {
1921
- const existingKeys = pubAcc[pubKeyHex] ?? {}
1922
- existingKeys[pubKeyToEncryptHex] = encryptedKey
1923
- pubAcc[pubKeyHex] = existingKeys
1924
- }
1925
- return pubAcc
1926
- })
1927
-
1928
- return { type: dataOwner.type, dataOwner: { ...dataOwner.dataOwner, transferKeys: transferKeys } } as CachedDataOwner
1929
- }
1930
-
1931
- private async encryptAesKeyFor(
1932
- aesKey: string,
1933
- dataOwner: HealthcareParty | Patient | Device,
1934
- doNewPublicKey: CryptoKey
1935
- ): Promise<{ [delId: string]: { [pk: string]: string } }> {
1936
- const dataOwnerAllPubKeys = [doNewPublicKey].concat(await this.getDataOwnerPublicKeys(dataOwner))
1937
- return this.encryptAesKeyOnlyForProvidedKeys(aesKey, dataOwner.id!, dataOwnerAllPubKeys)
1938
- }
1939
-
1940
- private async encryptAesKeyOnlyForProvidedKeys(
1941
- aesKey: string,
1942
- dataOwnerId: string,
1943
- dataOwnerPubKeys: CryptoKey[]
1944
- ): Promise<{ [delId: string]: { [pk: string]: string } }> {
1945
- const encryptedAesForDataOwner = await foldAsync(dataOwnerPubKeys, {} as { [pubKeyFingerprint: string]: string }, async (encrAes, pubKey) => {
1946
- encrAes[ua2hex(await this.RSA.exportKey(pubKey, 'spki')).slice(-32)] = ua2hex(await this._RSA.encrypt(pubKey, hex2ua(aesKey)))
1947
- return encrAes
1948
- })
1949
-
1950
- return { [dataOwnerId]: encryptedAesForDataOwner }
1951
- }
1952
-
1953
- private retrieveDataOwnerInfoAfterPotentialUpdate(dataOwnerToUpdate: HealthcareParty | Patient | Device): Promise<CachedDataOwner> {
1954
- this.emptyHcpCache(dataOwnerToUpdate.id!)
1955
-
1956
- return this.getDataOwner(dataOwnerToUpdate.id!).then(({ type, dataOwner }) => {
1957
- return {
1958
- type: type,
1959
- dataOwner: {
1960
- ...dataOwner,
1961
- transferKeys: dataOwnerToUpdate.transferKeys,
1962
- hcPartyKeys: fold(Object.entries(dataOwnerToUpdate.hcPartyKeys ?? {}), dataOwner.hcPartyKeys ?? {}, (acc, [delegateId, hcKeys]) => {
1963
- acc[delegateId] = hcKeys
1964
- return acc
1965
- }),
1966
- aesExchangeKeys: fold(
1967
- Object.entries(dataOwnerToUpdate.aesExchangeKeys ?? {}),
1968
- dataOwner.aesExchangeKeys ?? {},
1969
- (pubAcc, [pubKey, newAesExcKeys]) => {
1970
- const existingKeys = pubAcc[pubKey] ?? {}
1971
- pubAcc[pubKey] = fold(Object.entries(newAesExcKeys), existingKeys, (delAcc, [delId, delKeys]) => {
1972
- delAcc[delId] = delKeys
1973
- return delAcc
1974
- })
1975
- return pubAcc
1976
- }
1977
- ),
1978
- },
1979
- } as CachedDataOwner
1980
- })
1981
- }
1982
-
1983
- private async sendMaintenanceTasks(
1984
- maintenanceTaskApi: IccMaintenanceTaskXApi,
1985
- user: User,
1986
- dataOwner: HealthcareParty | Patient | Device,
1987
- newPublicKey: CryptoKey
1988
- ): Promise<MaintenanceTask[]> {
1989
- const hexNewPubKey = ua2hex(await this.RSA.exportKey(newPublicKey, 'spki'))
1990
- const availablePubKeysSet = new Set(await this.getPublicKeysAsSpki())
1991
- const hasNonAccessiblePubKeys = Array.from(this.getDataOwnerHexPublicKeys(dataOwner).values()).some(
1992
- (existingPubKey) => existingPubKey != hexNewPubKey && !availablePubKeysSet.has(existingPubKey)
1993
- )
1994
-
1995
- if (hasNonAccessiblePubKeys) {
1996
- const allDelegatesAndDelegator = new Set([
1997
- ...Object.keys(await this.getEncryptedAesExchangeKeysForDelegate(dataOwner.id!)),
1998
- ...(await this._getDelegateIdsOf(dataOwner)),
1999
- ])
2000
- const tasks = [...allDelegatesAndDelegator]
2001
- .filter((delegateId) => delegateId != dataOwner.id)
2002
- .map((delegateId) => {
2003
- return { delegateId, maintenanceTask: this.createMaintenanceTask(dataOwner, hexNewPubKey) }
2004
- })
2005
- const res: MaintenanceTask[] = []
2006
- for (const task of tasks) {
2007
- const taskToCreate = await maintenanceTaskApi?.newInstance(user, task.maintenanceTask, [task.delegateId])
2008
- const createdTask: MaintenanceTask = taskToCreate ? await maintenanceTaskApi?.createMaintenanceTaskWithUser(user, taskToCreate) : undefined
2009
- if (createdTask) {
2010
- res.push(createdTask)
2011
- }
2012
- }
2013
- return res
2014
- } else {
2015
- return []
2016
- }
2017
- }
2018
-
2019
- private createMaintenanceTask(concernedDataOwner: HealthcareParty | Patient | Device, concernedPubKey: string) {
2020
- return new MaintenanceTask({
2021
- id: this.randomUuid(),
2022
- taskType: 'KEY_PAIR_UPDATE',
2023
- status: MaintenanceTask.StatusEnum.Pending,
2024
- properties: [
2025
- new PropertyStub({
2026
- id: 'dataOwnerConcernedId',
2027
- type: new PropertyTypeStub({ type: PropertyTypeStub.TypeEnum.STRING }),
2028
- typedValue: new TypedValueObject({
2029
- type: TypedValueObject.TypeEnum.STRING,
2030
- stringValue: concernedDataOwner.id,
2031
- }),
2032
- }),
2033
- new PropertyStub({
2034
- id: 'dataOwnerConcernedPubKey',
2035
- type: new PropertyTypeStub({ type: PropertyTypeStub.TypeEnum.STRING }),
2036
- typedValue: new TypedValueObject({
2037
- type: TypedValueObject.TypeEnum.STRING,
2038
- stringValue: concernedPubKey,
2039
- }),
2040
- }),
2041
- ],
2042
- })
2043
- }
2044
-
2045
- private getDataOwnerHexPublicKeys(dataOwner: HealthcareParty | Patient | Device): Set<string> {
2046
- return new Set(
2047
- (dataOwner.publicKey ? [dataOwner.publicKey] : [])
2048
- .concat(dataOwner.aesExchangeKeys ? Object.keys(dataOwner.aesExchangeKeys) : [])
2049
- .filter((pubKey) => !!pubKey)
2050
- )
2051
- }
2052
-
2053
- private async getDataOwnerPublicKeys(dataOwner: HealthcareParty | Patient | Device): Promise<CryptoKey[]> {
2054
- return await Promise.all(
2055
- Array.from(this.getDataOwnerHexPublicKeys(dataOwner)).map(
2056
- async (pubKey) => await this._RSA.importKey('jwk', spkiToJwk(hex2ua(pubKey)), ['encrypt'])
2057
- )
2058
- )
2059
- }
2060
-
2061
- generateKeyForDelegate(ownerId: string, delegateId: string): PromiseLike<HealthcareParty | Patient> {
2062
- //Preload hcp and patient because we need them and they are going to be invalidated from the caches
2063
- return notConcurrent(this.generateKeyConcurrencyMap, ownerId, async () => {
2064
- const [{ type: ownerType, dataOwner: owner }, { dataOwner: delegate }] = await Promise.all([
2065
- this.getDataOwner(ownerId),
2066
- this.getDataOwner(delegateId),
2067
- ])
2068
-
2069
- const availablePublicKeysFingerprints = Object.keys(this.rsaKeyPairs)
2070
- const ownerLegacyPublicKey = owner.publicKey
2071
- const isOwnerLegacyPublicKeyAvailable = ownerLegacyPublicKey
2072
- ? availablePublicKeysFingerprints.some((fp) => ownerLegacyPublicKey.endsWith(fp))
2073
- : false
2074
-
2075
- const availableOwnerPublicKeys = [
2076
- ownerLegacyPublicKey,
2077
- ...Object.keys(owner.aesExchangeKeys || {}).filter((x) => x !== ownerLegacyPublicKey),
2078
- ].filter((k) => !!k && availablePublicKeysFingerprints.some((fp) => k.endsWith(fp))) as string[]
2079
- const selectedPublicKey = availableOwnerPublicKeys[0]
2080
-
2081
- if (!selectedPublicKey) {
2082
- throw new Error(`Invalid owner, no public key, keypairs have not be set for ${ownerId}`)
2083
- }
2084
-
2085
- if (
2086
- ((owner.hcPartyKeys || {})[delegateId] && owner.publicKey && availablePublicKeysFingerprints.includes(owner.publicKey.slice(-32))) ||
2087
- Object.values(owner.aesExchangeKeys || {}).some(
2088
- (x) => x[delegateId] && Object.keys(x[delegateId]).some((k) => availablePublicKeysFingerprints.includes(k))
2089
- )
2090
- ) {
2091
- return owner
2092
- }
2093
-
2094
- let ownerCombinedAesExchangeKeys = owner.aesExchangeKeys ?? {}
2095
-
2096
- if (ownerLegacyPublicKey && !(owner.aesExchangeKeys ?? {})[ownerLegacyPublicKey]) {
2097
- //Transfer keys from old structure (hcparty keys) to new one (aesExchangeKeys)
2098
- const unknownDataOwnerCounterPartIds = Object.keys(owner.hcPartyKeys ?? {}).filter((x) => x !== ownerId && x !== delegateId)
2099
- const counterParts = [
2100
- owner,
2101
- delegate,
2102
- ...(await Promise.all(unknownDataOwnerCounterPartIds.map((cpid) => this.getDataOwner(cpid).then((dot) => dot.dataOwner)))),
2103
- ]
2104
- ownerCombinedAesExchangeKeys = {
2105
- [ownerLegacyPublicKey]: Object.entries(owner.hcPartyKeys ?? {}).reduce(
2106
- (map, [hcpId, keys]) => ({
2107
- ...map,
2108
- [hcpId]: { [ownerLegacyPublicKey.slice(-32)]: keys[0], [counterParts.find((x) => x.id === hcpId)?.publicKey ?? '']: keys[1] },
2109
- ...{},
2110
- }),
2111
- {}
2112
- ),
2113
- ...ownerCombinedAesExchangeKeys,
2114
- }
2115
- }
2116
-
2117
- const delegatePublicKeys = [delegate.publicKey, ...Object.keys(delegate.aesExchangeKeys ?? {}).filter((x) => x !== delegate.publicKey)].filter(
2118
- (x) => !!x
2119
- ) as string[]
2120
- if (!delegatePublicKeys.length) {
2121
- throw new Error(`Invalid delegate, no public key, keypairs have not be set for ${delegateId}`)
2122
- }
2123
- const genProm = this._AES.generateCryptoKey(true).then(async (AESKey) => {
2124
- const allPubKeys = [...availableOwnerPublicKeys, ...delegatePublicKeys]
2125
- const encryptedAesKeys = await allPubKeys.reduce(
2126
- async (map, pubK) => ({
2127
- ...(await map),
2128
- [pubK.slice(-32)]: ua2hex(
2129
- await this._RSA.encrypt(await this._RSA.importKey('jwk', spkiToJwk(hex2ua(pubK)), ['encrypt']), hex2ua(AESKey as string))
2130
- ),
2131
- }),
2132
- Promise.resolve({} as { [pubKey: string]: string })
2133
- )
2134
-
2135
- if (delegate.publicKey && ownerLegacyPublicKey && isOwnerLegacyPublicKeyAvailable) {
2136
- owner.hcPartyKeys![delegateId] = [encryptedAesKeys[ownerLegacyPublicKey.slice(-32)], encryptedAesKeys[delegate.publicKey.slice(-32)]]
2137
- }
2138
- owner.aesExchangeKeys = this.fixAesExchangeKeyEntriesToFingerprints({
2139
- ...(ownerCombinedAesExchangeKeys ?? {}),
2140
- [selectedPublicKey]: { ...(owner.aesExchangeKeys?.[selectedPublicKey] ?? {}), [delegateId]: encryptedAesKeys },
2141
- })
2142
-
2143
- return new Promise<['hcp', HealthcareParty] | ['patient', Patient] | ['device', Device]>((resolve, reject) => {
2144
- ownerType === 'hcp'
2145
- ? (this.dataOwnerCache[owner.id!] = this.hcpartyBaseApi
2146
- .modifyHealthcareParty(owner as HealthcareParty)
2147
- .then((x) => ({ type: 'hcp', dataOwner: x } as CachedDataOwner)))
2148
- .then((x) => resolve(['hcp', x.dataOwner]))
2149
- .catch((e) => reject(e))
2150
- : ownerType === 'patient'
2151
- ? (this.dataOwnerCache[owner.id!] = this.patientBaseApi.modifyPatient(owner as Patient).then((x) => ({ type: 'patient', dataOwner: x })))
2152
- .then((x) => resolve(['patient', x.dataOwner]))
2153
- .catch((e) => reject(e))
2154
- : (this.dataOwnerCache[owner.id!] = this.deviceBaseApi.updateDevice(owner as Device).then((x) => ({ type: 'device', dataOwner: x })))
2155
- .then((x) => resolve(['device', x.dataOwner]))
2156
- .catch((e) => reject(e))
2157
- })
2158
- })
2159
-
2160
- this.hcPartyKeysRequestsCache[delegateId] = genProm.then(() => {
2161
- return this.forceGetEncryptedAesExchangeKeysForDelegate(delegateId)
2162
- })
2163
- return genProm.then((res) => {
2164
- return res[1]
2165
- })
2166
- })
2167
- }
2168
-
2169
- getDataOwner(ownerId: string, loadIfMissingFromCache: boolean = true): Promise<CachedDataOwner> {
2170
- const retrieve: () => Promise<CachedDataOwner> = async () => {
2171
- const hcpDataOwnerPromise = this.hcpartyBaseApi
2172
- .getHealthcareParty(ownerId)
2173
- .then((x) => ({ type: 'hcp', dataOwner: x } as CachedDataOwner))
2174
- .catch(() => undefined)
2175
- const patientDataOwnerPromise = this.patientBaseApi
2176
- .getPatient(ownerId)
2177
- .then((x) => ({ type: 'patient', dataOwner: x } as CachedDataOwner))
2178
- .catch(() => undefined)
2179
- const hcpDataOwner = await hcpDataOwnerPromise
2180
- const patientDataOwner = await patientDataOwnerPromise
2181
- if (!!hcpDataOwner && !!patientDataOwner) console.error("Both hcp and patient data owner found for id: '" + ownerId + "'")
2182
- if (!!hcpDataOwner || !!patientDataOwner) {
2183
- return hcpDataOwner ?? patientDataOwner!
2184
- }
2185
- const deviceDataOwner = await this.deviceBaseApi
2186
- .getDevice(ownerId)
2187
- .then((x) => ({ type: 'device', dataOwner: x } as CachedDataOwner))
2188
- .catch(() => undefined)
2189
- if (!!deviceDataOwner) return deviceDataOwner
2190
- throw new Error("Data owner with id '" + ownerId + "' not found")
2191
- }
2192
- return (
2193
- this.dataOwnerCache[ownerId] ??
2194
- (loadIfMissingFromCache
2195
- ? (this.dataOwnerCache[ownerId] = retrieve().catch((e) => {
2196
- delete this.dataOwnerCache[ownerId]
2197
- throw e
2198
- }))
2199
- : undefined)
2200
- )
2201
- }
2202
-
2203
- // noinspection JSUnusedGlobalSymbols
2204
- async checkPrivateKeyValidity(dataOwner: HealthcareParty | Patient | Device): Promise<boolean> {
2205
- const publicKeys = Array.from(new Set([dataOwner.publicKey].concat(Object.keys(dataOwner.aesExchangeKeys ?? {})).filter((x) => !!x))) as string[]
2206
-
2207
- return await publicKeys.reduce(async (pres, publicKey) => {
2208
- const res = await pres
2209
- try {
2210
- const k = await this._RSA.importKey('jwk', spkiToJwk(hex2ua(publicKey)), ['encrypt'])
2211
- const cipher = await this._RSA.encrypt(k, utf8_2ua('shibboleth'))
2212
- const ikp = await this.getCachedRsaKeyPairForFingerprint(dataOwner.id!, publicKey.slice(-32))
2213
- const plainText = ua2utf8(await this._RSA.decrypt(ikp.privateKey, new Uint8Array(cipher)))
2214
- return plainText === 'shibboleth' || res
2215
- } catch (e) {
2216
- return res
2217
- }
2218
- }, Promise.resolve(false))
2219
- }
2220
-
2221
- private throwDetailedExceptionForInvalidParameter(argName: string, argValue: any, methodName: string, methodArgs: any) {
2222
- if (argValue) return
2223
-
2224
- let details = '\nMethod name: icc-crypto-x-api.' + methodName + '()\nArguments:'
2225
-
2226
- if (methodArgs) {
2227
- try {
2228
- const argsArray = [...methodArgs]
2229
- _.each(argsArray, (arg, index) => (details += '\n[' + index + ']: ' + JSON.stringify(arg)))
2230
- } catch (ex) {
2231
- details += '; a problem occured while logging arguments details: ' + ex
2232
- }
2233
- }
2234
-
2235
- throw '### THIS SHOULD NOT HAPPEN: ' + argName + ' has an invalid value: ' + argValue + details
2236
- }
2237
-
2238
- async getEncryptionDecryptionKeys(dataOwnerId: string, document: EncryptedEntity): Promise<Array<string> | undefined> {
2239
- try {
2240
- return !document.id
2241
- ? undefined
2242
- : _.uniq(
2243
- (
2244
- await this.extractKeysFromDelegationsForHcpHierarchy(
2245
- dataOwnerId,
2246
- document.id,
2247
- (document.encryptionKeys && Object.keys(document.encryptionKeys).length && document.encryptionKeys) || document.delegations!
2248
- )
2249
- ).extractedKeys
2250
- )
2251
- } catch (e) {
2252
- return undefined
2253
- }
2254
- }
2255
-
2256
- async dataOwnerCanDecryptPatient(dataOwnerId: string, p: Patient): Promise<boolean> {
2257
- if (p.encryptionKeys && p.encryptionKeys[dataOwnerId]?.length) return true
2258
-
2259
- const dataOwner = await this.getDataOwner(dataOwnerId)
2260
- if (dataOwner.type === 'hcp' && p.encryptionKeys && p.encryptionKeys[dataOwner.dataOwner.parentId!]?.length) return true
2261
-
2262
- return false
2263
- }
2264
-
2265
- async encryptDecrypt(
2266
- method: 'encrypt' | 'decrypt',
2267
- content: Uint8Array | ArrayBuffer,
2268
- edKey?: string,
2269
- user?: User,
2270
- documentObject?: Document
2271
- ): Promise<Uint8Array | Array<any> | any> {
2272
- if (!content || !(edKey || (user?.healthcarePartyId && documentObject))) return content
2273
-
2274
- if (edKey) {
2275
- const importedEdKey = await this._AES.importKey('raw', hex2ua(edKey.replace(/-/g, '')))
2276
- try {
2277
- return await this._AES[method](importedEdKey, content)
2278
- } catch (e) {
2279
- return content
2280
- }
2281
- }
2282
-
2283
- const sfks = await this.extractKeysFromDelegationsForHcpHierarchy(user?.healthcarePartyId!, documentObject?.id!, documentObject?.encryptionKeys!)
2284
- const importedEdKey = await this._AES.importKey('raw', hex2ua(sfks.extractedKeys[0].replace(/-/g, '')))
2285
- try {
2286
- return await this._AES[method](importedEdKey, content)
2287
- } catch (e) {
2288
- return content
2289
- }
2290
- }
2291
-
2292
- /**
2293
- * Store keypair in storage
2294
- *
2295
- * @param id
2296
- * @param keyPair should be JWK
2297
- *
2298
- * @deprecated use storage.setItem instead
2299
- */
2300
- storeKeyPair(id: string, keyPair: { publicKey: any; privateKey: any }) {
2301
- this._storage.setItem(this.rsaLocalStoreIdPrefix + id, JSON.stringify(keyPair))
2302
- }
2303
-
2304
- fixAesExchangeKeyEntriesToFingerprints(aesExchangeKeys: { [delegatorPubKey: string]: { [delegateId: string]: { [pubKeyFp: string]: string } } }): {
2305
- [delegatorPubKey: string]: { [delegateId: string]: { [pubKeyFp: string]: string } }
2306
- } {
2307
- return Object.fromEntries(
2308
- Object.entries(aesExchangeKeys).map(([delegatorPubKey, allDelegates]) => [
2309
- delegatorPubKey,
2310
- Object.fromEntries(
2311
- Object.entries(allDelegates).map(([delegateId, keyEntries]) => [
2312
- delegateId,
2313
- Object.fromEntries(Object.entries(keyEntries).map(([publicKey, encryptedValue]) => [publicKey.slice(-32), encryptedValue])),
2314
- ])
2315
- ),
2316
- ])
2317
- )
2318
- }
2319
-
2320
- /**
2321
- * Specifies if the error reporting is enabled
2322
- */
2323
- enableErrorReporting = true
2324
- /**
2325
- * Allows to specify the behaviour for saving the error report
2326
- */
2327
- saveErrorReportCallback: (collectedData: { fullData: object; minimalData: object }) => Promise<void> = async (collectedData) => {
2328
- const entryPrefix = `icure.errorreports.${(new Date() as any) / 1}.${this.randomUuid()}.`
2329
- console.warn('Storage entry prefix: ' + entryPrefix)
2330
- this.storage.setItem(entryPrefix + 'full', JSON.stringify(collectedData.fullData))
2331
- this.storage.setItem(entryPrefix + 'minimal', JSON.stringify(collectedData.minimalData))
2332
- }
2333
-
2334
- async reportError(
2335
- description: string, // Description of what caused the error
2336
- involvedEntities: EncryptedEntity[], // Entities that were being processed when the error occurred
2337
- dataOwnerId: string // Id of the data owner who was doing the processing when the error occurred
2338
- ): Promise<void> {
2339
- if (this.enableErrorReporting) {
2340
- try {
2341
- const collectedData = await new ErrorReporting(this).collectDataForReport(description, involvedEntities, dataOwnerId)
2342
- console.warn('Reporting error for ' + description)
2343
- await this.saveErrorReportCallback(collectedData)
2344
- } catch (e) {
2345
- console.error('Failed to report error for ' + description)
2346
- console.error(e)
2347
- }
2348
- }
2349
- }
2350
- }