************************************************************************************************** SAS PROGRAM FOR IMPLEMENTING ICD-10-CM EXTERNAL CAUSE MATRIX FOR INJURY MORBIDITY PART II: APPLYING FORMAT FILES TO EXTERNAL CAUSE CODES CREATED BY: YAHTYNG SHEU, NATIONAL CENTER FOR HEALTH STATISTICS UPDATED BY: MATTHEW GARNETT, NATIONAL CENTER FOR HEALTH STATISTICS CREATED ON: 05/05/2016 REVISED ON: 12/30/2019 NOTE: THE THREE SAS FORMAT FILES ARE BASED ON ICD-10-CM EXTERNAL CAUSE CODES IN THE FOLLOWING FORMAT 1) ALL CAPS, 2) NO DECIMAL POINT, 3) NO SPACE OR BLANKS, AND 4) NO CHARACTER FOR TYPE OF ENCOUNTER (THIS FORMAT MATCHES CMS' 2017 VALID BILLABLE CODE LIST) NOTE: IN ORDER TO RUN THIS PROGRAM, THE THREE SAS FORMAT FILES NEED TO BE SAVED IN A FOLDER. THE SAS FORMAT FILES ARE: 1) DESCRIPT_FMT32B OR DESCRIPT_FMT64B, DEPENDING ON THE VERSION OF SAS INSTALLED 2) MECHANISM_FMT32B OR MECHANISM_FMT64B, DEPENDING ON THE VERSION OF SAS INSTALLED 3) INTENT_FMT32B OR INTENT_FMT64B, DEPENDING ON THE VERSION OF SAS INSTALLED ***************************************************************************************************; ** CREATE LIBRARY FOR THE THREE SAS FORMAT FILES; LIBNAME MYFMTLIB "Z:\Yahtyng program\ICD10CM external cause matrix\UPDATES WITH 2017 ICD10CM\Format"; ** CALL OUT DOWNLOADED SAS FORMAT FILES FOR INJURY DESCRIPTION, MECHANISM AND INTENT ; OPTIONS FMTSEARCH=(MYFMTLIB.DESCRIPT_FMT32B,MYFMTLIB.MECHANISM_FMT32B,MYFMTLIB.INTENT_FMT32B); ** READ IN THE DATASET THAT CONTAINS INJURY CASES WITH A VALID EXTERNAL CAUSE CODE; ** VARIABLE "EX_CODE" CONTAINS VALUES FOR A VALID EXTERNAL CAUSE CODE; ** VARIABLE "ANYEC" INDICATES WHETHER A RECORD HAS A VALID EXTERNAL CAUSE CODE; ** USE SAS "PUT" FUNCTION TO ASSIGN "EX_CODE" SAS FORMATS AND WRITE EACH FORMAT INTO THREE DIFFERENT VARIABLES; DATA ICD10_INJURY_3; SET ICD10_INJURY_2; INTENT=PUT((EX_CODE), $INTENTF.); ** FOR INTENT; MECHANISM=PUT((EX_CODE), $MECHANISMF.); ** FOR MECHANISM; DESCRIPT=PUT((EX_CODE), $DESCF.); ** FOR THE DESCRIPTION OF THE EXTERNAL CAUSE CODE; ** SUBSTRING NUMERIC VALUES FROM VARIABLE INTENT AND MECHANISM AND CREATE TWO NUMERIC VARIABLES FOR INTENT AND MECHANISM; ** VARIABLES "INTENTN" AND "MECHN" ARE NUMERIC VARIABLES (INPUT FUNCTION CONVERTS THE VARIABLE FROM CHARACTER TO NUMERIC); INTENTN=INPUT(SUBSTR(INTENT,1,2),2.0); MECHN=INPUT(SUBSTR(MECHANISM,1,5),5.2); RUN; ** CHECK VALUES IN THE NEWLY CREATED VARIABLES FOR THE FIRST 50 OBSERVATIONS WITH EXTERNAL CAUSE CODE; PROC PRINT DATA=ICD10_INJURY_3(OBS=50); VAR EX_CODE INTENT MECHANISM DESCRIPT INTENTN MECHN; WHERE ANYEC=1; /**IF ANYEC VARAIBLE IS NOT AVAIABLE IN YOUR DATASET, YOU CAN USE "WHERE EX_CODE~=0" **/ RUN; ** IDENTIFY CASES WHERE THE EXTERNAL CAUSE CODE (EX_CODE) DID NOT RESULT IN PROPER VALUES FOR INTENT, MECHANISM OR DESCRIPT. THIS PROBLEM OCCURS WHEN VARIABLE "EX_CODE" DOES NOT MATCH EXTERNAL CAUSE CODES IN THE SAS FORMAT FILES. THE VALUES FOR "INTENT" OR "MECHANISM" VARIABLES WILL BE THE VALUE OF THE EXTERNAL CAUSE CODE IN THE EX_CODE VARIABLE; ** IF UNMATCHED EXTERNAL CAUSE CODES ARE FOUND, MAKE SURE PROPER FORMAT (ALL CAPS, NO DECIMAL POINTS, NO SAPCE OR BLANK, NO CHARACTER FOR TYPE OF ENCOUNTER) ARE USED, AND THE EXTERNAL CAUSE CODES MATCH CMS' VALID BILLABLE CODES; PROC PRINT; VAR EX_CODE; WHERE ANYEC=1 AND INTENT=EX_CODE; /** IF ANYEC VARAIBLE IS NOT AVAILABLE IN YOUR DATASET, YOU CAN USE "WHERE EX_CODE~='' AND INTENT=EX_CODE "**/ RUN; ** VALUES FOR NUMERIC VARIABLE "INTENTN" (IF DESIRED, USERS CAN RE-GROUP THIS VARIABLE TO CREATE USER-DEFINED CATEGORIES FOR INJURY INTENT) 1='UNINTENTIONAL' 2='SELF-HARM' 3='ASSAULT' 4='UNDETERMINED' 5='LEGAL/WAR' ** VALUES FOR NUMERIC VARIABLE "MECHN" (IF DESIREC, USERS CAN RE-GROUP THIS VARIABLE TO CREATE USER-DEFINED CATEGORIES FOR INJURY MECHANISM) 1.0='CUT/PIERCE' 2.0='DROWNING/SUBMERSION' 3.0='FALL' 4.1='FIRE/FLAME' 4.2='HOT OBJECT/SUBSTANCE' 5.0='FIREARM' 6.0='MACHINERY' 7.11='MVT-OCCUPANT' 7.12='MVT-MOTORCYCLIST' 7.13='MVT-PEDALCYCLIST' 7.14='MVT-PEDESTRIAN' 7.15='MVT-OTHER' 7.16='MVT-UNSPECIFIED' 7.2='MV NON-TRAFFIC' 7.3='PEDALCYCLIST,OTHER' 7.4='PEDESTRIAN,OTHER' 7.5='OTHER LAND TRANSPORT' 7.6='OTHER TRANSPORT' 8.1='BITE AND STINGS-NONVENOMOUS' 8.2='BITE AND STINGS-VENOMOUS' 8.3='NATURAL/ENVIRONMENTAL,OTHER' 9.0='OVEREXERTION' 10.1='POISONING:DRUG' 10.2='POISONING:NON-DRUG' 11.0='STRUCK BY/AGAINST' 12.0='SUFFOCATION' 13.0='OTHER SPECIFIED,CHILD/ADULT ABUSE' 14.0='OTHER SPECIFIED,FOREIGN BODY' 15.0='OTHER SPECIFIED,CLASSIFIABLE' 16.0='OTHER SPECIFIED,NOT ELSEWHERE CLASSIFIABLE' 17.0='UNSPECIFIED' ; ******************************************************************************************** EXAMPLE TO CREATE TEMPORARY FORMAT FOR VARIABLES "INTENTN" AND "MECHANISM" *********************************************************************************************; PROC FORMAT; VALUE INTF 1='UNINTENTIONAL' 2='SELF-HARM' 3='ASSAULT' 4='UNDETERMINED' 5='LEGAL/WAR' ; VALUE MECHF 1.0='CUT/PIERCE' 2.0='DROWNING/SUBMERSION' 3.0='FALL' 4.1='FIRE/FLAME' 4.2='HOT OBJECT/SUBSTANCE' 5.0='FIREARM' 6.0='MACHINERY' 7.11='MVT-OCCUPANT' 7.12='MVT-MOTORCYCLIST' 7.13='MVT-PEDALCYCLIST' 7.14='MVT-PEDESTRIAN' 7.15='MVT-OTHER' 7.16='MVT-UNSPECIFIED' 7.2='MV NON-TRAFFIC' 7.3='PEDALCYCLIST,OTHER' 7.4='PEDESTRIAN,OTHER' 7.5='OTHER LAND TRANSPORT' 7.6='OTHER TRANSPORT' 8.1='BITE AND STINGS-NONVENOMOUS' 8.2='BITE AND STINGS-VENOMOUS' 8.3='NATURAL/ENVIRONMENTAL, OTHER' 9.0='OVEREXERTION' 10.1='POISONING:DRUG' 10.2='POISONING:NON-DRUG' 11.0='STRUCK BY/AGAINST' 12.0='SUFFOCATION' 13.0='OTHER SPECIFIED,CHILD/ADULT ABUSE' 14.0='OTHER SPECIFIED,FOREIGN BODY' 15.0='OTHER SPECIFIED,CLASSIFIABLE' 16.0='OTHER SPECIFIED,NOT ELSEWHERE CLASSIFIABLE' 17.0='UNSPECIFIED' ; RUN; PROC FREQ; TABLE INTENTN MECHN; FORMAT INTENTN INTF. MECHN MECHF.; RUN;