Upgrade Mechanism
From OpenEMR Project Wiki
Revision as of 22:53, 14 October 2011 by Bradymiller (talk | contribs)
Note this page is for developers to describe the upgrade process. For upgrade instructions go to the Upgrade OpenEMR wiki page.
Upgrades are done in the following steps:
- Replace the new codebase
- Upgrade the database
- This is done via the sql_upgrade.php script
- This file runs through the database upgrade files (ie. sql/4_1_0-to-4_1_1_upgrade.sql), which contain sql code. Note the sql code is embedded in a meta-language to ensure robust database upgrade. The meta-language is posted below (for examples on use, look through the upgrade sql files):
-- -- Comment Meta Language Constructs: -- -- #IfNotTable -- argument: table_name -- behavior: if the table_name does not exist, the block will be executed -- #IfTable -- argument: table_name -- behavior: if the table_name does exist, the block will be executed -- #IfMissingColumn -- arguments: table_name colname -- behavior: if the colname in the table_name table does not exist, the block will be executed -- #IfNotColumnType -- arguments: table_name colname value -- behavior: If the table table_name does not have a column colname with a data type equal to value, then the block will be executed -- #IfNotRow -- arguments: table_name colname value -- behavior: If the table table_name does not have a row where colname = value, the block will be executed. -- #IfNotRow2D -- arguments: table_name colname value colname2 value2 -- behavior: If the table table_name does not have a row where colname = value AND colname2 = value2, the block will be executed. -- #IfNotRow3D -- arguments: table_name colname value colname2 value2 colname3 value3 -- behavior: If the table table_name does not have a row where colname = value AND colname2 = value2 AND colname3 = value3, the block will be executed. -- #IfNotRow4D -- arguments: table_name colname value colname2 value2 colname3 value3 colname4 value4 -- behavior: If the table table_name does not have a row where colname = value AND colname2 = value2 AND colname3 = value3 AND colname4 = value4, the block will be executed. -- #IfNotRow2Dx2 -- desc: This is a very specialized function to allow adding items to the list_options table to avoid both redundant option_id and title in each element. -- arguments: table_name colname value colname2 value2 colname3 value3 -- behavior: The block will be executed if both statements below are true: -- 1) The table table_name does not have a row where colname = value AND colname2 = value2. -- 2) The table table_name does not have a row where colname = value AND colname3 = value3. -- #EndIf -- all blocks are terminated with and #EndIf statement.
- Upgrade the ACL controls
- This is the acl_upgrade.php script