ЕСОЗ - публічна документація

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

 

Data file

File2Load_innms,innm_dosages,brands
Page"New-198-2017-07-26"


Upload steps & logic


Step 0- Prepare & clean original data

  1. Copy table from original PDF file (http://www.moz.gov.ua/docfiles/dn_20170728_875_dod..pdf) and paste into Google tables file.
  2. Del separate rows (between page, head of document, etc)
  3. Add 0-column `Status`
  4. Add 17- column `Мінімальна кратність відпуску` & fill column `0`
  5. Replace symbol `,` on `.` into all amount & digital column (5,6,11-16)
  6. Replace Cyrillic symbol `А`, `В`, `С` on Latin symbol `A`, `B`, `C` into column 7
  7. Replace text `необмеженний`(etc) on `31.12.3000` into column 10
  8. Del text symbols into all amount & digital column (5,6,11-16)
  9. Create pivot table for check & repair `form` (see page `FORM`). Update problem rows
  10. Export table to `*.csv` file
  11. Del 2-s first rows in file (header of table)


Step 1- Load data into temp table on DB

  1. Connect to DB
  2. Create temp table

    create table "_temp_reestr"
    (
    	status varchar(10),
    	id integer,
    	innm_name_original varchar(255),
    	brand_name varchar(255),
    	form varchar(255),
    	dosage_value numeric,
    	package_qty numeric,
    	atc varchar(255),
    	manufacturer varchar(255),
    	lic_num varchar(255),
    	lic_exp_at varchar(255),
    	amount_11 real,
    	amount_12 real,
    	amount_13 real,
    	amount_14 real,
    	amount_reimbursement real,
    	amount_16 real,
    	package_min_qty numeric,
    )
    ;
    
  3. Import data into `_temp_reestr` from csv-file 
      
  4. Check count loaded rows
     

    select count(*) from _temp_reestr

Step 2- Load Innms

  1. Source page "innm"
  2. Mapping:
    1. innm_identifier = column `C`
    2. name = column `A`
  3. Check exist by `innm_identifier`
    1. If not exist - Insert new.
      1. status=INACTIVE (DICTIONARY: innm_status)
      2. is_active=TRUE

Step 2 - Load Routes

  1. Source page: "Dic: route"
  2. Mapping:
    1. name = column `A`
  3. Check exist by `value`
    1. If not exist - Insert new.

Step 3 - Add Countries

  1. Manually add new values into Dictionary: COUNTRY
  2. TBD !!!!

Step 4 - Load Medications

  1. Source page: "Original-2017-07-26"
  2. Delete * from medications (delete old data)
  3. Mapping:
    1. name = column `C`(3)
    2. is_active = TRUE

    3. start_at = `2017/07/26`
    4. end_at`3000/01/01`
    5. route = column `D`(4) + search in Dictionary `medication_route` by name
    6. container_dosage =  Mapping procedure Container Dosage
    7. package_qtycolumn `G`(6)
    8. package_min_qtycolumn `G`(6)
    9. code_ATXcolumn `H`(7)
    10. manufacturer_name_country =column `I`(8) + Parsing procedure Manufacturer & Country
    11. certificatecolumn `J`(9)
    12. expired_certificate_datecolumn `K`(10) + format `DD.MM.YYYY`
  4. Cascade load ingredients (see Step 5)

Step 5 - Load Ingredients

  1. Source page: "Original-2017-07-26"
  2. Delete * from ingredients where medications_id (delete old data)
  3. Mapping:
    1. medication_id = parent
    2. innm_id = Search by innm.name
    3. is_active_substance = TRUE
    4.  dosage
      1. 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

  1. Parsing string by format: `manufacturer_name`,`country_name` 
  2. Examples: 
    1. Юнікем Лабораторіз Лімітед , Індія;
    2. Асіно Фарма АГ , Швейцарія
  3. Mapping for structure Manufacturer_info
    1. name = `manufacturer_name`
    2. country = `country_name` search in Dictionary `Country` by name 
  • No labels