Table of Contents
Data file
File | 2Load_innms,innm_dosages,brands |
Page | "New-198-2017-07-26" |
Upload steps & logic
Step 0- Prepare & clean original data
...
Create temp table
Code Block language sql collapse true create table _temp_innms ( id uuid not null constraint _temp_innms_pkey primary key, sctid varchar(255), name varchar(255) not null, name_original varchar(255) not null, is_active boolean default false not null, inserted_by uuid not null, updated_by uuid not null, inserted_at timestamp not null, updated_at timestamp not null )
- Source page "innm"
- Prepare data (column `name` & `name_original`)
Prepare SQL-Insert statement on page (based on template)
Code Block language sql collapse true Example from page with formula (without CR\TAB\etc !!!):
No Format ="insert into _temp_innms (id,sctid,name,name_original,is_active,inserted_by,inserted_at,updated_by,updated_at) values (uuid_generate_v4(), '','тест"&A1&"', 'test"&D1&"', TRUE ,'4261eacf-8008-4e62-899f-de1e2f7065f0', now(),'4261eacf-8008-4e62-899f-de1e2f7065f0',now());
Example from page with formula (without CR\TAB\etc !!!):
No Format ="insert"
Where:
'4261eacf-8008-4e62-899f-de1e2f7065f0' - system user id
A1 - name innm
D1 - name original of innm- Insert rows from calculating SQL-insert statements
Step 3 - Load forms
- Source page: "Forms"
- Create pivot table, insert `key` for dictionary `MEDICATION_FORMPrepare SQL-Insert statement on page (based on template)
Example from page with formula (without CR\TAB\etc !!!):
No Format ="INSERT into _temp_innmsform (id,sctid,name, name_original,is_active,inserted_by,inserted_at,updated_by,updated_atkey) values (uuid_generate_v4(), '','"&A1&"', '"&D1&"', TRUE ,'4261eacf-8008-4e62-899f-de1e2f7065f0', now(),'4261eacf-8008-4e62-899f-de1e2f7065f0',now());"
Where:
'4261eacf-8008-4e62-899f-de1e2f7065f0' - system user id
A1 - name innm
D1 - name original of innm - Insert rows from calculation SQL-insert statements
Step 2 - Load Routes
- Source page: "Dic: route"
- Mapping:
- name = column `A`
- Check exist by `value`
- If not exist - Insert new.
...
D1&"','"&F1&"')"
- Insert rows from calculating SQL-insert statements
Step 300 - Add Countries
- Manually add new values into Dictionary: COUNTRY
- TBD !!!!
Step
...
400 - Load Medications
- Source page: "Original-2017-07-26"
- Delete * from medications (delete old data)
- Mapping:
- name = column `C`(3)
is_active = TRUE
- start_at = `2017/07/26`
- end_at = `3000/01/01`
- route = column `D`(4) + search in Dictionary `medication_route` by name
- container_dosage = Mapping procedure Container Dosage
- package_qty = column `G`(6)
- package_min_qty = column `G`(6)
- code_ATX = column `H`(7)
- manufacturer_name_country =column `I`(8) + Parsing procedure Manufacturer & Country
- certificate = column `J`(9)
- expired_certificate_date = column `K`(10) + format `DD.MM.YYYY`
- Cascade load ingredients (see Step 5)
Step
...
500 - Load Ingredients
- Source page: "Original-2017-07-26"
- Delete * from ingredients where medications_id (delete old data)
- Mapping:
- medication_id = parent
- innm_id = Search by innm.name
- is_active_substance = TRUE
- dosage
- numerator_value = column `E`(5) + Mapping procedure Dosage
Mapping procedure Dosage
- numerator_unit = mapping by medications.route
- аерозоль для інгаляцій = dose
- Аерозоль для інгаляцій, дозований = dose
- інгаляція під тиском = dose
- Порошок для інгаляцій = dose
- Суспензія для розпилення = ml
- таблетки = pill
- таблетки з модифікованим вивільненням = pill
- таблетки сублінгвальні = pill
- таблетки, вкриті оболонкою = pill
- таблетки, вкриті плівковою = pill
- таблетки, вкриті плівковою оболонкою = pill
- таблетки,вкриті оболонкою = pill
- numerator_value = column `E`(5)
- denumerator_unit mapping by numerator_unit
- pill = pill
- container = ml
- aerosol = dose
- denumerator_value = `1`
Mapping procedure Container Dosage
- numerator_unit = mapping by medications.route
- аерозоль для інгаляцій = aerosol
- Аерозоль для інгаляцій, дозований = aerosol
- інгаляція під тиском = aerosol
- Порошок для інгаляцій = aerosol
- Суспензія для розпилення = container
- таблетки = pill
- таблетки з модифікованим вивільненням = pill
- таблетки сублінгвальні = pill
- таблетки, вкриті оболонкою = pill
- таблетки, вкриті плівковою = pill
- таблетки, вкриті плівковою оболонкою = pill
- таблетки,вкриті оболонкою = pill
- numerator_value = `1`
- denumerator_unit mapping by numerator_unit
- pill = pill
- container = ml
- aerosol = dose
- denumerator_value = `1`
Parsing procedure Manufacturer & Country
- Parsing string by format: `manufacturer_name`,`country_name`
- Examples:
- Юнікем Лабораторіз Лімітед , Індія;
- Асіно Фарма АГ , Швейцарія
- Mapping for structure Manufacturer_info
- name = `manufacturer_name`
- country = `country_name` search in Dictionary `Country` by name