Giter VIP home page Giter VIP logo

epi-workspace's People

Contributors

adiganga2002 avatar alexgheorghiu avatar asaccool avatar bmastahac avatar daniel-visoiu avatar delayv avatar denypatrascu avatar ibogdan4226 avatar irimiacosmin avatar luputeodor2 avatar mastaleru avatar mppub avatar paiuscatalin avatar salboaie avatar skutner avatar tiagov-pdmfc avatar vladbalmos avatar wrupah avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

epi-workspace's Issues

DRA1-UCA-EP04-US06 Inbound Data Capabilities

As a Manufacturer 

I want to have the capability to handle additional information without impacting system performance or detracting from the user experience. For example display a recall message, display Anti-counterfeit check, displaying of different language files   

So That potential future requirements can be easily built on top 

User Story Rationale/ Examples:

The rationale behind this user story is for the designers/ developers to consider, as much as reasonably possible, future proofing the design of the solution and not just considering ePI as the end goal. We want to reduce/ minimize future costs when deploying additional use cases

Small issue on running npm install (node 12.19) + unofficial fix

Console:

Running command: cd cardinal && npm run build

[email protected] build /home/cybercelt/Documents/tutorial-workspace/cardinal
stencil build --docs

[05:01.2] @stencil/core
[05:01.3] v1.17.3 ⛱
[05:03.8] build, cardinal, prod mode, started ...
[05:03.8] transpile started ...
[05:09.8] transpile finished in 5.97 s

[ ERROR ] TypeScript: ./src/components/psk-page/psk-page.tsx:174:3
Type 'Timeout' is not assignable to type 'number'.

L174:  		this.__isScrolling = setTimeout(function () {
L175:  			highlightChapter.call(self);

[ WARN ] Build Warn: ./src/components/form-components/psk-radio/psk-radio.tsx:101:8
Events decorated with @event() should describe the actual DOM event
name, not the handler. In other words "onChangeRadio" would be
better named as "changeRadio".

L100:          cancelable: true
L101:      }) onChangeRadio: EventEmitter;
L102:  }

[ WARN ] Build Warn: ./src/components/psk-toc/psk-toc.tsx:18:13
The @prop() name "title" is a reserved public name. Please rename
the "title" prop so it does not conflict with an existing
standardized prototype member. Reusing prop names that are already
defined on the element's prototype may cause unexpected runtime
errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L17:  })
 L18:  @Prop() title: string;
 L19:  @State() pskPageElement: HTMLElement;

[05:09.8] build failed in 5.98 s

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] build: stencil build --docs
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /home/cybercelt/.npm/_logs/2020-12-11T09_05_09_896Z-debug.log


Log:
0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'run', 'build' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prebuild', 'build', 'postbuild' ]
5 info lifecycle [email protected]prebuild: [email protected]
6 info lifecycle [email protected]
build: [email protected]
7 verbose lifecycle [email protected]build: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]
build: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/cybercelt/Documents/tutorial-workspace/cardinal/node_modules/.bin:/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/cybercelt/Documents/tutorial-workspace/node_modules/.bin:/home/cybercelt/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
9 verbose lifecycle [email protected]build: CWD: /home/cybercelt/Documents/tutorial-workspace/cardinal
10 silly lifecycle [email protected]
build: Args: [ '-c', 'stencil build --docs' ]
11 silly lifecycle [email protected]build: Returned: code: 1 signal: null
12 info lifecycle [email protected]
build: Failed to exec build script
13 verbose stack Error: [email protected] build: stencil build --docs
13 verbose stack Exit status 1
13 verbose stack at EventEmitter. (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:314:20)
13 verbose stack at ChildProcess. (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:314:20)
13 verbose stack at maybeClose (internal/child_process.js:1021:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
14 verbose pkgid [email protected]
15 verbose cwd /home/cybercelt/Documents/tutorial-workspace/cardinal
16 verbose Linux 5.4.0-54-generic
17 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "build"
18 verbose node v12.19.0
19 verbose npm v6.14.9
20 error code ELIFECYCLE
21 error errno 1
22 error [email protected] build: stencil build --docs
22 error Exit status 1
23 error Failed at the [email protected] build script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

Unnoficial fix:
In: epi-workspace/cardinal/src/components/psk-page/psk-page.tsx

change:
this.__isScrolling = setTimeout(function () {highlightChapter.call(self);
to:
this.__isScrolling = window.setTimeout(function () {highlightChapter.call(self);

PL [3.1.23] Parse PDF file to text, transform to mobile friendly PDF or model

Parse PDF file to text, transform to mobile friendly PDF or model.

SPIKE ? Figure out how to do this with eLeaflet to get mobile friendly leaflet format into mobile app

LEARNINGS:

Without AI, It's not possible transform leaflet PDFs and achieve the same UX as with paper leaflet. There are two possible solutions:

use some structured data format instead of PDF (or maybe PDF accessibility tags could be helpful)
create mobile friendly PDFs editorially
There is no library for Vapor for parsing PDFs.

For every product backlog item:

rule description status
Task description add at least short description about the task
Acceptance criteria clear description (bullet points) what is output of the task (output of team refinement)
team engagement one person/pair/team (list names in case of more than 1 person) 1+
task reviewed by at least 1 peer acceptance criteria passing X
ruler description status
branch created - branch with correct type (feature/bugfix/...) - branch name contains JIRA reference X
tests - tested manually - unit tests implemented if applicable (team agreement) - integration/E2E tests for finished feature if applicable (team agreement) X - -
sdlc if the task covers acceptance criteria from requirement add test case(s) to SIT documentation -technical documentation updated (DCS) if applicable (team agreement - -
coding standards static analysis (linter, sonarQ) passing X
development practices commits contain reasonable message - logging enhanced - monitoring updated - analytics added/updated X - - -
pull request - 2 approvals required - build passing - PR contains description (+ screenshot or gif if applicable) - PR always rebased on master - delete remote branch after merge X X X X X

PL [3.1.22] Update Homescreen infographics with loader

Update homescreen infographics with loader, potentially use animation from Lottie library

For every product backlog item:

rule description status
Task description add at least short description about the task
Acceptance criteria clear description (bullet points) what is output of the task (output of team refinement)
team engagement one person/pair/team (list names in case of more than 1 person) 1+
task reviewed by at least 1 peer acceptance criteria passing X
ruler description status
branch created - branch with correct type (feature/bugfix/...) - branch name contains JIRA reference X
tests - tested manually - unit tests implemented if applicable (team agreement) - integration/E2E tests for finished feature if applicable (team agreement) X - -
sdlc if the task covers acceptance criteria from requirement add test case(s) to SIT documentation -technical documentation updated (DCS) if applicable (team agreement - -
coding standards static analysis (linter, sonarQ) passing X
development practices commits contain reasonable message - logging enhanced - monitoring updated - analytics added/updated X - - -
pull request - 2 approvals required - build passing - PR contains description (+ screenshot or gif if applicable) - PR always rebased on master - delete remote branch after merge X X X X X

DRA1-UCA-EP04-US05 Outbound Data Capabilities

As a Manufacturer

I want to have all the necessary information made available without impacting system performance or detracting from the user experience, for example parse out and provide the GTIN, Batch, Serial number etc. and have the ability to send a picture of the scanned barcode

So That potential future requirements can be easily built on top

User Story Rationale/ Examples:

This rationale behind this user story is for the designers/ developers to consider, as much as reasonably possible, future proofing the design of the solution and not just considering ePI as the end goal in order to reduce/ minimize future costs when deploying additional use cases

PL [3.1.29] CI: iOS build & deployment

Update build & deploy (iOS) stage in Jenkins pipeline to contain below mentioned features.

AC:

build iOS project and create IPA file (signed with enterprise code sign) ✅
update iOS build number to match with short commit hash ✅
add badge to app icon (https://github.com/HazAT/badge) ✅
deploy iOS app to AppCenter ✅

For every product backlog item:

rule description status
Task description add at least short description about the task
Acceptance criteria clear description (bullet points) what is output of the task (output of team refinement)
team engagement one person/pair/team (list names in case of more than 1 person) 1+
task reviewed by at least 1 peer acceptance criteria passing X
ruler description status
branch created - branch with correct type (feature/bugfix/...) - branch name contains JIRA reference X
tests - tested manually - unit tests implemented if applicable (team agreement) - integration/E2E tests for finished feature if applicable (team agreement) X - -
sdlc if the task covers acceptance criteria from requirement add test case(s) to SIT documentation -technical documentation updated (DCS) if applicable (team agreement - -
coding standards static analysis (linter, sonarQ) passing X
development practices commits contain reasonable message - logging enhanced - monitoring updated - analytics added/updated X - - -
pull request - 2 approvals required - build passing - PR contains description (+ screenshot or gif if applicable) - PR always rebased on master - delete remote branch after merge X X X X X

DRA1-UCA-EP01-US02: Review / Approval Transaction Records

Description

As a Manufacturer / MAH

I want to record the transactions for the review, approval transactions with the HA for transparency and traceability

So That the Patient always gets the ‘right’ and ‘latest’ eContent from the me, because I am liable and accountable for it. I want to be able to prove it and be audit ready. I want to be able to see problems if they occur and be able to investigate root cause

Acceptance Criteria

  • tbd

Dependencies

example issue: #15

DRA1-UCA-EP03-US04- Barcode Resolution - Get responsible MAH

As a Patient or HCP

I want to be able to scan the barcode and the GTIN/ NTIN resolver must resolve to to the responsible MAH

So That I am provided with the correct information related to my product

User Story Rationale/ Examples:

This user story relates to the resolution of the GTIN/ NTN. It is important that the GTIN/ NTIN resolver resolves to the responsible MAH so that the correct information can be provided, the correct information could be the most appropriate electronic leaflet or the necessary anticounterfeit checks etc. The GTIN/ NTIN resolver provides the links/ connections between the scanned barcode on the pack and the responsible MAH.

There may be various reasons when the GTIN/ NTIN resolver cannot resolve, for example:
· The GTIN/ NTIN might be falsified
· The GTIN/ NTIN might not be maintained in the resolver by the MAH
· Technical issues
· The GTIN/ NTIN may resolve but there might not be an ePI available or no possibility to perform Anticounterfeit checks etc. This is different to the above examples but from a User perspective they would not be returned any information so this should be indicated in the error/ warning message displayed.

See Attachment A2 for a conceptual logical overview on how the GTIN/ NTIN resolver would be required to operate.

Acceptance Tests
· Note: The GTIN/ NTIN resolution must be completed within 1 second
· Note: In the event that the GTIN/ NTIN cannot resolve then the user must be provided with an appropriate and meaningful error message

DRA1-UCA-EP04-US02 Document Display

As a Manufacturer  

I want to have a solution that can display various document types without the need to proofread each possible document type displayed.  

So That the Patient or HCP has the best user experience

User Story Rationale/ Examples:
This user story is specific to the displaying of the ePI / document. Unfortunately from an ePI perspective there is no single standard structured format that is used across the EU or the World. There are many initiatives working on this with various degrees of success and an implementation base. Therefore the device will need to be able to display different formats for example PDF’s, various XML based structured files, various JSON based structured files etc.
The release of the source file for all the various formats displayed should be sufficient to guarantee correctness for all possible displays by a GxP Validated transformation process.
 
A key component of this User story is that, regardless of the format of the ePI that it has to be displayed correct on each device that is used. If the Patient wishes to save it as print it out as a PDF then the PDF must be correct. The concern is that the original file is not displayed correctly or it is incorrect when printed.
 
Topics to be Addressed/ Discussed:
An investigation into what ePI’s are available today in various countries and sample files will need to be carried out

PL [3.1.24] Camera not focusing after first scan - Android

Camera is not focusing after user returns to scanner screen.

How to reproduce:

Open the app
Scan valid barcode from the closest distance possible ( e.g.1-2 cm), the camera should focus normaly and keep the picture sharp, after scan you are advanced to product screen
When on Product screen go back
Position the phone much further than in step 1 (e.g. 10-20cm)
Notice the camera is stuck on fixed focus from the previous scan
Video attached.

This happens on Samsung S8+ on Android 9 (OneUI 1.0)

JS packages updates which may have causes this (yarn lock and package json attached):

react-native-camera 3.22.0
react-native 0.62.0

DRA1-UCA-EP02-US04 Creation of Trusted and Secure eContent

As a Manufacturer / MAH

I want to create eContent the Patient/HCP sees using structured data assigned as ‘batch specific’ or ‘non-batchspecific’

So That a scan of the 2D Data Matrix barcode will provide eContent which is ‘right’ and appropriate ‘latest’. Ie: the correct eContent created from ‘batch specific’ or ‘non-batch-specific’ in a standard format

User Story Rationale/ Examples:

Example #1: ‘Batch-Specific’ Content:

I have allergies, so I need to check my medicine does not contain ingredients which would cause me harm. Over a product life cycle, the product ingredients can change, for instance, if a manufacturer changes a lactose excipient for cornstarch. Both versions of the product could be on the market at the same time. If I am allergic to lactose, I need to know if lactose is in the product. Therefore, I need to get ‘batch-specific’ information about ingredients in my eLeaflet.

Example #2: ‘Non-Batch-Specific’ Content:

I am a HCP wanting to treat a patient for brain cancer with this product. The product was on the market for lung cancer for a year but only just got approved by the HA for brain cancer yesterday. I want to give my patient access the product. Therefore, I need to get the ‘latest’ Product Information so I can safely prescribe it. I need to get the ‘non-specific-batch’ information for this product.

Acceptance Tests
· Note: Happy path: Scan a 2D code for different manufacturers and batches. Ensure that the secure eContent is provided correctly
· Note: Non-happy path: Scan a 2D code for different manufacturers and batches without secure eContent. Provide warning message and instructions to patient about what to d
· Categorize eContent as ‘batch specific’ or ‘non-batch specifc’ (applies to the product regardless of batch, like safety updates or new indications). Simulate the broad range of typical product updates . For ‘batch specific’ information, display batch specific ‘right’ information. For ‘non-batch specific’ information, display ‘latest’ information

npm install error

When running

npm install inside the cloned folder I got

image

commit no b7dba38f

PL [3.1.28] Update React Native and project dependencies

AC:

React Native updated to the latest version (0.62.0)
TypeScript updated to the latest version (3.8.3)
All other project dependencies updated to the latest version
iOS dev/prod mobile app still works
Android dev/prod mobile app still works

References

RN upgrade helper https://react-native-community.github.io/upgrade-helper/?from=0.61.5&to=0.62.0
Flipper RN docs https://github.com/facebook/flipper/blob/4297b3061f14ceca4d184aa3eebd0731b5bf20f5/docs/getting-started.md#setup-your-react-native-app
RN upgrade helper (Xcode update) react-native-community/upgrade-helper#191
Xcode undefined symbol issue react-native-community/upgrade-support#25

For every product backlog item:

rule description status
Task description add at least short description about the task
Acceptance criteria clear description (bullet points) what is output of the task (output of team refinement)
team engagement one person/pair/team (list names in case of more than 1 person) 1+
task reviewed by at least 1 peer acceptance criteria passing X
ruler description status
branch created - branch with correct type (feature/bugfix/...) - branch name contains JIRA reference X
tests - tested manually - unit tests implemented if applicable (team agreement) - integration/E2E tests for finished feature if applicable (team agreement) X - -
sdlc if the task covers acceptance criteria from requirement add test case(s) to SIT documentation -technical documentation updated (DCS) if applicable (team agreement - -
coding standards static analysis (linter, sonarQ) passing X
development practices commits contain reasonable message - logging enhanced - monitoring updated - analytics added/updated X - - -
pull request - 2 approvals required - build passing - PR contains description (+ screenshot or gif if applicable) - PR always rebased on master - delete remote branch after merge X X X X X

PL [3.1.25] Improve Android build/signing process

-set path and name for output APK file (to have it on more convenient place)
-use keychain or env to store keystore file and passwords for android build
-bundle assets to release build properly (seems like currently assets may not be linked at all)

helpful links:

https://pilloxa.gitlab.io/posts/safer-passwords-in-gradle/

https://medium.com/@ywongcode/building-multiple-versions-of-a-react-native-app-4361252ddde5

https://medium.com/@master13sust/generate-a-signed-apk-from-react-native-project-fe1ed627186e

(http://facebook.github.io/react-native/docs/signed-apk-android.html)

epi-workspace running DSUs from the command line Failed to load module ../privatesky/psknode/bundles/openDSU with error: TypeError: Cannot redefine property: environmentType

This issue is important so that we can check the behaviour of some openDSU APIs from the command line without having to modify/run web applications.

This issue also happened on the tutorial-workspace, but as it is unstable (from issue #6) I tryed it on epi-workspace, with the same problem.

Copying the https://github.com/PrivateSky/tutorial-workspace/tree/main/helloworld-dsu on to the epi-workspace (and having the epi-workspace running, and with a previous npm run build-all),

jpsl@PDM-00781:~/develop/PharmaLedger/epi-workspace/helloworld-dsu$ node main.js 
Logger not available, using console
Fix the fixMe to not display on console but put in logs
Redefining require for node
Failed to load module  ../privatesky/psknode/bundles/openDSU  with error: TypeError: Cannot redefine property: environmentType
    at Function.defineProperty (<anonymous>)
    at Object.enableForEnvironment (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/openDSU.js:17760:12)
    at Object.openDSURequire./export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/builds/tmp/openDSU.js../openDSU_intermediar (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/openDSU.js:3:4)
    at o (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/openDSU.js:1:280)
    at r (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/openDSU.js:1:446)
    at Object.<anonymous> (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/openDSU.js:1:475)
    at Module._compile (internal/modules/cjs/loader.js:1015:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
    at Module.load (internal/modules/cjs/loader.js:879:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Module.require (internal/modules/cjs/loader.js:903:19)
    at originalRequire (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/testsRuntime.js:18826:49)
    at tryRequireSequence (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/testsRuntime.js:18707:26)
    at Module.newLoader [as require] (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/testsRuntime.js:18847:20)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/export/home/jpsl/develop/PharmaLedger/epi-workspace/helloworld-dsu/main.js:3:1)
    at Module._compile (internal/modules/cjs/loader.js:1015:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
    at Module.load (internal/modules/cjs/loader.js:879:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47
double-check has intercepted an uncaught exception
Error: Failed to load module ../privatesky/psknode/bundles/openDSU
Stack:
    at tryRequireSequence (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/testsRuntime.js:18730:19)
    at Module.newLoader [as require] (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/testsRuntime.js:18847:20)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/export/home/jpsl/develop/PharmaLedger/epi-workspace/helloworld-dsu/main.js:3:1)
    at Module._compile (internal/modules/cjs/loader.js:1015:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
    at Module.load (internal/modules/cjs/loader.js:879:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47
Test should fail because: Uncaught Exception! Error: Failed to load module ../privatesky/psknode/bundles/openDSU
    at tryRequireSequence (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/testsRuntime.js:18730:19)
    at Module.newLoader [as require] (/export/home/jpsl/develop/PharmaLedger/epi-workspace/privatesky/psknode/bundles/testsRuntime.js:18847:20)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/export/home/jpsl/develop/PharmaLedger/epi-workspace/helloworld-dsu/main.js:3:1)
    at Module._compile (internal/modules/cjs/loader.js:1015:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
    at Module.load (internal/modules/cjs/loader.js:879:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47
asset.begin was not called, the exit time for the test is automatically set to 2 seconds. asset.callback can increase this time

DRA1-UCA-EP02-US06 eContent Maintenance and Ownership over Life Cycle

As a MAH

I want to always have clear ownership of the structured eContent, and be able to transfer it to another MAH in case of divestment

So That the Patient always gets the ‘right’ and ‘latest’eContent from the me, because I am liable and accountable for it unless I divest it. If I divest a product to a different MAH, I want to transfer the structured eContent to them, because the new MAH will be responsible to give the ‘right’ and ‘latest’ eContent. The onus is on both parties to provide this In the case of acquisition of a product from another MAH, I am responsible to give the ‘right’ and ‘latest’ eContent.

User Story Rationale/ Examples:
Rationale: The MAH is responsible and liable for a product that it places on the market, including the provision of correct contents for product inserts.

Consider the digital eLeaflet as an integral part of the product… a digital shadow of the physical product where the 2 are tied together.
**
It follows that a transfer of marketing authorization of a product infers a transfer in ownership of the digital shadow and the eContent Asset.
**
Parking Lot item: Internal Pharma co Quality Release Processes will need to change from verifying the paper insert is correct, to verifying that the eContent is correct prior to releasing product to the market so a digital leaflet is always available.

Acceptance Tests
eContent can be transferred from one MAH to another and retrieved by a Patient using the new and old GTIN.
All batch-specific eContent is transferred and provides the correct eLeaflet for batches prior to transfer.

1- Scan GTIN-A/Batch-1 and get Company A resolved (see attachment scenario 1.a.)
-> Company A shown on landing page and content for that GTIN/Batch, maintained by Company A shown
2-Transfer GTIN-A to Company B
3-After GTIN-A was transferred to Company B, update leaflet
4-Create new Batch-2 for GTIN-A
5-Scan GTIN-A/Batch-1 and still get Company A resolved (see attachment scenario 2.a.)
6-Scan GTIN-A/Batch-2 and get Company B resolved (see attachment scenario 5.b.)
7-After GTIN-A was transferred to Company B, Company-A tries to update leaflet, but this is not possible

Open for MVP:

  • shall we add scenarios where all existing batches will be transferred to company B as part of divestment?
  • shall we include scenarios where the leaflet shows new owner, but batch, SN etc is still checked by original owner? (see attachment scenario 3.a.)

DRA1-UCA-EP03-US03 Suspect GTIN resolution

As a MAH
I want to have a solution that can resolve even if the serial number or batch number etc. is incorrect

So That suspect falsified products can be reported and subsequently investigated

User Story Rationale/ Examples:
This user story relates to the resolution of the GTIN/ NTN. It is important that the GTIN/ NTIN resolver uses the GTIN/ NTIN as the main resolution Key in order to resolve to the responsible MAH. The rationale behind this request is that in the event of a falsified pack using a valid GTIN/NTIN (i.e. GTIN/ NTIN is registered to a MAH) then the MAH is notified that there is a Potential Suspect Falsification in the market and subsequent investigation activities can take place as per internal MAH procedures. Typically for most markets the Datamatrix code will contain the GTIN/ NTIN, Serial Number, Batch and Expiry date. However for some markets additional or different data may be encoded, for example some countries require the NHRN to be encoded while for Russia the Datamatrix does not contain the Batch or Expiry date. Instead it has GTIN, Serial Number, Crypto Key, Crypto Code.

This requirement is not contradicting the need to be able to provide batch specific ePI’s for example.

For the purpose of MVP 1, the scope will be on a Datamatrix code which has the following encoded:

GTIN
Serial Number
Batch Number
Expiry Date

Acceptance Tests
Create a falsified pack, incorrect Batch, Serial Number etc. and the GTIN Resolver should still resolve correctly. A message should be provided to the end user to indicate that the Batch Number, Serial Number or Expiry date is incorrect.

We need to agree

  • if we will check in this MVP the batch / SN in backend system or not
  • in MVP1 NVS, we display the GTIN leaflet for an unknown batch. User gets information that only product specific leaflet can be displayed (in future state: the batch needs to be checked in backend system, to ensure the pack is not falsified)
  • same discussion for SN

PL [3.1.4] Deployment in Kubernetes

The solution is deployed using Kubernetes cluster. While technically it’s a very good solution, it’s not supported in Merck environment. I am currently not aware of any easy way how to get that into production – or even dev env – in Merck. There could be a way how to host Kubernetes cluster on GIO managed servers, but that will be very expensive and very painful. Other option will be to work with Cloud team and ITRMS to enable Kubernetes cluster in AWS in some form – which will be also equally difficult.

DRA1-UCA-EP02-US01 Provide ‘right’ and appropriate ‘latest’ eContent for the Product in the pack throughout the Product Life Cycle

As a Patient/HCP

I want to access the ‘right’ and ‘latest’ product information for the medicine in my pack

So That I can be certain I can take my medicine safely and my medicine is ‘available for use’ when new indications are approved

User Story Rationale/ Examples:
**
See attachment A3 for example scenarios
**
Example #1: ‘Batch-Specific’ Content:
I have allergies, so I need to check my medicine does not contain ingredients which would cause me harm. Over a product life cycle, the product ingredients can change, for instance, if a manufacturer changes a lactose excipient for cornstarch. Both versions of the product could be on the market at the same time. If I am allergic to lactose, I need to know if lactose is in the product. Therefore, I need to get ‘batch-specific’ information about ingredients used in the medicine that I would be consuming.

Example #2: ‘Non-Batch-Specific’ Content:

I am a HCP wanting to treat a patient for brain cancer with this product. The product was on the market for lung cancer for a year but only just got approved by the HA for brain cancer yesterday. I want to give my patient access the product. Therefore, I need to get the ‘latest’ Product GTIN Information so I can safely prescribe it. I need to get the ‘non-specific-batch’ information for this product.

Acceptance Tests
· Note: Categorize eContent as ‘batch specific’ or ‘non-batch-specific’. Simulate the broad range of typical product updates (see table in appendix) .
· Note: For ‘batch specific’ information, display batch specific ‘right’ information.
· Note: ‘non-batch specific’ applies to the product GTIN regardless of batch, like safety updates or new indications. Display ‘latest’ information

PL [3.1.5] Angular

The Hub administration is written in Angular. It’s a technology which we do not use and do not have strong experience in. Also the two developers we currently hired does not have current experience with it. I raised request to the recruitment company to try to find the third person with this skill set but it could prolong the search.

DRA1-UCA-EP03-US01 GTIN/NTIN resolution - Get responsible MAH

As a Patient or HCP

I want to be able to scan the barcode and the GTIN/ NTIN resolver must resolve to to the responsible MAH

So That I am provided with the correct information related to my product

User Story Rationale/ Examples:
This user story relates to the resolution of the GTIN/ NTIN. It is important that the GTIN/ NTIN resolver resolves to the responsible MAH so that the correct information can be provided, the correct information could be the most appropriate electronic leaflet or the necessary anticounterfeit checks etc. The GTIN/ NTIN resolver provides the links/ connections between the scanned barcode on the pack and the responsible MAH.

There may be various reasons when the GTIN/ NTIN resolver cannot resolve, for example:
· The GTIN/ NTIN might be falsified
· The GTIN/ NTIN might not be maintained in the resolver by the MAH
· Technical issues
· The GTIN/ NTIN may resolve but there might not be an ePI available or no possibility to perform Anticounterfeit checks etc. This is different to the above examples but from a User perspective they would not be returned any information so this should be indicated in the error/ warning message displayed.

See Attachment A2 for a conceptual logical overview on how the GTIN/ NTIN resolver would be required to operate

Acceptance Tests
The GTIN/ NTIN resolution must be completed within 1 second.
In the event that the GTIN/ NTIN cannot resolve then the user must be provided with an appropriate and meaningful error message.

  • Scan Barcode for GTIN-A (Company A), and get this resolved for Company A
    -> display Company on landing page (mobile UI) and display leaflet data maintained by that company
  • Scan Barcode for GTIN-B (Company B), and get this resolved for Company B
  • Scan Barcode for NTIN-C (Company C), and get this resolved for Company C
  • Scan Barcode for NTIN-D, for which we haven't created any content. Verify information message provided to user.
    (all in less 1 sec)

DRA1-UCA-EP03-US05 resolution of NTIN after divestment

As a Patient or HA  
I want to have a solution that can resolve to the correct owner when the NTIN does not change as part of a divestment  

So That the responsible manufacturer can supply the most appropriate electronic leaflet
 
User Story Rationale/ Examples:
This user story relates to the resolution of the NTIN when a divestment takes place. The NTIN’s in Europe, Germany for example, do not change with a divestment. 
In some regions of the world the NTIN does change so this could be treated as a pseudo GTIN from a resolution process perspective.
 
See attachment A1 and A2 for additional information/ concepts.
 
Topics to be Addressed/ Discussed:
The draft process flow needs to be reviewed and updated as necessary.

Acceptance Criteria:
Simulate a change in the NTIN owner and ensure the resolver resolves to the correct locations

DRA1-UCA-EP05-US01 GDPR

As a Patient
I want to have no personal data gathered

So That my anonymity is ensured

User Story Rationale/ Examples:
The rationale behind this user story is to provide the Data privacy / General Data Protection Regulation (GDPR) requirements for all the EPIC’s.

While it is understood that data will need to be gathered and the quantity of data may depend on the opting in for certain use cases, the general principle to be applied is that the data must be anonymized i.e. the individual is no longer identifiable.

Topics to be Addressed/ Discussed:

Need further input from GDPR SME’s to see if there are any specific requirements

DRA1-UCA-EP02-US03 User gets only Trusted and Secure eContent

As a Health Authority

I want to trust that the Patient only gets secure eContent which has been created by the Manufacturer / MAH and duly approved by the HA for dissemination

So That the Patient gets what is needed under the regulations for the safe use of the product, and NOT promotional materials which are not permitted

User Story Rationale/ Examples:
It is perceived that eContent could be mis-used to promote Manufacturers products or services, either intentionally/unintentionally. HA’s need to be assured that this cannot happen.
For example, a Patient must not get an eLeaflet which contains advertisements of products, only the statutory required labelling is allowed.

Secure means that the eContent is controlled (owned by Manufacturer), accurate (with correct ‘batch specific’ and ‘non-batch-specific’ data / information), up-to-date (approved eContent only, no drafts) and not corrupted from the approved eContent (unauthorized changes/fraud)

Acceptance Tests
· Note: Happy path: Scan a 2D code for different manufacturers and batches. Ensure that the secure eContent is provided
· Note: Non-happy path: Scan a 2D code for different manufacturers and batches without secure eContent. Provide warning message and instructions to patient about what to do

PL [3.1.27] Scan 2D barcodes

Scan 2D Barcodes

AC: 2D barcodes supported, GTIN and LOT is used as a key to get eLeaflet

For every product backlog item:

rule description status
Task description add at least short description about the task
Acceptance criteria clear description (bullet points) what is output of the task (output of team refinement)
team engagement one person/pair/team (list names in case of more than 1 person) 1+
task reviewed by at least 1 peer acceptance criteria passing X
ruler description status
branch created - branch with correct type (feature/bugfix/...) - branch name contains JIRA reference X
tests - tested manually - unit tests implemented if applicable (team agreement) - integration/E2E tests for finished feature if applicable (team agreement) X - -
sdlc if the task covers acceptance criteria from requirement add test case(s) to SIT documentation -technical documentation updated (DCS) if applicable (team agreement - -
coding standards static analysis (linter, sonarQ) passing X
development practices commits contain reasonable message - logging enhanced - monitoring updated - analytics added/updated X - - -
pull request - 2 approvals required - build passing - PR contains description (+ screenshot or gif if applicable) - PR always rebased on master - delete remote branch after merge X X X X X

PL[3.1.3] Implementation of logger

Motivation
We want to log special events or errors into our own log.

Result
We are able to track special events or errors in our own log.

DRA1-UCA-EP04-US03 Operating Systems

As a Patient
I want to be able to use device regardless of the operating system

So That I am not tied to a specific operating system

User Story Rationale/ Examples:
This rationale behind this user story is to make sure that the App (if developed) or API’s developed are useable across many different devices, for example Android/ iOS/ Ubuntu/ KaiOS etc. operating systems etc. The purpose is to ensure that the solution is useable across as many devices and regions as possible.

For MVP 1 the scope will be iOS & Android

https://github.com/PrivateSky/tutorial-workspace cd cardinal && npm run build-dossier Failed to retrieve BDNS hosts Error: socket hang up

Steps done:

jpsl@PDM-00781:~/tmp8$ git clone https://github.com/PrivateSky/tutorial-workspace
jpsl@PDM-00781:~/tmp8$ cd tutorial-workspace/
jpsl@PDM-00781:~/tmp8/tutorial-workspace$ npm install
jpsl@PDM-00781:~/tmp8/tutorial-workspace$ npm run server

On another terminal:

jpsl@PDM-00781:~/tmp8/tutorial-workspace$ date
qui 10 dez 2020 15:08:55 WET
jpsl@PDM-00781:~/tmp8/tutorial-workspace$ npm run build-all

> [email protected] build-all /home/jpsl/tmp8/tutorial-workspace
> node ./node_modules/octopus/scripts/setEnv --file=../../../env.json "node ./node_modules/octopus/scripts/run build"

Environment updated accordingly to env file passed as argument.
Preparing to execute cmd node ./node_modules/octopus/scripts/run build
Looking for configuration file at path /home/jpsl/tmp8/tutorial-workspace/octopus.json
[Octopus] Start checking build...
[Octopus] Found 5 build...
[Octopus] Running tasks for: [0] cardinal-wallet-build
Running command: cd cardinal && npm run build-dossier

> [email protected] build-dossier /home/jpsl/tmp8/tutorial-workspace/cardinal
> node ./bin/build_dossier.js

Logger not available, using console
Fix the fixMe to not display on console but put in logs
Redefining require for node
Creating a new Dossier...
Failed to retrieve BDNS hosts Error: socket hang up
    at connResetException (internal/errors.js:609:14)
    at Socket.socketOnEnd (_http_client.js:459:23)
    at Socket.emit (events.js:326:22)
    at endReadableNT (_stream_readable.js:1223:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  code: 'ECONNRESET'
}
...

PL [3.1.30] CI: Jenkins integration with Webex Teams

Send messages from Jenkins pipeline to Webex Teams space which will inform developers about below mentioned things.

AC:

Webex Teams "Bazinga Bot" user
Webex Teams "Bazinga PRs / builds" space
Jenkins pipeline sending these types of notifications:
pull request created
send notification only when build of PR was successful
build of PR failed
inform only author of PR
reason of failure, PR link, Jenkins log link
build of develop / master failed
successful build of develop / master branch

For every product backlog item:

rule description status
Task description add at least short description about the task
Acceptance criteria clear description (bullet points) what is output of the task (output of team refinement)
team engagement one person/pair/team (list names in case of more than 1 person) 1+
task reviewed by at least 1 peer acceptance criteria passing X
ruler description status
branch created - branch with correct type (feature/bugfix/...) - branch name contains JIRA reference X
tests - tested manually - unit tests implemented if applicable (team agreement) - integration/E2E tests for finished feature if applicable (team agreement) X - -
sdlc if the task covers acceptance criteria from requirement add test case(s) to SIT documentation -technical documentation updated (DCS) if applicable (team agreement - -
coding standards static analysis (linter, sonarQ) passing X
development practices commits contain reasonable message - logging enhanced - monitoring updated - analytics added/updated X - - -
pull request - 2 approvals required - build passing - PR contains description (+ screenshot or gif if applicable) - PR always rebased on master - delete remote branch after merge X X X X X

npm i on fresh clone yield error

Hello,
I am sharing the error output of running npm i on the fresh repo (run one hour ago). Just mentioning that it was working for me last Thursday/Friday.

  • OS: MacOS Mojave 10.14.6
  • Node: v12.14.0
  • brew info gcc: gcc: stable 10.2.0
  • python --version: Python 2.7.16
[Octopus] Running tasks for: [2] build privatesky
Running command: cd privatesky && npm run build

> [email protected] build /Users/podhrads/www/dsu/epi-workspace/privatesky
> node ./bin/scripts/pskbuild.js --projectMap=./builds/domain_build.json && node ./bin/scripts/pskbuild.js --projectMap=./builds/build.json

Found project map ./builds/domain_build.json
Reading targets and their dependencies list...
Starts rebuilding
Building target domain
domain done
Finished rebuilding
Found project map ./builds/build.json
Reading targets and their dependencies list...
Starts rebuilding
Building target webshims
Building target pskruntime
Building target pskWebServer
Building target consoleTools
Building target blockchain
Building target openDSU
Building target sandboxBase
Building target edfsBar
Building target testsRuntime
Building target csbBoot
Building target bindableModel
Building target swBoot
Building target hostBoot
Building target ssappBoot
Building target threadBoot
Building target domainBoot
Building target isolatesBoot
Building target launcherBoot
Building target walletBoot
pskruntime done
openDSU done
blockchain done
sandboxBase done
consoleTools done
edfsBar done
isolatesBoot done
events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: Can't walk dependency graph: Cannot find module 'swarm-engine/bootScripts/IsolateBootScript' from '/Users/podhrads/www/dsu/epi-workspace/privatesky/_fake.js'
    required by /Users/podhrads/www/dsu/epi-workspace/privatesky/_fake.js
    at /Users/podhrads/www/dsu/epi-workspace/privatesky/node_modules/resolve/lib/async.js:115:35
    at processDirs (/Users/podhrads/www/dsu/epi-workspace/privatesky/node_modules/resolve/lib/async.js:268:39)
    at isdir (/Users/podhrads/www/dsu/epi-workspace/privatesky/node_modules/resolve/lib/async.js:275:32)
    at /Users/podhrads/www/dsu/epi-workspace/privatesky/node_modules/resolve/lib/async.js:25:69
    at FSReqCallback.oncomplete (fs.js:158:21)
Emitted 'error' event on Readable instance at:
    at Labeled.<anonymous> (/Users/podhrads/www/dsu/epi-workspace/privatesky/node_modules/read-only-stream/index.js:28:44)
    at Labeled.emit (events.js:210:5)
    at Labeled.<anonymous> (/Users/podhrads/www/dsu/epi-workspace/privatesky/node_modules/stream-splicer/index.js:130:18)
    at Labeled.emit (events.js:210:5)
    at Deps.<anonymous> (/Users/podhrads/www/dsu/epi-workspace/privatesky/node_modules/stream-splicer/index.js:130:18)
    at Deps.emit (events.js:210:5)
    at /Users/podhrads/www/dsu/epi-workspace/privatesky/node_modules/module-deps/index.js:387:25
    at onresolve (/Users/podhrads/www/dsu/epi-workspace/privatesky/node_modules/module-deps/index.js:185:25)
    at /Users/podhrads/www/dsu/epi-workspace/privatesky/node_modules/browserify/index.js:528:22
    at /Users/podhrads/www/dsu/epi-workspace/privatesky/node_modules/browser-resolve/index.js:265:24 {
  code: 'MODULE_NOT_FOUND',
  stream: Labeled {
    _readableState: ReadableState {
      objectMode: true,
      highWaterMark: 16,
      buffer: BufferList { length: 0 },
      length: 0,
      pipes: [Labeled],
      pipesCount: 1,
      flowing: true,
      ended: false,
      endEmitted: false,
      reading: true,
      sync: false,
      needReadable: true,
      emittedReadable: false,
      readableListening: false,
      resumeScheduled: false,
      destroyed: false,
      defaultEncoding: 'utf8',
      awaitDrain: 0,
      readingMore: false,
      decoder: null,
      encoding: null
    },
    readable: true,
    _events: [Object: null prototype] {
      end: [Array],
      error: [Function],
      data: [Function: ondata],
      _mutate: [Function]
    },
    _eventsCount: 4,
    _maxListeners: undefined,
    _writableState: WritableState {
      objectMode: true,
      highWaterMark: 16,
      finalCalled: false,
      needDrain: false,
      ending: true,
      ended: true,
      finished: true,
      destroyed: false,
      decodeStrings: true,
      defaultEncoding: 'utf8',
      length: 0,
      writing: false,
      corked: 0,
      sync: false,
      bufferProcessing: false,
      onwrite: [Function],
      writecb: null,
      writelen: 0,
      bufferedRequest: null,
      lastBufferedRequest: null,
      pendingcb: 0,
      prefinished: true,
      errorEmitted: false,
      bufferedRequestCount: 0,
      corkedRequestsFree: [CorkedRequest]
    },
    writable: false,
    allowHalfOpen: true,
    _options: { objectMode: true },
    _wrapOptions: { objectMode: true },
    _streams: [ [Deps] ],
    length: 1,
    label: 'deps'
  }
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] build: `node ./bin/scripts/pskbuild.js --projectMap=./builds/domain_build.json && node ./bin/scripts/pskbuild.js --projectMap=./builds/build.json`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/podhrads/.npm/_logs/2020-11-02T17_15_55_119Z-debug.log
[Octopus] Running tasks for: [3] menu-wallet-prototype
Running command git clone --depth=1 --branch=master http://github.com/privatesky/menu-wallet-prototype.git "/Users/podhrads/www/dsu/epi-workspace/menu-wallet-prototype"
taskIndex: 3 actionIndex: 0 result: "Finished clone action on dependency menu-wallet-prototype"
Running command: cd menu-wallet-prototype && npm install

> [email protected] postinstall /Users/podhrads/www/dsu/epi-workspace/menu-wallet-prototype
> node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/podhrads/www/dsu/epi-workspace/menu-wallet-prototype/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 0 dependencies...
No [object Object] to process!
added 1 package and audited 1 package in 1.834s
found 0 vulnerabilities

[Octopus] Running tasks for: [4] leaflet-ssapp
Running command git clone --depth=1 --branch=master https://github.com/PharmaLedger-IMI/leaflet-ssapp.git "/Users/podhrads/www/dsu/epi-workspace/leaflet-ssapp"
taskIndex: 4 actionIndex: 0 result: "Finished clone action on dependency leaflet-ssapp"
Running command: cd leaflet-ssapp && npm install

> [email protected] postinstall /Users/podhrads/www/dsu/epi-workspace/leaflet-ssapp
> node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/podhrads/www/dsu/epi-workspace/leaflet-ssapp/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 0 dependencies...
No [object Object] to process!
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description

added 1 package and audited 1 package in 2.289s
found 0 vulnerabilities

[Octopus] Running tasks for: [5] web-server/leaflet-wallet/loader
Running command git clone --depth=1 --branch=master http://github.com/privatesky/web-dossier-loader.git "/Users/podhrads/www/dsu/epi-workspace/web-server/leaflet-wallet/loader"
taskIndex: 5 actionIndex: 0 result: "Finished clone action on dependency web-server/leaflet-wallet/loader"
Running command: cd web-server/leaflet-wallet/loader && npm install

> [email protected] preinstall /Users/podhrads/www/dsu/epi-workspace/web-server/leaflet-wallet/loader
> npx npm-force-resolutions

npx: installed 5 in 3.142s

> [email protected] install /Users/podhrads/www/dsu/epi-workspace/web-server/leaflet-wallet/loader/node_modules/fsevents
> node install.js

  SOLINK_MODULE(target) Release/.node
  CXX(target) Release/obj.target/fse/fsevents.o
  SOLINK_MODULE(target) Release/fse.node

> [email protected] postinstall /Users/podhrads/www/dsu/epi-workspace/web-server/leaflet-wallet/loader/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:
> https://opencollective.com/core-js
> https://www.patreon.com/zloirock

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


> [email protected] postinstall /Users/podhrads/www/dsu/epi-workspace/web-server/leaflet-wallet/loader/node_modules/ejs
> node ./postinstall.js

Thank you for installing EJS: built with the Jake JavaScript build tool (https://jakejs.com/)


> [email protected] postinstall /Users/podhrads/www/dsu/epi-workspace/web-server/leaflet-wallet/loader
> node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/podhrads/www/dsu/epi-workspace/web-server/leaflet-wallet/loader/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 1 dependencies...
[Octopus] Running tasks for: [0] PSK bundles
Start copying ../../../privatesky/psknode/bundles/swBoot.js to folder ./swBoot.js

/Users/podhrads/www/dsu/epi-workspace/web-server/leaflet-wallet/loader/node_modules/octopus/scripts/run.js:12
		throw err;
		^
Source directory or file "/Users/podhrads/www/dsu/epi-workspace/privatesky/psknode/bundles/swBoot.js" does not exists!
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] postinstall: `node ./node_modules/octopus/scripts/run`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/podhrads/.npm/_logs/2020-11-02T17_16_42_566Z-debug.log
Start copying web-server/leaflet-wallet/loader/loader-config.local.json-template to folder web-server/leaflet-wallet/loader/loader-config.local.json
[Octopus] Running tasks for: [6] themes/citrus-theme
Running command git clone --depth=1 --branch=master http://github.com/privatesky/citrus-theme.git "/Users/podhrads/www/dsu/epi-workspace/themes/citrus-theme"
taskIndex: 6 actionIndex: 0 result: "Finished clone action on dependency themes/citrus-theme"
Running command: cd themes/citrus-theme && npm install
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description

DRA1-UCA-EP02-US02 eContent reflects the product in the package to fulfil legal obligations

As a Manufacturer and MAH

I want to ensure that the product information in the Leaflet information reflects the Product in the Pack

So That the Patient can take the product safely and to fulfil my obligations under Product Liability Law

User Story Rationale/ Examples:
Manufacturers and Marketing Authorisation Holders(MAH) must comply with applicable legislation that govern the safety, efficacy and quality of medicinal products e.g. Product Liability Law and are liable for harm caused by “Insufficient Instructions or warnings”… we need to have clear and accurate information in the leaflet to cover our liabilities in this respect. For example, for ANY product, if a consumer was harmed as a result of lack of reasonable instructions and warnings, the consumer can seek damages from the manufacturer… there is lots of case law for this.

It looks like the law stems from EU Product Liability Directives, which are then made into laws in member states. For example in the UK, we have to comply with the Sale of Goods and Services Act, Consumer Protection Act… The product information is a part of this obligation as it gives instructions and warnings about the product.

Liability and accountability for Content is with the Manufacturer / MAH.

Is there a specific piece of legislation for product liability for pharmaceuticals. Need legal advice. In the EU, legislation in the area of medicinal products for human use is listed in Volume 1 of ‘The Rules Governing Medicinal Products in the European Union’. Specifically, the requirements and procedures for marketing authorization, as well as the rules for monitoring authorized products, are primarily laid down in Directive 2001/83/EC and in Regulation (EC) No 726/2004.

Is there a specific piece of legislation for product liability for pharmaceuticals. Need legal advice. In the EU, legislation in the area of medicinal products for human use is listed in Volume 1 of ‘The Rules Governing Medicinal Products in the European Union’. Specifically, the requirements and procedures for marketing authorization, as well as the rules for monitoring authorized products, are primarily laid down in Directive 2001/83/EC and in Regulation (EC) No 726/2004.

Acceptance Tests
· Note: Categorize eContent as ‘batch specific’ or ‘non-batch specific’ (applies to the product regardless of batch, like safety updates or new indications). Simulate the broad range of typical product updates . For ‘batch specific’ information, display batch specific ‘right’ information. For ‘non-batch specific’ information, display ‘latest’ information
· Note: Verify that eContent in this manner meets legal obligations

1- scan barcode with product/batch specific leaflet and verify batch specific content
2- scan barcode with product/batch for which we did not create batch specific content. Display product specific content
3- update batch/product and product specific content (new version of leaflet created)
4- scan both barcodes again to get the most recent version of the content (redo step 1 and 2)

DRA1-UCA-EP03-US04 Resolution after Divestment

As a Patient or HA
I want to have a solution that can resolve to the correct owner when the GTIN does not change as part of a divestment

So That the responsible manufacturer can supply the most appropriate electronic leaflet

User Story Rationale/ Examples:
This user story relates to the resolution of the GTIN when a divestment takes place. It may be possible that the same GTIN will be used, perhaps for a short period of time by the MAH that has acquired the product. See attachment A1 and A2 for additional information/ concepts.

Topics to be Addressed/ Discussed:
The draft process flow needs to be reviewed and updated as necessary.

Acceptance Test
Simulate a change in the GTIN owner and ensure the resolver resolves to the correct locations.

Sub Tasks

  1. #76

Installation issue on MacOS (npm install errors)

Hello,

I am using code repo - "https://github.com/PharmaLedger-IMI/epi-workspace.git" and getting below errors during npm install.
Could you pls advice. Thanks.

(base) C02ZK08NNCLX:~ nashihr1$ python --version
Python 2.7.16
(base) C02ZK08NNCLX:~ nashihr1$ node --version
v15.0.1
(base) C02ZK08NNCLX:~ nashihr1$ node-gyp --version
v7.1.2

(base) C02ZK08NNCLX:~ nashihr1$ cd DevWork/epi/
(base) C02ZK08NNCLX:epi nashihr1$ git clone https://github.com/PharmaLedger-IMI/epi-workspace.git
Cloning into 'epi-workspace'...
remote: Enumerating objects: 107, done.
remote: Counting objects: 100% (107/107), done.
remote: Compressing objects: 100% (72/72), done.
remote: Total 107 (delta 34), reused 87 (delta 21), pack-reused 0
Receiving objects: 100% (107/107), 17.87 KiB | 8.94 MiB/s, done.
Resolving deltas: 100% (34/34), done.
(base) C02ZK08NNCLX:epi nashihr1$ cd epi-workspace/
(base) C02ZK08NNCLX:epi-workspace nashihr1$ ls
LICENSE README.md bin docker env.json octopus.json package.json web-server
(base) C02ZK08NNCLX:epi-workspace nashihr1$ npm install

[email protected] postinstall
node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/nashihr1/DevWork/epi/epi-workspace/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 17 dependencies...
[Octopus] Running tasks for: [0] cardinal
Running command git clone --depth=1 --branch=master http://github.com/privatesky/cardinal.git "/Users/nashihr1/DevWork/epi/epi-workspace/cardinal"
taskIndex: 0 actionIndex: 0 result: "Finished clone action on dependency cardinal"
Running command: cd cardinal && npm install

added 11 packages, and audited 11 packages in 4s

found 0 vulnerabilities
Running command: cd cardinal && npm run build

[email protected] build
stencil build --docs

[03:43.7] @stencil/core
[03:43.8] v1.17.3 ⛱
[03:45.2] build, cardinal, prod mode, started ...
[03:45.3] transpile started ...
[03:49.0] transpile finished in 3.76 s
[03:49.0] copy started ...
[03:49.0] generate lazy started ...
[03:49.4] copy finished (53 files) in 366 ms
[04:01.9] generate lazy finished in 12.91 s
[04:02.0] updated readme docs: dropdown-renderer
[04:02.0] updated readme docs: psk-button-test
[04:02.0] updated readme docs: psk-chapter
[04:02.0] updated readme docs: psk-chapter-wrapper
[04:02.0] updated readme docs: psk-controller-descriptor
[04:02.0] updated readme docs: psk-event-descriptor
[04:02.0] updated readme docs: psk-label-test
[04:02.0] updated readme docs: psk-menu-item-renderer
[04:02.0] updated readme docs: psk-property-descriptor
[04:02.0] updated readme docs: psk-user-profile
[04:02.0] updated readme docs: psk-user-profile-renderer

[ WARN ] Build Warn: ./src/components/form-components/psk-radio/psk-radio.tsx:101:8
Events decorated with @event() should describe the actual DOM event name, not the handler. In other words
"onChangeRadio" would be better named as "changeRadio".

L100:          cancelable: true
L101:      }) onChangeRadio: EventEmitter;
L102:  }

[ WARN ] Build Warn: ./src/components/pages-components/psk-controller-descriptor.tsx:11:13
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L11:      @Prop() title: string = "";

[ WARN ] Build Warn: ./src/components/pages-components/psk-event-descriptor.tsx:10:13
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L10:      @Prop() title: string = "";

[ WARN ] Build Warn: ./src/components/pages-components/psk-property-descriptor.tsx:11:13
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L11:      @Prop() title: string = '';

[ WARN ] Build Warn: ./src/components/psk-accordion/psk-accordion-item/psk-accordion-item.tsx:25:11
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L24:    })
 L25:    @Prop() title: string = '';

[ WARN ] Build Warn: ./src/components/psk-barcode/psk-barcode-generator/psk-barcode-generator.tsx:35:11
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L34:    })
 L35:    @Prop() title: string = "";

[ WARN ] Build Warn: ./src/components/psk-barcode/psk-barcode-scanner/psk-barcode-scanner.tsx:31:11
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L30:  })
 L31:  @Prop() title: string = "";
 L32:  @TableOfContentProperty({

[ WARN ] Build Warn: ./src/components/psk-card/psk-card.tsx:20:24
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L19:  })
 L20:  @Prop({reflect:true}) title: string = "";

[ WARN ] Build Warn: ./src/components/psk-card/psk-card.tsx:29:10
The @prop() name "id" is a reserved public name. Please rename the "id" prop so it does not conflict with an
existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L28:  })
 L29:  @Prop() id: string = "";

[ WARN ] Build Warn: ./src/components/psk-chapter/psk-chapter-wrapper.tsx:9:13
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

  L9:      @Prop() title: string;

[ WARN ] Build Warn: ./src/components/psk-chapter/psk-chapter.tsx:21:27
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L20:  })
 L21:  @Prop({ reflect: true }) title: string = "";

[ WARN ] Build Warn: ./src/components/psk-code/psk-code.tsx:24:11
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L23:    })
 L24:    @Prop() title: string = "";

[ WARN ] Build Warn: ./src/components/psk-copy-clipboard/psk-copy-clipboard.tsx:38:11
The @prop() name "id" is a reserved public name. Please rename the "id" prop so it does not conflict with an
existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L37:    })
 L38:    @Prop() id: string = "";

[ WARN ] Build Warn: ./src/components/psk-description/psk-description.tsx:16:10
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L15:  })
 L16:  @Prop() title: string = "";

[ WARN ] Build Warn: ./src/components/psk-details/psk-details.tsx:27:11
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L26:    })
 L27:    @Prop() title: string = '';

[ WARN ] Build Warn: ./src/components/psk-example/psk-example.tsx:18:10
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L17:  })
 L18:  @Prop() title: string = "";

[ WARN ] Build Warn: ./src/components/psk-highlight/psk-highlight.tsx:19:13
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L18:      })
 L19:      @Prop() title: string = "";

[ WARN ] Build Warn: ./src/components/psk-img/psk-img.tsx:40:10
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L39:  })
 L40:  @Prop() title: string;

[ WARN ] Build Warn: ./src/components/psk-mobile/psk-mobile.tsx:28:11
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L27:    })
 L28:    @Prop() title: string = '';

[ WARN ] Build Warn: ./src/components/psk-page/psk-page.tsx:31:24
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L30:  })
 L31:  @Prop({reflect:true}) title: string = "";
 L32:   @TableOfContentProperty({

[ WARN ] Build Warn: ./src/components/psk-slideshow/psk-slideshow.tsx:27:11
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L26:    })
 L27:    @Prop() title: string;

[ WARN ] Build Warn: ./src/components/psk-switch-button/psk-switch-button.tsx:55:10
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L54:  })
 L55:  @Prop() title: string | null;

[ WARN ] Build Warn: ./src/components/psk-tabs/psk-tab/psk-tab.tsx:22:11
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L21:    })
 L22:    @Prop() title: string;

[ WARN ] Build Warn: ./src/components/psk-toc/psk-toc.tsx:18:13
The @prop() name "title" is a reserved public name. Please rename the "title" prop so it does not conflict
with an existing standardized prototype member. Reusing prop names that are already defined on the element's
prototype may cause unexpected runtime errors or user-interface issues on various browsers, so it's best to
avoid them entirely.

 L17:  })
 L18:  @Prop() title: string;
 L19:  @State() pskPageElement: HTMLElement;

[04:02.1] build finished in 16.87 s

[Octopus] Running tasks for: [1] privatesky
Running command git clone --depth=1 --branch=master http://github.com/privatesky/privatesky.git "/Users/nashihr1/DevWork/epi/epi-workspace/privatesky"
taskIndex: 1 actionIndex: 0 result: "Finished clone action on dependency privatesky"
Running command: cd privatesky && npm install
npm ERR! code 1
npm ERR! path /Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/isolated-vm
npm ERR! command failed
npm ERR! command sh -c node-gyp rebuild --release -j 4
npm ERR! CXX(target) Release/obj.target/nortti/src/external_copy_nortti.o
npm ERR! LIBTOOL-STATIC Release/nortti.a
npm ERR! CXX(target) Release/obj.target/isolated_vm/src/isolate/allocator.o
npm ERR! CXX(target) Release/obj.target/isolated_vm/src/isolate/class_handle.o
npm ERR! CXX(target) Release/obj.target/isolated_vm/src/isolate/environment.o
npm ERR! CXX(target) Release/obj.target/isolated_vm/src/isolate/holder.o
npm ERR! CXX(target) Release/obj.target/isolated_vm/src/isolate/inspector.o
npm ERR! CXX(target) Release/obj.target/isolated_vm/src/isolate/stack_trace.o
npm ERR! CXX(target) Release/obj.target/isolated_vm/src/isolate/three_phase_task.o
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | darwin | x64
npm ERR! gyp info find Python using Python version 3.7.6 found at "/Users/nashihr1/opt/anaconda3/bin/python3"
npm ERR! gyp http GET https://nodejs.org/download/release/v15.0.1/node-v15.0.1-headers.tar.gz
npm ERR! gyp http 200 https://nodejs.org/download/release/v15.0.1/node-v15.0.1-headers.tar.gz
npm ERR! gyp http GET https://nodejs.org/download/release/v15.0.1/SHASUMS256.txt
npm ERR! gyp http 200 https://nodejs.org/download/release/v15.0.1/SHASUMS256.txt
npm ERR! gyp info spawn /Users/nashihr1/opt/anaconda3/bin/python3
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args 'binding.gyp',
npm ERR! gyp info spawn args '-f',
npm ERR! gyp info spawn args 'make',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/isolated-vm/build/config.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/Users/nashihr1/Library/Caches/node-gyp/15.0.1/include/node/common.gypi',
npm ERR! gyp info spawn args '-Dlibrary=shared_library',
npm ERR! gyp info spawn args '-Dvisibility=default',
npm ERR! gyp info spawn args '-Dnode_root_dir=/Users/nashihr1/Library/Caches/node-gyp/15.0.1',
npm ERR! gyp info spawn args '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args '-Dnode_lib_file=/Users/nashihr1/Library/Caches/node-gyp/15.0.1/<(target_arch)/node.lib',
npm ERR! gyp info spawn args '-Dmodule_root_dir=/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/isolated-vm',
npm ERR! gyp info spawn args '-Dnode_engine=v8',
npm ERR! gyp info spawn args '--depth=.',
npm ERR! gyp info spawn args '--no-parallel',
npm ERR! gyp info spawn args '--generator-output',
npm ERR! gyp info spawn args 'build',
npm ERR! gyp info spawn args '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! gyp info spawn make
npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build', '--jobs', 4 ]
npm ERR! In file included from ../src/isolate/environment.cc:4:
npm ERR! ../src/isolate/platform_delegate.h:254:69: error: only virtual member functions can be marked 'final'
npm ERR! void CallOnForegroundThread(v8::Isolate* isolate, v8::Task* task) final {
npm ERR! ^~~~~~
npm ERR! ../src/isolate/platform_delegate.h:273:101: error: only virtual member functions can be marked 'final'
npm ERR! void CallDelayedOnForegroundThread(v8::Isolate* isolate, v8::Task* task, double delay_in_seconds) final {
npm ERR! ^~~~~~
npm ERR! ../src/isolate/platform_delegate.h:301:77: error: only virtual member functions can be marked 'final'
npm ERR! void CallIdleOnForegroundThread(v8::Isolate* isolate, v8::IdleTask* task) final {
npm ERR! ^~~~~~
npm ERR! ../src/isolate/platform_delegate.h:89:28: error: variable type 'ivm::PlatformDelegate' is an abstract class
npm ERR! static PlatformDelegate delegate(v8::Isolate::GetCurrent(), v8::internal::V8::GetCurrentPlatform());
npm ERR! ^
npm ERR! /Users/nashihr1/Library/Caches/node-gyp/15.0.1/include/node/v8-platform.h:630:38: note: unimplemented pure virtual method 'PostJob' in 'PlatformDelegate'
npm ERR! virtual std::unique_ptr PostJob(
npm ERR! ^
npm ERR! In file included from ../src/isolate/environment.cc:4:
npm ERR! ../src/isolate/platform_delegate.h:256:20: error: no member named 'CallOnForegroundThread' in 'v8::Platform'
npm ERR! node_platform->CallOnForegroundThread(isolate, task);
npm ERR! ~~~~~~~~~~~~~ ^
npm ERR! ../src/isolate/platform_delegate.h:275:20: error: no member named 'CallDelayedOnForegroundThread' in 'v8::Platform'
npm ERR! node_platform->CallDelayedOnForegroundThread(isolate, task, delay_in_seconds);
npm ERR! ~~~~~~~~~~~~~ ^
npm ERR! ../src/isolate/platform_delegate.h:303:20: error: no member named 'CallIdleOnForegroundThread' in 'v8::Platform'
npm ERR! node_platform->CallIdleOnForegroundThread(isolate, task);
npm ERR! ~~~~~~~~~~~~~ ^
npm ERR! 7 errors generated.
npm ERR! make: *** [Release/obj.target/isolated_vm/src/isolate/environment.o] Error 1
npm ERR! make: *** Waiting for unfinished jobs....
npm ERR! gyp ERR! build error
npm ERR! gyp ERR! stack Error: make failed with exit code: 2
npm ERR! gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:327:20)
npm ERR! gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:277:12)
npm ERR! gyp ERR! System Darwin 19.6.0
npm ERR! gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--release" "-j" "4"
npm ERR! gyp ERR! cwd /Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/isolated-vm
npm ERR! gyp ERR! node -v v15.0.1
npm ERR! gyp ERR! node-gyp -v v7.1.2
npm ERR! gyp ERR! not ok

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/nashihr1/.npm/_logs/2020-10-28T07_34_29_710Z-debug.log
[Octopus] Running tasks for: [2] build privatesky
Running command: cd privatesky && npm run build

[email protected] build
node ./bin/scripts/pskbuild.js --projectMap=./builds/domain_build.json && node ./bin/scripts/pskbuild.js --projectMap=./builds/build.json

Found project map ./builds/domain_build.json
Reading targets and their dependencies list...
Starts rebuilding
Building target domain
domain done
Finished rebuilding
Found project map ./builds/build.json
Reading targets and their dependencies list...
Starts rebuilding
Building target webshims
Building target pskruntime
Building target pskWebServer
Building target consoleTools
Building target blockchain
Building target openDSU
Building target sandboxBase
Building target edfsBar
Building target testsRuntime
Building target csbBoot
Building target bindableModel
Building target swBoot
Building target hostBoot
Building target ssappBoot
Building target threadBoot
Building target domainBoot
Building target isolatesBoot
Building target launcherBoot
Building target walletBoot
pskruntime done
blockchain done
edfsBar done
consoleTools done
sandboxBase done
openDSU done
isolatesBoot done
node:events:304
throw er; // Unhandled 'error' event
^

Error: Can't walk dependency graph: Cannot find module 'swarm-engine/bootScripts/IsolateBootScript' from '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/_fake.js'
required by /Users/nashihr1/DevWork/epi/epi-workspace/privatesky/_fake.js
at /Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/resolve/lib/async.js:115:35
at processDirs (/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/resolve/lib/async.js:268:39)
at isdir (/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/resolve/lib/async.js:275:32)
at /Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/resolve/lib/async.js:25:69
at FSReqCallback.oncomplete (node:fs:183:21)
Emitted 'error' event on Readable instance at:
at Labeled. (/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/read-only-stream/index.js:28:44)
at Labeled.emit (node:events:327:20)
at Labeled. (/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/stream-splicer/index.js:130:18)
at Labeled.emit (node:events:327:20)
at Deps. (/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/stream-splicer/index.js:130:18)
at Deps.emit (node:events:327:20)
at /Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/module-deps/index.js:387:25
at onresolve (/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/module-deps/index.js:185:25)
at /Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/index.js:528:22
at /Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browser-resolve/index.js:265:24 {
code: 'MODULE_NOT_FOUND',
stream: Labeled {
_readableState: ReadableState {
objectMode: true,
highWaterMark: 16,
buffer: BufferList { head: null, tail: null, length: 0 },
length: 0,
pipes: Labeled {
_readableState: ReadableState {
objectMode: true,
highWaterMark: 16,
buffer: BufferList { head: null, tail: null, length: 0 },
length: 0,
pipes: Labeled {
_readableState: [ReadableState],
readable: true,
_events: [Object: null prototype],
_eventsCount: 8,
_maxListeners: undefined,
_writableState: [WritableState],
writable: true,
allowHalfOpen: true,
_options: [Object],
_wrapOptions: [Object],
_streams: [Array],
length: 1,
label: 'unbom',
[Symbol(kCapture)]: false
},
pipesCount: 1,
flowing: true,
ended: false,
endEmitted: false,
reading: true,
sync: false,
needReadable: true,
emittedReadable: false,
readableListening: false,
resumeScheduled: false,
destroyed: false,
defaultEncoding: 'utf8',
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null
},
readable: true,
_events: [Object: null prototype] {
end: [ [Function], [Function], [Function] ],
finish: [ [Function], [Function] ],
error: [ [Function: onerror], [Function (anonymous)] ],
unpipe: [Function: onunpipe],
drain: [Function (anonymous)],
close: [Function: bound onceWrapper] {
listener: [Function: onclose]
},
data: [Function: ondata],
_mutate: [Function: bound onceWrapper] {
listener: [Function: onreadable]
}
},
_eventsCount: 8,
_maxListeners: undefined,
_writableState: WritableState {
objectMode: true,
highWaterMark: 16,
finalCalled: false,
needDrain: false,
ending: false,
ended: false,
finished: false,
destroyed: false,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
corked: 0,
sync: true,
bufferProcessing: false,
onwrite: [Function (anonymous)],
writecb: null,
writelen: 0,
bufferedRequest: null,
lastBufferedRequest: null,
pendingcb: 0,
prefinished: false,
errorEmitted: false,
bufferedRequestCount: 0,
corkedRequestsFree: CorkedRequest {
next: null,
entry: null,
finish: [Function (anonymous)]
}
},
writable: true,
allowHalfOpen: true,
_options: { objectMode: true },
_wrapOptions: { objectMode: true },
_streams: [
DestroyableTransform {
_readableState: [ReadableState],
readable: true,
_events: [Object: null prototype],
_eventsCount: 4,
_maxListeners: undefined,
_writableState: [WritableState],
writable: true,
allowHalfOpen: true,
_transformState: [Object],
_destroyed: false,
_transform: [Function (anonymous)],
[Symbol(kCapture)]: false
}
],
length: 1,
label: 'json',
[Symbol(kCapture)]: false
},
pipesCount: 1,
flowing: true,
ended: false,
endEmitted: false,
reading: true,
sync: false,
needReadable: true,
emittedReadable: false,
readableListening: false,
resumeScheduled: false,
destroyed: false,
defaultEncoding: 'utf8',
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null
},
readable: true,
_events: [Object: null prototype] {
end: [
[Function: bound onceWrapper] { listener: [Function: onend] },
[Function: bound onceWrapper] {
listener: [Function (anonymous)]
},
[Function: bound onceWrapper] { listener: [Function: onend] }
],
error: [Function (anonymous)],
data: [Function: ondata],
_mutate: [Function: bound onceWrapper] { listener: [Function: onreadable] }
},
_eventsCount: 4,
_maxListeners: undefined,
_writableState: WritableState {
objectMode: true,
highWaterMark: 16,
finalCalled: false,
needDrain: false,
ending: true,
ended: true,
finished: true,
destroyed: false,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
corked: 0,
sync: false,
bufferProcessing: false,
onwrite: [Function (anonymous)],
writecb: null,
writelen: 0,
bufferedRequest: null,
lastBufferedRequest: null,
pendingcb: 0,
prefinished: true,
errorEmitted: false,
bufferedRequestCount: 0,
corkedRequestsFree: CorkedRequest {
next: null,
entry: null,
finish: [Function (anonymous)]
}
},
writable: false,
allowHalfOpen: true,
_options: { objectMode: true },
_wrapOptions: { objectMode: true },
_streams: [
Deps {
_readableState: ReadableState {
objectMode: true,
highWaterMark: 16,
buffer: BufferList { head: null, tail: null, length: 0 },
length: 0,
pipes: null,
pipesCount: 0,
flowing: null,
ended: false,
endEmitted: false,
reading: false,
sync: false,
needReadable: true,
emittedReadable: false,
readableListening: true,
resumeScheduled: false,
destroyed: false,
defaultEncoding: 'utf8',
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null
},
readable: true,
_events: [Object: null prototype] {
end: [ [Function], [Function] ],
prefinish: [Function: prefinish],
file: [Function (anonymous)],
package: [Function (anonymous)],
transform: [Function (anonymous)],
error: [Function (anonymous)],
readable: [Function: bound onceWrapper] {
listener: [Function: onreadable]
}
},
_eventsCount: 7,
_maxListeners: undefined,
_writableState: WritableState {
objectMode: true,
highWaterMark: 16,
finalCalled: false,
needDrain: false,
ending: true,
ended: true,
finished: true,
destroyed: false,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
corked: 0,
sync: true,
bufferProcessing: false,
onwrite: [Function (anonymous)],
writecb: null,
writelen: 0,
bufferedRequest: null,
lastBufferedRequest: null,
pendingcb: 0,
prefinished: true,
errorEmitted: false,
bufferedRequestCount: 0,
corkedRequestsFree: CorkedRequest {
next: null,
entry: null,
finish: [Function (anonymous)]
}
},
writable: false,
allowHalfOpen: true,
_transformState: {
afterTransform: [Function: bound afterTransform],
needTransform: true,
transforming: false,
writecb: null,
writechunk: null,
writeencoding: 'utf8'
},
basedir: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky',
persistentCache: [Function (anonymous)],
cache: undefined,
fileCache: undefined,
pkgCache: {
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/builds/tmp/package.json': false,
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/builds/package.json': false,
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/package.json': {
name: 'PrivateSky',
description: 'Execute swarm choregraphies. Control your asynchronous code with explicit flows! Created mainly for simplifying code within SwarmESB/PrivateSky projects but can be used outside SwarmESB ecosystem. ',
version: '0.5.0',
_id: '[email protected]',
homepage: 'https://github.com/PrivateSky/privatesky',
author: [Object],
contributors: [Array],
repository: [Object],
bugs: [Object],
directories: [Object],
main: './engine/core.js',
license: 'MIT',
licenses: [Array],
dependencies: [Object],
scripts: [Object],
__dirname: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky'
},
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/builds/tmp/isolatesBoot_intermediar.js': {
name: 'PrivateSky',
description: 'Execute swarm choregraphies. Control your asynchronous code with explicit flows! Created mainly for simplifying code within SwarmESB/PrivateSky projects but can be used outside SwarmESB ecosystem. ',
version: '0.5.0',
_id: '[email protected]',
homepage: 'https://github.com/PrivateSky/privatesky',
author: [Object],
contributors: [Array],
repository: [Object],
bugs: [Object],
directories: [Object],
main: './engine/core.js',
license: 'MIT',
licenses: [Array],
dependencies: [Object],
scripts: [Object],
__dirname: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky'
}
},
pkgFileCache: {},
pkgFileCachePending: {},
_emittedPkg: {},
_transformDeps: {},
visited: {},
walking: {},
entries: [
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/builds/tmp/isolatesBoot_intermediar.js'
],
_input: [
{ row: [Object], pkg: [Object] },
{ row: [Object], pkg: [Object] },
{ row: [Object], pkg: [Object] },
{ row: [Object], pkg: [Object] },
{ row: [Object], pkg: [Object] },
{ row: [Object], pkg: [Object] },
{ row: [Object], pkg: [Object] },
{ row: [Object], pkg: [Object] },
{ row: [Object], pkg: [Object] },
{ row: [Object], pkg: [Object] }
],
paths: [
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/modules',
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/libraries'
],
transforms: [],
globalTransforms: [ [ [Function: globalTr], {} ] ],
resolver: [Function (anonymous)],
detective: [Function (anonymous)] { find: [Function (anonymous)] },
options: {
paths: [
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/modules',
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/libraries'
],
fullPaths: true,
bundleExternal: false,
debug: true,
externalRequireName: 'isolatesBootRequire',
autoLoad: true,
entries: [
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/builds/tmp/isolatesBoot_intermediar.js'
],
dedupe: true,
expose: { 'swarm-engine/bootScripts/IsolateBootScript': undefined },
extensions: [ '.js', '.json' ],
transform: [],
transformKey: [ 'browserify', 'transform' ],
postFilter: [Function (anonymous)],
filter: [Function (anonymous)],
resolve: [Function (anonymous)],
modules: {
assert: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/assert/assert.js',
buffer: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/buffer/index.js',
child_process: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
cluster: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
console: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/console-browserify/index.js',
constants: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/constants-browserify/constants.json',
crypto: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/crypto-browserify/index.js',
dgram: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
dns: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
domain: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/domain-browser/source/index.js',
events: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/events/events.js',
fs: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
http: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/stream-http/index.js',
https: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/https-browserify/index.js',
http2: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
inspector: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
module: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
net: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
os: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/os-browserify/browser.js',
path: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/path-browserify/index.js',
perf_hooks: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
punycode: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/punycode/punycode.js',
querystring: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/querystring-es3/index.js',
readline: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
repl: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
stream: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/stream-browserify/index.js',
_stream_duplex: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/readable-stream/duplex.js',
_stream_passthrough: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/readable-stream/passthrough.js',
_stream_readable: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/readable-stream/readable.js',
_stream_transform: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/readable-stream/transform.js',
_stream_writable: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/readable-stream/writable.js',
string_decoder: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/string_decoder/lib/string_decoder.js',
sys: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/util/util.js',
timers: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/timers-browserify/main.js',
tls: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify/lib/_empty.js',
tty: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/tty-browserify/index.js',
url: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/url/url.js',
util: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/util/util.js',
vm: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/vm-browserify/index.js',
zlib: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/browserify-zlib/lib/index.js',
_process: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/node_modules/process/browser.js',
'swarm-engine/bootScripts/IsolateBootScript': undefined
},
globalTransform: []
},
pending: 10,
inputPending: 10,
top: {
id: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/__fake.js',
filename: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/__fake.js',
paths: [
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/modules',
'/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/libraries'
],
basedir: '/Users/nashihr1/DevWork/epi/epi-workspace/privatesky'
},
_ended: true,
[Symbol(kCapture)]: false
}
],
length: 1,
label: 'deps',
[Symbol(kCapture)]: false
}
}
npm ERR! code 1
npm ERR! path /Users/nashihr1/DevWork/epi/epi-workspace/privatesky
npm ERR! command failed
npm ERR! command sh -c node ./bin/scripts/pskbuild.js --projectMap=./builds/domain_build.json && node ./bin/scripts/pskbuild.js --projectMap=./builds/build.json

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/nashihr1/.npm/_logs/2020-10-28T07_34_30_610Z-debug.log
[Octopus] Running tasks for: [3] menu-wallet-prototype
Running command git clone --depth=1 --branch=master http://github.com/privatesky/menu-wallet-prototype.git "/Users/nashihr1/DevWork/epi/epi-workspace/menu-wallet-prototype"
taskIndex: 3 actionIndex: 0 result: "Finished clone action on dependency menu-wallet-prototype"
Running command: cd menu-wallet-prototype && npm install

[email protected] postinstall
node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/nashihr1/DevWork/epi/epi-workspace/menu-wallet-prototype/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 0 dependencies...
No [object Object] to process!

added 1 package, and audited 1 package in 843ms

found 0 vulnerabilities
[Octopus] Running tasks for: [4] leaflet-ssapp
Running command git clone --depth=1 --branch=master https://github.com/PharmaLedger-IMI/leaflet-ssapp.git "/Users/nashihr1/DevWork/epi/epi-workspace/leaflet-ssapp"
taskIndex: 4 actionIndex: 0 result: "Finished clone action on dependency leaflet-ssapp"
Running command: cd leaflet-ssapp && npm install

[email protected] postinstall
node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/nashihr1/DevWork/epi/epi-workspace/leaflet-ssapp/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 0 dependencies...
No [object Object] to process!

added 1 package, and audited 1 package in 7s

found 0 vulnerabilities
[Octopus] Running tasks for: [5] web-server/leaflet-wallet/loader
Running command git clone --depth=1 --branch=master http://github.com/privatesky/web-dossier-loader.git "/Users/nashihr1/DevWork/epi/epi-workspace/web-server/leaflet-wallet/loader"
taskIndex: 5 actionIndex: 0 result: "Finished clone action on dependency web-server/leaflet-wallet/loader"
Running command: cd web-server/leaflet-wallet/loader && npm install

[email protected] postinstall
node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/nashihr1/DevWork/epi/epi-workspace/web-server/leaflet-wallet/loader/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 1 dependencies...
[Octopus] Running tasks for: [0] PSK bundles
Start copying ../../../privatesky/psknode/bundles/swBoot.js to folder ./swBoot.js

/Users/nashihr1/DevWork/epi/epi-workspace/web-server/leaflet-wallet/loader/node_modules/octopus/scripts/run.js:12
throw err;
^
Source directory or file "/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/psknode/bundles/swBoot.js" does not exists!
(Use node --trace-uncaught ... to show where the exception was thrown)
npm ERR! code 1
npm ERR! path /Users/nashihr1/DevWork/epi/epi-workspace/web-server/leaflet-wallet/loader
npm ERR! command failed
npm ERR! command sh -c node ./node_modules/octopus/scripts/run

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/nashihr1/.npm/_logs/2020-10-28T07_34_52_072Z-debug.log
Start copying web-server/leaflet-wallet/loader/loader-config.local.json-template to folder web-server/leaflet-wallet/loader/loader-config.local.json
[Octopus] Running tasks for: [6] themes/citrus-theme
Running command git clone --depth=1 --branch=master http://github.com/privatesky/citrus-theme.git "/Users/nashihr1/DevWork/epi/epi-workspace/themes/citrus-theme"
taskIndex: 6 actionIndex: 0 result: "Finished clone action on dependency themes/citrus-theme"
Running command: cd themes/citrus-theme && npm install

up to date in 180ms

found 0 vulnerabilities
[Octopus] Running tasks for: [7] themes/savana-theme
Running command git clone --depth=1 --branch=master http://github.com/privatesky/savana-theme.git "/Users/nashihr1/DevWork/epi/epi-workspace/themes/savana-theme"
taskIndex: 7 actionIndex: 0 result: "Finished clone action on dependency themes/savana-theme"
Running command: cd themes/savana-theme && npm install

up to date in 185ms

found 0 vulnerabilities
[Octopus] Running tasks for: [8] themes/clear-sky-theme
Running command git clone --depth=1 --branch=master http://github.com/privatesky/clear-sky-theme.git "/Users/nashihr1/DevWork/epi/epi-workspace/themes/clear-sky-theme"
taskIndex: 8 actionIndex: 0 result: "Finished clone action on dependency themes/clear-sky-theme"
Running command: cd themes/clear-sky-theme && npm install

up to date in 184ms

found 0 vulnerabilities
[Octopus] Running tasks for: [9] themes/epi-theme
Running command git clone --depth=1 --branch=master https://github.com/PharmaLedger-IMI/epi-theme.git "/Users/nashihr1/DevWork/epi/epi-workspace/themes/epi-theme"
taskIndex: 9 actionIndex: 0 result: "Finished clone action on dependency themes/epi-theme"
[Octopus] Running tasks for: [10] dossier-explorer-wallet-prototype
Running command git clone --depth=1 --branch=master https://github.com/PrivateSky/dossier-explorer-wallet-prototype.git "/Users/nashihr1/DevWork/epi/epi-workspace/dossier-explorer-wallet-prototype"
taskIndex: 10 actionIndex: 0 result: "Finished clone action on dependency dossier-explorer-wallet-prototype"
Running command: cd dossier-explorer-wallet-prototype && npm install

[email protected] postinstall
node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/nashihr1/DevWork/epi/epi-workspace/dossier-explorer-wallet-prototype/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 0 dependencies...
No [object Object] to process!

added 1 package, and audited 1 package in 4s

found 0 vulnerabilities
[Octopus] Running tasks for: [11] web-server/dsu-fabric
Running command git clone --depth=1 --branch=master http://github.com/PharmaLedger-IMI/dsu-fabric.git "/Users/nashihr1/DevWork/epi/epi-workspace/web-server/dsu-fabric"
taskIndex: 11 actionIndex: 0 result: "Finished clone action on dependency web-server/dsu-fabric"
Running command: cd web-server/dsu-fabric && npm install

[email protected] postinstall
node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/nashihr1/DevWork/epi/epi-workspace/web-server/dsu-fabric/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 3 dependencies...
[Octopus] Running tasks for: [0] privatesky
Start copying ../../privatesky/psknode/bundles/webshims.js to folder ./scripts/bundles/webshims.js

/Users/nashihr1/DevWork/epi/epi-workspace/web-server/dsu-fabric/node_modules/octopus/scripts/run.js:12
throw err;
^
Source directory or file "/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/psknode/bundles/webshims.js" does not exists!
(Use node --trace-uncaught ... to show where the exception was thrown)
npm ERR! code 1
npm ERR! path /Users/nashihr1/DevWork/epi/epi-workspace/web-server/dsu-fabric
npm ERR! command failed
npm ERR! command sh -c node ./node_modules/octopus/scripts/run

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/nashihr1/.npm/_logs/2020-10-28T07_35_25_405Z-debug.log
[Octopus] Running tasks for: [12] web-server/web-wallet/loader
Running command git clone --depth=1 --branch=master https://github.com/PrivateSky/web-dossier-loader.git "/Users/nashihr1/DevWork/epi/epi-workspace/web-server/web-wallet/loader"
taskIndex: 12 actionIndex: 0 result: "Finished clone action on dependency web-server/web-wallet/loader"
Running command: cd web-server/web-wallet/loader && npm install

[email protected] postinstall
node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/nashihr1/DevWork/epi/epi-workspace/web-server/web-wallet/loader/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 1 dependencies...
[Octopus] Running tasks for: [0] PSK bundles
Start copying ../../../privatesky/psknode/bundles/swBoot.js to folder ./swBoot.js

/Users/nashihr1/DevWork/epi/epi-workspace/web-server/web-wallet/loader/node_modules/octopus/scripts/run.js:12
throw err;
^
Source directory or file "/Users/nashihr1/DevWork/epi/epi-workspace/privatesky/psknode/bundles/swBoot.js" does not exists!
(Use node --trace-uncaught ... to show where the exception was thrown)
npm ERR! code 1
npm ERR! path /Users/nashihr1/DevWork/epi/epi-workspace/web-server/web-wallet/loader
npm ERR! command failed
npm ERR! command sh -c node ./node_modules/octopus/scripts/run

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/nashihr1/.npm/_logs/2020-10-28T07_35_30_488Z-debug.log
[Octopus] Running tasks for: [13] gtin-resolver
Running command git clone --depth=1 --branch=master https://github.com/PharmaLedger-IMI/gtin-resolver.git "/Users/nashihr1/DevWork/epi/epi-workspace/gtin-resolver"
taskIndex: 13 actionIndex: 0 result: "Finished clone action on dependency gtin-resolver"
Running command: cd gtin-resolver && npm install

added 1 package, and audited 1 package in 7s

found 0 vulnerabilities
[Octopus] Running tasks for: [14] gtin-dsu-wizard
Running command git clone --depth=1 --branch=master https://github.com/PharmaLedger-IMI/gtin-dsu-wizard.git "/Users/nashihr1/DevWork/epi/epi-workspace/gtin-dsu-wizard"
taskIndex: 14 actionIndex: 0 result: "Finished clone action on dependency gtin-dsu-wizard"
Running command: cd gtin-dsu-wizard && npm install

up to date in 180ms

found 0 vulnerabilities
[Octopus] Running tasks for: [15] themes/blue-fluorite-theme
Running command git clone --depth=1 --branch=master https://github.com/PrivateSky/blue-fluorite-theme.git "/Users/nashihr1/DevWork/epi/epi-workspace/themes/blue-fluorite-theme"
taskIndex: 15 actionIndex: 0 result: "Finished clone action on dependency themes/blue-fluorite-theme"
Running command: cd themes/blue-fluorite-theme && npm install

up to date in 184ms

found 0 vulnerabilities
[Octopus] Running tasks for: [16] dossier-explorer-ssapp
Running command git clone --depth=1 --branch=master https://github.com/PrivateSky/dossier-explorer-ssapp.git "/Users/nashihr1/DevWork/epi/epi-workspace/dossier-explorer-ssapp"
taskIndex: 16 actionIndex: 0 result: "Finished clone action on dependency dossier-explorer-ssapp"
Running command: cd dossier-explorer-ssapp && npm install

[email protected] postinstall
node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/nashihr1/DevWork/epi/epi-workspace/dossier-explorer-ssapp/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 0 dependencies...
No [object Object] to process!

added 1 package, and audited 1 package in 804ms

found 0 vulnerabilities
Finishing checking tasks...

added 1 package, and audited 1 package in 2m

found 0 vulnerabilities
(base) C02ZK08NNCLX:epi-workspace nashihr1$

From: "Nashikkar, Hrishikesh" [email protected]
Date: Wednesday, 28 October 2020 at 11:35 AM
To: "[email protected]" [email protected]
Subject: Re: Open DSU installation error - help needed

Hi Alex,

Could you please have a look when you get a chance.

Thanks,

Hrishikesh

From: "Nashikkar, Hrishikesh" [email protected]
Date: Friday, 23 October 2020 at 5:12 PM
To: "[email protected]" [email protected]
Subject: Open DSU installation error - help needed

Dear Alex,

I hope all is well.

I just have a quick question. I am getting below error when I try to do npm install tutorial workspace.
Could you please help me. Thanks.


(base) C02ZK08NNCLX:opendsu nashihr1$ git clone https://github.com/PrivateSky/tutorial-workspace.git
Cloning into 'tutorial-workspace'...
remote: Enumerating objects: 108, done.
remote: Counting objects: 100% (108/108), done.
remote: Compressing objects: 100% (72/72), done.
remote: Total 108 (delta 43), reused 84 (delta 23), pack-reused 0
Receiving objects: 100% (108/108), 18.93 KiB | 2.70 MiB/s, done.
Resolving deltas: 100% (43/43), done.
(base) C02ZK08NNCLX:opendsu nashihr1$ cd tutorial-workspace/
(base) C02ZK08NNCLX:tutorial-workspace nashihr1$ ls
CHANGELOG README.md env.json octopus.json package.json
LICENSE bin helloworld-dsu package-lock.json web-server
(base) C02ZK08NNCLX:tutorial-workspace nashihr1$ npm install

[email protected] postinstall /Users/nashihr1/DevWork/opendsu/tutorial-workspace
node ./node_modules/octopus/scripts/run

Looking for configuration file at path /Users/nashihr1/DevWork/opendsu/tutorial-workspace/octopus.json
[Octopus] Start checking dependencies...
[Octopus] Found 7 dependencies...
[Octopus] Running tasks for: [0] privatesky
Running command git clone --depth=1 --branch=master http://github.com/privatesky/privatesky.git "/Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky"
taskIndex: 0 actionIndex: 0 result: "Finished clone action on dependency privatesky"
Running command: cd privatesky && npm install

[email protected] preinstall /Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky
node bin/scripts/preinstall-checks.js

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1

[email protected] install /Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/isolated-vm
node-gyp rebuild --release -j 4

Traceback (most recent call last):
File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py", line 50, in
sys.exit(gyp.script_main())
File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/init.py", line 554, in script_main
return main(sys.argv[1:])
File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/init.py", line 547, in main
return gyp_main(args)
File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/init.py", line 523, in gyp_main
options.duplicate_basename_check)
File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/init.py", line 139, in Load
params['parallel'], params['root_targets'])
File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py", line 2864, in Load
SetUpConfigurations(target, target_dict)
File "/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py", line 2285, in SetUpConfigurations
for configuration in target_dict['configurations'].keys():
RuntimeError: dictionary changed size during iteration
gyp ERR! configure error
gyp ERR! stack Error: gyp failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
gyp ERR! stack at ChildProcess.emit (events.js:311:20)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Darwin 19.6.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--release" "-j" "4"
gyp ERR! cwd /Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/isolated-vm
gyp ERR! node -v v12.16.1
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: node-gyp rebuild --release -j 4
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/nashihr1/.npm/_logs/2020-10-23T11_39_22_202Z-debug.log
Running command: cd privatesky && npm run build

[email protected] build /Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky
node ./bin/scripts/pskbuild.js --projectMap=./builds/domain_build.json && node ./bin/scripts/pskbuild.js --projectMap=./builds/build.json

Found project map ./builds/domain_build.json
Reading targets and their dependencies list...
Starts rebuilding
Building target domain
domain done
Finished rebuilding
Found project map ./builds/build.json
Reading targets and their dependencies list...
Starts rebuilding
Building target webshims
Building target pskruntime
Building target pskWebServer
Building target consoleTools
Building target blockchain
Building target openDSU
Building target sandboxBase
Building target edfsBar
Building target testsRuntime
Building target csbBoot
Building target bindableModel
Building target swBoot
Building target hostBoot
Building target ssappBoot
Building target threadBoot
Building target domainBoot
Building target isolatesBoot
Building target launcherBoot
Building target walletBoot
pskruntime done
blockchain done
openDSU done
sandboxBase done
edfsBar done
consoleTools done
isolatesBoot done
events.js:288
throw er; // Unhandled 'error' event
^

Error: Can't walk dependency graph: Cannot find module 'swarm-engine/bootScripts/IsolateBootScript' from '/Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/_fake.js'
required by /Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/_fake.js
at /Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/resolve/lib/async.js:115:35
at processDirs (/Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/resolve/lib/async.js:268:39)
at isdir (/Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/resolve/lib/async.js:275:32)
at /Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/resolve/lib/async.js:25:69
at FSReqCallback.oncomplete (fs.js:166:21)
Emitted 'error' event on Readable instance at:
at Labeled. (/Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/read-only-stream/index.js:28:44)
at Labeled.emit (events.js:311:20)
at Labeled. (/Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/stream-splicer/index.js:130:18)
at Labeled.emit (events.js:311:20)
at Deps. (/Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/stream-splicer/index.js:130:18)
at Deps.emit (events.js:311:20)
at /Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/module-deps/index.js:387:25
at onresolve (/Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/module-deps/index.js:185:25)
at /Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/browserify/index.js:528:22
at /Users/nashihr1/DevWork/opendsu/tutorial-workspace/privatesky/node_modules/browser-resolve/index.js:265:24 {
code: 'MODULE_NOT_FOUND',
stream: Labeled {

PL[3.1.2] Prepare pdf with test barcodes for test users

Prepare pdf file with test barcodes for test users

AC:

PDF file with 6 barcodes as per [[https://share.merck.com/display/CCTS/Carton+artworks+for+testing]
Nice graphical style for good marketing and representation

For every product backlog item:
Rule Description
-Task description - add at least short description about the task
-acceptance criteria - clear description (bullet points) what is output of the task (output of team refinement)
-team engagement - one person/pair/team (list names in case of more than 1 person)
-task reviewed by at least 1 person - acceptance criteria passing

PL [3.1.26] Backend: Create Vapor stack (devops)

Create backend stack and pipeline for Vapor development

AC:
build process
CI, CD, automated tests
linter
deployment

For every product backlog item:

rule description status
Task description add at least short description about the task
Acceptance criteria clear description (bullet points) what is output of the task (output of team refinement)
team engagement one person/pair/team (list names in case of more than 1 person) 1+
task reviewed by at least 1 peer acceptance criteria passing X
ruler description status
branch created - branch with correct type (feature/bugfix/...) - branch name contains JIRA reference X
tests - tested manually - unit tests implemented if applicable (team agreement) - integration/E2E tests for finished feature if applicable (team agreement) X - -
sdlc if the task covers acceptance criteria from requirement add test case(s) to SIT documentation -technical documentation updated (DCS) if applicable (team agreement - -
coding standards static analysis (linter, sonarQ) passing X
development practices commits contain reasonable message - logging enhanced - monitoring updated - analytics added/updated X - - -
pull request - 2 approvals required - build passing - PR contains description (+ screenshot or gif if applicable) - PR always rebased on master - delete remote branch after merge X X X X X

DRA1-UCA-EP04-US01 Decoding

As a Manufacturer
I want to have a solution that can Decode the barcodes that may appear on the market

So That the solution can be used across multiple markets with different barcodes

User Story Rationale/ Examples:
This user story is specific to the actual scanning and decoding of the barcode. There are many different barcodes in use across the supply chain. As examples in the EU with serialization a GS1 encoded Datamatrix is used, in Japan a DataBar Composite Symbology (the GS1 Composite Symbology is a combination of a linear barcode component and a special 2D Composite Component (CC) symbol printed on top. The linear component encodes the item’s primary identification (GTIN). The adjacent 2D Composite Component (CC) encodes supplementary data, such as a batch number and expiration date.). The rationale behind this user story is that, regardless of the barcode used, the application should be able to decode the data.
In the case of a Russia serialized Datamatrix the batch number and expiration date are not included so consideration needs to be given on how to potentially get a batch specific ePI for this pack.
The ability to scan QR’s codes is for potential future use cases.
The thought behind specifying the module width would be to perhaps give a message to the user if their device did not have a camera with a minimum resolution in order to read certain barcodes.

For MVP 1 the scope will be a GS1 encoded Datamatrix code with the following data encoded:
· GTIN
· Serial Number
· Batch Number
· Expiry Date

DRA1-UCA-EP03-US02 Scalability

As a Manufacturer

I want to have a solution that is scalable

So That all manufacturers can use the platform

User Story Rationale/ Examples:
This user story relates to the resolution of the GTIN/ NTN. It is important that the GTIN/ NTIN resolver resolves quickly (see User Story 3.3.1) regardless of the number manufacturers connected to the system or the number of barcode scans taking place etc. The solution must support an increasing number of users without detracting from the performance.
The following should be considered as part of the overall design but for MVP 1 it would not be relevant:
· Administrative scalability: The ability for an increasing number of organizations or users to access a system
· Functional scalability: The ability to enhance the system by adding new functionality without disrupting existing activities
· Geographic scalability: The ability to maintain effectiveness during expansion from a local area to a larger region
· Load scalability: The ability for a distributed system to expand and contract to accommodate heavier or lighter loads, including, the ease with which a system or component can be modified, added, or removed, to accommodate changing loads
· Generation scalability: The ability of a system to scale by adopting new generations of components
· Heterogeneous scalability: The ability to adopt components from different vendors

The dimensions of interaction traffic over the system involve:
• The ability to receive/link to content from suppliers in the order of magnitude of 1000s/10,000s (# suppliers, #products)
• Consumers of content will relate to user traffic in the scale of 100,000s (# patients actively accessing content over a global footprint)
• The sun will never go down on this system. Needs to be 24/7

An analogy at the time of writing these requirements is Amazon.com, Youtube.com. Top 5% of websites in the globe. Note: this is the requirement at a point in time when the system is fully deployed globally.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.