Code Types
From OpenEMR Project Wiki
Overview
Code types include billing, diagnosis, performance and other code sets (such as immunizations). By default, OpenEMR is set up to use ICD9 for diagnosis and CPT4/HCPCS for billing. As of OpenEMR version 4.1.1, OpenEMR can also support ICD10/SNOMED/DSMIV code types along with any other code types (guessing each country has their own flavor of these) and importing of these alternative code sets. The important topics described below are how to Import Code Sets and how to Configure/Add Code Types.
Import Code Sets
- Code sets can be imported in several ways, depending on the code type. Note these instructions are only applicable to OpenEMR versions 4.1.1 or greater.
ICD9
- Follow instructions at Administration->Other->External Data Loads->ICD9
- For a new install, basically just need to click 'INSTALL'.
- For upgrades, follow the instructions offered there.
ICD10
- Follow instructions at Administration->Other->External Data Loads->ICD10
- For a new install, basically just need to click 'INSTALL'.
- For upgrades, follow the instructions offered there.
SNOMED
- Follow instructions at Administration->Other->External Data Loads->SNOMED
CPT4
- Read through the following script here: openemr/contrib/util/load_cpt_desc.plx
- This is a rather complicated script/method. See the following wiki page for how to configure it (note the wiki page discusses another script load_icd_desc.plx, so ensure you substitute/use the load_cpt_desc.plx script instead): OpenEMR_Billing_Setup_Howtos#Load_and_Update_Billing_Codes
Configure/Add Code Types
- A code type can be configured or added at Administration->Lists->'Code Types' . Below is a description of each element in the Code Types Editor and note this is only applicable for OpenEMR versions 4.1.1 and above.
- Active - Toggle to turn on/off the code type.
- Key - Name of key used to identify code type within database. This should not be altered.
- ID - ID used to identify code type. This should not be altered.
- Label - Label of the code type (ok to alter this)
- Seq - Order of the code type when showing the listing.
- ModLength - Maximum length of modifier (0 means there is no modifier used for the code type)
- Justify - Enter the Key of the code type that is used to justify this code type (blank means no justification is used with the code type)
- Mask - ???
- Claims - Toggle to turn on/off whether the code type is used in insurance claims.
- Fees - Toggle to turn on/off whether the code type is associated with fees.
- Relations - ???
- Hide - Toggle to turn on/off whether the code type shown in the Fee Sheet searching option.
- Procedure - Toggle to turn on/off whether the code type represents procedure/service codes.
- Diagnosis - Toggle to turn on/off whether the code type represents diagnosis codes.
- External - Menu to choose where the code set of the code type is stored.
- No - The code set is stored in the 'codes' sql table.
- ICD9 Diagnosis - The code set is stored in the standard ICD9 diagnosis tables.
- ICD9 Procedure/Service - The code set is stored in the standard ICD9 procedure/service tables.
- ICD10 Diagnosis - The code set is stored in the standard ICD10 diagnosis tables.
- ICD10 Procedure/Service - The code set is stored in the standard ICD10 procedure/service tables.
- SNOMED (RF1) Diagnosis - The code set is stored in the standard SNOMED diagnosis tables.
- SNOMED (RF2) Diagnosis - This is not used.
- IF you want to add a new External code set mechanism, can add it in the custom/code_types.inc.php script
- Add it to the $cd_external_options array.
- Incorporate it into the code_set_search() and lookup_code_descriptions() functions.
- If you are adding a code type, recommend using the same ct_key and ct_id values as in below table. If creating a new code type, then recommend making sure the ct_id is greater than 100. If you think the code type has general use, then please request to have it added to the official OpenEMR codebase.
Current Official Code Types
ct_key | ct_id | description |
---|---|---|
CPT4 | 1 | Procedure/Service Codes |
ICD9 | 2 | Diagnosis Codes |
HCPCS | 3 | Procedure/Service Codes |
OPCS | 6 | Sports Medicine Procedure Codes |
PTCJ | 7 | Sports Medicine Physiotherapy Codes |
OSICS10 | 9 | Sports Medicine Diagnosis Codes |
SMPC | 10 | Sports Medicine Radiology Codes |
IPPF | 11 | Family Planning Statistical Codes |
MA | 12 | Family Planning Service Codes |
ACCT | 13 | Family Planning Accounting Codes |
REF | 16 | Family Planning Referral Codes |
CVX | 100 | Immunization Codes |
DSMIV | 101 | Diagnostic and Statistical Manual of Mental Disorders, 4th edition |
ICD10 | 102 | The International Statistical Classification of Diseases and Related Health Problems, 10th Revision |
SNOMED | 103 | Systematized Nomenclature of Medicine |
CPTII | 104 | Performance Measure Codes |
ICD9-SG | 105 | Procedure/Service Codes |
ICD10-PCS | 106 | Procedure/Service Codes |
LEGEND:
- RED - Mandatory setting for this code type
- Italic - Optional setting for this code type (ie. the ct_id can be anything greater than or equal to 100 for this code type)
- Note the ct_key and ct_id are columns from the sql 'code_types' table and that the ct_id column is equal to the code_type column of entries in the sql 'codes' table.
Code Type Issues
- Two elements in the code_types table were considered to be invariant. The ct_key element which holds a text identifier and the ct_id element which holds an id identifier. Changes either of these for ICD9, CPT4, or HCPCS can cause problems. To support allowance of incorporating new code sets in OpenEMR version 4.1.0+, it is important to code new sets in a way that only the ct_key is invariant (ie. the ct_id does not need to be a pre-determined number). An example of this is the CVX code type that was added in OpenEMR version 4.1 and the SNOMED, DSMIV and ICD10 code sets that were added in OpenEMR version 4.1.1 . When adding new codesets, we are using a ct_id above 100 to ensure we don't affect any current users that have added their own code types during the upgrade process.