Difference between revisions of "Upgrade Mechanism"

From OpenEMR Project Wiki
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
Note this page is for developers to describe the upgrade process. For upgrade instructions go to the [[OpenEMR_Upgrade_Guides|Upgrade OpenEMR]] wiki page.
Note this page is for developers to describe the upgrade process. For upgrade instructions go to the [[OpenEMR_Upgrade_Guides|Upgrade OpenEMR]] wiki page.


Upgrades are done in the following steps:
==Upgrade Steps==
==Replace the new codebase==
===Replace the codebase===
==Upgrade the database==
:*Simply replace the codebase
:*Migrate over the setting in sites/default(or other name)/sqlconf.php and change $config to 1
:*Keeping several of the folders that store documents.
::*sites/default(or other name)/documents
::*sites/default(or other name)/edi
::*sites/default(or other name)/era
::*sites/default(or other name)/letter_templates
 
===Upgrade the database===
:*This is done via the sql_upgrade.php script
:*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):
::*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):
Line 48: Line 56:
--              1) The table table_name does not have a row where colname = value AND colname2 = value2.
--              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.
--              2) The table table_name does not have a row where colname = value AND colname3 = value3.
--  #IfNotIndex
--    desc:      This function will allow adding of indexes/keys.
--    arguments: table_name colname
--    behavior:  If the index does not exist, it will be created


--  #EndIf
--  #EndIf
--    all blocks are terminated with and #EndIf statement.
--    all blocks are terminated with and #EndIf statement.
</pre>
</pre>
==Upgrade the ACL controls==
::* This script also imports new globals in library/globals.inc.php and the version mysql table settings from version.php file.
 
===Upgrade the ACL controls===
:*This is the acl_upgrade.php script
:*This is the acl_upgrade.php script
::*As of version 4.1.2, this is now completed in the above sql_upgrade.php script.
[[Category:Upgrade]][[Category:Release]][[Category:Developer Guide]]

Latest revision as of 20:47, 28 September 2012

Note this page is for developers to describe the upgrade process. For upgrade instructions go to the Upgrade OpenEMR wiki page.

Upgrade Steps

Replace the codebase

  • Simply replace the codebase
  • Migrate over the setting in sites/default(or other name)/sqlconf.php and change $config to 1
  • Keeping several of the folders that store documents.
  • sites/default(or other name)/documents
  • sites/default(or other name)/edi
  • sites/default(or other name)/era
  • sites/default(or other name)/letter_templates

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.

--  #IfNotIndex
--    desc:      This function will allow adding of indexes/keys.
--    arguments: table_name colname
--    behavior:  If the index does not exist, it will be created

--  #EndIf
--    all blocks are terminated with and #EndIf statement.
  • This script also imports new globals in library/globals.inc.php and the version mysql table settings from version.php file.

Upgrade the ACL controls

  • This is the acl_upgrade.php script
  • As of version 4.1.2, this is now completed in the above sql_upgrade.php script.