@icure/api 6.0.1 → 6.0.3

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 (241) hide show
  1. package/icc-api/api/IccAccesslogApi.d.ts +3 -1
  2. package/icc-api/api/IccAccesslogApi.js +9 -8
  3. package/icc-api/api/IccAccesslogApi.js.map +1 -1
  4. package/icc-api/api/IccAgendaApi.d.ts +3 -1
  5. package/icc-api/api/IccAgendaApi.js +9 -8
  6. package/icc-api/api/IccAgendaApi.js.map +1 -1
  7. package/icc-api/api/IccAnonymousAccessApi.d.ts +3 -1
  8. package/icc-api/api/IccAnonymousAccessApi.js +5 -4
  9. package/icc-api/api/IccAnonymousAccessApi.js.map +1 -1
  10. package/icc-api/api/IccApplicationsettingsApi.d.ts +3 -1
  11. package/icc-api/api/IccApplicationsettingsApi.js +5 -4
  12. package/icc-api/api/IccApplicationsettingsApi.js.map +1 -1
  13. package/icc-api/api/IccArticleApi.d.ts +3 -1
  14. package/icc-api/api/IccArticleApi.js +7 -6
  15. package/icc-api/api/IccArticleApi.js.map +1 -1
  16. package/icc-api/api/IccAuthApi.d.ts +10 -0
  17. package/icc-api/api/IccAuthApi.js +25 -1
  18. package/icc-api/api/IccAuthApi.js.map +1 -1
  19. package/icc-api/api/IccBeefactApi.d.ts +3 -1
  20. package/icc-api/api/IccBeefactApi.js +3 -2
  21. package/icc-api/api/IccBeefactApi.js.map +1 -1
  22. package/icc-api/api/IccBekmehrApi.d.ts +3 -1
  23. package/icc-api/api/IccBekmehrApi.js +29 -28
  24. package/icc-api/api/IccBekmehrApi.js.map +1 -1
  25. package/icc-api/api/IccBemikronoApi.d.ts +3 -1
  26. package/icc-api/api/IccBemikronoApi.js +10 -9
  27. package/icc-api/api/IccBemikronoApi.js.map +1 -1
  28. package/icc-api/api/IccBeresultexportApi.d.ts +3 -1
  29. package/icc-api/api/IccBeresultexportApi.js +5 -4
  30. package/icc-api/api/IccBeresultexportApi.js.map +1 -1
  31. package/icc-api/api/IccBeresultimportApi.d.ts +3 -1
  32. package/icc-api/api/IccBeresultimportApi.js +5 -4
  33. package/icc-api/api/IccBeresultimportApi.js.map +1 -1
  34. package/icc-api/api/IccBesamv2Api.d.ts +3 -1
  35. package/icc-api/api/IccBesamv2Api.js +35 -34
  36. package/icc-api/api/IccBesamv2Api.js.map +1 -1
  37. package/icc-api/api/IccCalendarItemApi.d.ts +3 -1
  38. package/icc-api/api/IccCalendarItemApi.js +14 -13
  39. package/icc-api/api/IccCalendarItemApi.js.map +1 -1
  40. package/icc-api/api/IccCalendarItemTypeApi.d.ts +3 -1
  41. package/icc-api/api/IccCalendarItemTypeApi.js +8 -7
  42. package/icc-api/api/IccCalendarItemTypeApi.js.map +1 -1
  43. package/icc-api/api/IccClassificationApi.d.ts +3 -1
  44. package/icc-api/api/IccClassificationApi.js +10 -9
  45. package/icc-api/api/IccClassificationApi.js.map +1 -1
  46. package/icc-api/api/IccClassificationTemplateApi.d.ts +3 -1
  47. package/icc-api/api/IccClassificationTemplateApi.js +10 -9
  48. package/icc-api/api/IccClassificationTemplateApi.js.map +1 -1
  49. package/icc-api/api/IccCodeApi.d.ts +3 -1
  50. package/icc-api/api/IccCodeApi.js +18 -17
  51. package/icc-api/api/IccCodeApi.js.map +1 -1
  52. package/icc-api/api/IccContactApi.d.ts +3 -2
  53. package/icc-api/api/IccContactApi.js +30 -32
  54. package/icc-api/api/IccContactApi.js.map +1 -1
  55. package/icc-api/api/IccDeviceApi.d.ts +3 -1
  56. package/icc-api/api/IccDeviceApi.js +20 -19
  57. package/icc-api/api/IccDeviceApi.js.map +1 -1
  58. package/icc-api/api/IccDoctemplateApi.d.ts +3 -1
  59. package/icc-api/api/IccDoctemplateApi.js +15 -14
  60. package/icc-api/api/IccDoctemplateApi.js.map +1 -1
  61. package/icc-api/api/IccDocumentApi.d.ts +3 -1
  62. package/icc-api/api/IccDocumentApi.js +22 -21
  63. package/icc-api/api/IccDocumentApi.js.map +1 -1
  64. package/icc-api/api/IccDocumentTemplateApi.d.ts +3 -1
  65. package/icc-api/api/IccDocumentTemplateApi.js +15 -14
  66. package/icc-api/api/IccDocumentTemplateApi.js.map +1 -1
  67. package/icc-api/api/IccEntityrefApi.d.ts +3 -1
  68. package/icc-api/api/IccEntityrefApi.js +4 -3
  69. package/icc-api/api/IccEntityrefApi.js.map +1 -1
  70. package/icc-api/api/IccEntitytemplateApi.d.ts +3 -1
  71. package/icc-api/api/IccEntitytemplateApi.js +13 -12
  72. package/icc-api/api/IccEntitytemplateApi.js.map +1 -1
  73. package/icc-api/api/IccFormApi.d.ts +3 -1
  74. package/icc-api/api/IccFormApi.js +26 -25
  75. package/icc-api/api/IccFormApi.js.map +1 -1
  76. package/icc-api/api/IccFrontendmigrationApi.d.ts +3 -1
  77. package/icc-api/api/IccFrontendmigrationApi.js +8 -7
  78. package/icc-api/api/IccFrontendmigrationApi.js.map +1 -1
  79. package/icc-api/api/IccGroupApi.d.ts +3 -1
  80. package/icc-api/api/IccGroupApi.js +18 -17
  81. package/icc-api/api/IccGroupApi.js.map +1 -1
  82. package/icc-api/api/IccHcpartyApi.d.ts +3 -1
  83. package/icc-api/api/IccHcpartyApi.js +24 -23
  84. package/icc-api/api/IccHcpartyApi.js.map +1 -1
  85. package/icc-api/api/IccHelementApi.d.ts +3 -1
  86. package/icc-api/api/IccHelementApi.js +15 -14
  87. package/icc-api/api/IccHelementApi.js.map +1 -1
  88. package/icc-api/api/IccIcureApi.d.ts +3 -1
  89. package/icc-api/api/IccIcureApi.js +18 -17
  90. package/icc-api/api/IccIcureApi.js.map +1 -1
  91. package/icc-api/api/IccInsuranceApi.d.ts +3 -1
  92. package/icc-api/api/IccInsuranceApi.js +9 -8
  93. package/icc-api/api/IccInsuranceApi.js.map +1 -1
  94. package/icc-api/api/IccInvoiceApi.d.ts +3 -1
  95. package/icc-api/api/IccInvoiceApi.js +33 -32
  96. package/icc-api/api/IccInvoiceApi.js.map +1 -1
  97. package/icc-api/api/IccKeywordApi.d.ts +3 -1
  98. package/icc-api/api/IccKeywordApi.js +8 -7
  99. package/icc-api/api/IccKeywordApi.js.map +1 -1
  100. package/icc-api/api/IccMaintenanceTaskApi.d.ts +3 -1
  101. package/icc-api/api/IccMaintenanceTaskApi.js +7 -6
  102. package/icc-api/api/IccMaintenanceTaskApi.js.map +1 -1
  103. package/icc-api/api/IccMedexApi.d.ts +3 -1
  104. package/icc-api/api/IccMedexApi.js +3 -2
  105. package/icc-api/api/IccMedexApi.js.map +1 -1
  106. package/icc-api/api/IccMedicallocationApi.d.ts +3 -1
  107. package/icc-api/api/IccMedicallocationApi.js +7 -6
  108. package/icc-api/api/IccMedicallocationApi.js.map +1 -1
  109. package/icc-api/api/IccMessageApi.d.ts +3 -1
  110. package/icc-api/api/IccMessageApi.js +21 -20
  111. package/icc-api/api/IccMessageApi.js.map +1 -1
  112. package/icc-api/api/IccPatientApi.d.ts +3 -1
  113. package/icc-api/api/IccPatientApi.js +36 -35
  114. package/icc-api/api/IccPatientApi.js.map +1 -1
  115. package/icc-api/api/IccPermissionApi.d.ts +3 -1
  116. package/icc-api/api/IccPermissionApi.js +3 -2
  117. package/icc-api/api/IccPermissionApi.js.map +1 -1
  118. package/icc-api/api/IccPlaceApi.d.ts +3 -1
  119. package/icc-api/api/IccPlaceApi.js +7 -6
  120. package/icc-api/api/IccPlaceApi.js.map +1 -1
  121. package/icc-api/api/IccPubsubApi.d.ts +3 -1
  122. package/icc-api/api/IccPubsubApi.js +6 -5
  123. package/icc-api/api/IccPubsubApi.js.map +1 -1
  124. package/icc-api/api/IccReceiptApi.d.ts +3 -1
  125. package/icc-api/api/IccReceiptApi.js +9 -8
  126. package/icc-api/api/IccReceiptApi.js.map +1 -1
  127. package/icc-api/api/IccReplicationApi.d.ts +3 -1
  128. package/icc-api/api/IccReplicationApi.js +6 -5
  129. package/icc-api/api/IccReplicationApi.js.map +1 -1
  130. package/icc-api/api/IccTarificationApi.d.ts +3 -1
  131. package/icc-api/api/IccTarificationApi.js +10 -9
  132. package/icc-api/api/IccTarificationApi.js.map +1 -1
  133. package/icc-api/api/IccTimeTableApi.d.ts +3 -1
  134. package/icc-api/api/IccTimeTableApi.js +8 -7
  135. package/icc-api/api/IccTimeTableApi.js.map +1 -1
  136. package/icc-api/api/IccTmpApi.d.ts +3 -1
  137. package/icc-api/api/IccTmpApi.js +73 -72
  138. package/icc-api/api/IccTmpApi.js.map +1 -1
  139. package/icc-api/api/IccUserApi.d.ts +3 -1
  140. package/icc-api/api/IccUserApi.js +28 -27
  141. package/icc-api/api/IccUserApi.js.map +1 -1
  142. package/icc-api/api/XHR.d.ts +2 -1
  143. package/icc-api/api/XHR.js +45 -59
  144. package/icc-api/api/XHR.js.map +1 -1
  145. package/icc-api/model/AuthenticationResponse.d.ts +2 -0
  146. package/icc-api/model/AuthenticationResponse.js.map +1 -1
  147. package/icc-api/model/Group.d.ts +6 -0
  148. package/icc-api/model/Group.js.map +1 -1
  149. package/icc-api/model/RefreshTokenExpiredError.d.ts +3 -0
  150. package/icc-api/model/RefreshTokenExpiredError.js +10 -0
  151. package/icc-api/model/RefreshTokenExpiredError.js.map +1 -0
  152. package/icc-api/model/RegistrationInformation.d.ts +1 -0
  153. package/icc-api/model/RegistrationInformation.js.map +1 -1
  154. package/icc-api/model/TimeTableItem.d.ts +2 -1
  155. package/icc-api/model/TimeTableItem.js.map +1 -1
  156. package/icc-x-api/auth/AuthService.d.ts +16 -0
  157. package/icc-x-api/auth/AuthService.js +3 -0
  158. package/icc-x-api/auth/AuthService.js.map +1 -0
  159. package/icc-x-api/auth/AuthenticationProvider.d.ts +22 -0
  160. package/icc-x-api/auth/AuthenticationProvider.js +41 -0
  161. package/icc-x-api/auth/AuthenticationProvider.js.map +1 -0
  162. package/icc-x-api/auth/BasicAuthService.d.ts +12 -0
  163. package/icc-x-api/auth/BasicAuthService.js +27 -0
  164. package/icc-x-api/auth/BasicAuthService.js.map +1 -0
  165. package/icc-x-api/auth/EnsembleAuthService.d.ts +17 -0
  166. package/icc-x-api/auth/EnsembleAuthService.js +60 -0
  167. package/icc-x-api/auth/EnsembleAuthService.js.map +1 -0
  168. package/icc-x-api/auth/JwtAuthService.d.ts +19 -0
  169. package/icc-x-api/auth/JwtAuthService.js +97 -0
  170. package/icc-x-api/auth/JwtAuthService.js.map +1 -0
  171. package/icc-x-api/auth/NoAuthService.d.ts +8 -0
  172. package/icc-x-api/auth/NoAuthService.js +30 -0
  173. package/icc-x-api/auth/NoAuthService.js.map +1 -0
  174. package/icc-x-api/icc-accesslog-x-api.d.ts +2 -1
  175. package/icc-x-api/icc-accesslog-x-api.js +2 -2
  176. package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
  177. package/icc-x-api/icc-bekmehr-x-api.d.ts +2 -1
  178. package/icc-x-api/icc-bekmehr-x-api.js +2 -2
  179. package/icc-x-api/icc-bekmehr-x-api.js.map +1 -1
  180. package/icc-x-api/icc-calendar-item-x-api.d.ts +2 -1
  181. package/icc-x-api/icc-calendar-item-x-api.js +2 -2
  182. package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
  183. package/icc-x-api/icc-classification-x-api.d.ts +2 -1
  184. package/icc-x-api/icc-classification-x-api.js +2 -2
  185. package/icc-x-api/icc-classification-x-api.js.map +1 -1
  186. package/icc-x-api/icc-code-x-api.d.ts +2 -1
  187. package/icc-x-api/icc-code-x-api.js +2 -2
  188. package/icc-x-api/icc-code-x-api.js.map +1 -1
  189. package/icc-x-api/icc-contact-x-api.d.ts +2 -1
  190. package/icc-x-api/icc-contact-x-api.js +2 -2
  191. package/icc-x-api/icc-contact-x-api.js.map +1 -1
  192. package/icc-x-api/icc-crypto-x-api.d.ts +1 -1
  193. package/icc-x-api/icc-crypto-x-api.js +10 -12
  194. package/icc-x-api/icc-crypto-x-api.js.map +1 -1
  195. package/icc-x-api/icc-doctemplate-x-api.d.ts +3 -1
  196. package/icc-x-api/icc-doctemplate-x-api.js +4 -3
  197. package/icc-x-api/icc-doctemplate-x-api.js.map +1 -1
  198. package/icc-x-api/icc-document-x-api.d.ts +3 -1
  199. package/icc-x-api/icc-document-x-api.js +4 -3
  200. package/icc-x-api/icc-document-x-api.js.map +1 -1
  201. package/icc-x-api/icc-form-x-api.d.ts +2 -1
  202. package/icc-x-api/icc-form-x-api.js +2 -2
  203. package/icc-x-api/icc-form-x-api.js.map +1 -1
  204. package/icc-x-api/icc-hcparty-x-api.d.ts +2 -1
  205. package/icc-x-api/icc-hcparty-x-api.js +2 -2
  206. package/icc-x-api/icc-hcparty-x-api.js.map +1 -1
  207. package/icc-x-api/icc-helement-x-api.d.ts +2 -1
  208. package/icc-x-api/icc-helement-x-api.js +2 -2
  209. package/icc-x-api/icc-helement-x-api.js.map +1 -1
  210. package/icc-x-api/icc-invoice-x-api.d.ts +2 -1
  211. package/icc-x-api/icc-invoice-x-api.js +2 -2
  212. package/icc-x-api/icc-invoice-x-api.js.map +1 -1
  213. package/icc-x-api/icc-maintenance-task-x-api.d.ts +2 -1
  214. package/icc-x-api/icc-maintenance-task-x-api.js +2 -2
  215. package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
  216. package/icc-x-api/icc-message-x-api.d.ts +2 -1
  217. package/icc-x-api/icc-message-x-api.js +2 -2
  218. package/icc-x-api/icc-message-x-api.js.map +1 -1
  219. package/icc-x-api/icc-patient-x-api.d.ts +2 -1
  220. package/icc-x-api/icc-patient-x-api.js +2 -2
  221. package/icc-x-api/icc-patient-x-api.js.map +1 -1
  222. package/icc-x-api/icc-receipt-x-api.d.ts +2 -1
  223. package/icc-x-api/icc-receipt-x-api.js +2 -2
  224. package/icc-x-api/icc-receipt-x-api.js.map +1 -1
  225. package/icc-x-api/icc-time-table-x-api.d.ts +2 -1
  226. package/icc-x-api/icc-time-table-x-api.js +2 -2
  227. package/icc-x-api/icc-time-table-x-api.js.map +1 -1
  228. package/icc-x-api/icc-user-x-api.d.ts +2 -1
  229. package/icc-x-api/icc-user-x-api.js +2 -2
  230. package/icc-x-api/icc-user-x-api.js.map +1 -1
  231. package/icc-x-api/index.d.ts +0 -4
  232. package/icc-x-api/index.js +31 -34
  233. package/icc-x-api/index.js.map +1 -1
  234. package/icc-x-api/storage/KeyStorageImpl.js +3 -1
  235. package/icc-x-api/storage/KeyStorageImpl.js.map +1 -1
  236. package/icc-x-api/storage/LocalStorageImpl.d.ts +1 -1
  237. package/icc-x-api/storage/LocalStorageImpl.js +10 -2
  238. package/icc-x-api/storage/LocalStorageImpl.js.map +1 -1
  239. package/icc-x-api/storage/StorageFacade.d.ts +1 -1
  240. package/icc-x-api/storage/StorageFacade.js.map +1 -1
  241. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"icc-accesslog-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-accesslog-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { IccAccesslogApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as models from '../icc-api/model/models'\nimport { AccessLog, PaginatedListAccessLog } from '../icc-api/model/models'\n\nimport * as _ from 'lodash'\nimport { crypt, decrypt, hex2ua, ua2utf8, utf8_2ua } from './utils'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\n\nexport interface AccessLogWithPatientId extends AccessLog {\n patientId: string\n}\n\nexport class IccAccesslogXApi extends IccAccesslogApi {\n crypto: IccCryptoXApi\n cryptedKeys = ['detail', 'objectId']\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n newInstance(user: models.User, patient: models.Patient, h: any) {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n const accessslog = _.assign(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.AccessLog',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n date: +new Date(),\n responsible: dataOwnerId,\n author: user.id,\n codes: [],\n tags: [],\n user: user.id,\n patientId: patient.id,\n accessType: 'USER_ACCESS',\n },\n h || {}\n )\n\n return this.crypto.extractDelegationsSFKs(patient, dataOwnerId).then(async (secretForeignKeys) => {\n const dels = await this.crypto.initObjectDelegations(accessslog, patient, dataOwnerId!, secretForeignKeys.extractedKeys[0])\n const eks = await this.crypto.initEncryptionKeys(accessslog, dataOwnerId!)\n\n _.extend(accessslog, {\n delegations: dels.delegations,\n cryptedForeignKeys: dels.cryptedForeignKeys,\n secretForeignKeys: dels.secretForeignKeys,\n encryptionKeys: eks.encryptionKeys,\n })\n\n let promise = Promise.resolve(accessslog)\n ;(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : []).forEach(\n (delegateId) =>\n (promise = promise.then(() =>\n this.crypto.addDelegationsAndEncryptionKeys(patient, accessslog, dataOwnerId!, delegateId, dels.secretId, eks.secretId).catch((e) => {\n console.log(e)\n return accessslog\n })\n ))\n )\n return promise\n })\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all helements with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the helements of the patient.\n *\n * @param hcpartyId\n * @param patient (Promise)\n * @param keepObsoleteVersions\n */\n\n findBy(hcpartyId: string, patient: models.Patient) {\n return this.crypto\n .extractDelegationsSFKs(patient, hcpartyId)\n .then((secretForeignKeys) =>\n secretForeignKeys && secretForeignKeys.extractedKeys && secretForeignKeys.extractedKeys.length > 0\n ? this.findByHCPartyPatientSecretFKeys(secretForeignKeys.hcpartyId!, _.uniq(secretForeignKeys.extractedKeys).join(','))\n : Promise.resolve([])\n )\n }\n\n findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise<Array<AccessLog> | any> {\n return super.findAccessLogsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys).then((accesslogs) => this.decrypt(hcPartyId, accesslogs))\n }\n\n decrypt(hcpId: string, accessLogs: Array<models.AccessLog>): Promise<Array<models.AccessLog>> {\n //First check that we have no dangling delegation\n\n return Promise.all(\n accessLogs.map((accessLog) => {\n return accessLog.encryptedSelf\n ? this.crypto\n .extractKeysFromDelegationsForHcpHierarchy(\n hcpId!,\n accessLog.id!,\n _.size(accessLog.encryptionKeys) ? accessLog.encryptionKeys! : accessLog.delegations!\n )\n .then(({ extractedKeys: sfks }) => {\n if (!sfks || !sfks.length) {\n //console.log(\"Cannot decrypt contact\", ctc.id)\n return Promise.resolve(accessLog)\n }\n return this.crypto.AES.importKey('raw', hex2ua(sfks[0].replace(/-/g, ''))).then((key) =>\n decrypt(accessLog, (ec) =>\n this.crypto.AES.decrypt(key, ec).then((dec) => {\n const jsonContent = dec && ua2utf8(dec)\n try {\n return JSON.parse(jsonContent)\n } catch (e) {\n console.log('Cannot parse access log', accessLog.id, jsonContent || 'Invalid content')\n return {}\n }\n })\n )\n )\n })\n : Promise.resolve(accessLog)\n })\n )\n }\n\n initEncryptionKeys(user: models.User, accessLog: models.AccessLog): Promise<models.AccessLog> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n return this.crypto.initEncryptionKeys(accessLog, dataOwnerId!).then((eks) => {\n let promise = Promise.resolve(\n _.extend(accessLog, {\n encryptionKeys: eks.encryptionKeys,\n })\n )\n ;(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : []).forEach(\n (delegateId) =>\n (promise = promise.then((accessLog) =>\n this.crypto.appendEncryptionKeys(accessLog, dataOwnerId!, delegateId, eks.secretId).then((extraEks) => {\n return _.extend(extraEks.modifiedObject, {\n encryptionKeys: extraEks.encryptionKeys,\n })\n })\n ))\n )\n return promise\n })\n }\n\n encrypt(user: models.User, accessLogs: Array<models.AccessLog>): Promise<Array<models.AccessLog>> {\n return Promise.all(\n accessLogs.map((accessLog) =>\n (accessLog.encryptionKeys && Object.keys(accessLog.encryptionKeys).length\n ? Promise.resolve(accessLog)\n : this.initEncryptionKeys(user, accessLog)\n )\n .then((accessLog: AccessLog) =>\n this.crypto.extractKeysFromDelegationsForHcpHierarchy(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.id!, accessLog.encryptionKeys!)\n )\n .then(async (eks: { extractedKeys: Array<string>; hcpartyId: string }) => {\n const rawKey = eks.extractedKeys[0].replace(/-/g, '')\n const key = await this.crypto.AES.importKey('raw', hex2ua(rawKey))\n return crypt(\n accessLog,\n (obj: { [key: string]: string }) => this.crypto.AES.encrypt(key, utf8_2ua(JSON.stringify(obj)), rawKey),\n this.cryptedKeys\n )\n })\n )\n )\n }\n\n createAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n createAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise<models.AccessLog | any> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((als) => super.createAccessLog(als[0]))\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n : Promise.resolve()\n }\n\n getAccessLog(accessLogId: string): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n getAccessLogWithUser(user: models.User, accessLogId: string): Promise<models.AccessLog | any> {\n return super\n .getAccessLog(accessLogId)\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n }\n\n listAccessLogs(fromEpoch?: number, toEpoch?: number, startKey?: number, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n listAccessLogsWithUser(\n user: models.User,\n fromEpoch?: number,\n toEpoch?: number,\n startKey?: number,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise<PaginatedListAccessLog> {\n return super\n .listAccessLogs(fromEpoch, toEpoch, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n modifyAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n async modifyAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise<models.AccessLog | null> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((als) => super.modifyAccessLog(als[0]))\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n : null\n }\n\n findByUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n findByUserAfterDateWithUser(\n user: models.User,\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise<models.AccessLog | any> {\n return super\n .findByUserAfterDate(userId, accessType, startDate, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n async findLatestAccessLogsOfPatientsWithUser(user: models.User, userId: string, limit = 100, startDate?: number): Promise<models.AccessLog[]> {\n let foundAccessLogs: AccessLogWithPatientId[] = [],\n nextKeyPair: models.PaginatedDocumentKeyIdPairObject | undefined = undefined\n const numberRequestedAccessLogs = 100\n const MAX_WHILE_ITERATIONS = 5\n\n for (let currentIteration = 0; foundAccessLogs.length < limit && currentIteration < MAX_WHILE_ITERATIONS; currentIteration++) {\n const currentLimit = limit - foundAccessLogs.length\n const { rows: logs, nextKeyPair: newNextKeyPair }: models.PaginatedListAccessLog = (await super.findByUserAfterDate(\n userId,\n 'USER_ACCESS',\n startDate,\n nextKeyPair && JSON.stringify(nextKeyPair.startKey!),\n nextKeyPair && nextKeyPair.startKeyDocId!,\n numberRequestedAccessLogs,\n true\n )) as models.PaginatedListAccessLog\n const logsWithPatientId: AccessLogWithPatientId[] = await this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, logs as AccessLog[]).then(\n (decryptedLogs) =>\n Promise.all(\n _.map(decryptedLogs, (decryptedLog) => {\n return this.crypto.extractCryptedFKs(decryptedLog, user.healthcarePartyId as string).then(\n (keys) =>\n ({\n ...decryptedLog,\n patientId: _.head(keys.extractedKeys),\n } as AccessLogWithPatientId)\n )\n })\n )\n )\n\n const uniqueLogs: AccessLogWithPatientId[] = _.chain(logsWithPatientId)\n .reject((log) => _.some(foundAccessLogs, ({ patientId }) => patientId === log.patientId))\n .uniqBy((log: AccessLogWithPatientId) => log.patientId)\n .value()\n .slice(0, currentLimit)\n\n foundAccessLogs = [...foundAccessLogs, ...uniqueLogs]\n\n if ((logs || []).length < numberRequestedAccessLogs) {\n break\n } else if (newNextKeyPair) {\n nextKeyPair = newNextKeyPair\n } else {\n break\n }\n }\n\n return foundAccessLogs\n }\n}\n"]}
1
+ {"version":3,"file":"icc-accesslog-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-accesslog-x-api.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA4C;AAM5C,4BAA2B;AAC3B,mCAAmE;AAQnE,MAAa,gBAAiB,SAAQ,yBAAe;IAKnD,YACE,IAAY,EACZ,OAAkC,EAClC,MAAqB,EACrB,YAA8B,EAC9B,sBAA8C,EAC9C,YAA2E,OAAO,MAAM,KAAK,WAAW;QACtG,CAAC,CAAC,MAAM,CAAC,KAAK;QACd,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW;YAC7B,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,KAAK;QAET,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAA;QAfzD,gBAAW,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QAgBlC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAED,WAAW,CAAC,IAAiB,EAAE,OAAuB,EAAE,CAAM;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAE1D,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CACzB;YACE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC5B,KAAK,EAAE,qCAAqC;YAC5C,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;YAC7B,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;YAC9B,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE;YACjB,WAAW,EAAE,WAAW;YACxB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,EAAE;YACb,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,UAAU,EAAE,aAAa;SAC1B,EACD,CAAC,IAAI,EAAE,CACR,CAAA;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAO,iBAAiB,EAAE,EAAE;YAC/F,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAY,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3H,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,WAAY,CAAC,CAAA;YAE1E,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE;gBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,cAAc,EAAE,GAAG,CAAC,cAAc;aACnC,CAAC,CAAA;YAEF,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CACxC;YAAA,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAC3H,CAAC,UAAU,EAAE,EAAE,CACb,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAC3B,IAAI,CAAC,MAAM,CAAC,+BAA+B,CAAC,OAAO,EAAE,UAAU,EAAE,WAAY,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBAClI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACd,OAAO,UAAU,CAAA;YACnB,CAAC,CAAC,CACH,CAAC,CACL,CAAA;YACD,OAAO,OAAO,CAAA;QAChB,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC;IAED,qCAAqC;IACrC;;;;;;;;;;;;;;;OAeG;IAEH,MAAM,CAAC,SAAiB,EAAE,OAAuB;QAC/C,OAAO,IAAI,CAAC,MAAM;aACf,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAC;aAC1C,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAC1B,iBAAiB,IAAI,iBAAiB,CAAC,aAAa,IAAI,iBAAiB,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YAChG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,SAAU,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CACxB,CAAA;IACL,CAAC;IAED,+BAA+B,CAAC,SAAiB,EAAE,WAAmB;QACpE,OAAO,KAAK,CAAC,yCAAyC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;IAC1I,CAAC;IAED,OAAO,CAAC,KAAa,EAAE,UAAmC;QACxD,iDAAiD;QAEjD,OAAO,OAAO,CAAC,GAAG,CAChB,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YAC3B,OAAO,SAAS,CAAC,aAAa;gBAC5B,CAAC,CAAC,IAAI,CAAC,MAAM;qBACR,yCAAyC,CACxC,KAAM,EACN,SAAS,CAAC,EAAG,EACb,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAe,CAAC,CAAC,CAAC,SAAS,CAAC,WAAY,CACtF;qBACA,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE;oBAChC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;wBACzB,+CAA+C;wBAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;qBAClC;oBACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACtF,IAAA,eAAO,EAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;wBAC5C,MAAM,WAAW,GAAG,GAAG,IAAI,IAAA,eAAO,EAAC,GAAG,CAAC,CAAA;wBACvC,IAAI;4BACF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;yBAC/B;wBAAC,OAAO,CAAC,EAAE;4BACV,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW,IAAI,iBAAiB,CAAC,CAAA;4BACtF,OAAO,EAAE,CAAA;yBACV;oBACH,CAAC,CAAC,CACH,CACF,CAAA;gBACH,CAAC,CAAC;gBACN,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAChC,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED,kBAAkB,CAAC,IAAiB,EAAE,SAA2B;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAE1D,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAY,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1E,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAC3B,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE;gBAClB,cAAc,EAAE,GAAG,CAAC,cAAc;aACnC,CAAC,CACH,CACA;YAAA,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAC3H,CAAC,UAAU,EAAE,EAAE,CACb,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACpC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAY,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACpG,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE;oBACvC,cAAc,EAAE,QAAQ,CAAC,cAAc;iBACxC,CAAC,CAAA;YACJ,CAAC,CAAC,CACH,CAAC,CACL,CAAA;YACD,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,CAAC,IAAiB,EAAE,UAAmC;QAC5D,OAAO,OAAO,CAAC,GAAG,CAChB,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC3B,CAAC,SAAS,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,MAAM;YACvE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;YAC5B,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAC3C;aACE,IAAI,CAAC,CAAC,SAAoB,EAAE,EAAE,CAC7B,IAAI,CAAC,MAAM,CAAC,yCAAyC,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAE,EAAE,SAAS,CAAC,EAAG,EAAE,SAAS,CAAC,cAAe,CAAC,CACzI;aACA,IAAI,CAAC,CAAO,GAAwD,EAAE,EAAE;YACvE,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YACrD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAA,cAAM,EAAC,MAAM,CAAC,CAAC,CAAA;YAClE,OAAO,IAAA,aAAK,EACV,SAAS,EACT,CAAC,GAA8B,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAA,gBAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EACvG,IAAI,CAAC,WAAW,CACjB,CAAA;QACH,CAAC,CAAA,CAAC,CACL,CACF,CAAA;IACH,CAAC;IAED,eAAe,CAAC,IAAuB;QACrC,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;IAC7G,CAAC;IAED,uBAAuB,CAAC,IAAiB,EAAE,IAAuB;QAChE,OAAO,IAAI;YACT,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;iBACpC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5C,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;iBACvF,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;IACvB,CAAC;IAED,YAAY,CAAC,WAAmB;QAC9B,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;IAC7G,CAAC;IAED,oBAAoB,CAAC,IAAiB,EAAE,WAAmB;QACzD,OAAO,KAAK;aACT,YAAY,CAAC,WAAW,CAAC;aACzB,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;aACvF,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC;IAED,cAAc,CAAC,SAAkB,EAAE,OAAgB,EAAE,QAAiB,EAAE,eAAwB,EAAE,KAAc;QAC9G,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;IAC7G,CAAC;IAED,sBAAsB,CACpB,IAAiB,EACjB,SAAkB,EAClB,OAAgB,EAChB,QAAiB,EACjB,eAAwB,EACxB,KAAc,EACd,UAAoB;QAEpB,OAAO,KAAK;aACT,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,CAAC;aAChF,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAE,EAAE,SAAS,CAAC,IAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAC5H,CAAA;IACL,CAAC;IAED,eAAe,CAAC,IAAuB;QACrC,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;IAC7G,CAAC;IAEK,uBAAuB,CAAC,IAAiB,EAAE,IAAuB;;;;;YACtE,OAAO,IAAI;gBACT,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;qBACpC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAM,eAAe,YAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC5C,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;qBACvF,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1B,CAAC,CAAC,IAAI,CAAA;QACV,CAAC;KAAA;IAED,mBAAmB,CACjB,MAAc,EACd,UAAmB,EACnB,SAAkB,EAClB,QAAiB,EACjB,eAAwB,EACxB,KAAc,EACd,UAAoB;QAEpB,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;IAC7G,CAAC;IAED,2BAA2B,CACzB,IAAiB,EACjB,MAAc,EACd,UAAmB,EACnB,SAAkB,EAClB,QAAiB,EACjB,eAAwB,EACxB,KAAc,EACd,UAAoB;QAEpB,OAAO,KAAK;aACT,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,CAAC;aAChG,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAE,EAAE,SAAS,CAAC,IAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAC5H,CAAA;IACL,CAAC;IAEK,sCAAsC,CAAC,IAAiB,EAAE,MAAc,EAAE,KAAK,GAAG,GAAG,EAAE,SAAkB;;;;;YAC7G,IAAI,eAAe,GAA6B,EAAE,EAChD,WAAW,GAAwD,SAAS,CAAA;YAC9E,MAAM,yBAAyB,GAAG,GAAG,CAAA;YACrC,MAAM,oBAAoB,GAAG,CAAC,CAAA;YAE9B,KAAK,IAAI,gBAAgB,GAAG,CAAC,EAAE,eAAe,CAAC,MAAM,GAAG,KAAK,IAAI,gBAAgB,GAAG,oBAAoB,EAAE,gBAAgB,EAAE,EAAE;gBAC5H,MAAM,YAAY,GAAG,KAAK,GAAG,eAAe,CAAC,MAAM,CAAA;gBACnD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,GAAkC,CAAC,MAAM,OAAM,mBAAmB,YACjH,MAAM,EACN,aAAa,EACb,SAAS,EACT,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAS,CAAC,EACpD,WAAW,IAAI,WAAW,CAAC,aAAc,EACzC,yBAAyB,EACzB,IAAI,CACL,CAAkC,CAAA;gBACnC,MAAM,iBAAiB,GAA6B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAE,EAAE,IAAmB,CAAC,CAAC,IAAI,CACvI,CAAC,aAAa,EAAE,EAAE,CAChB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,YAAY,EAAE,EAAE;oBACpC,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,iBAA2B,CAAC,CAAC,IAAI,CACvF,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,gCACI,YAAY,KACf,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GACX,CAAA,CAC/B,CAAA;gBACH,CAAC,CAAC,CACH,CACJ,CAAA;gBAED,MAAM,UAAU,GAA6B,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;qBACpE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;qBACxF,MAAM,CAAC,CAAC,GAA2B,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;qBACtD,KAAK,EAAE;qBACP,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;gBAEzB,eAAe,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,UAAU,CAAC,CAAA;gBAErD,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,yBAAyB,EAAE;oBACnD,MAAK;iBACN;qBAAM,IAAI,cAAc,EAAE;oBACzB,WAAW,GAAG,cAAc,CAAA;iBAC7B;qBAAM;oBACL,MAAK;iBACN;aACF;YAED,OAAO,eAAe,CAAA;QACxB,CAAC;KAAA;CACF;AA/TD,4CA+TC","sourcesContent":["import { IccAccesslogApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as models from '../icc-api/model/models'\nimport { AccessLog, PaginatedListAccessLog } from '../icc-api/model/models'\n\nimport * as _ from 'lodash'\nimport { crypt, decrypt, hex2ua, ua2utf8, utf8_2ua } from './utils'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport interface AccessLogWithPatientId extends AccessLog {\n patientId: string\n}\n\nexport class IccAccesslogXApi extends IccAccesslogApi {\n crypto: IccCryptoXApi\n cryptedKeys = ['detail', 'objectId']\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n newInstance(user: models.User, patient: models.Patient, h: any) {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n const accessslog = _.assign(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.AccessLog',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n date: +new Date(),\n responsible: dataOwnerId,\n author: user.id,\n codes: [],\n tags: [],\n user: user.id,\n patientId: patient.id,\n accessType: 'USER_ACCESS',\n },\n h || {}\n )\n\n return this.crypto.extractDelegationsSFKs(patient, dataOwnerId).then(async (secretForeignKeys) => {\n const dels = await this.crypto.initObjectDelegations(accessslog, patient, dataOwnerId!, secretForeignKeys.extractedKeys[0])\n const eks = await this.crypto.initEncryptionKeys(accessslog, dataOwnerId!)\n\n _.extend(accessslog, {\n delegations: dels.delegations,\n cryptedForeignKeys: dels.cryptedForeignKeys,\n secretForeignKeys: dels.secretForeignKeys,\n encryptionKeys: eks.encryptionKeys,\n })\n\n let promise = Promise.resolve(accessslog)\n ;(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : []).forEach(\n (delegateId) =>\n (promise = promise.then(() =>\n this.crypto.addDelegationsAndEncryptionKeys(patient, accessslog, dataOwnerId!, delegateId, dels.secretId, eks.secretId).catch((e) => {\n console.log(e)\n return accessslog\n })\n ))\n )\n return promise\n })\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all helements with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the helements of the patient.\n *\n * @param hcpartyId\n * @param patient (Promise)\n * @param keepObsoleteVersions\n */\n\n findBy(hcpartyId: string, patient: models.Patient) {\n return this.crypto\n .extractDelegationsSFKs(patient, hcpartyId)\n .then((secretForeignKeys) =>\n secretForeignKeys && secretForeignKeys.extractedKeys && secretForeignKeys.extractedKeys.length > 0\n ? this.findByHCPartyPatientSecretFKeys(secretForeignKeys.hcpartyId!, _.uniq(secretForeignKeys.extractedKeys).join(','))\n : Promise.resolve([])\n )\n }\n\n findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise<Array<AccessLog> | any> {\n return super.findAccessLogsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys).then((accesslogs) => this.decrypt(hcPartyId, accesslogs))\n }\n\n decrypt(hcpId: string, accessLogs: Array<models.AccessLog>): Promise<Array<models.AccessLog>> {\n //First check that we have no dangling delegation\n\n return Promise.all(\n accessLogs.map((accessLog) => {\n return accessLog.encryptedSelf\n ? this.crypto\n .extractKeysFromDelegationsForHcpHierarchy(\n hcpId!,\n accessLog.id!,\n _.size(accessLog.encryptionKeys) ? accessLog.encryptionKeys! : accessLog.delegations!\n )\n .then(({ extractedKeys: sfks }) => {\n if (!sfks || !sfks.length) {\n //console.log(\"Cannot decrypt contact\", ctc.id)\n return Promise.resolve(accessLog)\n }\n return this.crypto.AES.importKey('raw', hex2ua(sfks[0].replace(/-/g, ''))).then((key) =>\n decrypt(accessLog, (ec) =>\n this.crypto.AES.decrypt(key, ec).then((dec) => {\n const jsonContent = dec && ua2utf8(dec)\n try {\n return JSON.parse(jsonContent)\n } catch (e) {\n console.log('Cannot parse access log', accessLog.id, jsonContent || 'Invalid content')\n return {}\n }\n })\n )\n )\n })\n : Promise.resolve(accessLog)\n })\n )\n }\n\n initEncryptionKeys(user: models.User, accessLog: models.AccessLog): Promise<models.AccessLog> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n return this.crypto.initEncryptionKeys(accessLog, dataOwnerId!).then((eks) => {\n let promise = Promise.resolve(\n _.extend(accessLog, {\n encryptionKeys: eks.encryptionKeys,\n })\n )\n ;(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : []).forEach(\n (delegateId) =>\n (promise = promise.then((accessLog) =>\n this.crypto.appendEncryptionKeys(accessLog, dataOwnerId!, delegateId, eks.secretId).then((extraEks) => {\n return _.extend(extraEks.modifiedObject, {\n encryptionKeys: extraEks.encryptionKeys,\n })\n })\n ))\n )\n return promise\n })\n }\n\n encrypt(user: models.User, accessLogs: Array<models.AccessLog>): Promise<Array<models.AccessLog>> {\n return Promise.all(\n accessLogs.map((accessLog) =>\n (accessLog.encryptionKeys && Object.keys(accessLog.encryptionKeys).length\n ? Promise.resolve(accessLog)\n : this.initEncryptionKeys(user, accessLog)\n )\n .then((accessLog: AccessLog) =>\n this.crypto.extractKeysFromDelegationsForHcpHierarchy(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.id!, accessLog.encryptionKeys!)\n )\n .then(async (eks: { extractedKeys: Array<string>; hcpartyId: string }) => {\n const rawKey = eks.extractedKeys[0].replace(/-/g, '')\n const key = await this.crypto.AES.importKey('raw', hex2ua(rawKey))\n return crypt(\n accessLog,\n (obj: { [key: string]: string }) => this.crypto.AES.encrypt(key, utf8_2ua(JSON.stringify(obj)), rawKey),\n this.cryptedKeys\n )\n })\n )\n )\n }\n\n createAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n createAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise<models.AccessLog | any> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((als) => super.createAccessLog(als[0]))\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n : Promise.resolve()\n }\n\n getAccessLog(accessLogId: string): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n getAccessLogWithUser(user: models.User, accessLogId: string): Promise<models.AccessLog | any> {\n return super\n .getAccessLog(accessLogId)\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n }\n\n listAccessLogs(fromEpoch?: number, toEpoch?: number, startKey?: number, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n listAccessLogsWithUser(\n user: models.User,\n fromEpoch?: number,\n toEpoch?: number,\n startKey?: number,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise<PaginatedListAccessLog> {\n return super\n .listAccessLogs(fromEpoch, toEpoch, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n modifyAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n async modifyAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise<models.AccessLog | null> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((als) => super.modifyAccessLog(als[0]))\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n : null\n }\n\n findByUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n findByUserAfterDateWithUser(\n user: models.User,\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise<models.AccessLog | any> {\n return super\n .findByUserAfterDate(userId, accessType, startDate, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n async findLatestAccessLogsOfPatientsWithUser(user: models.User, userId: string, limit = 100, startDate?: number): Promise<models.AccessLog[]> {\n let foundAccessLogs: AccessLogWithPatientId[] = [],\n nextKeyPair: models.PaginatedDocumentKeyIdPairObject | undefined = undefined\n const numberRequestedAccessLogs = 100\n const MAX_WHILE_ITERATIONS = 5\n\n for (let currentIteration = 0; foundAccessLogs.length < limit && currentIteration < MAX_WHILE_ITERATIONS; currentIteration++) {\n const currentLimit = limit - foundAccessLogs.length\n const { rows: logs, nextKeyPair: newNextKeyPair }: models.PaginatedListAccessLog = (await super.findByUserAfterDate(\n userId,\n 'USER_ACCESS',\n startDate,\n nextKeyPair && JSON.stringify(nextKeyPair.startKey!),\n nextKeyPair && nextKeyPair.startKeyDocId!,\n numberRequestedAccessLogs,\n true\n )) as models.PaginatedListAccessLog\n const logsWithPatientId: AccessLogWithPatientId[] = await this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, logs as AccessLog[]).then(\n (decryptedLogs) =>\n Promise.all(\n _.map(decryptedLogs, (decryptedLog) => {\n return this.crypto.extractCryptedFKs(decryptedLog, user.healthcarePartyId as string).then(\n (keys) =>\n ({\n ...decryptedLog,\n patientId: _.head(keys.extractedKeys),\n } as AccessLogWithPatientId)\n )\n })\n )\n )\n\n const uniqueLogs: AccessLogWithPatientId[] = _.chain(logsWithPatientId)\n .reject((log) => _.some(foundAccessLogs, ({ patientId }) => patientId === log.patientId))\n .uniqBy((log: AccessLogWithPatientId) => log.patientId)\n .value()\n .slice(0, currentLimit)\n\n foundAccessLogs = [...foundAccessLogs, ...uniqueLogs]\n\n if ((logs || []).length < numberRequestedAccessLogs) {\n break\n } else if (newNextKeyPair) {\n nextKeyPair = newNextKeyPair\n } else {\n break\n }\n }\n\n return foundAccessLogs\n }\n}\n"]}
@@ -4,6 +4,7 @@ import { IccContactXApi } from './icc-contact-x-api';
4
4
  import { IccDocumentXApi } from './icc-document-x-api';
5
5
  import { IccHelementXApi } from './icc-helement-x-api';
6
6
  import { Contact, Document, HealthElement, Service } from '../icc-api/model/models';
7
+ import { AuthenticationProvider } from './auth/AuthenticationProvider';
7
8
  export declare type Patcher = ContactPatcher | HealthElementPatcher | DocumentPatcher | ServicePatcher;
8
9
  export interface ContactPatcher {
9
10
  type: 'ContactDto';
@@ -29,7 +30,7 @@ export declare class IccBekmehrXApi extends IccBekmehrApi {
29
30
  private readonly authApi;
30
31
  constructor(host: string, headers: {
31
32
  [key: string]: string;
32
- }, authApi: IccAuthApi, ctcApi: IccContactXApi, helementApi: IccHelementXApi, documentApi: IccDocumentXApi, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
33
+ }, authApi: IccAuthApi, ctcApi: IccContactXApi, helementApi: IccHelementXApi, documentApi: IccDocumentXApi, authenticationProvider: AuthenticationProvider, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
33
34
  socketEventListener(socket: WebSocket, healthcarePartyId: string, resolve: (value: Blob) => void, reject: (reason?: any) => void, patchers: Patcher[], progressCallback?: (progress: number) => void): (event: MessageEvent) => void;
34
35
  generateSmfExportWithEncryptionSupport(patientId: string, healthcarePartyId: string, language: string, body: models.SoftwareMedicalFileExport, progressCallback?: (progress: number) => void, sessionId?: string, patchers?: Patcher[]): Promise<Blob | undefined>;
35
36
  generateSumehrExportWithEncryptionSupport(patientId: string, healthcarePartyId: string, language: string, body: models.SumehrExportInfo, sessionId?: string, patchers?: Patcher[]): Promise<Blob | undefined>;
@@ -25,12 +25,12 @@ const icc_api_1 = require("../icc-api");
25
25
  const binary_utils_1 = require("./utils/binary-utils");
26
26
  const models_1 = require("../icc-api/model/models");
27
27
  class IccBekmehrXApi extends icc_api_1.IccBekmehrApi {
28
- constructor(host, headers, authApi, ctcApi, helementApi, documentApi, fetchImpl = typeof window !== 'undefined'
28
+ constructor(host, headers, authApi, ctcApi, helementApi, documentApi, authenticationProvider, fetchImpl = typeof window !== 'undefined'
29
29
  ? window.fetch
30
30
  : typeof self !== 'undefined'
31
31
  ? self.fetch
32
32
  : fetch) {
33
- super(host, headers, fetchImpl);
33
+ super(host, headers, authenticationProvider, fetchImpl);
34
34
  this.authApi = authApi;
35
35
  this.ctcApi = ctcApi;
36
36
  this.helementApi = helementApi;
@@ -1 +1 @@
1
- {"version":3,"file":"icc-bekmehr-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-bekmehr-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import * as models from '../icc-api/model/models'\nimport { IccAuthApi, IccBekmehrApi } from '../icc-api'\nimport { IccContactXApi } from './icc-contact-x-api'\nimport { IccDocumentXApi } from './icc-document-x-api'\nimport { IccHelementXApi } from './icc-helement-x-api'\nimport { string2ua, ua2string } from './utils/binary-utils'\nimport { Contact, Document, HealthElement, Service } from '../icc-api/model/models'\n\nexport type Patcher = ContactPatcher | HealthElementPatcher | DocumentPatcher | ServicePatcher\nexport interface ContactPatcher {\n type: 'ContactDto'\n patch: (contacts: Contact[]) => Promise<Contact[]>\n}\nexport interface HealthElementPatcher {\n type: 'HealthElementDto'\n patch: (patients: HealthElement[]) => Promise<HealthElement[]>\n}\nexport interface DocumentPatcher {\n type: 'DocumentDto'\n patch: (documents: Document[]) => Promise<Document[]>\n}\nexport interface ServicePatcher {\n type: 'ServiceDto'\n patch: (documents: Service[]) => Promise<Service[]>\n}\n\nexport class IccBekmehrXApi extends IccBekmehrApi {\n private readonly ctcApi: IccContactXApi\n private readonly helementApi: IccHelementXApi\n private readonly documentApi: IccDocumentXApi\n private readonly wssHost: string\n private readonly authApi: IccAuthApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n authApi: IccAuthApi,\n ctcApi: IccContactXApi,\n helementApi: IccHelementXApi,\n documentApi: IccDocumentXApi,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, fetchImpl)\n this.authApi = authApi\n this.ctcApi = ctcApi\n this.helementApi = helementApi\n this.documentApi = documentApi\n\n this.wssHost = new URL(this.host, typeof window !== 'undefined' ? window.location.href : undefined).href\n .replace(/^http/, 'ws')\n .replace(/\\/rest\\/v.+/, '/ws')\n }\n\n socketEventListener(\n socket: WebSocket,\n healthcarePartyId: string,\n resolve: (value: Blob) => void,\n reject: (reason?: any) => void,\n patchers: Patcher[],\n progressCallback?: (progress: number) => void\n ) {\n const that = this\n\n const send = (command: string, uuid: string, body: any) => {\n const data = JSON.stringify({ command, uuid, body })\n socket.send(data.length > 65000 ? string2ua(data).buffer : data)\n }\n\n const messageHandler = (msg: any, event: any) => {\n if (msg.command === 'decrypt') {\n if (msg.type === 'ContactDto') {\n that.ctcApi\n .decrypt(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'ContactDto')\n .reduce(async (p, patcher) => (patcher as ContactPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n } else if (msg.type === 'HealthElementDto') {\n that.helementApi\n .decrypt(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'HealthElementDto')\n .reduce(async (p, patcher) => (patcher as HealthElementPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n } else if (msg.type === 'DocumentDto') {\n that.documentApi\n .decrypt(\n healthcarePartyId,\n msg.body.map((d: JSON) => new Document(d))\n )\n .then((res) =>\n patchers\n .filter((p) => p.type === 'DocumentDto')\n .reduce(async (p, patcher) => (patcher as DocumentPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) =>\n send(\n 'decryptResponse',\n msg.uuid,\n res?.map((d) => {\n const de = d.decryptedAttachment\n const { encryptedAttachment, ...stripped } = d\n return de ? { ...stripped, decryptedAttachment: btoa(ua2string(de)) } : stripped\n })\n )\n )\n } else if (msg.type === 'ServiceDto') {\n that.ctcApi\n .decryptServices(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'ServiceDto')\n .reduce(async (p, patcher) => (patcher as ServicePatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n }\n } else if (msg.command === 'progress') {\n if (progressCallback && msg.body && msg.body[0]) {\n progressCallback(msg.body[0].progress)\n }\n } else {\n console.error('error received from backend:' + event.data)\n reject('websocket error: ' + event.data)\n socket.close(4000, 'backend error')\n }\n }\n\n return (event: MessageEvent) => {\n if (typeof event.data === 'string') {\n const msg = JSON.parse(event.data)\n messageHandler(msg, event)\n } else {\n const blob: Blob = event.data\n const subBlob = blob.slice(0, 1)\n const br = new FileReader()\n br.onload = function (e) {\n const firstChar = e.target && new Uint8Array((e.target as any).result as ArrayBuffer)[0]\n\n if (firstChar === 0x7b) {\n const tr = new FileReader()\n tr.onload = function (e) {\n const msg = e.target && JSON.parse((e.target as any).result as string)\n messageHandler(msg, event)\n }\n tr.readAsBinaryString(blob)\n } else {\n resolve(blob)\n socket.close(1000, 'Ok')\n }\n }\n br.readAsArrayBuffer(subBlob)\n }\n }\n }\n\n generateSmfExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SoftwareMedicalFileExport,\n progressCallback?: (progress: number) => void,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise<Blob | undefined> {\n return (!sessionId ? this.authApi.token('GET', '/ws/be_kmehr/generateSmf') : Promise.resolve('')).then(\n (token) =>\n new Promise<Blob | undefined>((resolve, reject) => {\n const socket = new WebSocket(\n token.length ? `${this.wssHost}/be_kmehr/generateSmf;tokenid=${token}` : `${this.wssHost}/be_kmehr/generateSmf;sessionid=${sessionId}`\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers, progressCallback))\n })\n )\n }\n\n generateSumehrExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise<Blob | undefined> {\n return (!sessionId ? this.authApi.token('GET', '/ws/be_kmehr/generateSumehr') : Promise.resolve('')).then(\n (token) =>\n new Promise<Blob | undefined>((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateSumehr;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateSumehr;sessionid=${sessionId}`\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n\n generateSumehrV2ExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise<Blob | undefined> {\n return (!sessionId ? this.authApi.token('GET', '/ws/be_kmehr/generateSumehrV2') : Promise.resolve('')).then(\n (token) =>\n new Promise<Blob | undefined>((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateSumehrV2;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateSumehrV2;sessionid=${sessionId}`\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n\n generateDiaryNoteExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise<Blob | undefined> {\n return (!sessionId ? this.authApi.token('GET', '/ws/be_kmehr/generateDiaryNote') : Promise.resolve('')).then(\n (token) =>\n new Promise<Blob | undefined>((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateDiaryNote;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateDiaryNote;sessionid=${sessionId}`\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n\n generateMedicationSchemeWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n recipientSafe: string,\n version: number,\n body: models.MedicationSchemeExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise<Blob | undefined> {\n return (!sessionId ? this.authApi.token('GET', '/ws/be_kmehr/generateMedicationScheme') : Promise.resolve('')).then(\n (token) =>\n new Promise<Blob | undefined>((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateMedicationScheme;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateMedicationScheme;sessionid=${sessionId}`\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: {\n patientId: patientId,\n language: language,\n recipientSafe: recipientSafe,\n version: version,\n info: body,\n },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n}\n"]}
1
+ {"version":3,"file":"icc-bekmehr-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-bekmehr-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import * as models from '../icc-api/model/models'\nimport { IccAuthApi, IccBekmehrApi } from '../icc-api'\nimport { IccContactXApi } from './icc-contact-x-api'\nimport { IccDocumentXApi } from './icc-document-x-api'\nimport { IccHelementXApi } from './icc-helement-x-api'\nimport { string2ua, ua2string } from './utils/binary-utils'\nimport { Contact, Document, HealthElement, Service } from '../icc-api/model/models'\nimport { AuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport type Patcher = ContactPatcher | HealthElementPatcher | DocumentPatcher | ServicePatcher\nexport interface ContactPatcher {\n type: 'ContactDto'\n patch: (contacts: Contact[]) => Promise<Contact[]>\n}\nexport interface HealthElementPatcher {\n type: 'HealthElementDto'\n patch: (patients: HealthElement[]) => Promise<HealthElement[]>\n}\nexport interface DocumentPatcher {\n type: 'DocumentDto'\n patch: (documents: Document[]) => Promise<Document[]>\n}\nexport interface ServicePatcher {\n type: 'ServiceDto'\n patch: (documents: Service[]) => Promise<Service[]>\n}\n\nexport class IccBekmehrXApi extends IccBekmehrApi {\n private readonly ctcApi: IccContactXApi\n private readonly helementApi: IccHelementXApi\n private readonly documentApi: IccDocumentXApi\n private readonly wssHost: string\n private readonly authApi: IccAuthApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n authApi: IccAuthApi,\n ctcApi: IccContactXApi,\n helementApi: IccHelementXApi,\n documentApi: IccDocumentXApi,\n authenticationProvider: AuthenticationProvider,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.authApi = authApi\n this.ctcApi = ctcApi\n this.helementApi = helementApi\n this.documentApi = documentApi\n\n this.wssHost = new URL(this.host, typeof window !== 'undefined' ? window.location.href : undefined).href\n .replace(/^http/, 'ws')\n .replace(/\\/rest\\/v.+/, '/ws')\n }\n\n socketEventListener(\n socket: WebSocket,\n healthcarePartyId: string,\n resolve: (value: Blob) => void,\n reject: (reason?: any) => void,\n patchers: Patcher[],\n progressCallback?: (progress: number) => void\n ) {\n const that = this\n\n const send = (command: string, uuid: string, body: any) => {\n const data = JSON.stringify({ command, uuid, body })\n socket.send(data.length > 65000 ? string2ua(data).buffer : data)\n }\n\n const messageHandler = (msg: any, event: any) => {\n if (msg.command === 'decrypt') {\n if (msg.type === 'ContactDto') {\n that.ctcApi\n .decrypt(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'ContactDto')\n .reduce(async (p, patcher) => (patcher as ContactPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n } else if (msg.type === 'HealthElementDto') {\n that.helementApi\n .decrypt(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'HealthElementDto')\n .reduce(async (p, patcher) => (patcher as HealthElementPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n } else if (msg.type === 'DocumentDto') {\n that.documentApi\n .decrypt(\n healthcarePartyId,\n msg.body.map((d: JSON) => new Document(d))\n )\n .then((res) =>\n patchers\n .filter((p) => p.type === 'DocumentDto')\n .reduce(async (p, patcher) => (patcher as DocumentPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) =>\n send(\n 'decryptResponse',\n msg.uuid,\n res?.map((d) => {\n const de = d.decryptedAttachment\n const { encryptedAttachment, ...stripped } = d\n return de ? { ...stripped, decryptedAttachment: btoa(ua2string(de)) } : stripped\n })\n )\n )\n } else if (msg.type === 'ServiceDto') {\n that.ctcApi\n .decryptServices(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'ServiceDto')\n .reduce(async (p, patcher) => (patcher as ServicePatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n }\n } else if (msg.command === 'progress') {\n if (progressCallback && msg.body && msg.body[0]) {\n progressCallback(msg.body[0].progress)\n }\n } else {\n console.error('error received from backend:' + event.data)\n reject('websocket error: ' + event.data)\n socket.close(4000, 'backend error')\n }\n }\n\n return (event: MessageEvent) => {\n if (typeof event.data === 'string') {\n const msg = JSON.parse(event.data)\n messageHandler(msg, event)\n } else {\n const blob: Blob = event.data\n const subBlob = blob.slice(0, 1)\n const br = new FileReader()\n br.onload = function (e) {\n const firstChar = e.target && new Uint8Array((e.target as any).result as ArrayBuffer)[0]\n\n if (firstChar === 0x7b) {\n const tr = new FileReader()\n tr.onload = function (e) {\n const msg = e.target && JSON.parse((e.target as any).result as string)\n messageHandler(msg, event)\n }\n tr.readAsBinaryString(blob)\n } else {\n resolve(blob)\n socket.close(1000, 'Ok')\n }\n }\n br.readAsArrayBuffer(subBlob)\n }\n }\n }\n\n generateSmfExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SoftwareMedicalFileExport,\n progressCallback?: (progress: number) => void,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise<Blob | undefined> {\n return (!sessionId ? this.authApi.token('GET', '/ws/be_kmehr/generateSmf') : Promise.resolve('')).then(\n (token) =>\n new Promise<Blob | undefined>((resolve, reject) => {\n const socket = new WebSocket(\n token.length ? `${this.wssHost}/be_kmehr/generateSmf;tokenid=${token}` : `${this.wssHost}/be_kmehr/generateSmf;sessionid=${sessionId}`\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers, progressCallback))\n })\n )\n }\n\n generateSumehrExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise<Blob | undefined> {\n return (!sessionId ? this.authApi.token('GET', '/ws/be_kmehr/generateSumehr') : Promise.resolve('')).then(\n (token) =>\n new Promise<Blob | undefined>((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateSumehr;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateSumehr;sessionid=${sessionId}`\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n\n generateSumehrV2ExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise<Blob | undefined> {\n return (!sessionId ? this.authApi.token('GET', '/ws/be_kmehr/generateSumehrV2') : Promise.resolve('')).then(\n (token) =>\n new Promise<Blob | undefined>((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateSumehrV2;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateSumehrV2;sessionid=${sessionId}`\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n\n generateDiaryNoteExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise<Blob | undefined> {\n return (!sessionId ? this.authApi.token('GET', '/ws/be_kmehr/generateDiaryNote') : Promise.resolve('')).then(\n (token) =>\n new Promise<Blob | undefined>((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateDiaryNote;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateDiaryNote;sessionid=${sessionId}`\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n\n generateMedicationSchemeWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n recipientSafe: string,\n version: number,\n body: models.MedicationSchemeExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise<Blob | undefined> {\n return (!sessionId ? this.authApi.token('GET', '/ws/be_kmehr/generateMedicationScheme') : Promise.resolve('')).then(\n (token) =>\n new Promise<Blob | undefined>((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateMedicationScheme;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateMedicationScheme;sessionid=${sessionId}`\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: {\n patientId: patientId,\n language: language,\n recipientSafe: recipientSafe,\n version: version,\n info: body,\n },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n}\n"]}
@@ -3,6 +3,7 @@ import { CalendarItem, User } from '../icc-api/model/models';
3
3
  import { IccCryptoXApi } from './icc-crypto-x-api';
4
4
  import { IccCalendarItemApi } from '../icc-api';
5
5
  import { IccDataOwnerXApi } from './icc-data-owner-x-api';
6
+ import { AuthenticationProvider } from './auth/AuthenticationProvider';
6
7
  export declare class IccCalendarItemXApi extends IccCalendarItemApi {
7
8
  i18n: any;
8
9
  crypto: IccCryptoXApi;
@@ -10,7 +11,7 @@ export declare class IccCalendarItemXApi extends IccCalendarItemApi {
10
11
  encryptedKeys: string[];
11
12
  constructor(host: string, headers: {
12
13
  [key: string]: string;
13
- }, crypto: IccCryptoXApi, dataOwnerApi: IccDataOwnerXApi, encryptedKeys?: Array<string>, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
14
+ }, crypto: IccCryptoXApi, dataOwnerApi: IccDataOwnerXApi, encryptedKeys: string[] | undefined, authenticationProvider: AuthenticationProvider, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
14
15
  newInstance(user: User, ci: CalendarItem, delegates?: string[]): Promise<models.CalendarItem>;
15
16
  newInstancePatient(user: models.User, patient: models.Patient | null, ci: any, delegates?: string[]): Promise<models.CalendarItem>;
16
17
  initDelegationsAndEncryptionKeys(user: models.User, patient: models.Patient | null, calendarItem: models.CalendarItem, delegates?: string[]): Promise<models.CalendarItem>;
@@ -26,12 +26,12 @@ const _ = require("lodash");
26
26
  const icc_api_1 = require("../icc-api");
27
27
  const utils_1 = require("./utils");
28
28
  class IccCalendarItemXApi extends icc_api_1.IccCalendarItemApi {
29
- constructor(host, headers, crypto, dataOwnerApi, encryptedKeys = ['details', 'title', 'patientId'], fetchImpl = typeof window !== 'undefined'
29
+ constructor(host, headers, crypto, dataOwnerApi, encryptedKeys = ['details', 'title', 'patientId'], authenticationProvider, fetchImpl = typeof window !== 'undefined'
30
30
  ? window.fetch
31
31
  : typeof self !== 'undefined'
32
32
  ? self.fetch
33
33
  : fetch) {
34
- super(host, headers, fetchImpl);
34
+ super(host, headers, authenticationProvider, fetchImpl);
35
35
  this.i18n = i18n;
36
36
  this.encryptedKeys = ['details', 'title', 'patientId'];
37
37
  this.crypto = crypto;
@@ -1 +1 @@
1
- {"version":3,"file":"icc-calendar-item-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-calendar-item-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import * as i18n from './rsrc/contact.i18n'\n\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { CalendarItem, User } from '../icc-api/model/models'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccCalendarItemApi } from '../icc-api'\nimport { crypt, decrypt, hex2ua, ua2utf8, utf8_2ua } from './utils'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\n\nexport class IccCalendarItemXApi extends IccCalendarItemApi {\n i18n: any = i18n\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n encryptedKeys = ['details', 'title', 'patientId']\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n encryptedKeys: Array<string> = ['details', 'title', 'patientId'],\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n this.encryptedKeys = encryptedKeys\n }\n\n newInstance(user: User, ci: CalendarItem, delegates: string[] = []) {\n return this.newInstancePatient(user, null, ci, delegates)\n }\n\n newInstancePatient(user: models.User, patient: models.Patient | null, ci: any, delegates: string[] = []): Promise<models.CalendarItem> {\n const calendarItem = _.extend(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.CalendarItem',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n ci || {}\n )\n\n return this.initDelegationsAndEncryptionKeys(user, patient, calendarItem, delegates)\n }\n\n initDelegationsAndEncryptionKeys(\n user: models.User,\n patient: models.Patient | null,\n calendarItem: models.CalendarItem,\n delegates: string[] = []\n ): Promise<models.CalendarItem> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n return this.crypto.extractDelegationsSFKs(patient, dataOwnerId!).then(async (secretForeignKeys) => {\n const dels = await this.crypto.initObjectDelegations(calendarItem, patient, dataOwnerId!, secretForeignKeys.extractedKeys[0])\n const eks = await this.crypto.initEncryptionKeys(calendarItem, dataOwnerId!)\n\n _.extend(calendarItem, {\n delegations: dels.delegations,\n cryptedForeignKeys: dels.cryptedForeignKeys,\n secretForeignKeys: dels.secretForeignKeys,\n encryptionKeys: eks.encryptionKeys,\n })\n\n let promise = Promise.resolve(calendarItem)\n _.uniq(\n delegates.concat(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : [])\n ).forEach(\n (delegateId) =>\n (promise = promise.then((contact) =>\n this.crypto.addDelegationsAndEncryptionKeys(patient, contact, dataOwnerId!, delegateId, dels.secretId, eks.secretId)\n ))\n )\n return promise\n })\n }\n\n findBy(hcpartyId: string, patient: models.Patient) {\n return this.crypto.extractDelegationsSFKs(patient, hcpartyId).then((secretForeignKeys) => {\n return secretForeignKeys && secretForeignKeys.extractedKeys && secretForeignKeys.extractedKeys.length > 0\n ? this.findByHCPartyPatientSecretFKeys(secretForeignKeys.hcpartyId!, _.uniq(secretForeignKeys.extractedKeys).join(','))\n : Promise.resolve([])\n })\n }\n\n findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise<Array<models.CalendarItem> | any> {\n return super.findCalendarItemsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys).then((calendarItems) => this.decrypt(hcPartyId, calendarItems))\n }\n\n createCalendarItem(body?: CalendarItem): never {\n throw new Error('Cannot call a method that must encrypt a calendar item without providing a user for de/encryption')\n }\n\n async createCalendarItemWithHcParty(user: models.User, body?: models.CalendarItem): Promise<models.CalendarItem | any> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((items) => super.createCalendarItem(items[0]))\n .then((ci) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [ci]))\n .then((cis) => cis[0])\n : null\n }\n\n getCalendarItemWithUser(user: models.User, calendarItemId: string): Promise<CalendarItem | any> {\n return super\n .getCalendarItem(calendarItemId)\n .then((calendarItem) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [calendarItem]))\n .then((cis) => cis[0])\n }\n\n getCalendarItem(calendarItemId: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarItemsWithUser(user: models.User): Promise<Array<CalendarItem> | any> {\n return super.getCalendarItems().then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, calendarItems))\n }\n\n getCalendarItems(): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarItemsWithIdsWithUser(user: models.User, body?: models.ListOfIds): Promise<Array<CalendarItem> | any> {\n return super.getCalendarItemsWithIds(body).then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, calendarItems))\n }\n\n getCalendarItemsWithIds(body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarItemsByPeriodAndHcPartyIdWithUser(\n user: models.User,\n startDate: number,\n endDate: number,\n hcPartyId: string\n ): Promise<Array<CalendarItem> | any> {\n return super\n .getCalendarItemsByPeriodAndHcPartyId(startDate, endDate, hcPartyId)\n .then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, calendarItems))\n }\n\n getCalendarItemsByPeriodAndHcPartyId(startDate?: number, endDate?: number, hcPartyId?: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarsByPeriodAndAgendaIdWithUser(\n user: models.User,\n startDate: number,\n endDate: number,\n agendaId: string\n ): Promise<Array<CalendarItem> | any> {\n return super\n .getCalendarsByPeriodAndAgendaId(startDate, endDate, agendaId)\n .then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, calendarItems))\n }\n\n getCalendarsByPeriodAndAgendaId(startDate?: number, endDate?: number, agendaId?: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n modifyCalendarItem(body?: CalendarItem): never {\n throw new Error('Cannot call a method that must encrypt a calendar item without providing a user for de/encryption')\n }\n\n /**\n * Remove the following delegation objects from the\n * CalendarItem instance: cryptedForeignKeys, secretForeignKeys.\n *\n * The delegations & encryptionKeys objects are not removed because\n * in the case the CalendarItem is saved in the DB & then encrypted,\n * if later we remove the patient from it, it'd reset the delegations\n * and encryptionKeys thus impossibilitating further access.\n *\n * @param calendarItem The Calendar Item object\n */\n resetCalendarDelegationObjects(calendarItem: models.CalendarItem): models.CalendarItem {\n const { cryptedForeignKeys, secretForeignKeys, ...resetCalendarItem } = calendarItem\n return resetCalendarItem\n }\n\n async modifyCalendarItemWithHcParty(user: models.User, body?: models.CalendarItem): Promise<models.CalendarItem | any> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((items) => super.modifyCalendarItem(items[0]))\n .then((ci) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [ci]))\n .then((cis) => cis[0])\n : null\n }\n\n initEncryptionKeys(user: models.User, calendarItem: models.CalendarItem): Promise<models.CalendarItem> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n return this.crypto.initEncryptionKeys(calendarItem, dataOwnerId!).then((eks) => {\n let promise = Promise.resolve(\n _.extend(calendarItem, {\n encryptionKeys: eks.encryptionKeys,\n })\n )\n ;(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : []).forEach(\n (delegateId) =>\n (promise = promise.then((item) =>\n this.crypto.appendEncryptionKeys(item, dataOwnerId!, delegateId, eks.secretId).then((extraEks) => {\n return _.extend(extraEks.modifiedObject, {\n encryptionKeys: extraEks.encryptionKeys,\n })\n })\n ))\n )\n return promise\n })\n }\n\n encrypt(user: models.User, calendarItems: Array<models.CalendarItem>): Promise<Array<models.CalendarItem>> {\n return Promise.all(\n calendarItems.map((calendarItem) =>\n (calendarItem.encryptionKeys && Object.keys(calendarItem.encryptionKeys).length\n ? Promise.resolve(calendarItem)\n : this.initEncryptionKeys(user, calendarItem)\n )\n .then((calendarItem: CalendarItem) =>\n this.crypto.extractKeysFromDelegationsForHcpHierarchy(\n this.dataOwnerApi.getDataOwnerOf(user)!,\n calendarItem.id!,\n calendarItem.encryptionKeys!\n )\n )\n .then((eks: { extractedKeys: Array<string>; hcpartyId: string }) =>\n this.crypto.AES.importKey('raw', hex2ua(eks.extractedKeys[0].replace(/-/g, '')))\n )\n .then((key: CryptoKey) =>\n crypt(calendarItem, (obj: { [key: string]: string }) => this.crypto.AES.encrypt(key, utf8_2ua(JSON.stringify(obj))), this.encryptedKeys)\n )\n )\n )\n }\n\n decrypt(hcpId: string, calendarItems: Array<models.CalendarItem>): Promise<Array<models.CalendarItem>> {\n //First check that we have no dangling delegation\n\n return Promise.all(\n calendarItems.map((calendarItem) => {\n return calendarItem.encryptedSelf\n ? this.crypto\n .extractKeysFromDelegationsForHcpHierarchy(\n hcpId!,\n calendarItem.id!,\n _.size(calendarItem.encryptionKeys) ? calendarItem.encryptionKeys! : calendarItem.delegations!\n )\n .then(({ extractedKeys: sfks }) => {\n if (!sfks || !sfks.length) {\n return Promise.resolve(calendarItem)\n }\n return this.crypto.AES.importKey('raw', hex2ua(sfks[0].replace(/-/g, ''))).then((key) =>\n decrypt(calendarItem, (ec) =>\n this.crypto.AES.decrypt(key, ec)\n .then((dec) => {\n const jsonContent = dec && ua2utf8(dec)\n try {\n return JSON.parse(jsonContent)\n } catch (e) {\n console.log('Cannot parse calendar item', calendarItem.id, jsonContent || 'Invalid content')\n return {}\n }\n })\n .catch((err) => {\n console.log('Error during AES decryption', err)\n return {}\n })\n )\n )\n })\n : Promise.resolve(calendarItem)\n })\n )\n }\n}\n"]}
1
+ {"version":3,"file":"icc-calendar-item-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-calendar-item-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import * as i18n from './rsrc/contact.i18n'\n\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { CalendarItem, User } from '../icc-api/model/models'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccCalendarItemApi } from '../icc-api'\nimport { crypt, decrypt, hex2ua, ua2utf8, utf8_2ua } from './utils'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport class IccCalendarItemXApi extends IccCalendarItemApi {\n i18n: any = i18n\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n encryptedKeys = ['details', 'title', 'patientId']\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n encryptedKeys: Array<string> = ['details', 'title', 'patientId'],\n authenticationProvider: AuthenticationProvider,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n this.encryptedKeys = encryptedKeys\n }\n\n newInstance(user: User, ci: CalendarItem, delegates: string[] = []) {\n return this.newInstancePatient(user, null, ci, delegates)\n }\n\n newInstancePatient(user: models.User, patient: models.Patient | null, ci: any, delegates: string[] = []): Promise<models.CalendarItem> {\n const calendarItem = _.extend(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.CalendarItem',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n ci || {}\n )\n\n return this.initDelegationsAndEncryptionKeys(user, patient, calendarItem, delegates)\n }\n\n initDelegationsAndEncryptionKeys(\n user: models.User,\n patient: models.Patient | null,\n calendarItem: models.CalendarItem,\n delegates: string[] = []\n ): Promise<models.CalendarItem> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n return this.crypto.extractDelegationsSFKs(patient, dataOwnerId!).then(async (secretForeignKeys) => {\n const dels = await this.crypto.initObjectDelegations(calendarItem, patient, dataOwnerId!, secretForeignKeys.extractedKeys[0])\n const eks = await this.crypto.initEncryptionKeys(calendarItem, dataOwnerId!)\n\n _.extend(calendarItem, {\n delegations: dels.delegations,\n cryptedForeignKeys: dels.cryptedForeignKeys,\n secretForeignKeys: dels.secretForeignKeys,\n encryptionKeys: eks.encryptionKeys,\n })\n\n let promise = Promise.resolve(calendarItem)\n _.uniq(\n delegates.concat(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : [])\n ).forEach(\n (delegateId) =>\n (promise = promise.then((contact) =>\n this.crypto.addDelegationsAndEncryptionKeys(patient, contact, dataOwnerId!, delegateId, dels.secretId, eks.secretId)\n ))\n )\n return promise\n })\n }\n\n findBy(hcpartyId: string, patient: models.Patient) {\n return this.crypto.extractDelegationsSFKs(patient, hcpartyId).then((secretForeignKeys) => {\n return secretForeignKeys && secretForeignKeys.extractedKeys && secretForeignKeys.extractedKeys.length > 0\n ? this.findByHCPartyPatientSecretFKeys(secretForeignKeys.hcpartyId!, _.uniq(secretForeignKeys.extractedKeys).join(','))\n : Promise.resolve([])\n })\n }\n\n findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise<Array<models.CalendarItem> | any> {\n return super.findCalendarItemsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys).then((calendarItems) => this.decrypt(hcPartyId, calendarItems))\n }\n\n createCalendarItem(body?: CalendarItem): never {\n throw new Error('Cannot call a method that must encrypt a calendar item without providing a user for de/encryption')\n }\n\n async createCalendarItemWithHcParty(user: models.User, body?: models.CalendarItem): Promise<models.CalendarItem | any> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((items) => super.createCalendarItem(items[0]))\n .then((ci) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [ci]))\n .then((cis) => cis[0])\n : null\n }\n\n getCalendarItemWithUser(user: models.User, calendarItemId: string): Promise<CalendarItem | any> {\n return super\n .getCalendarItem(calendarItemId)\n .then((calendarItem) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [calendarItem]))\n .then((cis) => cis[0])\n }\n\n getCalendarItem(calendarItemId: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarItemsWithUser(user: models.User): Promise<Array<CalendarItem> | any> {\n return super.getCalendarItems().then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, calendarItems))\n }\n\n getCalendarItems(): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarItemsWithIdsWithUser(user: models.User, body?: models.ListOfIds): Promise<Array<CalendarItem> | any> {\n return super.getCalendarItemsWithIds(body).then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, calendarItems))\n }\n\n getCalendarItemsWithIds(body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarItemsByPeriodAndHcPartyIdWithUser(\n user: models.User,\n startDate: number,\n endDate: number,\n hcPartyId: string\n ): Promise<Array<CalendarItem> | any> {\n return super\n .getCalendarItemsByPeriodAndHcPartyId(startDate, endDate, hcPartyId)\n .then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, calendarItems))\n }\n\n getCalendarItemsByPeriodAndHcPartyId(startDate?: number, endDate?: number, hcPartyId?: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarsByPeriodAndAgendaIdWithUser(\n user: models.User,\n startDate: number,\n endDate: number,\n agendaId: string\n ): Promise<Array<CalendarItem> | any> {\n return super\n .getCalendarsByPeriodAndAgendaId(startDate, endDate, agendaId)\n .then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, calendarItems))\n }\n\n getCalendarsByPeriodAndAgendaId(startDate?: number, endDate?: number, agendaId?: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n modifyCalendarItem(body?: CalendarItem): never {\n throw new Error('Cannot call a method that must encrypt a calendar item without providing a user for de/encryption')\n }\n\n /**\n * Remove the following delegation objects from the\n * CalendarItem instance: cryptedForeignKeys, secretForeignKeys.\n *\n * The delegations & encryptionKeys objects are not removed because\n * in the case the CalendarItem is saved in the DB & then encrypted,\n * if later we remove the patient from it, it'd reset the delegations\n * and encryptionKeys thus impossibilitating further access.\n *\n * @param calendarItem The Calendar Item object\n */\n resetCalendarDelegationObjects(calendarItem: models.CalendarItem): models.CalendarItem {\n const { cryptedForeignKeys, secretForeignKeys, ...resetCalendarItem } = calendarItem\n return resetCalendarItem\n }\n\n async modifyCalendarItemWithHcParty(user: models.User, body?: models.CalendarItem): Promise<models.CalendarItem | any> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((items) => super.modifyCalendarItem(items[0]))\n .then((ci) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [ci]))\n .then((cis) => cis[0])\n : null\n }\n\n initEncryptionKeys(user: models.User, calendarItem: models.CalendarItem): Promise<models.CalendarItem> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n return this.crypto.initEncryptionKeys(calendarItem, dataOwnerId!).then((eks) => {\n let promise = Promise.resolve(\n _.extend(calendarItem, {\n encryptionKeys: eks.encryptionKeys,\n })\n )\n ;(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : []).forEach(\n (delegateId) =>\n (promise = promise.then((item) =>\n this.crypto.appendEncryptionKeys(item, dataOwnerId!, delegateId, eks.secretId).then((extraEks) => {\n return _.extend(extraEks.modifiedObject, {\n encryptionKeys: extraEks.encryptionKeys,\n })\n })\n ))\n )\n return promise\n })\n }\n\n encrypt(user: models.User, calendarItems: Array<models.CalendarItem>): Promise<Array<models.CalendarItem>> {\n return Promise.all(\n calendarItems.map((calendarItem) =>\n (calendarItem.encryptionKeys && Object.keys(calendarItem.encryptionKeys).length\n ? Promise.resolve(calendarItem)\n : this.initEncryptionKeys(user, calendarItem)\n )\n .then((calendarItem: CalendarItem) =>\n this.crypto.extractKeysFromDelegationsForHcpHierarchy(\n this.dataOwnerApi.getDataOwnerOf(user)!,\n calendarItem.id!,\n calendarItem.encryptionKeys!\n )\n )\n .then((eks: { extractedKeys: Array<string>; hcpartyId: string }) =>\n this.crypto.AES.importKey('raw', hex2ua(eks.extractedKeys[0].replace(/-/g, '')))\n )\n .then((key: CryptoKey) =>\n crypt(calendarItem, (obj: { [key: string]: string }) => this.crypto.AES.encrypt(key, utf8_2ua(JSON.stringify(obj))), this.encryptedKeys)\n )\n )\n )\n }\n\n decrypt(hcpId: string, calendarItems: Array<models.CalendarItem>): Promise<Array<models.CalendarItem>> {\n //First check that we have no dangling delegation\n\n return Promise.all(\n calendarItems.map((calendarItem) => {\n return calendarItem.encryptedSelf\n ? this.crypto\n .extractKeysFromDelegationsForHcpHierarchy(\n hcpId!,\n calendarItem.id!,\n _.size(calendarItem.encryptionKeys) ? calendarItem.encryptionKeys! : calendarItem.delegations!\n )\n .then(({ extractedKeys: sfks }) => {\n if (!sfks || !sfks.length) {\n return Promise.resolve(calendarItem)\n }\n return this.crypto.AES.importKey('raw', hex2ua(sfks[0].replace(/-/g, ''))).then((key) =>\n decrypt(calendarItem, (ec) =>\n this.crypto.AES.decrypt(key, ec)\n .then((dec) => {\n const jsonContent = dec && ua2utf8(dec)\n try {\n return JSON.parse(jsonContent)\n } catch (e) {\n console.log('Cannot parse calendar item', calendarItem.id, jsonContent || 'Invalid content')\n return {}\n }\n })\n .catch((err) => {\n console.log('Error during AES decryption', err)\n return {}\n })\n )\n )\n })\n : Promise.resolve(calendarItem)\n })\n )\n }\n}\n"]}
@@ -2,12 +2,13 @@ import { IccClassificationApi } from '../icc-api';
2
2
  import { IccCryptoXApi } from './icc-crypto-x-api';
3
3
  import * as models from '../icc-api/model/models';
4
4
  import { IccDataOwnerXApi } from './icc-data-owner-x-api';
5
+ import { AuthenticationProvider } from './auth/AuthenticationProvider';
5
6
  export declare class IccClassificationXApi extends IccClassificationApi {
6
7
  crypto: IccCryptoXApi;
7
8
  dataOwnerApi: IccDataOwnerXApi;
8
9
  constructor(host: string, headers: {
9
10
  [key: string]: string;
10
- }, crypto: IccCryptoXApi, dataOwnerApi: IccDataOwnerXApi, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
11
+ }, crypto: IccCryptoXApi, dataOwnerApi: IccDataOwnerXApi, authenticationProvider: AuthenticationProvider, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
11
12
  newInstance(user: models.User, patient: models.Patient, c?: any, delegates?: string[]): Promise<models.Classification>;
12
13
  initDelegationsAndEncryptionKeys(user: models.User, patient: models.Patient, classification: models.Classification, delegates?: string[]): Promise<models.Classification>;
13
14
  findBy(hcpartyId: string, patient: models.Patient): Promise<models.Classification[]>;
@@ -5,12 +5,12 @@ const icc_api_1 = require("../icc-api");
5
5
  const _ = require("lodash");
6
6
  const moment = require("moment");
7
7
  class IccClassificationXApi extends icc_api_1.IccClassificationApi {
8
- constructor(host, headers, crypto, dataOwnerApi, fetchImpl = typeof window !== 'undefined'
8
+ constructor(host, headers, crypto, dataOwnerApi, authenticationProvider, fetchImpl = typeof window !== 'undefined'
9
9
  ? window.fetch
10
10
  : typeof self !== 'undefined'
11
11
  ? self.fetch
12
12
  : fetch) {
13
- super(host, headers, fetchImpl);
13
+ super(host, headers, authenticationProvider, fetchImpl);
14
14
  this.crypto = crypto;
15
15
  this.dataOwnerApi = dataOwnerApi;
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"icc-classification-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-classification-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { IccClassificationApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as models from '../icc-api/model/models'\n\nimport * as _ from 'lodash'\nimport * as moment from 'moment'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\n\nexport class IccClassificationXApi extends IccClassificationApi {\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n newInstance(user: models.User, patient: models.Patient, c: any = {}, delegates: string[] = []): Promise<models.Classification> {\n const classification = _.assign(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.Classification',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerOf(user),\n author: user.id,\n codes: [],\n tags: [],\n healthElementId: this.crypto.randomUuid(),\n openingDate: parseInt(moment().format('YYYYMMDDHHmmss')),\n },\n c || {}\n )\n\n return this.initDelegationsAndEncryptionKeys(user, patient, classification, delegates)\n }\n\n initDelegationsAndEncryptionKeys(\n user: models.User,\n patient: models.Patient,\n classification: models.Classification,\n delegates: string[] = []\n ): Promise<models.Classification> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n return this.crypto\n .extractDelegationsSFKs(patient, dataOwnerId!)\n .then((secretForeignKeys) => this.crypto.initObjectDelegations(classification, patient, dataOwnerId!, secretForeignKeys.extractedKeys[0]))\n .then((initData) => {\n _.extend(classification, {\n delegations: initData.delegations,\n cryptedForeignKeys: initData.cryptedForeignKeys,\n secretForeignKeys: initData.secretForeignKeys,\n })\n\n let promise = Promise.resolve(classification)\n _.uniq(\n delegates.concat(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : [])\n ).forEach(\n (delegateId) =>\n (promise = promise.then((classification) =>\n this.crypto\n .extendedDelegationsAndCryptedForeignKeys(classification, patient, dataOwnerId!, delegateId, initData.secretId)\n .then((extraData) =>\n _.extend(classification, {\n delegations: extraData.delegations,\n cryptedForeignKeys: extraData.cryptedForeignKeys,\n })\n )\n .catch((e) => {\n console.log(e)\n return classification\n })\n ))\n )\n\n return promise\n })\n }\n\n findBy(hcpartyId: string, patient: models.Patient) {\n return this.crypto\n .extractDelegationsSFKs(patient, hcpartyId)\n .then((secretForeignKeys) =>\n this.findClassificationsByHCPartyPatientForeignKeys(secretForeignKeys.hcpartyId!, _.uniq(secretForeignKeys.extractedKeys).join(','))\n )\n }\n}\n"]}
1
+ {"version":3,"file":"icc-classification-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-classification-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { IccClassificationApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as models from '../icc-api/model/models'\n\nimport * as _ from 'lodash'\nimport * as moment from 'moment'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport class IccClassificationXApi extends IccClassificationApi {\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n newInstance(user: models.User, patient: models.Patient, c: any = {}, delegates: string[] = []): Promise<models.Classification> {\n const classification = _.assign(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.Classification',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerOf(user),\n author: user.id,\n codes: [],\n tags: [],\n healthElementId: this.crypto.randomUuid(),\n openingDate: parseInt(moment().format('YYYYMMDDHHmmss')),\n },\n c || {}\n )\n\n return this.initDelegationsAndEncryptionKeys(user, patient, classification, delegates)\n }\n\n initDelegationsAndEncryptionKeys(\n user: models.User,\n patient: models.Patient,\n classification: models.Classification,\n delegates: string[] = []\n ): Promise<models.Classification> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n return this.crypto\n .extractDelegationsSFKs(patient, dataOwnerId!)\n .then((secretForeignKeys) => this.crypto.initObjectDelegations(classification, patient, dataOwnerId!, secretForeignKeys.extractedKeys[0]))\n .then((initData) => {\n _.extend(classification, {\n delegations: initData.delegations,\n cryptedForeignKeys: initData.cryptedForeignKeys,\n secretForeignKeys: initData.secretForeignKeys,\n })\n\n let promise = Promise.resolve(classification)\n _.uniq(\n delegates.concat(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : [])\n ).forEach(\n (delegateId) =>\n (promise = promise.then((classification) =>\n this.crypto\n .extendedDelegationsAndCryptedForeignKeys(classification, patient, dataOwnerId!, delegateId, initData.secretId)\n .then((extraData) =>\n _.extend(classification, {\n delegations: extraData.delegations,\n cryptedForeignKeys: extraData.cryptedForeignKeys,\n })\n )\n .catch((e) => {\n console.log(e)\n return classification\n })\n ))\n )\n\n return promise\n })\n }\n\n findBy(hcpartyId: string, patient: models.Patient) {\n return this.crypto\n .extractDelegationsSFKs(patient, hcpartyId)\n .then((secretForeignKeys) =>\n this.findClassificationsByHCPartyPatientForeignKeys(secretForeignKeys.hcpartyId!, _.uniq(secretForeignKeys.extractedKeys).join(','))\n )\n }\n}\n"]}
@@ -1,12 +1,13 @@
1
1
  import { IccCodeApi } from '../icc-api';
2
2
  import { Code } from '../icc-api/model/Code';
3
+ import { AuthenticationProvider } from './auth/AuthenticationProvider';
3
4
  export declare class IccCodeXApi extends IccCodeApi {
4
5
  icd10: any;
5
6
  icpc2: any;
6
7
  codeLanguages: any;
7
8
  constructor(host: string, headers: {
8
9
  [key: string]: string;
9
- }, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
10
+ }, authenticationProvider: AuthenticationProvider, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
10
11
  icdChapters(listOfCodes: Array<string>): Promise<any[]>;
11
12
  icpcChapters(listOfCodes: Array<string>): Promise<any[]>;
12
13
  languageForType(type: string, lng: string): string;
@@ -7,12 +7,12 @@ const icd10_1 = require("./rsrc/icd10");
7
7
  const icpc2_1 = require("./rsrc/icpc2");
8
8
  const _ = require("lodash");
9
9
  class IccCodeXApi extends icc_api_1.IccCodeApi {
10
- constructor(host, headers, fetchImpl = typeof window !== 'undefined'
10
+ constructor(host, headers, authenticationProvider, fetchImpl = typeof window !== 'undefined'
11
11
  ? window.fetch
12
12
  : typeof self !== 'undefined'
13
13
  ? self.fetch
14
14
  : fetch) {
15
- super(host, headers, fetchImpl);
15
+ super(host, headers, authenticationProvider, fetchImpl);
16
16
  this.icd10 = icd10_1.default;
17
17
  this.icpc2 = icpc2_1.default;
18
18
  this.codeLanguages = codelng_1.default;
@@ -1 +1 @@
1
- {"version":3,"file":"icc-code-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-code-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { IccCodeApi } from '../icc-api'\n\nimport codeLanguages from './rsrc/codelng'\nimport icd10 from './rsrc/icd10'\nimport icpc2 from './rsrc/icpc2'\n\nimport * as _ from 'lodash'\nimport { Code } from '../icc-api/model/Code'\n\nexport class IccCodeXApi extends IccCodeApi {\n icd10: any = icd10\n icpc2: any = icpc2\n codeLanguages: any = codeLanguages\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, fetchImpl)\n }\n\n // noinspection JSUnusedGlobalSymbols\n icdChapters(listOfCodes: Array<string>) {\n return Promise.resolve(\n _.sortBy(\n _.values(\n _.reduce(\n _.fromPairs(\n listOfCodes.map((code) => [\n code,\n _.toPairs(this.icd10).find(([k]) => {\n const parts = k.split(/-/)\n return code.substr(0, 3) >= parts[0] && code.substr(0, 3) <= parts[1]\n }),\n ])\n ),\n (acc: any, pairOfRangeAndIcdInfo, code) => {\n if (!pairOfRangeAndIcdInfo) {\n return acc\n }\n const shortKey = pairOfRangeAndIcdInfo[0].substr(0, 2)\n ;(\n acc[shortKey] ||\n (acc[shortKey] = {\n code: shortKey,\n descr: pairOfRangeAndIcdInfo[1],\n subCodes: [],\n })\n ).subCodes.push(code)\n return acc\n },\n {}\n )\n ),\n (c: any) => c.shortKey\n )\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n icpcChapters(listOfCodes: Array<string>) {\n return Promise.resolve(\n _.sortBy(\n _.values(\n _.reduce(\n _.fromPairs(listOfCodes.map((code) => [code, _.toPairs(this.icpc2).find(([k]) => k === code.substr(0, 1).toUpperCase())])),\n (acc: any, pairOfRangeAndIcdInfo, code) => {\n if (!pairOfRangeAndIcdInfo) {\n return acc\n }\n const shortKey = pairOfRangeAndIcdInfo[0]\n ;(\n acc[shortKey] ||\n (acc[shortKey] = {\n code: shortKey,\n descr: pairOfRangeAndIcdInfo[1],\n subCodes: [],\n })\n ).subCodes.push(code)\n return acc\n },\n {}\n )\n ),\n (c: any) => c.shortKey\n )\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n languageForType(type: string, lng: string) {\n const availableLanguages = this.codeLanguages[type]\n return availableLanguages && availableLanguages.indexOf(lng) >= 0 ? lng : 'fr'\n }\n\n // noinspection JSMethodCanBeStatic, JSUnusedGlobalSymbols\n normalize(c: Code | string) {\n return typeof c === 'string'\n ? {\n id: c,\n type: c.split(/\\|/)[0],\n code: c.split(/\\|/)[1],\n version: c.split(/\\|/)[2],\n }\n : (c as Code).type && (c as Code).code && !(c as Code).id\n ? {\n id: (c as Code).type + '|' + (c as Code).code + '|' + ((c as Code).version || '1'),\n type: (c as Code).type,\n code: (c as Code).code,\n version: (c as Code).version || '1',\n }\n : (c as Code).id && (!(c as Code).code || !(c as Code).type || !(c as Code).version)\n ? {\n id: (c as Code).id,\n type: (c as Code).id!.split(/\\|/)[0],\n code: (c as Code).id!.split(/\\|/)[1],\n version: (c as Code).id!.split(/\\|/)[2],\n }\n : {\n id: (c as Code).id!,\n type: (c as Code).type,\n code: (c as Code).code,\n version: (c as Code).version || '1',\n }\n }\n}\n"]}
1
+ {"version":3,"file":"icc-code-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-code-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { IccCodeApi } from '../icc-api'\n\nimport codeLanguages from './rsrc/codelng'\nimport icd10 from './rsrc/icd10'\nimport icpc2 from './rsrc/icpc2'\n\nimport * as _ from 'lodash'\nimport { Code } from '../icc-api/model/Code'\nimport { AuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport class IccCodeXApi extends IccCodeApi {\n icd10: any = icd10\n icpc2: any = icpc2\n codeLanguages: any = codeLanguages\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n authenticationProvider: AuthenticationProvider,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n }\n\n // noinspection JSUnusedGlobalSymbols\n icdChapters(listOfCodes: Array<string>) {\n return Promise.resolve(\n _.sortBy(\n _.values(\n _.reduce(\n _.fromPairs(\n listOfCodes.map((code) => [\n code,\n _.toPairs(this.icd10).find(([k]) => {\n const parts = k.split(/-/)\n return code.substr(0, 3) >= parts[0] && code.substr(0, 3) <= parts[1]\n }),\n ])\n ),\n (acc: any, pairOfRangeAndIcdInfo, code) => {\n if (!pairOfRangeAndIcdInfo) {\n return acc\n }\n const shortKey = pairOfRangeAndIcdInfo[0].substr(0, 2)\n ;(\n acc[shortKey] ||\n (acc[shortKey] = {\n code: shortKey,\n descr: pairOfRangeAndIcdInfo[1],\n subCodes: [],\n })\n ).subCodes.push(code)\n return acc\n },\n {}\n )\n ),\n (c: any) => c.shortKey\n )\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n icpcChapters(listOfCodes: Array<string>) {\n return Promise.resolve(\n _.sortBy(\n _.values(\n _.reduce(\n _.fromPairs(listOfCodes.map((code) => [code, _.toPairs(this.icpc2).find(([k]) => k === code.substr(0, 1).toUpperCase())])),\n (acc: any, pairOfRangeAndIcdInfo, code) => {\n if (!pairOfRangeAndIcdInfo) {\n return acc\n }\n const shortKey = pairOfRangeAndIcdInfo[0]\n ;(\n acc[shortKey] ||\n (acc[shortKey] = {\n code: shortKey,\n descr: pairOfRangeAndIcdInfo[1],\n subCodes: [],\n })\n ).subCodes.push(code)\n return acc\n },\n {}\n )\n ),\n (c: any) => c.shortKey\n )\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n languageForType(type: string, lng: string) {\n const availableLanguages = this.codeLanguages[type]\n return availableLanguages && availableLanguages.indexOf(lng) >= 0 ? lng : 'fr'\n }\n\n // noinspection JSMethodCanBeStatic, JSUnusedGlobalSymbols\n normalize(c: Code | string) {\n return typeof c === 'string'\n ? {\n id: c,\n type: c.split(/\\|/)[0],\n code: c.split(/\\|/)[1],\n version: c.split(/\\|/)[2],\n }\n : (c as Code).type && (c as Code).code && !(c as Code).id\n ? {\n id: (c as Code).type + '|' + (c as Code).code + '|' + ((c as Code).version || '1'),\n type: (c as Code).type,\n code: (c as Code).code,\n version: (c as Code).version || '1',\n }\n : (c as Code).id && (!(c as Code).code || !(c as Code).type || !(c as Code).version)\n ? {\n id: (c as Code).id,\n type: (c as Code).id!.split(/\\|/)[0],\n code: (c as Code).id!.split(/\\|/)[1],\n version: (c as Code).id!.split(/\\|/)[2],\n }\n : {\n id: (c as Code).id!,\n type: (c as Code).type,\n code: (c as Code).code,\n version: (c as Code).version || '1',\n }\n }\n}\n"]}
@@ -4,13 +4,14 @@ import * as models from '../icc-api/model/models';
4
4
  import { Contact, ListOfIds, Service } from '../icc-api/model/models';
5
5
  import { PaginatedListContact } from '../icc-api/model/PaginatedListContact';
6
6
  import { IccDataOwnerXApi } from './icc-data-owner-x-api';
7
+ import { AuthenticationProvider } from './auth/AuthenticationProvider';
7
8
  export declare class IccContactXApi extends IccContactApi {
8
9
  i18n: any;
9
10
  crypto: IccCryptoXApi;
10
11
  dataOwnerApi: IccDataOwnerXApi;
11
12
  constructor(host: string, headers: {
12
13
  [key: string]: string;
13
- }, crypto: IccCryptoXApi, dataOwnerApi: IccDataOwnerXApi, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
14
+ }, crypto: IccCryptoXApi, dataOwnerApi: IccDataOwnerXApi, authenticationProvider: AuthenticationProvider, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
14
15
  newInstance(user: models.User, patient: models.Patient, c: any, confidential?: boolean, delegates?: string[]): Promise<models.Contact>;
15
16
  /**
16
17
  * 1. Extract(decrypt) the patient's secretForeignKeys from the
@@ -20,12 +20,12 @@ const binary_utils_1 = require("./utils/binary-utils");
20
20
  const ServiceByIdsFilter_1 = require("./filters/ServiceByIdsFilter");
21
21
  const utils_1 = require("./utils");
22
22
  class IccContactXApi extends icc_api_1.IccContactApi {
23
- constructor(host, headers, crypto, dataOwnerApi, fetchImpl = typeof window !== 'undefined'
23
+ constructor(host, headers, crypto, dataOwnerApi, authenticationProvider, fetchImpl = typeof window !== 'undefined'
24
24
  ? window.fetch
25
25
  : typeof self !== 'undefined'
26
26
  ? self.fetch
27
27
  : fetch) {
28
- super(host, headers, fetchImpl);
28
+ super(host, headers, authenticationProvider, fetchImpl);
29
29
  this.i18n = contact_i18n_1.default;
30
30
  this.crypto = crypto;
31
31
  this.dataOwnerApi = dataOwnerApi;