Upgrade of XAMPP With Upcoming 4.1.2 Versus Package Installation

fsgl wrote on Sunday, August 11, 2013:

Presently using 4.1.1 (14) XAMPP 1.7.3 in Windows 7. The XAMPP security console had been configured.

The new package, not yet released, will have XAMPP 1.8.2.

Upgrading from XAMPP 1.7.3 to 1.8.2 is not quite as surgically precise as upgrading OpenEMR from 4.1.1 to 4.1.2.

Which is less prone to errors, separate upgrades of XAMPP and OpenEMR or a fresh package installation? Is it more efficient to install the new package, re-configure the XAMPP Security Console, reset the time zone, copy the sites folder and re-configure the settings in openemr/sites/default/config.php files? Backup will be done before any upgrade or install.

Is it six of one or half a dozen of another?

For users not aware of coming attractions, see Supplementary Topics.

doggmd wrote on Sunday, August 11, 2013:

My guess is that the upgrade of the whole package at one time is likely to have the least errors. It likely has been tested more and should be stable as a package with any needed changes already made.

bradymiller wrote on Monday, August 12, 2013:

Hi,
I’d suggest separating the XAMPP and OpenEMR upgrades and taking it on like migrating OpenEMR from one server to the next. So, install the new XAMPP package, drop the current openemr instance in the new package and then migrate in the previous OpenEMR instance (can either do the OpenEMR upgrade before or after you migrate it). Note it’s not required to migrate the xampp version; so, you could just upgrade OpenEMR and be done with it.
-brady
OpenEMR

fsgl wrote on Monday, August 12, 2013:

Thank you, LarryXP & El Jefe.

fsgl wrote on Wednesday, August 21, 2013:

Followed Brady’s directions above and the upgrade directions assiduously but encountered problem after login.

Sequence:

  1. backed up old XAMPP-Openemr.
  2. installed XAMPP 1.8.2-Openemr 4.1.2.
  3. copied and replaced 4 new default folders with that from 4.1.1.
  4. completed steps 4 & 5 of upgrade instructions.
  5. copied and replaced new openemr (database) with that from 4.1.1.
  6. clicked the link and upgraded the database.

After skipping messages got this error message:

ERROR: query failed: UPDATE procedure_order AS po, procedure_order_code AS pc, procedure_type AS pt SET po.lab_id = pt.lab_id WHERE po.lab_id = 0 AND pc.procedure_order_id = po.procedure_order_id AND pt.procedure_type_id = pc.procedure_type_id AND pt.lab_id != 0

Error: Unknown column ‘pc.procedure_type_id’ in ‘where clause’

No customization in openemr/sites/default/config.php files, so step 7 was not done

Login and everything except Issues appeared normal. Entries in each section of Issues could not be edited. The item had to be deleted and re-entered. See attachment for the error dialog that popped up with each attempt.

The problem may stem from the time that the laptop crashed and recovery attempted with the resident backup utility this February. Loss of scanned images of insurance cards and corruption of LBV forms occurred as a result. Subsequent backup with this utility produced no downloads.

blankev wrote on Wednesday, August 21, 2013:

openemr/sites/default/config.php I suppose the end looks like this? (If the 0/Zero shows, correct to 1)

//////////////////////////
//////////////////////////
//////////////////////////
//////DO NOT TOUCH THIS///
$config = 1; /////////////
//////////////////////////
//////////////////////////
//////////////////////////
?>

Should be correct since you can login.

Next step to check:

Is procedure_type table available in OpenEMR viewable with PhpMyAdmin? If not, it has to be created, if it does exist: is the field procedure_type_id found in that table?

If so, I can not be of any help. (Be sure to look in the OpenEMR Version 4.1.2)

This could happen during a disaster as you described. In subsequent recoveries/upgrades this mistake can only be undone by manual correction (at least this is my understanding as a USER). If there were procedures types created in the past, it might be recovered from a back-up dated before the crash.

Procedure types are configured in Procedures => configuration (Left hand menu or imported from any provider of procedures)

yehster wrote on Wednesday, August 21, 2013:

Dr. Lee,
I don’t think you are doing anything incorrect. Looking at the 4.1.1 to 4.1.2 patch file There’s something a little odd.

In particular the very column that the update statement is trying to use was explicitly dropped here: on line 195.

ALTER TABLE procedure_order
DROP COLUMN procedure_type_id;

yehster wrote on Wednesday, August 21, 2013:

With regards editing issues.
The upgrade script creates a new column

#IfMissingColumn lists modifydate
ALTER TABLE lists ADD COLUMN modifydate timestamp NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
#EndIf

It’s possible that this command doesn’t do the right thing for existing entries, hence the inability to edit. I honestly am not sure though.

yehster wrote on Wednesday, August 21, 2013:

http://dev.mysql.com/doc/refman/5.1/en/data-type-defaults.html

11.5. Data Type Default Values
The DEFAULT value clause in a data type specification indicates a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE. The exception is that you can specify CURRENT_TIMESTAMP as the default for a TIMESTAMP column. See Section 11.3.5, “Automatic Initialization and Updating for TIMESTAMP”.

I’m not sure that

CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
works the way that the author intended.

fsgl wrote on Wednesday, August 21, 2013:

Hi Pimm,

The openemr/sites/default/sqlconf.php file was identical in 4.1.1 and 4.1.2. The $config was 1 before I opened the file.

The procedure_type table and procedure _type_id are there and accounted for.

Recovery back in February was done with a pre-crash emr backup.tar according to this protocol. Because of the loss of data and corruption of LBV forms, I started that thread about a third way to backup in March.

Thank you for the rapid response.

fsgl wrote on Wednesday, August 21, 2013:

Hi Kevin,

Thank you for the kindness of the MySQL reference. I don’t understand it now; but hopefully, I will, in the not too distant future.

I was unable to reproduce the editing problem in the 4.1.2 Demo, therefore it is not a bug as in Vitals.

At least Issues are not frozen.

Here is the rest of the message:

Processing 4_1_1-to-4_1_2_upgrade.sql …
Skipping section #IfNotTable report_results
ALTER TABLE version ADD COLUMN v_acl int(11) NOT NULL DEFAULT 0
Skipping section #IfMissingColumn documents_legal_detail dld_moved
Skipping section #IfMissingColumn documents_legal_detail dld_patient_comments
Skipping section #IfMissingColumn documents_legal_master dlm_upload_type
ALTER TABLE list_options ADD COLUMN codes varchar(255) NOT NULL DEFAULT ‘’
UPDATE list_options SET codes=‘SNOMED-CT:449868002’ WHERE list_id=‘smoking_status’ AND option_id=‘1’ AND title=‘Current every day smoker’
UPDATE list_options SET codes=‘SNOMED-CT:428041000124106’ WHERE list_id=‘smoking_status’ AND option_id=‘2’ AND title=‘Current some day smoker’
UPDATE list_options SET codes=‘SNOMED-CT:8517006’ WHERE list_id=‘smoking_status’ AND option_id=‘3’ AND title=‘Former smoker’
UPDATE list_options SET codes=‘SNOMED-CT:266919005’ WHERE list_id=‘smoking_status’ AND option_id=‘4’ AND title=‘Never smoker’
UPDATE list_options SET codes=‘SNOMED-CT:77176002’ WHERE list_id=‘smoking_status’ AND option_id=‘5’ AND title=‘Smoker, current status unknown’
UPDATE list_options SET codes=‘SNOMED-CT:266927001’ WHERE list_id=‘smoking_status’ AND option_id=‘9’ AND title=‘Unknown if ever smoked’
INSERT INTO list_options ( list_id, option_id, title, seq, is_default, codes ) VALUES (‘smoking_status’, ‘15’, ‘Heavy tobacco smoker’, 70, 0, “SNOMED-CT:428071000124103”)
INSERT INTO list_options ( list_id, option_id, title, seq, is_default, codes ) VALUES (‘smoking_status’, ‘16’, ‘Light tobacco smoker’, 80, 0, “SNOMED-CT:428061000124105”)
ALTER TABLE code_types ADD COLUMN ct_term tinyint(1) NOT NULL default 0 COMMENT ‘1 if this is a clinical term’
DROP TABLE IF EXISTS temp_table_one
CREATE TABLE temp_table_one ( id int(11) NOT NULL DEFAULT ‘0’, seq int(11) NOT NULL DEFAULT ‘0’) ENGINE=MyISAM
INSERT INTO temp_table_one (id, seq) VALUES ( IF( ((SELECT MAX(ct_id) FROM code_types)>=100), ((SELECT MAX(ct_id) FROM code_types) + 1), 100 ) , IF( ((SELECT MAX(ct_seq) FROM code_types)>=100), ((SELECT MAX(ct_seq) FROM code_types) + 1), 100 ) )
INSERT INTO code_types (ct_key, ct_id, ct_seq, ct_mod, ct_just, ct_fee, ct_rel, ct_nofs, ct_diag, ct_active, ct_label, ct_external, ct_claim, ct_proc, ct_term ) VALUES (‘SNOMED-CT’ , (SELECT MAX(id) FROM temp_table_one), (SELECT MAX(seq) FROM temp_table_one), 0, ‘’, 0, 0, 1, 0, 0, ‘SNOMED Clinical Term’, 7, 0, 0, 1)
DROP TABLE temp_table_one
ALTER TABLE codes CHANGE code code varchar(25) NOT NULL default ‘’
ALTER TABLE billing CHANGE code code varchar(20) default NULL
ALTER TABLE ar_activity CHANGE code code varchar(20) NOT NULL COMMENT ‘empty means claim level’
Skipping section #IfNotTable procedure_questions
ALTER TABLE procedure_type ADD COLUMN activity tinyint(1) NOT NULL default 1
ALTER TABLE procedure_type ADD COLUMN notes varchar(255) NOT NULL default ‘’
Skipping section #IfNotTable procedure_answers
Skipping section #IfNotTable procedure_providers
Skipping section #IfNotTable procedure_order_code
ALTER TABLE procedure_order ADD COLUMN lab_id bigint(20) NOT NULL DEFAULT 0 COMMENT ‘references procedure_providers.ppid’, ADD COLUMN specimen_type varchar(31) NOT NULL DEFAULT ‘’ COMMENT ‘from the Specimen_Type list’, ADD COLUMN specimen_location varchar(31) NOT NULL DEFAULT ‘’ COMMENT ‘from the Specimen_Location list’, ADD COLUMN specimen_volume varchar(30) NOT NULL DEFAULT ‘’ COMMENT ‘from a text input field’
UPDATE procedure_order AS po, procedure_order_code AS pc, procedure_type AS pt SET po.lab_id = pt.lab_id WHERE po.lab_id = 0 AND pc.procedure_order_id = po.procedure_order_id AND pt.procedure_type_id = pc.procedure_type_id AND pt.lab_id != 0

yehster wrote on Wednesday, August 21, 2013:

As the author of the “DROP COLUMN procedure_type_id;” code can you weigh in?

Although there is an error message, is there actually a problem?

To Brady, when the patch process encounters an error does it quit at that point or does it continue.

Dr. Lee, It’s possible that the behavior is different with XAMPP vs. the linux install that the dev demo uses.

cmswest wrote on Thursday, August 22, 2013:

tested on clean install of xampp 1.8.2 and issues work fine, existing entries can be edited, maybe something happened in the xampp upgrade?

yehster wrote on Thursday, August 22, 2013:

Stephen,
Can you clarify, by existing entries do you mean entries that existed before running the upgrade script?
Thanks.

bradymiller wrote on Thursday, August 22, 2013:

Hi,

If sql throws an error, the script dies (thus will not get the sql upgrades after the error; for example, in case above there are still a lot of sql upgrades that did not happen). This is one of the very nice things about the macro language in that script that checks for conditions (ie. if tables or rows exist or do not exist etc.) to avoid script death.

I think the issue in fsgl’s problem lies in what is being skipped:
Skipping section #IfNotTable procedure_answers
Skipping section #IfNotTable procedure_providers
Skipping section #IfNotTable procedure_order_code
(in addition to some other things)

What this tells me is that this is not standard 4.1.1 (or a patch variant) since these tables were only added in 4.1.2. For example, maybe this procedure code work was ported in from development code to get the feature. Because of this, it is likely breaking. Of course, we try our best to avoid this (hence, the macro language), but not always possible. In these type of cases, gonna take some additional custom touches to get it to work.

I have confirmed the upgrade works in the ubuntu upgrade from 4.1.1 again (this is linux). Unless somebody weigh’s in on the xampp that the upgrade is working for them, I’ll plan to try to test this soon.

-brady
OpenEMR

bradymiller wrote on Thursday, August 22, 2013:

If you haven’t ported in any other features, another possibility is that you didn’t completely drop the 4.1.2 database before you brought in your 4.1.1 database (perhaps keeping those tables above by mistake)

fsgl wrote on Friday, August 23, 2013:

God does look out for fools, little children and geezers.

Took out the Cat 5 cable and turned off the wireless adapter on the laptop.

Crossed the fingers and re-did the upgrade (step 6).

Messages:

"Processing 4_1_1-to-4_1_2_upgrade.sql …
Skipping section #IfNotTable report_results
Skipping section #IfMissingColumn version v_acl
Skipping section #IfMissingColumn documents_legal_detail dld_moved
Skipping section #IfMissingColumn documents_legal_detail dld_patient_comments
Skipping section #IfMissingColumn documents_legal_master dlm_upload_type
Skipping section #IfMissingColumn list_options codes
Skipping section #IfNotRow2Dx2 list_options list_id smoking_status option_id 15 title Heavy tobacco smoker
Skipping section #IfNotRow2Dx2 list_options list_id smoking_status option_id 16 title Light tobacco smoker
Skipping section #IfMissingColumn code_types ct_term
Skipping section #IfNotRow code_types ct_key SNOMED-CT
Skipping section #IfNotColumnType codes code varchar(25)
Skipping section #IfNotColumnType billing code varchar(20)
Skipping section #IfNotColumnType ar_activity code varchar(20)
Skipping section #IfNotTable procedure_questions
Skipping section #IfMissingColumn procedure_type activity
Skipping section #IfMissingColumn procedure_type notes
Skipping section #IfNotTable procedure_answers
Skipping section #IfNotTable procedure_providers
Skipping section #IfNotTable procedure_order_code
Skipping section #IfMissingColumn procedure_order lab_id
ALTER TABLE procedure_report ADD COLUMN procedure_order_seq int(11) NOT NULL DEFAULT 1 COMMENT ‘references procedure_order_code.procedure_order_seq’
ALTER TABLE procedure_order ADD COLUMN diagnoses text NOT NULL DEFAULT ‘’ COMMENT ‘diagnoses and maybe other coding (e.g. ICD9:111.11)’
Skipping section #IfMissingColumn procedure_providers remote_host
Skipping section #IfMissingColumn procedure_order_code procedure_source
ALTER TABLE procedure_result ADD COLUMN result_data_type char(1) NOT NULL DEFAULT ‘S’ COMMENT ‘N=Numeric, S=String, F=Formatted, E=External, L=Long text as first line of comments’, ADD COLUMN result_code varchar(31) NOT NULL DEFAULT ‘’ COMMENT ‘LOINC code, might match a procedure_type.procedure_code’, ADD COLUMN result_text varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘Description of result_code’
UPDATE procedure_result AS ps, procedure_type AS pt SET ps.result_code = pt.procedure_code, ps.result_text = pt.description WHERE pt.procedure_type_id = ps.procedure_type_id
ALTER TABLE procedure_result DROP COLUMN procedure_type_id
Skipping section #IfMissingColumn procedure_questions tips
Skipping section #IfMissingColumn procedure_order_code procedure_name
ALTER TABLE procedure_report ADD COLUMN report_notes text NOT NULL DEFAULT ‘’ COMMENT ‘Notes from the lab’
DROP TABLE IF EXISTS temp_table_one
CREATE TABLE temp_table_one ( id int(11) NOT NULL DEFAULT ‘0’, seq int(11) NOT NULL DEFAULT ‘0’) ENGINE=MyISAM
INSERT INTO temp_table_one (id, seq) VALUES ( IF( ((SELECT MAX(ct_id) FROM code_types)>=100), ((SELECT MAX(ct_id) FROM code_types) + 1), 100 ) , IF( ((SELECT MAX(ct_seq) FROM code_types)>=100), ((SELECT MAX(ct_seq) FROM code_types) + 1), 100 ) )
INSERT INTO code_types (ct_key, ct_id, ct_seq, ct_mod, ct_just, ct_fee, ct_rel, ct_nofs, ct_diag, ct_active, ct_label, ct_external, ct_claim, ct_proc, ct_term ) VALUES (‘SNOMED-PR’ , (SELECT MAX(id) FROM temp_table_one), (SELECT MAX(seq) FROM temp_table_one), 0, ‘SNOMED’, 1, 0, 0, 0, 0, ‘SNOMED Procedure’, 9, 1, 1, 0)
DROP TABLE temp_table_one
Skipping section #IfNotTable background_services
Skipping section #IfNotRow background_services name phimail
INSERT INTO users (username,password,lname,authorized,active) VALUES (‘phimail-service’,‘NoLogin’,‘phiMail Gateway’,0,0)
INSERT INTO users (username,password,lname,authorized,active) VALUES (‘portal-user’,‘NoLogin’,‘Patient Portal User’,0,0)
Skipping section #IfNotTable direct_message_log
Skipping section #IfMissingColumn procedure_order_code diagnoses
ALTER TABLE procedure_order DROP COLUMN diagnoses
ALTER TABLE lists ADD COLUMN modifydate timestamp NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
ALTER TABLE code_types ADD COLUMN ct_problem tinyint(1) NOT NULL DEFAULT ‘0’ COMMENT ‘1 if this code type is used as a medical problem’
UPDATE code_types SET ct_problem = 1 WHERE ct_key=‘ICD9’
UPDATE code_types SET ct_problem = 1 WHERE ct_key=‘DSMIV’
UPDATE code_types SET ct_problem = 1 WHERE ct_key=‘ICD10’
UPDATE code_types SET ct_problem = 1 WHERE ct_key=‘SNOMED’
ALTER TABLE procedure_order ADD COLUMN date_transmitted datetime DEFAULT NULL COMMENT ‘time of order transmission, null if unsent’
UPDATE procedure_order SET date_transmitted = date_ordered WHERE date_transmitted IS NULL AND date_ordered IS NOT NULL
INSERT INTO list_options (list_id,option_id,title) VALUES (‘lists’,‘issue_types’,‘Issue Types’)
Skipping section #IfNotMigrateClickOptions
Skipping section #IfNotTable issue_types
Skipping section #IfMissingColumn issue_types active
ALTER TABLE immunizations MODIFY COLUMN administered_date datetime DEFAULT NULL
ALTER TABLE immunizations ADD COLUMN amount_administered int(11) DEFAULT NULL
ALTER TABLE immunizations ADD COLUMN amount_administered_unit varchar(50) DEFAULT NULL
ALTER TABLE immunizations ADD COLUMN expiration_date date DEFAULT NULL
ALTER TABLE immunizations ADD COLUMN route varchar(100) DEFAULT NULL
ALTER TABLE immunizations ADD COLUMN administration_site varchar(100) DEFAULT NULL
ALTER TABLE immunizations ADD COLUMN added_erroneously tinyint(1) NOT NULL DEFAULT ‘0’
ALTER TABLE documents ADD COLUMN path_depth TINYINT DEFAULT ‘1’ COMMENT ‘Depth of path to use in url to find document. Not applicable for CouchDB.’
Skipping section #IfNotTable users_secure
ALTER TABLE patient_access_onsite ADD COLUMN portal_salt VARCHAR(100) NULL
ALTER TABLE procedure_order ADD COLUMN clinical_hx varchar(255) DEFAULT ‘’ COMMENT ‘clinical history text that may be relevant to the order’
Skipping section #IfMissingColumn procedure_order_code do_not_send
Skipping section #IfNotTable misc_address_book
ALTER TABLE documents ADD COLUMN imported TINYINT DEFAULT 0 NULL COMMENT ‘Parsing status for CCR/CCD/CCDA importing’
Updating global configuration defaults…
Updating Access Controls…
UPGRADING ACCESS CONTROLS TO VERSION 1:
Checking to ensure all the proper ACL(access control list) are present:
‘Administrators’ group ‘write’ ACL is present.
‘Physicians’ group ‘write’ ACL is present.
‘Clinicians’ group ‘write’ ACL is present.
‘Clinicians’ group ‘addonly’ ACL is present.
‘Front Office’ group ‘write’ ACL is present.
‘Accounting’ group ‘write’ ACL is present.

Adding new object sections
The ‘Sensitivities’ object section already exist.
The ‘Lists’ object section already exist.
The ‘Placeholder’ object section already exist.
The ‘Nation Notes’ object section already exist.
The ‘Patient Portal’ object section already exist.

Adding new objects
The ‘Normal’ object in the ‘Sensitivities’ section already exist.
The ‘High’ object in the ‘Sensitivities’ section already exist.
The ‘Pharmacy Dispensary’ object in the ‘Administration’ section already exist.
The ‘ACL Administration’ object in the ‘Administration’ section already exist.
The ‘Price Discounting’ object in the ‘Accounting’ section already exist.
The ‘Default List (write,addonly optional)’ object in the ‘Lists’ section already exist.
The ‘State List (write,addonly optional)’ object in the ‘Lists’ section already exist.
The ‘Country List (write,addonly optional)’ object in the ‘Lists’ section already exist.
The ‘Language List (write,addonly optional)’ object in the ‘Lists’ section already exist.
The ‘Ethnicity-Race List (write,addonly optional)’ object in the ‘Lists’ section already exist.
The ‘Placeholder (Maintains empty ACLs)’ object in the ‘Placeholder’ section already exist.
The ‘Sign Lab Results (write,addonly optional)’ object in the ‘Patients’ section already exist.
The ‘Nation Notes Configure’ object in the ‘Nation Notes’ section already exist.
The ‘Patient Portal’ object in the ‘Patient Portal’ section already exist.

Upgrading objects
The ‘High’ object in the ‘Sensitivities’ section has already been updated.

Adding ACLs(Access Control Lists) and groups
‘Physicians’ group ‘addonly’ ACL already exist.
‘Front Office’ group ‘addonly’ ACL already exist.
‘Accounting’ group ‘addonly’ ACL already exist.
‘Emergency Login’ group ‘write’ ACL already exist.

Updating the ACLs(Access Control Lists)
The ‘Superuser’ object of the ‘Administration’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘High’ object of the ‘Sensitivities’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘Normal’ object of the ‘Sensitivities’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘High’ object of the ‘Sensitivities’ section is already found in the ‘Physicians’ group ‘write’ ACL.
The ‘Normal’ object of the ‘Sensitivities’ section is already found in the ‘Physicians’ group ‘write’ ACL.
The ‘Normal’ object of the ‘Sensitivities’ section is already found in the ‘Clinicians’ group ‘addonly’ ACL.
The ‘Pharmacy Dispensary’ object of the ‘Administration’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘Pharmacy Dispensary’ object of the ‘Administration’ section is already found in the ‘Physicians’ group ‘write’ ACL.
The ‘Pharmacy Dispensary’ object of the ‘Administration’ section is already found in the ‘Clinicians’ group ‘write’ ACL.
The ‘ACL Administration’ object of the ‘Administration’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘Price Discounting’ object of the ‘Accounting’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘Price Discounting’ object of the ‘Accounting’ section is already found in the ‘Accounting’ group ‘write’ ACL.
The ‘Price Discounting’ object of the ‘Accounting’ section is already found in the ‘Physicians’ group ‘write’ ACL.
The ‘Default List (write,addonly optional)’ object of the ‘Lists’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘State List (write,addonly optional)’ object of the ‘Lists’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘Country List (write,addonly optional)’ object of the ‘Lists’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘Language List (write,addonly optional)’ object of the ‘Lists’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘Ethnicity-Race List (write,addonly optional)’ object of the ‘Lists’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘Price Discounting’ object of the ‘Accounting’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Billing (write optional)’ object of the ‘Accounting’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘EOB Data Entry’ object of the ‘Accounting’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Financial Reporting - my encounters’ object of the ‘Accounting’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Financial Reporting - anything’ object of the ‘Accounting’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Calendar Settings’ object of the ‘Administration’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Database Reporting’ object of the ‘Administration’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Forms Administration’ object of the ‘Administration’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Practice Settings’ object of the ‘Administration’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Superbill Codes Administration’ object of the ‘Administration’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Users/Groups/Logs Administration’ object of the ‘Administration’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Batch Communication Tool’ object of the ‘Administration’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Language Interface Tool’ object of the ‘Administration’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Superuser’ object of the ‘Administration’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Pharmacy Dispensary’ object of the ‘Administration’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘ACL Administration’ object of the ‘Administration’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Authorize - any encounters’ object of the ‘Encounters’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Coding - any encounters (write,wsome optional)’ object of the ‘Encounters’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Notes - any encounters (write,addonly optional)’ object of the ‘Encounters’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Fix encounter dates - any encounters’ object of the ‘Encounters’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Default List (write,addonly optional)’ object of the ‘Lists’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘State List (write,addonly optional)’ object of the ‘Lists’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Country List (write,addonly optional)’ object of the ‘Lists’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Language List (write,addonly optional)’ object of the ‘Lists’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Ethnicity-Race List (write,addonly optional)’ object of the ‘Lists’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Appointments (write,wsome optional)’ object of the ‘Patients’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Demographics (write,addonly optional)’ object of the ‘Patients’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Medical/History (write,addonly optional)’ object of the ‘Patients’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Transactions (write optional)’ object of the ‘Patients’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Documents (write,addonly optional)’ object of the ‘Patients’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Patient Notes (write,addonly optional)’ object of the ‘Patients’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘High’ object of the ‘Sensitivities’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Normal’ object of the ‘Sensitivities’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Sign Lab Results (write,addonly optional)’ object of the ‘Patients’ section is already found in the ‘Physicians’ group ‘write’ ACL.
The ‘Nation Notes Configure’ object of the ‘Nation Notes’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘Nation Notes Configure’ object of the ‘Nation Notes’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
The ‘Patient Portal’ object of the ‘Patient Portal’ section is already found in the ‘Administrators’ group ‘write’ ACL.
The ‘Patient Portal’ object of the ‘Patient Portal’ section is already found in the ‘Emergency Login’ group ‘write’ ACL.
UPGRADING ACCESS CONTROLS TO VERSION 2:
Checking to ensure all the proper ACL(access control list) are present:

Adding new object sections

Adding new objects

Upgrading objects

Adding ACLs(Access Control Lists) and groups
The ‘Physicians’ group already exist.
The ‘Physicians’ group ‘wsome’ ACL has been successfully added.
The ‘Clinicians’ group already exist.
The ‘Clinicians’ group ‘wsome’ ACL has been successfully added.
The ‘Front Office’ group already exist.
The ‘Front Office’ group ‘wsome’ ACL has been successfully added.
The ‘Accounting’ group already exist.
The ‘Accounting’ group ‘wsome’ ACL has been successfully added.
The ‘Physicians’ group already exist.
The ‘Physicians’ group ‘view’ ACL has been successfully added.
The ‘Clinicians’ group already exist.
The ‘Clinicians’ group ‘view’ ACL has been successfully added.
The ‘Front Office’ group already exist.
The ‘Front Office’ group ‘view’ ACL has been successfully added.
The ‘Accounting’ group already exist.
The ‘Accounting’ group ‘view’ ACL has been successfully added.

Updating the ACLs(Access Control Lists)
DONE upgrading access controls
Updating version indicators…

Database and Access Control upgrade finished."

Editing problem resolved.

Old problem downloading emr_backup.tar discussed in this thread got fixed as well with the re-install of Apache (just died and went to heaven!).

Thank you, gentlemen, for your kind assistance. Could not have done it without you.

cmswest wrote on Friday, August 23, 2013:

yes, that’s right Kevin, sorry for the delay in responding

cverk wrote on Thursday, September 05, 2013:

What seemed to work best for me was to install the new 4.1.2 xampp/openemr package, copy over the sites/default files directly as instructed, and then run mysqldump on the old 4.1.1 installation database via command line under windows dos prompt. Then run mysql.exe to install to the new database.

Instructions:

Use xampp control to turn on the old installation (apache and Mysql) which for this I have on the C drive at c:\xampp. At the dos command prompt type:

CD C:\

C:\xampp\mysql\bin\mysqldump -u root -pyourpassword openemr > dumpfile.sql

Note there is not a space between -p and your root password. Turn off the old version with xampp control. You can now change the old xampp file to something else like C:\oldxampp and install the new 4.1.2 as c:\xampp. Run the new xampp control to turn the new version on, and then at command prompt run:

CD C:\

C:\xampp\mysql\bin\mysql -u root -pyourpassword openemr < dumpfile.sql

These scripts can take awhile to run and you just see a flashing cursor under the command prompt window. Once they complete it will return to a C:\ command line. After you are done this leaves the dumpfile.sql file under the C drive that you likely want to delete for security. Next, run localhost/openemr/sql_upgrade.php on a browser and update 4.1.1 to 4.1.2. For some reason it stalls the first time you run the upgrade script. If you just run it again it completes and things seem to work fine.

cverk wrote on Thursday, September 05, 2013:

The above instructions do put you into the new xampp version without any security hardening, so at some point you do have to run xampp security and set passwords. I did that before transferring the database, so you have to use the new root password you set in the dos script I outlined. You also need to remember that if you previously used one of the forms from the contrib file, I used the chief complaint form for physicals, that you need to move a copy of that form over to interface/forms in the new version to recover previously entered information where you used that form. Also you have to move over any customized files such as the statements file for billing.