Skip to content

Commit

Permalink
feature(stocktake): Do medicines stocktakes
Browse files Browse the repository at this point in the history
  • Loading branch information
Arturo Mendoza committed May 22, 2024
1 parent c5a2694 commit fe1605a
Show file tree
Hide file tree
Showing 48 changed files with 4,194 additions and 5 deletions.
40 changes: 40 additions & 0 deletions .github/workflows/checking-repository-code.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Checking Repository Code
on: [push]
jobs:
Checking-Repository-Code:
runs-on: ubuntu-latest
environment: Testing
env:
XXX: ${{ vars.XXX }}
steps:
- name: Environment Variables
run: |
echo "XXX: ${{ env.XXX }}"
- name: Checkout repository code
uses: actions/checkout@v4
- name: Build Package
run: npm run install-build:production
- name: Testing code
run: npm run test-coverage:complete
- name: Prettier-linting code
run: npm run prettier-lint
- name: Set up Git
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
- name: Check for changes
id: changes
run: |
if [[ -n "$(git status --porcelain)" ]]; then
echo "changes=true" >> $GITHUB_ENV
else
echo "changes=false" >> $GITHUB_ENV
fi
- name: Commit and push changes
if: env.changes == 'true'
run: |
git add .
git commit --amend --no-edit
git push --force
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
129 changes: 129 additions & 0 deletions db-ddl/01-table-index.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
CREATE TABLE PUBLIC.PF_MED_FRECUENCY (
MFRE_ID SERIAL PRIMARY KEY,
MFRE_EVERY_HOURS NUMERIC NOT NULL,
MFRE_QUANTITY NUMERIC NOT NULL
);

CREATE INDEX IDX_MED_FRECUENCY_EVERYHOURS ON PUBLIC.PF_MED_FRECUENCY (MFRE_EVERY_HOURS);
CREATE INDEX IDX_MED_FRECUENCY_QUANTITY ON PUBLIC.PF_MED_FRECUENCY (MFRE_QUANTITY);
CREATE UNIQUE INDEX IDX_MED_FRECUENCY_ALL ON PUBLIC.PF_MED_FRECUENCY (MFRE_EVERY_HOURS, MFRE_QUANTITY);
CREATE UNIQUE INDEX IDX_MED_FRECUENCY_ID ON PUBLIC.PF_MED_FRECUENCY (MFRE_ID);

CREATE TABLE PUBLIC.PF_MED_MANUFACTURER (
MMAN_ID SERIAL PRIMARY KEY,
MMAN_NAME VARCHAR(255) NOT NULL
);

CREATE UNIQUE INDEX IDX_MED_MANUFACTURER_ID ON PUBLIC.PF_MED_MANUFACTURER (MMAN_ID);
CREATE UNIQUE INDEX IDX_MED_MANUFACTURER_NAME ON PUBLIC.PF_MED_MANUFACTURER (MMAN_NAME);

CREATE TABLE PUBLIC.PF_MED_SUBSTANCE (
MSUB_ID SERIAL PRIMARY KEY,
MSUB_NAME VARCHAR(255) NOT NULL
);

CREATE UNIQUE INDEX IDX_MED_SUBSTANCE_ID ON PUBLIC.PF_MED_SUBSTANCE (MSUB_ID);
CREATE UNIQUE INDEX IDX_MED_SUBSTANCE_NAME ON PUBLIC.PF_MED_SUBSTANCE (MSUB_NAME);

CREATE TABLE PUBLIC.PF_USER (
USER_ID SERIAL PRIMARY KEY,
USER_NAME VARCHAR(255) NOT NULL
);

CREATE UNIQUE INDEX IDX_USER_ID ON PUBLIC.PF_USER (USER_ID);
CREATE UNIQUE INDEX IDX_USER_NAME ON PUBLIC.PF_USER (USER_NAME);

CREATE TABLE PUBLIC.PF_MED_TYPE (
MTYP_ID SERIAL PRIMARY KEY,
MTYP_NAME VARCHAR(255) NOT NULL
);

CREATE UNIQUE INDEX IDX_MED_TYPE_ID ON PUBLIC.PF_MED_TYPE (MTYP_ID);
CREATE UNIQUE INDEX IDX_MED_TYPE_NAME ON PUBLIC.PF_MED_TYPE (MTYP_NAME);

CREATE TABLE PUBLIC.PF_MED_BRANDED_MEDICINE (
MBME_ID SERIAL PRIMARY KEY,
MBME_NAME VARCHAR(255) NOT NULL,
MTYP_ID INT NOT NULL REFERENCES PF_MED_TYPE(MTYP_ID),
MMAN_ID INT NOT NULL REFERENCES PF_MED_MANUFACTURER(MMAN_ID)
);

CREATE INDEX IDX_MED_BRANDED_MEDICINE_MANUFACTURER ON PUBLIC.PF_MED_BRANDED_MEDICINE (MMAN_ID);
CREATE INDEX IDX_MED_BRANDED_MEDICINE_TYPE ON PUBLIC.PF_MED_BRANDED_MEDICINE (MTYP_ID);
CREATE UNIQUE INDEX IDX_MED_BRANDED_MEDICINE_ALL ON PUBLIC.PF_MED_BRANDED_MEDICINE (MBME_NAME, MTYP_ID, MMAN_ID);
CREATE UNIQUE INDEX IDX_MED_BRANDED_MEDICINE_ID ON PUBLIC.PF_MED_BRANDED_MEDICINE (MBME_ID);
CREATE UNIQUE INDEX IDX_MED_BRANDED_MEDICINE_NAME ON PUBLIC.PF_MED_BRANDED_MEDICINE (MBME_NAME);

CREATE TABLE PUBLIC.PF_MED_BRANDED_PRESENTATION (
MBPR_ID SERIAL PRIMARY KEY,
MBPR_QUANTITY NUMERIC NOT NULL,
MBME_ID INT NOT NULL REFERENCES PF_MED_BRANDED_MEDICINE(MBME_ID),
CONSTRAINT FK_BRANDED_PRESENTATION_BRANDED_MEDICINE FOREIGN KEY (MBME_ID) REFERENCES PF_MED_BRANDED_MEDICINE(MBME_ID)
);

CREATE INDEX IDX_MED_BRANDED_PRESENTATION_BRANDED_MEDICINE ON PUBLIC.PF_MED_BRANDED_PRESENTATION (MBME_ID);
CREATE UNIQUE INDEX IDX_MED_BRANDED_PRESENTATION_ALL ON PUBLIC.PF_MED_BRANDED_PRESENTATION (MBPR_QUANTITY, MBME_ID);
CREATE UNIQUE INDEX IDX_MED_BRANDED_PRESENTATION_ID ON PUBLIC.PF_MED_BRANDED_PRESENTATION (MBPR_ID);

CREATE TABLE PUBLIC.PF_MED_COMPONENT (
MCOMP_ID SERIAL PRIMARY KEY,
MCOMP_GRAMS NUMERIC NOT NULL,
MSUB_ID INT NOT NULL REFERENCES PF_MED_SUBSTANCE(MSUB_ID),
MBPR_ID INT NOT NULL REFERENCES PF_MED_BRANDED_PRESENTATION(MBPR_ID)
);

CREATE INDEX IDX_MED_COMPONENT_BRANDED_PRESENTATION ON PUBLIC.PF_MED_COMPONENT (MBPR_ID);
CREATE INDEX IDX_MED_COMPONENT_SUBSTANCE ON PUBLIC.PF_MED_COMPONENT (MSUB_ID);
CREATE UNIQUE INDEX IDX_MED_COMPONENT_ALL ON PUBLIC.PF_MED_COMPONENT (MCOMP_GRAMS, MSUB_ID, MBPR_ID);
CREATE UNIQUE INDEX IDX_MED_COMPONENT_ID ON PUBLIC.PF_MED_COMPONENT (MCOMP_ID);

CREATE TABLE PUBLIC.PF_MED_PRESCRIPTION (
MPRE_ID SERIAL PRIMARY KEY,
MPRE_ACTIVE BOOLEAN NOT NULL DEFAULT TRUE,
MPRE_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
MPRE_IS_SELF_MEDICATED BOOLEAN NOT NULL DEFAULT TRUE,
MTYP_ID INT NOT NULL REFERENCES PF_MED_TYPE(MTYP_ID),
MFRE_ID INT NOT NULL REFERENCES PF_MED_FRECUENCY(MFRE_ID),
USER_ID INT NOT NULL REFERENCES PF_USER(USER_ID)
);

CREATE INDEX IDX_MED_PRESCRIPTION_ACTIVE ON PUBLIC.PF_MED_PRESCRIPTION (MPRE_ACTIVE);
CREATE INDEX IDX_MED_PRESCRIPTION_DATE ON PUBLIC.PF_MED_PRESCRIPTION (MPRE_DATE);
CREATE INDEX IDX_MED_PRESCRIPTION_FREQUENCY ON PUBLIC.PF_MED_PRESCRIPTION (MFRE_ID);
CREATE INDEX IDX_MED_PRESCRIPTION_IS_SELF_MEDICATED ON PUBLIC.PF_MED_PRESCRIPTION (MPRE_IS_SELF_MEDICATED);
CREATE INDEX IDX_MED_PRESCRIPTION_TYPE ON PUBLIC.PF_MED_PRESCRIPTION (MTYP_ID);
CREATE INDEX IDX_MED_PRESCRIPTION_USER ON PUBLIC.PF_MED_PRESCRIPTION (USER_ID);
CREATE UNIQUE INDEX IDX_MED_PRESCRIPTION_ALL ON PUBLIC.PF_MED_PRESCRIPTION (MPRE_ACTIVE, MPRE_DATE, MPRE_IS_SELF_MEDICATED, MTYP_ID, MFRE_ID, USER_ID);
CREATE UNIQUE INDEX IDX_MED_PRESCRIPTION_ID ON PUBLIC.PF_MED_PRESCRIPTION (MPRE_ID);

CREATE TABLE PUBLIC.PF_MED_PURCHASE (
MPUR_ID SERIAL PRIMARY KEY,
MPUR_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
MPUR_DISCOUNT NUMERIC NOT NULL,
MPUR_PRICE NUMERIC NOT NULL,
MPUR_SHIPPING_COST NUMERIC NOT NULL,
MBME_ID INT NOT NULL REFERENCES PF_MED_BRANDED_MEDICINE(MBME_ID)
);

CREATE INDEX IDX_MED_PURCHASE_BRANDED_MEDICINE ON PUBLIC.PF_MED_PURCHASE (MBME_ID);
CREATE INDEX IDX_MED_PURCHASE_DATE ON PUBLIC.PF_MED_PURCHASE (MPUR_DATE);
CREATE INDEX IDX_MED_PURCHASE_DISCOUNT ON PUBLIC.PF_MED_PURCHASE (MPUR_DISCOUNT);
CREATE INDEX IDX_MED_PURCHASE_PRICE ON PUBLIC.PF_MED_PURCHASE (MPUR_PRICE);
CREATE INDEX IDX_MED_PURCHASE_SHIPPING_COST ON PUBLIC.PF_MED_PURCHASE (MPUR_SHIPPING_COST);
CREATE UNIQUE INDEX IDX_MED_PURCHASE_ALL ON PUBLIC.PF_MED_PURCHASE (MPUR_DATE, MPUR_DISCOUNT, MPUR_PRICE, MPUR_SHIPPING_COST, MBME_ID);
CREATE UNIQUE INDEX IDX_MED_PURCHASE_ID ON PUBLIC.PF_MED_PURCHASE (MPUR_ID);

CREATE TABLE PUBLIC.PF_MED_STOCK (
MSTO_ID SERIAL PRIMARY KEY,
MSTO_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
MSTO_QUANTITY NUMERIC NOT NULL,
MBPR_ID INT NOT NULL REFERENCES PF_MED_BRANDED_PRESENTATION(MBPR_ID),
USER_ID INT NOT NULL REFERENCES PF_USER(USER_ID)
);

CREATE INDEX IDX_MED_STOCK_BRANDED_PRESENTATION ON PUBLIC.PF_MED_STOCK (MBPR_ID);
CREATE INDEX IDX_MED_STOCK_DATE ON PUBLIC.PF_MED_STOCK (MSTO_DATE);
CREATE INDEX IDX_MED_STOCK_QUANTITY ON PUBLIC.PF_MED_STOCK (MSTO_QUANTITY);
CREATE INDEX IDX_MED_STOCK_USER ON PUBLIC.PF_MED_STOCK (USER_ID);
CREATE UNIQUE INDEX IDX_MED_STOCK_ALL ON PUBLIC.PF_MED_STOCK (MSTO_DATE, MSTO_QUANTITY, MBPR_ID, USER_ID);
CREATE UNIQUE INDEX IDX_MED_STOCK_ID ON PUBLIC.PF_MED_STOCK (MSTO_ID);
Loading

0 comments on commit fe1605a

Please sign in to comment.