Difference between revisions of "Upgrade Mechanism"

From OpenEMR Project Wiki
(Created page with "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 t...")
 
 
(9 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 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):
<pre>
<pre>
--
--
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.