@openhi/constructs 0.0.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/lib/chunk-LZOMFHX3.mjs +38 -0
  2. package/lib/chunk-LZOMFHX3.mjs.map +1 -0
  3. package/lib/index.d.mts +664 -0
  4. package/lib/index.d.ts +745 -3
  5. package/lib/index.js +1133 -19
  6. package/lib/index.js.map +1 -0
  7. package/lib/index.mjs +1120 -0
  8. package/lib/index.mjs.map +1 -0
  9. package/lib/rest-api-lambda.handler.d.mts +6 -0
  10. package/lib/rest-api-lambda.handler.d.ts +6 -0
  11. package/lib/rest-api-lambda.handler.js +677 -0
  12. package/lib/rest-api-lambda.handler.js.map +1 -0
  13. package/lib/rest-api-lambda.handler.mjs +646 -0
  14. package/lib/rest-api-lambda.handler.mjs.map +1 -0
  15. package/package.json +37 -28
  16. package/lib/app/index.d.ts +0 -4
  17. package/lib/app/index.js +0 -21
  18. package/lib/app/open-hi-app.d.ts +0 -85
  19. package/lib/app/open-hi-app.js +0 -127
  20. package/lib/app/open-hi-environment.d.ts +0 -59
  21. package/lib/app/open-hi-environment.js +0 -72
  22. package/lib/app/open-hi-service.d.ts +0 -169
  23. package/lib/app/open-hi-service.js +0 -195
  24. package/lib/app/open-hi-stage.d.ts +0 -71
  25. package/lib/app/open-hi-stage.js +0 -70
  26. package/lib/components/acm/root-wildcard-certificate.d.ts +0 -15
  27. package/lib/components/acm/root-wildcard-certificate.js +0 -35
  28. package/lib/components/api-gateway/core-http-api.d.ts +0 -10
  29. package/lib/components/api-gateway/core-http-api.js +0 -44
  30. package/lib/components/api-gateway/http-lambda-integration-no-permissions.d.ts +0 -18
  31. package/lib/components/api-gateway/http-lambda-integration-no-permissions.js +0 -26
  32. package/lib/components/app-sync/core-graphql-api.d.ts +0 -12
  33. package/lib/components/app-sync/core-graphql-api.js +0 -54
  34. package/lib/components/auth.d.ts +0 -75
  35. package/lib/components/auth.js +0 -100
  36. package/lib/components/cognito/core-user-pool-client.d.ts +0 -10
  37. package/lib/components/cognito/core-user-pool-client.js +0 -47
  38. package/lib/components/cognito/core-user-pool-domain.d.ts +0 -10
  39. package/lib/components/cognito/core-user-pool-domain.js +0 -41
  40. package/lib/components/cognito/core-user-pool-kms-key.d.ts +0 -10
  41. package/lib/components/cognito/core-user-pool-kms-key.js +0 -37
  42. package/lib/components/cognito/core-user-pool.d.ts +0 -10
  43. package/lib/components/cognito/core-user-pool.js +0 -54
  44. package/lib/components/core.d.ts +0 -102
  45. package/lib/components/core.js +0 -79
  46. package/lib/components/dynamodb/dynamo-db-data-store.d.ts +0 -33
  47. package/lib/components/dynamodb/dynamo-db-data-store.js +0 -107
  48. package/lib/components/event-bridge/data-event-bus.d.ts +0 -19
  49. package/lib/components/event-bridge/data-event-bus.js +0 -34
  50. package/lib/components/event-bridge/ops-event-bus.d.ts +0 -19
  51. package/lib/components/event-bridge/ops-event-bus.js +0 -34
  52. package/lib/components/global.d.ts +0 -36
  53. package/lib/components/global.js +0 -63
  54. package/lib/components/index.d.ts +0 -1
  55. package/lib/components/index.js +0 -18
  56. package/lib/components/route-53/child-hosted-zone.d.ts +0 -20
  57. package/lib/components/route-53/child-hosted-zone.js +0 -48
  58. package/lib/components/route-53/root-hosted-zone.d.ts +0 -10
  59. package/lib/components/route-53/root-hosted-zone.js +0 -20
  60. package/lib/components/ssm/discoverable-string-parameter.d.ts +0 -59
  61. package/lib/components/ssm/discoverable-string-parameter.js +0 -50
  62. package/lib/components/ssm/index.d.ts +0 -1
  63. package/lib/components/ssm/index.js +0 -18
  64. package/lib/data/dynamo/ehr/r4/Patient.d.ts +0 -180
  65. package/lib/data/dynamo/ehr/r4/Patient.js +0 -192
  66. package/lib/data/dynamo/ehr/r4/ehr-r4-data-service.d.ts +0 -162
  67. package/lib/data/dynamo/ehr/r4/ehr-r4-data-service.js +0 -37
  68. package/lib/data/hello-world.d.ts +0 -39
  69. package/lib/data/hello-world.js +0 -59
  70. package/lib/data/import-patient-with-dynalite.d.ts +0 -1
  71. package/lib/data/import-patient-with-dynalite.js +0 -87
  72. package/lib/data/import-patient.d.ts +0 -47
  73. package/lib/data/import-patient.js +0 -158
  74. package/lib/data/lambda/rest-api-lambda.d.ts +0 -13
  75. package/lib/data/lambda/rest-api-lambda.handler.d.ts +0 -1
  76. package/lib/data/lambda/rest-api-lambda.handler.js +0 -10
  77. package/lib/data/lambda/rest-api-lambda.js +0 -22
  78. package/lib/data/middleware/open-hi-context.d.ts +0 -13
  79. package/lib/data/middleware/open-hi-context.js +0 -31
  80. package/lib/data/rest-api/ehr/r4/Patient.d.ts +0 -16
  81. package/lib/data/rest-api/ehr/r4/Patient.js +0 -234
  82. package/lib/data/rest-api/rest-api-local.d.ts +0 -1
  83. package/lib/data/rest-api/rest-api-local.js +0 -8
  84. package/lib/data/rest-api/rest-api-mockdata.d.ts +0 -7
  85. package/lib/data/rest-api/rest-api-mockdata.js +0 -585
  86. package/lib/data/rest-api/rest-api.d.ts +0 -3
  87. package/lib/data/rest-api/rest-api.js +0 -26
  88. package/lib/lib/compression.d.ts +0 -27
  89. package/lib/lib/compression.js +0 -87
  90. package/lib/services/index.d.ts +0 -5
  91. package/lib/services/index.js +0 -22
  92. package/lib/services/open-hi-auth-service.d.ts +0 -31
  93. package/lib/services/open-hi-auth-service.js +0 -31
  94. package/lib/services/open-hi-core-service.d.ts +0 -15
  95. package/lib/services/open-hi-core-service.js +0 -38
  96. package/lib/services/open-hi-data-service.d.ts +0 -18
  97. package/lib/services/open-hi-data-service.js +0 -18
  98. package/lib/services/open-hi-global-service.d.ts +0 -15
  99. package/lib/services/open-hi-global-service.js +0 -44
  100. package/lib/services/open-hi-rest-api-service.d.ts +0 -17
  101. package/lib/services/open-hi-rest-api-service.js +0 -107
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChildHostedZone = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_route53_1 = require("aws-cdk-lib/aws-route53");
6
- const open_hi_service_1 = require("../../app/open-hi-service");
7
- const ssm_1 = require("../ssm");
8
- class ChildHostedZone extends aws_route53_1.HostedZone {
9
- static fromConstruct(scope, props) {
10
- /**
11
- * Assume it was created in the global stack if no service type was submitted
12
- */
13
- const hostedZoneId = ssm_1.DiscoverableStringParameter.valueForLookupName(scope, {
14
- ssmParamName: ChildHostedZone.SSM_PARAM_NAME,
15
- serviceType: props.serviceType ?? open_hi_service_1.OPEN_HI_SERVICE_TYPE.GLOBAL,
16
- });
17
- return aws_route53_1.HostedZone.fromHostedZoneAttributes(scope, "child-zone", {
18
- hostedZoneId,
19
- zoneName: props.zoneName,
20
- });
21
- }
22
- constructor(scope, id, props) {
23
- super(scope, id, { ...props });
24
- /**
25
- * Chain the child zone to the parent zone using NS record.
26
- */
27
- new aws_route53_1.NsRecord(this, "child-ns-record", {
28
- zone: props.parentHostedZone,
29
- recordName: this.zoneName,
30
- values: this.hostedZoneNameServers || [],
31
- ttl: aws_cdk_lib_1.Duration.minutes(5),
32
- });
33
- /**
34
- * Generate the SSM Parameter used to store this zone's ID.
35
- */
36
- new ssm_1.DiscoverableStringParameter(this, "child-zone-param", {
37
- ssmParamName: ChildHostedZone.SSM_PARAM_NAME,
38
- stringValue: this.hostedZoneId,
39
- description: "Route53 child hosted zone ID.",
40
- });
41
- }
42
- }
43
- exports.ChildHostedZone = ChildHostedZone;
44
- /**
45
- * Used when storing the API ID in SSM.
46
- */
47
- ChildHostedZone.SSM_PARAM_NAME = "CHILDHOSTEDZONE";
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGQtaG9zdGVkLXpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9yb3V0ZS01My9jaGlsZC1ob3N0ZWQtem9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBdUM7QUFDdkMseURBS2lDO0FBRWpDLCtEQUdtQztBQUNuQyxnQ0FBcUQ7QUFTckQsTUFBYSxlQUFnQixTQUFRLHdCQUFVO0lBTXRDLE1BQU0sQ0FBQyxhQUFhLENBQ3pCLEtBQWdCLEVBQ2hCLEtBQTREO1FBRTVEOztXQUVHO1FBQ0gsTUFBTSxZQUFZLEdBQUcsaUNBQTJCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFO1lBQ3pFLFlBQVksRUFBRSxlQUFlLENBQUMsY0FBYztZQUM1QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxzQ0FBb0IsQ0FBQyxNQUFNO1NBQzlELENBQUMsQ0FBQztRQUVILE9BQU8sd0JBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO1lBQzlELFlBQVk7WUFDWixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFL0I7O1dBRUc7UUFDSCxJQUFJLHNCQUFRLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3BDLElBQUksRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQzVCLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixJQUFJLEVBQUU7WUFDeEMsR0FBRyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUN6QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNILElBQUksaUNBQTJCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3hELFlBQVksRUFBRSxlQUFlLENBQUMsY0FBYztZQUM1QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDOUIsV0FBVyxFQUFFLCtCQUErQjtTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQTdDSCwwQ0E4Q0M7QUE3Q0M7O0dBRUc7QUFDb0IsOEJBQWMsR0FBRyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBIb3N0ZWRab25lLFxuICBIb3N0ZWRab25lUHJvcHMsXG4gIElIb3N0ZWRab25lLFxuICBOc1JlY29yZCxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgT1BFTl9ISV9TRVJWSUNFX1RZUEUsXG4gIE9wZW5IaVNlcnZpY2VUeXBlLFxufSBmcm9tIFwiLi4vLi4vYXBwL29wZW4taGktc2VydmljZVwiO1xuaW1wb3J0IHsgRGlzY292ZXJhYmxlU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSBcIi4uL3NzbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoaWxkSG9zdGVkWm9uZVByb3BzIGV4dGVuZHMgSG9zdGVkWm9uZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByb290IHpvbmUgd2Ugd2lsbCBhdHRhY2ggdGhpcyBzdWItem9uZSB0by5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudEhvc3RlZFpvbmU6IElIb3N0ZWRab25lO1xufVxuXG5leHBvcnQgY2xhc3MgQ2hpbGRIb3N0ZWRab25lIGV4dGVuZHMgSG9zdGVkWm9uZSB7XG4gIC8qKlxuICAgKiBVc2VkIHdoZW4gc3RvcmluZyB0aGUgQVBJIElEIGluIFNTTS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1NNX1BBUkFNX05BTUUgPSBcIkNISUxESE9TVEVEWk9ORVwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbnN0cnVjdChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHByb3BzOiB7IHpvbmVOYW1lOiBzdHJpbmc7IHNlcnZpY2VUeXBlPzogT3BlbkhpU2VydmljZVR5cGUgfSxcbiAgKTogSUhvc3RlZFpvbmUge1xuICAgIC8qKlxuICAgICAqIEFzc3VtZSBpdCB3YXMgY3JlYXRlZCBpbiB0aGUgZ2xvYmFsIHN0YWNrIGlmIG5vIHNlcnZpY2UgdHlwZSB3YXMgc3VibWl0dGVkXG4gICAgICovXG4gICAgY29uc3QgaG9zdGVkWm9uZUlkID0gRGlzY292ZXJhYmxlU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yTG9va3VwTmFtZShzY29wZSwge1xuICAgICAgc3NtUGFyYW1OYW1lOiBDaGlsZEhvc3RlZFpvbmUuU1NNX1BBUkFNX05BTUUsXG4gICAgICBzZXJ2aWNlVHlwZTogcHJvcHMuc2VydmljZVR5cGUgPz8gT1BFTl9ISV9TRVJWSUNFX1RZUEUuR0xPQkFMLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHNjb3BlLCBcImNoaWxkLXpvbmVcIiwge1xuICAgICAgaG9zdGVkWm9uZUlkLFxuICAgICAgem9uZU5hbWU6IHByb3BzLnpvbmVOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENoaWxkSG9zdGVkWm9uZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7IC4uLnByb3BzIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hhaW4gdGhlIGNoaWxkIHpvbmUgdG8gdGhlIHBhcmVudCB6b25lIHVzaW5nIE5TIHJlY29yZC5cbiAgICAgKi9cbiAgICBuZXcgTnNSZWNvcmQodGhpcywgXCJjaGlsZC1ucy1yZWNvcmRcIiwge1xuICAgICAgem9uZTogcHJvcHMucGFyZW50SG9zdGVkWm9uZSxcbiAgICAgIHJlY29yZE5hbWU6IHRoaXMuem9uZU5hbWUsXG4gICAgICB2YWx1ZXM6IHRoaXMuaG9zdGVkWm9uZU5hbWVTZXJ2ZXJzIHx8IFtdLFxuICAgICAgdHRsOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGUgdGhlIFNTTSBQYXJhbWV0ZXIgdXNlZCB0byBzdG9yZSB0aGlzIHpvbmUncyBJRC5cbiAgICAgKi9cbiAgICBuZXcgRGlzY292ZXJhYmxlU3RyaW5nUGFyYW1ldGVyKHRoaXMsIFwiY2hpbGQtem9uZS1wYXJhbVwiLCB7XG4gICAgICBzc21QYXJhbU5hbWU6IENoaWxkSG9zdGVkWm9uZS5TU01fUEFSQU1fTkFNRSxcbiAgICAgIHN0cmluZ1ZhbHVlOiB0aGlzLmhvc3RlZFpvbmVJZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJvdXRlNTMgY2hpbGQgaG9zdGVkIHpvbmUgSUQuXCIsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,10 +0,0 @@
1
- import { HostedZoneAttributes, IHostedZone } from "aws-cdk-lib/aws-route53";
2
- import { Construct } from "constructs";
3
- /**
4
- * This will always return a root hosted zone based on attributes. It will
5
- * never create the root zone since the root zone should always be created
6
- * manually.
7
- */
8
- export declare class RootHostedZone extends Construct {
9
- static fromConstruct(scope: Construct, props: HostedZoneAttributes): IHostedZone;
10
- }
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RootHostedZone = void 0;
4
- const aws_route53_1 = require("aws-cdk-lib/aws-route53");
5
- const constructs_1 = require("constructs");
6
- /**
7
- * This will always return a root hosted zone based on attributes. It will
8
- * never create the root zone since the root zone should always be created
9
- * manually.
10
- */
11
- class RootHostedZone extends constructs_1.Construct {
12
- static fromConstruct(scope, props) {
13
- return aws_route53_1.HostedZone.fromHostedZoneAttributes(scope, "root-zone", {
14
- hostedZoneId: props.hostedZoneId,
15
- zoneName: props.zoneName,
16
- });
17
- }
18
- }
19
- exports.RootHostedZone = RootHostedZone;
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1ob3N0ZWQtem9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JvdXRlLTUzL3Jvb3QtaG9zdGVkLXpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBSWlDO0FBQ2pDLDJDQUF1QztBQUV2Qzs7OztHQUlHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFDcEMsTUFBTSxDQUFDLGFBQWEsQ0FDekIsS0FBZ0IsRUFDaEIsS0FBMkI7UUFFM0IsT0FBTyx3QkFBVSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDN0QsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFWRCx3Q0FVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEhvc3RlZFpvbmUsXG4gIEhvc3RlZFpvbmVBdHRyaWJ1dGVzLFxuICBJSG9zdGVkWm9uZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG4vKipcbiAqIFRoaXMgd2lsbCBhbHdheXMgcmV0dXJuIGEgcm9vdCBob3N0ZWQgem9uZSBiYXNlZCBvbiBhdHRyaWJ1dGVzLiBJdCB3aWxsXG4gKiBuZXZlciBjcmVhdGUgdGhlIHJvb3Qgem9uZSBzaW5jZSB0aGUgcm9vdCB6b25lIHNob3VsZCBhbHdheXMgYmUgY3JlYXRlZFxuICogbWFudWFsbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBSb290SG9zdGVkWm9uZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbnN0cnVjdChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHByb3BzOiBIb3N0ZWRab25lQXR0cmlidXRlcyxcbiAgKTogSUhvc3RlZFpvbmUge1xuICAgIHJldHVybiBIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyhzY29wZSwgXCJyb290LXpvbmVcIiwge1xuICAgICAgaG9zdGVkWm9uZUlkOiBwcm9wcy5ob3N0ZWRab25lSWQsXG4gICAgICB6b25lTmFtZTogcHJvcHMuem9uZU5hbWUsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,59 +0,0 @@
1
- import { StringParameter, type StringParameterProps } from "aws-cdk-lib/aws-ssm";
2
- import { Construct } from "constructs";
3
- /*******************************************************************************
4
- *
5
- * DiscoverableStringParameterProps: props for creating or looking up SSM
6
- * parameters. Includes StringParameterProps (minus parameterName) plus
7
- * name-building fields used by buildParameterName.
8
- *
9
- ******************************************************************************/
10
- export interface DiscoverableStringParameterProps extends Omit<StringParameterProps, "parameterName"> {
11
- /**
12
- * SSM param name used to build the SSM parameter name via buildParameterName
13
- * and stored as a tag on the parameter for discoverability.
14
- */
15
- readonly ssmParamName: string;
16
- /**
17
- * The environment hash the parameter belongs to.
18
- * @default - the current stack's environment hash
19
- */
20
- readonly branchHash?: string;
21
- /**
22
- * The service type the parameter belongs to.
23
- * @default - the current stack's service type
24
- */
25
- readonly serviceType?: string;
26
- /**
27
- * The AWS account the parameter belongs to.
28
- * @default - the current stack's account
29
- */
30
- readonly account?: string;
31
- /**
32
- * The AWS region the parameter belongs to.
33
- * @default - the current stack's region
34
- */
35
- readonly region?: string;
36
- }
37
- /**
38
- * Props for buildParameterName and valueForLookupName.
39
- * Includes ssmParamName (required) and optional overrides (branchHash, serviceType, account, region).
40
- */
41
- export type BuildParameterNameProps = Pick<DiscoverableStringParameterProps, "ssmParamName" | "branchHash" | "serviceType" | "account" | "region">;
42
- /**
43
- * Discoverable SSM string parameter construct. Extends CDK StringParameter:
44
- * builds parameterName from the given name via buildParameterName and tags
45
- * the parameter with the name constant.
46
- */
47
- export declare class DiscoverableStringParameter extends StringParameter {
48
- /**
49
- * Build a param name based on predictable attributes found in services and
50
- * constructs. Used for storage and retrieval of SSM values across services.
51
- */
52
- static buildParameterName(scope: Construct, props: BuildParameterNameProps): string;
53
- /**
54
- * Read the string value of an SSM parameter created with DiscoverableStringParameter,
55
- * using props that include ssmParamName and optional overrides (e.g. serviceType).
56
- */
57
- static valueForLookupName(scope: Construct, props: BuildParameterNameProps): string;
58
- constructor(scope: Construct, id: string, props: DiscoverableStringParameterProps);
59
- }
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DiscoverableStringParameter = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
6
- const app_1 = require("../../app");
7
- /**
8
- * Discoverable SSM string parameter construct. Extends CDK StringParameter:
9
- * builds parameterName from the given name via buildParameterName and tags
10
- * the parameter with the name constant.
11
- */
12
- class DiscoverableStringParameter extends aws_ssm_1.StringParameter {
13
- /**
14
- * Build a param name based on predictable attributes found in services and
15
- * constructs. Used for storage and retrieval of SSM values across services.
16
- */
17
- static buildParameterName(scope, props) {
18
- const stack = app_1.OpenHiService.of(scope);
19
- return ("/" +
20
- [
21
- props.branchHash ?? stack.branchHash,
22
- props.serviceType ?? stack.serviceType,
23
- props.account ?? stack.account,
24
- props.region ?? stack.region,
25
- props.ssmParamName,
26
- ]
27
- .join("/")
28
- .toUpperCase());
29
- }
30
- /**
31
- * Read the string value of an SSM parameter created with DiscoverableStringParameter,
32
- * using props that include ssmParamName and optional overrides (e.g. serviceType).
33
- */
34
- static valueForLookupName(scope, props) {
35
- const paramName = DiscoverableStringParameter.buildParameterName(scope, props);
36
- return aws_ssm_1.StringParameter.valueForStringParameter(scope, paramName);
37
- }
38
- constructor(scope, id, props) {
39
- const { ssmParamName, branchHash, serviceType, account, region, ...rest } = props;
40
- const parameterName = DiscoverableStringParameter.buildParameterName(scope, props);
41
- super(scope, id, {
42
- ...rest,
43
- parameterName,
44
- });
45
- const { appName } = app_1.OpenHiService.of(scope);
46
- aws_cdk_lib_1.Tags.of(this).add(`${appName}:param-name`, ssmParamName);
47
- }
48
- }
49
- exports.DiscoverableStringParameter = DiscoverableStringParameter;
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY292ZXJhYmxlLXN0cmluZy1wYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zc20vZGlzY292ZXJhYmxlLXN0cmluZy1wYXJhbWV0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQW1DO0FBQ25DLGlEQUc2QjtBQUU3QixtQ0FBMEM7QUFzRDFDOzs7O0dBSUc7QUFDSCxNQUFhLDJCQUE0QixTQUFRLHlCQUFlO0lBQzlEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FDOUIsS0FBZ0IsRUFDaEIsS0FBOEI7UUFFOUIsTUFBTSxLQUFLLEdBQUcsbUJBQWEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFrQixDQUFDO1FBQ3ZELE9BQU8sQ0FDTCxHQUFHO1lBQ0g7Z0JBQ0UsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVTtnQkFDcEMsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVztnQkFDdEMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTztnQkFDOUIsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTTtnQkFDNUIsS0FBSyxDQUFDLFlBQVk7YUFDbkI7aUJBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDVCxXQUFXLEVBQUUsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQzlCLEtBQWdCLEVBQ2hCLEtBQThCO1FBRTlCLE1BQU0sU0FBUyxHQUFHLDJCQUEyQixDQUFDLGtCQUFrQixDQUM5RCxLQUFLLEVBQ0wsS0FBSyxDQUNOLENBQUM7UUFDRixPQUFPLHlCQUFlLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUF1QztRQUV2QyxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRSxHQUN2RSxLQUFLLENBQUM7UUFFUixNQUFNLGFBQWEsR0FBRywyQkFBMkIsQ0FBQyxrQkFBa0IsQ0FDbEUsS0FBSyxFQUNMLEtBQUssQ0FDTixDQUFDO1FBRUYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLElBQUk7WUFDUCxhQUFhO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLG1CQUFhLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBa0IsQ0FBQztRQUM3RCxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0Y7QUE1REQsa0VBNERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFncyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgU3RyaW5nUGFyYW1ldGVyLFxuICB0eXBlIFN0cmluZ1BhcmFtZXRlclByb3BzLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE9wZW5IaVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vYXBwXCI7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogRGlzY292ZXJhYmxlU3RyaW5nUGFyYW1ldGVyUHJvcHM6IHByb3BzIGZvciBjcmVhdGluZyBvciBsb29raW5nIHVwIFNTTVxuICogcGFyYW1ldGVycy4gSW5jbHVkZXMgU3RyaW5nUGFyYW1ldGVyUHJvcHMgKG1pbnVzIHBhcmFtZXRlck5hbWUpIHBsdXNcbiAqIG5hbWUtYnVpbGRpbmcgZmllbGRzIHVzZWQgYnkgYnVpbGRQYXJhbWV0ZXJOYW1lLlxuICpcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzY292ZXJhYmxlU3RyaW5nUGFyYW1ldGVyUHJvcHMgZXh0ZW5kcyBPbWl0PFxuICBTdHJpbmdQYXJhbWV0ZXJQcm9wcyxcbiAgXCJwYXJhbWV0ZXJOYW1lXCJcbj4ge1xuICAvKipcbiAgICogU1NNIHBhcmFtIG5hbWUgdXNlZCB0byBidWlsZCB0aGUgU1NNIHBhcmFtZXRlciBuYW1lIHZpYSBidWlsZFBhcmFtZXRlck5hbWVcbiAgICogYW5kIHN0b3JlZCBhcyBhIHRhZyBvbiB0aGUgcGFyYW1ldGVyIGZvciBkaXNjb3ZlcmFiaWxpdHkuXG4gICAqL1xuICByZWFkb25seSBzc21QYXJhbU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGhhc2ggdGhlIHBhcmFtZXRlciBiZWxvbmdzIHRvLlxuICAgKiBAZGVmYXVsdCAtIHRoZSBjdXJyZW50IHN0YWNrJ3MgZW52aXJvbm1lbnQgaGFzaFxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoSGFzaD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNlcnZpY2UgdHlwZSB0aGUgcGFyYW1ldGVyIGJlbG9uZ3MgdG8uXG4gICAqIEBkZWZhdWx0IC0gdGhlIGN1cnJlbnQgc3RhY2sncyBzZXJ2aWNlIHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VUeXBlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIGFjY291bnQgdGhlIHBhcmFtZXRlciBiZWxvbmdzIHRvLlxuICAgKiBAZGVmYXVsdCAtIHRoZSBjdXJyZW50IHN0YWNrJ3MgYWNjb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFXUyByZWdpb24gdGhlIHBhcmFtZXRlciBiZWxvbmdzIHRvLlxuICAgKiBAZGVmYXVsdCAtIHRoZSBjdXJyZW50IHN0YWNrJ3MgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIGJ1aWxkUGFyYW1ldGVyTmFtZSBhbmQgdmFsdWVGb3JMb29rdXBOYW1lLlxuICogSW5jbHVkZXMgc3NtUGFyYW1OYW1lIChyZXF1aXJlZCkgYW5kIG9wdGlvbmFsIG92ZXJyaWRlcyAoYnJhbmNoSGFzaCwgc2VydmljZVR5cGUsIGFjY291bnQsIHJlZ2lvbikuXG4gKi9cbmV4cG9ydCB0eXBlIEJ1aWxkUGFyYW1ldGVyTmFtZVByb3BzID0gUGljazxcbiAgRGlzY292ZXJhYmxlU3RyaW5nUGFyYW1ldGVyUHJvcHMsXG4gIFwic3NtUGFyYW1OYW1lXCIgfCBcImJyYW5jaEhhc2hcIiB8IFwic2VydmljZVR5cGVcIiB8IFwiYWNjb3VudFwiIHwgXCJyZWdpb25cIlxuPjtcblxuLyoqXG4gKiBEaXNjb3ZlcmFibGUgU1NNIHN0cmluZyBwYXJhbWV0ZXIgY29uc3RydWN0LiBFeHRlbmRzIENESyBTdHJpbmdQYXJhbWV0ZXI6XG4gKiBidWlsZHMgcGFyYW1ldGVyTmFtZSBmcm9tIHRoZSBnaXZlbiBuYW1lIHZpYSBidWlsZFBhcmFtZXRlck5hbWUgYW5kIHRhZ3NcbiAqIHRoZSBwYXJhbWV0ZXIgd2l0aCB0aGUgbmFtZSBjb25zdGFudC5cbiAqL1xuZXhwb3J0IGNsYXNzIERpc2NvdmVyYWJsZVN0cmluZ1BhcmFtZXRlciBleHRlbmRzIFN0cmluZ1BhcmFtZXRlciB7XG4gIC8qKlxuICAgKiBCdWlsZCBhIHBhcmFtIG5hbWUgYmFzZWQgb24gcHJlZGljdGFibGUgYXR0cmlidXRlcyBmb3VuZCBpbiBzZXJ2aWNlcyBhbmRcbiAgICogY29uc3RydWN0cy4gVXNlZCBmb3Igc3RvcmFnZSBhbmQgcmV0cmlldmFsIG9mIFNTTSB2YWx1ZXMgYWNyb3NzIHNlcnZpY2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBidWlsZFBhcmFtZXRlck5hbWUoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwcm9wczogQnVpbGRQYXJhbWV0ZXJOYW1lUHJvcHMsXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhY2sgPSBPcGVuSGlTZXJ2aWNlLm9mKHNjb3BlKSBhcyBPcGVuSGlTZXJ2aWNlO1xuICAgIHJldHVybiAoXG4gICAgICBcIi9cIiArXG4gICAgICBbXG4gICAgICAgIHByb3BzLmJyYW5jaEhhc2ggPz8gc3RhY2suYnJhbmNoSGFzaCxcbiAgICAgICAgcHJvcHMuc2VydmljZVR5cGUgPz8gc3RhY2suc2VydmljZVR5cGUsXG4gICAgICAgIHByb3BzLmFjY291bnQgPz8gc3RhY2suYWNjb3VudCxcbiAgICAgICAgcHJvcHMucmVnaW9uID8/IHN0YWNrLnJlZ2lvbixcbiAgICAgICAgcHJvcHMuc3NtUGFyYW1OYW1lLFxuICAgICAgXVxuICAgICAgICAuam9pbihcIi9cIilcbiAgICAgICAgLnRvVXBwZXJDYXNlKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgdGhlIHN0cmluZyB2YWx1ZSBvZiBhbiBTU00gcGFyYW1ldGVyIGNyZWF0ZWQgd2l0aCBEaXNjb3ZlcmFibGVTdHJpbmdQYXJhbWV0ZXIsXG4gICAqIHVzaW5nIHByb3BzIHRoYXQgaW5jbHVkZSBzc21QYXJhbU5hbWUgYW5kIG9wdGlvbmFsIG92ZXJyaWRlcyAoZS5nLiBzZXJ2aWNlVHlwZSkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhbHVlRm9yTG9va3VwTmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHByb3BzOiBCdWlsZFBhcmFtZXRlck5hbWVQcm9wcyxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJhbU5hbWUgPSBEaXNjb3ZlcmFibGVTdHJpbmdQYXJhbWV0ZXIuYnVpbGRQYXJhbWV0ZXJOYW1lKFxuICAgICAgc2NvcGUsXG4gICAgICBwcm9wcyxcbiAgICApO1xuICAgIHJldHVybiBTdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIoc2NvcGUsIHBhcmFtTmFtZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IERpc2NvdmVyYWJsZVN0cmluZ1BhcmFtZXRlclByb3BzLFxuICApIHtcbiAgICBjb25zdCB7IHNzbVBhcmFtTmFtZSwgYnJhbmNoSGFzaCwgc2VydmljZVR5cGUsIGFjY291bnQsIHJlZ2lvbiwgLi4ucmVzdCB9ID1cbiAgICAgIHByb3BzO1xuXG4gICAgY29uc3QgcGFyYW1ldGVyTmFtZSA9IERpc2NvdmVyYWJsZVN0cmluZ1BhcmFtZXRlci5idWlsZFBhcmFtZXRlck5hbWUoXG4gICAgICBzY29wZSxcbiAgICAgIHByb3BzLFxuICAgICk7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnJlc3QsXG4gICAgICBwYXJhbWV0ZXJOYW1lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgeyBhcHBOYW1lIH0gPSBPcGVuSGlTZXJ2aWNlLm9mKHNjb3BlKSBhcyBPcGVuSGlTZXJ2aWNlO1xuICAgIFRhZ3Mub2YodGhpcykuYWRkKGAke2FwcE5hbWV9OnBhcmFtLW5hbWVgLCBzc21QYXJhbU5hbWUpO1xuICB9XG59XG4iXX0=
@@ -1 +0,0 @@
1
- export * from "./discoverable-string-parameter";
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./discoverable-string-parameter"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zc20vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtFQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2Rpc2NvdmVyYWJsZS1zdHJpbmctcGFyYW1ldGVyXCI7XG4iXX0=
@@ -1,180 +0,0 @@
1
- import { Entity } from "electrodb";
2
- /**
3
- * Patient data-store entity based on FHIR (single-table store).
4
- *
5
- * Key structure: PK = TID#<tenantId>#WID#<workspaceId>#RT#Patient#ID#<id>, SK = CURRENT.
6
- * Standard attributes (FHIR source and entity purpose) are documented in the Data-Store Entity Standards (FHIR).
7
- *
8
- * @see sites/www-docs/content/reference/data-store-entities.md — Standard attributes (all FHIR domain resources)
9
- * @see sites/www-docs/content/architecture/dynamodb-single-table-design.md
10
- */
11
- export declare const Patient: Entity<string, string, string, {
12
- model: {
13
- entity: string;
14
- service: string;
15
- version: string;
16
- };
17
- attributes: {
18
- /** Sort key. "CURRENT" for current version; version history in S3. */
19
- sk: {
20
- type: "string";
21
- required: true;
22
- default: string;
23
- };
24
- tenantId: {
25
- type: "string";
26
- required: true;
27
- };
28
- workspaceId: {
29
- type: "string";
30
- required: true;
31
- };
32
- /** FHIR Resource.id; logical id in URL and PK. */
33
- id: {
34
- type: "string";
35
- required: true;
36
- };
37
- /** FHIR resource as JSON string. JSON.stringify(resource) on write; JSON.parse(item.resource) on read. */
38
- resource: {
39
- type: "string";
40
- required: true;
41
- };
42
- /** Version id (e.g. ULID). Tracks current version; S3 history key. */
43
- vid: {
44
- type: "string";
45
- required: true;
46
- };
47
- lastUpdated: {
48
- type: "string";
49
- required: true;
50
- };
51
- deleted: {
52
- type: "boolean";
53
- required: false;
54
- };
55
- bundleId: {
56
- type: "string";
57
- required: false;
58
- };
59
- msgId: {
60
- type: "string";
61
- required: false;
62
- };
63
- /** Identifier system (e.g. MRN system URI). When set with identifierValue, item is written to GSI2. */
64
- identifierSystem: {
65
- type: "string";
66
- required: false;
67
- };
68
- /** Identifier value (e.g. MRN). When set with identifierSystem, item is written to GSI2. */
69
- identifierValue: {
70
- type: "string";
71
- required: false;
72
- };
73
- /** For GSI2/GSI3 projection: base table PK/SK so GetItem can be used after query. */
74
- resourcePk: {
75
- type: "string";
76
- required: false;
77
- };
78
- resourceSk: {
79
- type: "string";
80
- required: false;
81
- };
82
- /** For GSI2 projection: display name for roster/lookup. */
83
- display: {
84
- type: "string";
85
- required: false;
86
- };
87
- /** For GSI2 projection: resource status if applicable. */
88
- status: {
89
- type: "string";
90
- required: false;
91
- };
92
- /** Facility id. When set with normalizedName, item is written to GSI3. */
93
- facilityId: {
94
- type: "string";
95
- required: false;
96
- };
97
- /** Normalized display name for roster sort. When set with facilityId, item is written to GSI3. */
98
- normalizedName: {
99
- type: "string";
100
- required: false;
101
- };
102
- };
103
- indexes: {
104
- /** Base table: PK, SK (data store key names). PK is built from tenantId, workspaceId, id; do not supply PK from outside. */
105
- record: {
106
- pk: {
107
- field: string;
108
- composite: ("id" | "tenantId" | "workspaceId")[];
109
- template: string;
110
- };
111
- sk: {
112
- field: string;
113
- composite: "sk"[];
114
- };
115
- };
116
- /**
117
- * GSI1 — Reverse Reference: query "what references this patient?".
118
- * Patient items are never written to GSI1 (condition: false); reference index items
119
- * are written by other resources. This index enables querying GSI1 by REFTO#RT#Patient#ID#<id>.
120
- */
121
- gsi1: {
122
- index: string;
123
- condition: () => boolean;
124
- pk: {
125
- field: string;
126
- composite: ("id" | "tenantId" | "workspaceId")[];
127
- template: string;
128
- };
129
- sk: {
130
- field: string;
131
- composite: never[];
132
- };
133
- };
134
- /** GSI2 — Identifier Lookup: MRN, NPI, member ID, etc. Keys built from identifier components. */
135
- gsi2: {
136
- index: string;
137
- condition: (attr: Record<string, unknown>) => boolean;
138
- pk: {
139
- field: string;
140
- composite: ("tenantId" | "workspaceId" | "identifierSystem" | "identifierValue")[];
141
- template: string;
142
- };
143
- sk: {
144
- field: string;
145
- composite: "id"[];
146
- template: string;
147
- };
148
- };
149
- /** GSI3 — Facility Ops: facility roster, worklists. Keys built from facility + name. */
150
- gsi3: {
151
- index: string;
152
- condition: (attr: Record<string, unknown>) => boolean;
153
- pk: {
154
- field: string;
155
- composite: ("tenantId" | "workspaceId" | "facilityId")[];
156
- template: string;
157
- };
158
- sk: {
159
- field: string;
160
- composite: ("id" | "normalizedName")[];
161
- template: string;
162
- };
163
- };
164
- /** GSI4 — Resource Type Index: list all Patients in workspace (no scan). */
165
- gsi4: {
166
- index: string;
167
- condition: () => boolean;
168
- pk: {
169
- field: string;
170
- composite: ("tenantId" | "workspaceId")[];
171
- template: string;
172
- };
173
- sk: {
174
- field: string;
175
- composite: "id"[];
176
- template: string;
177
- };
178
- };
179
- };
180
- }>;
@@ -1,192 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Patient = void 0;
4
- const electrodb_1 = require("electrodb");
5
- /**
6
- * Patient data-store entity based on FHIR (single-table store).
7
- *
8
- * Key structure: PK = TID#<tenantId>#WID#<workspaceId>#RT#Patient#ID#<id>, SK = CURRENT.
9
- * Standard attributes (FHIR source and entity purpose) are documented in the Data-Store Entity Standards (FHIR).
10
- *
11
- * @see sites/www-docs/content/reference/data-store-entities.md — Standard attributes (all FHIR domain resources)
12
- * @see sites/www-docs/content/architecture/dynamodb-single-table-design.md
13
- */
14
- exports.Patient = new electrodb_1.Entity({
15
- model: {
16
- entity: "patient",
17
- service: "fhir",
18
- version: "01",
19
- },
20
- attributes: {
21
- /** Sort key. "CURRENT" for current version; version history in S3. */
22
- sk: {
23
- type: "string",
24
- required: true,
25
- default: "CURRENT",
26
- },
27
- tenantId: {
28
- type: "string",
29
- required: true,
30
- },
31
- workspaceId: {
32
- type: "string",
33
- required: true,
34
- },
35
- /** FHIR Resource.id; logical id in URL and PK. */
36
- id: {
37
- type: "string",
38
- required: true,
39
- },
40
- /** FHIR resource as JSON string. JSON.stringify(resource) on write; JSON.parse(item.resource) on read. */
41
- resource: {
42
- type: "string",
43
- required: true,
44
- },
45
- /** Version id (e.g. ULID). Tracks current version; S3 history key. */
46
- vid: {
47
- type: "string",
48
- required: true,
49
- },
50
- lastUpdated: {
51
- type: "string",
52
- required: true,
53
- },
54
- deleted: {
55
- type: "boolean",
56
- required: false,
57
- },
58
- bundleId: {
59
- type: "string",
60
- required: false,
61
- },
62
- msgId: {
63
- type: "string",
64
- required: false,
65
- },
66
- // Audit is in FHIR resource meta (meta.extension), not item attributes. See data-store-entities.md.
67
- // --- GSI2 (Identifier Lookup): optional; set when indexing this patient by identifier (e.g. MRN)
68
- /** Identifier system (e.g. MRN system URI). When set with identifierValue, item is written to GSI2. */
69
- identifierSystem: {
70
- type: "string",
71
- required: false,
72
- },
73
- /** Identifier value (e.g. MRN). When set with identifierSystem, item is written to GSI2. */
74
- identifierValue: {
75
- type: "string",
76
- required: false,
77
- },
78
- /** For GSI2/GSI3 projection: base table PK/SK so GetItem can be used after query. */
79
- resourcePk: {
80
- type: "string",
81
- required: false,
82
- },
83
- resourceSk: {
84
- type: "string",
85
- required: false,
86
- },
87
- /** For GSI2 projection: display name for roster/lookup. */
88
- display: {
89
- type: "string",
90
- required: false,
91
- },
92
- /** For GSI2 projection: resource status if applicable. */
93
- status: {
94
- type: "string",
95
- required: false,
96
- },
97
- // --- GSI3 (Facility Ops): optional; set when indexing this patient on a facility roster
98
- /** Facility id. When set with normalizedName, item is written to GSI3. */
99
- facilityId: {
100
- type: "string",
101
- required: false,
102
- },
103
- /** Normalized display name for roster sort. When set with facilityId, item is written to GSI3. */
104
- normalizedName: {
105
- type: "string",
106
- required: false,
107
- },
108
- },
109
- indexes: {
110
- /** Base table: PK, SK (data store key names). PK is built from tenantId, workspaceId, id; do not supply PK from outside. */
111
- record: {
112
- pk: {
113
- field: "PK",
114
- composite: ["tenantId", "workspaceId", "id"],
115
- template: "TID#${tenantId}#WID#${workspaceId}#RT#Patient#ID#${id}",
116
- },
117
- sk: {
118
- field: "SK",
119
- composite: ["sk"],
120
- },
121
- },
122
- /**
123
- * GSI1 — Reverse Reference: query "what references this patient?".
124
- * Patient items are never written to GSI1 (condition: false); reference index items
125
- * are written by other resources. This index enables querying GSI1 by REFTO#RT#Patient#ID#<id>.
126
- */
127
- gsi1: {
128
- index: "GSI1",
129
- condition: () => false,
130
- pk: {
131
- field: "GSI1PK",
132
- composite: ["tenantId", "workspaceId", "id"],
133
- template: "TID#${tenantId}#WID#${workspaceId}#REFTO#RT#Patient#ID#${id}",
134
- },
135
- sk: {
136
- field: "GSI1SK",
137
- composite: [],
138
- },
139
- },
140
- /** GSI2 — Identifier Lookup: MRN, NPI, member ID, etc. Keys built from identifier components. */
141
- gsi2: {
142
- index: "GSI2",
143
- condition: (attr) => attr.identifierSystem != null && attr.identifierValue != null,
144
- pk: {
145
- field: "GSI2PK",
146
- composite: [
147
- "tenantId",
148
- "workspaceId",
149
- "identifierSystem",
150
- "identifierValue",
151
- ],
152
- template: "TID#${tenantId}#WID#${workspaceId}#IDENT#${identifierSystem}#${identifierValue}",
153
- },
154
- sk: {
155
- field: "GSI2SK",
156
- composite: ["id"],
157
- template: "RT#Patient#ID#${id}",
158
- },
159
- },
160
- /** GSI3 — Facility Ops: facility roster, worklists. Keys built from facility + name. */
161
- gsi3: {
162
- index: "GSI3",
163
- condition: (attr) => attr.facilityId != null && attr.normalizedName != null,
164
- pk: {
165
- field: "GSI3PK",
166
- composite: ["tenantId", "workspaceId", "facilityId"],
167
- template: "TID#${tenantId}#WID#${workspaceId}#FAC#${facilityId}",
168
- },
169
- sk: {
170
- field: "GSI3SK",
171
- composite: ["id", "normalizedName"],
172
- template: "TYPE#PATIENT#PAT#${id}#NAME#${normalizedName}",
173
- },
174
- },
175
- /** GSI4 — Resource Type Index: list all Patients in workspace (no scan). */
176
- gsi4: {
177
- index: "GSI4",
178
- condition: () => true,
179
- pk: {
180
- field: "GSI4PK",
181
- composite: ["tenantId", "workspaceId"],
182
- template: "TID#${tenantId}#WID#${workspaceId}#RT#Patient",
183
- },
184
- sk: {
185
- field: "GSI4SK",
186
- composite: ["id"],
187
- template: "ID#${id}",
188
- },
189
- },
190
- },
191
- });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0aWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhL2R5bmFtby9laHIvcjQvUGF0aWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBbUM7QUFFbkM7Ozs7Ozs7O0dBUUc7QUFDVSxRQUFBLE9BQU8sR0FBRyxJQUFJLGtCQUFNLENBQUM7SUFDaEMsS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLFNBQVM7UUFDakIsT0FBTyxFQUFFLE1BQU07UUFDZixPQUFPLEVBQUUsSUFBSTtLQUNkO0lBQ0QsVUFBVSxFQUFFO1FBQ1Ysc0VBQXNFO1FBQ3RFLEVBQUUsRUFBRTtZQUNGLElBQUksRUFBRSxRQUFRO1lBQ2QsUUFBUSxFQUFFLElBQUk7WUFDZCxPQUFPLEVBQUUsU0FBUztTQUNuQjtRQUNELFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxRQUFRO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FDZjtRQUNELFdBQVcsRUFBRTtZQUNYLElBQUksRUFBRSxRQUFRO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FDZjtRQUNELGtEQUFrRDtRQUNsRCxFQUFFLEVBQUU7WUFDRixJQUFJLEVBQUUsUUFBUTtZQUNkLFFBQVEsRUFBRSxJQUFJO1NBQ2Y7UUFDRCwwR0FBMEc7UUFDMUcsUUFBUSxFQUFFO1lBQ1IsSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsSUFBSTtTQUNmO1FBQ0Qsc0VBQXNFO1FBQ3RFLEdBQUcsRUFBRTtZQUNILElBQUksRUFBRSxRQUFRO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FDZjtRQUNELFdBQVcsRUFBRTtZQUNYLElBQUksRUFBRSxRQUFRO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FDZjtRQUNELE9BQU8sRUFBRTtZQUNQLElBQUksRUFBRSxTQUFTO1lBQ2YsUUFBUSxFQUFFLEtBQUs7U0FDaEI7UUFDRCxRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsUUFBUTtZQUNkLFFBQVEs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VSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7Z0JBQ3BELFFBQVEsRUFBRSxzREFBc0Q7YUFDakU7WUFDRCxFQUFFLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDO2dCQUNuQyxRQUFRLEVBQUUsK0NBQStDO2FBQzFEO1NBQ0Y7UUFDRCw0RUFBNEU7UUFDNUUsSUFBSSxFQUFFO1lBQ0osS0FBSyxFQUFFLE1BQU07WUFDYixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtZQUNyQixFQUFFLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsU0FBUyxFQUFFLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQztnQkFDdEMsUUFBUSxFQUFFLCtDQUErQzthQUMxRDtZQUNELEVBQUUsRUFBRTtnQkFDRixLQUFLLEVBQUUsUUFBUTtnQkFDZixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLFFBQVEsRUFBRSxVQUFVO2FBQ3JCO1NBQ0Y7S0FDRjtDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eSB9IGZyb20gXCJlbGVjdHJvZGJcIjtcblxuLyoqXG4gKiBQYXRpZW50IGRhdGEtc3RvcmUgZW50aXR5IGJhc2VkIG9uIEZISVIgKHNpbmdsZS10YWJsZSBzdG9yZSkuXG4gKlxuICogS2V5IHN0cnVjdHVyZTogUEsgPSBUSUQjPHRlbmFudElkPiNXSUQjPHdvcmtzcGFjZUlkPiNSVCNQYXRpZW50I0lEIzxpZD4sIFNLID0gQ1VSUkVOVC5cbiAqIFN0YW5kYXJkIGF0dHJpYnV0ZXMgKEZISVIgc291cmNlIGFuZCBlbnRpdHkgcHVycG9zZSkgYXJlIGRvY3VtZW50ZWQgaW4gdGhlIERhdGEtU3RvcmUgRW50aXR5IFN0YW5kYXJkcyAoRkhJUikuXG4gKlxuICogQHNlZSBzaXRlcy93d3ctZG9jcy9jb250ZW50L3JlZmVyZW5jZS9kYXRhLXN0b3JlLWVudGl0aWVzLm1kIOKAlCBTdGFuZGFyZCBhdHRyaWJ1dGVzIChhbGwgRkhJUiBkb21haW4gcmVzb3VyY2VzKVxuICogQHNlZSBzaXRlcy93d3ctZG9jcy9jb250ZW50L2FyY2hpdGVjdHVyZS9keW5hbW9kYi1zaW5nbGUtdGFibGUtZGVzaWduLm1kXG4gKi9cbmV4cG9ydCBjb25zdCBQYXRpZW50ID0gbmV3IEVudGl0eSh7XG4gIG1vZGVsOiB7XG4gICAgZW50aXR5OiBcInBhdGllbnRcIixcbiAgICBzZXJ2aWNlOiBcImZoaXJcIixcbiAgICB2ZXJzaW9uOiBcIjAxXCIsXG4gIH0sXG4gIGF0dHJpYnV0ZXM6IHtcbiAgICAvKiogU29ydCBrZXkuIFwiQ1VSUkVOVFwiIGZvciBjdXJyZW50IHZlcnNpb247IHZlcnNpb24gaGlzdG9yeSBpbiBTMy4gKi9cbiAgICBzazoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgZGVmYXVsdDogXCJDVVJSRU5UXCIsXG4gICAgfSxcbiAgICB0ZW5hbnRJZDoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0sXG4gICAgd29ya3NwYWNlSWQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9LFxuICAgIC8qKiBGSElSIFJlc291cmNlLmlkOyBsb2dpY2FsIGlkIGluIFVSTCBhbmQgUEsuICovXG4gICAgaWQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9LFxuICAgIC8qKiBGSElSIHJlc291cmNlIGFzIEpTT04gc3RyaW5nLiBKU09OLnN0cmluZ2lmeShyZXNvdXJjZSkgb24gd3JpdGU7IEpTT04ucGFyc2UoaXRlbS5yZXNvdXJjZSkgb24gcmVhZC4gKi9cbiAgICByZXNvdXJjZToge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0sXG4gICAgLyoqIFZlcnNpb24gaWQgKGUuZy4gVUxJRCkuIFRyYWNrcyBjdXJyZW50IHZlcnNpb247IFMzIGhpc3Rvcnkga2V5LiAqL1xuICAgIHZpZDoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0sXG4gICAgbGFzdFVwZGF0ZWQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9LFxuICAgIGRlbGV0ZWQ6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAgYnVuZGxlSWQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgfSxcbiAgICBtc2dJZDoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICB9LFxuICAgIC8vIEF1ZGl0IGlzIGluIEZISVIgcmVzb3VyY2UgbWV0YSAobWV0YS5leHRlbnNpb24pLCBub3QgaXRlbSBhdHRyaWJ1dGVzLiBTZWUgZGF0YS1zdG9yZS1lbnRpdGllcy5tZC5cbiAgICAvLyAtLS0gR1NJMiAoSWRlbnRpZmllciBMb29rdXApOiBvcHRpb25hbDsgc2V0IHdoZW4gaW5kZXhpbmcgdGhpcyBwYXRpZW50IGJ5IGlkZW50aWZpZXIgKGUuZy4gTVJOKVxuICAgIC8qKiBJZGVudGlmaWVyIHN5c3RlbSAoZS5nLiBNUk4gc3lzdGVtIFVSSSkuIFdoZW4gc2V0IHdpdGggaWRlbnRpZmllclZhbHVlLCBpdGVtIGlzIHdyaXR0ZW4gdG8gR1NJMi4gKi9cbiAgICBpZGVudGlmaWVyU3lzdGVtOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAgLyoqIElkZW50aWZpZXIgdmFsdWUgKGUuZy4gTVJOKS4gV2hlbiBzZXQgd2l0aCBpZGVudGlmaWVyU3lzdGVtLCBpdGVtIGlzIHdyaXR0ZW4gdG8gR1NJMi4gKi9cbiAgICBpZGVudGlmaWVyVmFsdWU6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgfSxcbiAgICAvKiogRm9yIEdTSTIvR1NJMyBwcm9qZWN0aW9uOiBiYXNlIHRhYmxlIFBLL1NLIHNvIEdldEl0ZW0gY2FuIGJlIHVzZWQgYWZ0ZXIgcXVlcnkuICovXG4gICAgcmVzb3VyY2VQazoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICB9LFxuICAgIHJlc291cmNlU2s6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgfSxcbiAgICAvKiogRm9yIEdTSTIgcHJvamVjdGlvbjogZGlzcGxheSBuYW1lIGZvciByb3N0ZXIvbG9va3VwLiAqL1xuICAgIGRpc3BsYXk6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgfSxcbiAgICAvKiogRm9yIEdTSTIgcHJvamVjdGlvbjogcmVzb3VyY2Ugc3RhdHVzIGlmIGFwcGxpY2FibGUuICovXG4gICAgc3RhdHVzOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAgLy8gLS0tIEdTSTMgKEZhY2lsaXR5IE9wcyk6IG9wdGlvbmFsOyBzZXQgd2hlbiBpbmRleGluZyB0aGlzIHBhdGllbnQgb24gYSBmYWNpbGl0eSByb3N0ZXJcbiAgICAvKiogRmFjaWxpdHkgaWQuIFdoZW4gc2V0IHdpdGggbm9ybWFsaXplZE5hbWUsIGl0ZW0gaXMgd3JpdHRlbiB0byBHU0kzLiAqL1xuICAgIGZhY2lsaXR5SWQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgfSxcbiAgICAvKiogTm9ybWFsaXplZCBkaXNwbGF5IG5hbWUgZm9yIHJvc3RlciBzb3J0LiBXaGVuIHNldCB3aXRoIGZhY2lsaXR5SWQsIGl0ZW0gaXMgd3JpdHRlbiB0byBHU0kzLiAqL1xuICAgIG5vcm1hbGl6ZWROYW1lOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0sXG4gIH0sXG4gIGluZGV4ZXM6IHtcbiAgICAvKiogQmFzZSB0YWJsZTogUEssIFNLIChkYXRhIHN0b3JlIGtleSBuYW1lcykuIFBLIGlzIGJ1aWx0IGZyb20gdGVuYW50SWQsIHdvcmtzcGFjZUlkLCBpZDsgZG8gbm90IHN1cHBseSBQSyBmcm9tIG91dHNpZGUuICovXG4gICAgcmVjb3JkOiB7XG4gICAgICBwazoge1xuICAgICAgICBmaWVsZDogXCJQS1wiLFxuICAgICAgICBjb21wb3NpdGU6IFtcInRlbmFudElkXCIsIFwid29ya3NwYWNlSWRcIiwgXCJpZFwiXSxcbiAgICAgICAgdGVtcGxhdGU6IFwiVElEIyR7dGVuYW50SWR9I1dJRCMke3dvcmtzcGFjZUlkfSNSVCNQYXRpZW50I0lEIyR7aWR9XCIsXG4gICAgICB9LFxuICAgICAgc2s6IHtcbiAgICAgICAgZmllbGQ6IFwiU0tcIixcbiAgICAgICAgY29tcG9zaXRlOiBbXCJza1wiXSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdTSTEg4oCUIFJldmVyc2UgUmVmZXJlbmNlOiBxdWVyeSBcIndoYXQgcmVmZXJlbmNlcyB0aGlzIHBhdGllbnQ/XCIuXG4gICAgICogUGF0aWVudCBpdGVtcyBhcmUgbmV2ZXIgd3JpdHRlbiB0byBHU0kxIChjb25kaXRpb246IGZhbHNlKTsgcmVmZXJlbmNlIGluZGV4IGl0ZW1zXG4gICAgICogYXJlIHdyaXR0ZW4gYnkgb3RoZXIgcmVzb3VyY2VzLiBUaGlzIGluZGV4IGVuYWJsZXMgcXVlcnlpbmcgR1NJMSBieSBSRUZUTyNSVCNQYXRpZW50I0lEIzxpZD4uXG4gICAgICovXG4gICAgZ3NpMToge1xuICAgICAgaW5kZXg6IFwiR1NJMVwiLFxuICAgICAgY29uZGl0aW9uOiAoKSA9PiBmYWxzZSxcbiAgICAgIHBrOiB7XG4gICAgICAgIGZpZWxkOiBcIkdTSTFQS1wiLFxuICAgICAgICBjb21wb3NpdGU6IFtcInRlbmFudElkXCIsIFwid29ya3NwYWNlSWRcIiwgXCJpZFwiXSxcbiAgICAgICAgdGVtcGxhdGU6XG4gICAgICAgICAgXCJUSUQjJHt0ZW5hbnRJZH0jV0lEIyR7d29ya3NwYWNlSWR9I1JFRlRPI1JUI1BhdGllbnQjSUQjJHtpZH1cIixcbiAgICAgIH0sXG4gICAgICBzazoge1xuICAgICAgICBmaWVsZDogXCJHU0kxU0tcIixcbiAgICAgICAgY29tcG9zaXRlOiBbXSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8qKiBHU0kyIOKAlCBJZGVudGlmaWVyIExvb2t1cDogTVJOLCBOUEksIG1lbWJlciBJRCwgZXRjLiBLZXlzIGJ1aWx0IGZyb20gaWRlbnRpZmllciBjb21wb25lbnRzLiAqL1xuICAgIGdzaTI6IHtcbiAgICAgIGluZGV4OiBcIkdTSTJcIixcbiAgICAgIGNvbmRpdGlvbjogKGF0dHIpID0+XG4gICAgICAgIGF0dHIuaWRlbnRpZmllclN5c3RlbSAhPSBudWxsICYmIGF0dHIuaWRlbnRpZmllclZhbHVlICE9IG51bGwsXG4gICAgICBwazoge1xuICAgICAgICBmaWVsZDogXCJHU0kyUEtcIixcbiAgICAgICAgY29tcG9zaXRlOiBbXG4gICAgICAgICAgXCJ0ZW5hbnRJZFwiLFxuICAgICAgICAgIFwid29ya3NwYWNlSWRcIixcbiAgICAgICAgICBcImlkZW50aWZpZXJTeXN0ZW1cIixcbiAgICAgICAgICBcImlkZW50aWZpZXJWYWx1ZVwiLFxuICAgICAgICBdLFxuICAgICAgICB0ZW1wbGF0ZTpcbiAgICAgICAgICBcIlRJRCMke3RlbmFudElkfSNXSUQjJHt3b3Jrc3BhY2VJZH0jSURFTlQjJHtpZGVudGlmaWVyU3lzdGVtfSMke2lkZW50aWZpZXJWYWx1ZX1cIixcbiAgICAgIH0sXG4gICAgICBzazoge1xuICAgICAgICBmaWVsZDogXCJHU0kyU0tcIixcbiAgICAgICAgY29tcG9zaXRlOiBbXCJpZFwiXSxcbiAgICAgICAgdGVtcGxhdGU6IFwiUlQjUGF0aWVudCNJRCMke2lkfVwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIC8qKiBHU0kzIOKAlCBGYWNpbGl0eSBPcHM6IGZhY2lsaXR5IHJvc3Rlciwgd29ya2xpc3RzLiBLZXlzIGJ1aWx0IGZyb20gZmFjaWxpdHkgKyBuYW1lLiAqL1xuICAgIGdzaTM6IHtcbiAgICAgIGluZGV4OiBcIkdTSTNcIixcbiAgICAgIGNvbmRpdGlvbjogKGF0dHIpID0+XG4gICAgICAgIGF0dHIuZmFjaWxpdHlJZCAhPSBudWxsICYmIGF0dHIubm9ybWFsaXplZE5hbWUgIT0gbnVsbCxcbiAgICAgIHBrOiB7XG4gICAgICAgIGZpZWxkOiBcIkdTSTNQS1wiLFxuICAgICAgICBjb21wb3NpdGU6IFtcInRlbmFudElkXCIsIFwid29ya3NwYWNlSWRcIiwgXCJmYWNpbGl0eUlkXCJdLFxuICAgICAgICB0ZW1wbGF0ZTogXCJUSUQjJHt0ZW5hbnRJZH0jV0lEIyR7d29ya3NwYWNlSWR9I0ZBQyMke2ZhY2lsaXR5SWR9XCIsXG4gICAgICB9LFxuICAgICAgc2s6IHtcbiAgICAgICAgZmllbGQ6IFwiR1NJM1NLXCIsXG4gICAgICAgIGNvbXBvc2l0ZTogW1wiaWRcIiwgXCJub3JtYWxpemVkTmFtZVwiXSxcbiAgICAgICAgdGVtcGxhdGU6IFwiVFlQRSNQQVRJRU5UI1BBVCMke2lkfSNOQU1FIyR7bm9ybWFsaXplZE5hbWV9XCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgLyoqIEdTSTQg4oCUIFJlc291cmNlIFR5cGUgSW5kZXg6IGxpc3QgYWxsIFBhdGllbnRzIGluIHdvcmtzcGFjZSAobm8gc2NhbikuICovXG4gICAgZ3NpNDoge1xuICAgICAgaW5kZXg6IFwiR1NJNFwiLFxuICAgICAgY29uZGl0aW9uOiAoKSA9PiB0cnVlLFxuICAgICAgcGs6IHtcbiAgICAgICAgZmllbGQ6IFwiR1NJNFBLXCIsXG4gICAgICAgIGNvbXBvc2l0ZTogW1widGVuYW50SWRcIiwgXCJ3b3Jrc3BhY2VJZFwiXSxcbiAgICAgICAgdGVtcGxhdGU6IFwiVElEIyR7dGVuYW50SWR9I1dJRCMke3dvcmtzcGFjZUlkfSNSVCNQYXRpZW50XCIsXG4gICAgICB9LFxuICAgICAgc2s6IHtcbiAgICAgICAgZmllbGQ6IFwiR1NJNFNLXCIsXG4gICAgICAgIGNvbXBvc2l0ZTogW1wiaWRcIl0sXG4gICAgICAgIHRlbXBsYXRlOiBcIklEIyR7aWR9XCIsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59KTtcbiJdfQ==