Upload
justice-haviland
View
216
Download
3
Embed Size (px)
Citation preview
VA. ACL USER’S GROUPVA. ACL USER’S GROUPFunctionsIntermediate to Advanced
April 21, 2009
Kimberly M. Taylor, CPA, CISAChesterfield County, VA
AgendaAgenda
Function Syntax - Brief OverviewCleaning Up Fields Conversion FunctionsCombining FunctionsNumerous If Statements
Function SyntaxFunction SyntaxALLTRIM( string )
Works in expression
The word “string” tells you to put the name of an ASCII
field in its place
BETWEEN( value , min , max )
Works in filter or expression
The word “value” tells you to put a
Field name in its place – it can be a date or a number
The word “min” is your beginning value and must be
in the same format as your value field.
The word “max” is your ending value and must be
in the same format as your value field.
The words in ALL CAPS are your actual functions created by ACL. They are followed by an open and closing parenthesis.
Function SyntaxFunction SyntaxFIND( string <,field_to_search_in> ) – works in filter or expression
Find is your function.In this instance, “string” is the text you want to find<field to search in> is an optional paramater, because of the brackets.
FIND( “yellow” ) – in this instance it looks in all fields.I have personally found ACL does not consistently work wellWithout a field name here.
FIND( “yellow” , carcolor1)
SPLIT( string , separator , SPLIT( string , separator , segment <,text_qualifier> )segment <,text_qualifier> )Works in expression to create a new
expression, does not work in filterSplits a field based on a particular
separatorSegment – which segment do you want?
1, 2, 3, etc.SPLIT (name, “, “, 1)
UPPER( string ) or UPPER( string ) or LOWER( string )LOWER( string )
Changes text to all caps or all lower caseText must be identical for relate tables or
join commands to work
INCLUDE( string , INCLUDE( string , characters_to_include )characters_to_include )Field called ID_NO – looks like
Taylor040909. The ID number is generated by computer as last name and date.
INCLUDE (ID_NO, “abcdefghijklmnopqrstuvwxyz”)
Result = Taylor
EXCLUDE( string , EXCLUDE( string , characters_to_include )characters_to_include )Field called ID_NO – looks like
Taylor040909. The ID number is generated by computer as last name and date.
EXCLUDE (ID_NO, “abcdefghijklmnopqrstuvwxyz”)
Result = 040909
CONVERSION FUNCTIONSCONVERSION FUNCTIONS
STRING( number , length <,format> )Converts a number to textWorks well when trying to use classify
command or some other command that needs text
VALUE( string , decimals )VALUE( string , decimals )
Converts text fields to numeric fieldsGood for use in trying to sort data or using
functions that require a numeric field (i.e. - summarize
Audit Step ExamplesAudit Step Examples
Numerous If StatementsCombining Functions
– When combining functions in same expression, ACL works from the middle expression to the outer expression
Calculations
Audit Step: Verify if mileage was billed correctlyAudit Step: Verify if mileage was billed correctly
Challenges:– Upgrade during the year for purchased software caused mileage
data to be in up to 3 different fields– More than one transport record for same call – could be
duplicate records, could be more than one person transported, could be one unit assisting and another unit transporting
– Internal file needs to be compared to external billing file – different field formats for ID number
– Combining data from 3 different internal tables to come up with one mileage record
– Internal data set had # of miles, external data set had $ amount billed
– Had to round mileage up to next whole mile for accurate billing calculations
AnalysisAnalysis
Determine transport mileage on internal data
Determine miles billed on external dataCompare 2 files to determine accuracy of
bills
DataData
Internal records = 74,564 records– Contains non-billable records
External records = 19,691 records– Contains mostly billed records only
Determining transport mileageDetermining transport mileage Computed Fields Multiple If Statements Combining Functions Converting Text to Number for calculation purposes
Edit, table layout
Determine Transport MileageDetermine Transport MileageStep 1: Field Name and Default ValueStep 1: Field Name and Default Value
Default value – field type must match remaining values established
“text” or “9999.99” = text field 9999.99 = numeric field # of decimal places equals decimal places in default
value. If you put 9999 in default value, you will have 0 decimal places in all fields.
If you are doing multiple if statements, put something unusual in default value so you can check to be sure your remaining if statements are calculating properly.
Determine Transport MileageDetermine Transport MileageStep 2: first If statementStep 2: first If statement
Lodmileage is a numeric field. If it is greater than 0, then use that field as the transport mileage.
Determine Transport MileageDetermine Transport MileageStep 3: second if statementStep 3: second if statement
Xportsec = ascii field, field that recorded mileage in 1st version of software
Combined expression – ACL works from inside expression to outside expression
First, – INCLUDE - acl is including
numbers and .– VALUE – acl is converting it to
a number with 2 decimal places Second,,
– Do what is in parenthesis first – then determine if the field is
greater than 0 If all is true, then it inserts the
value
Determine Transport MileageDetermine Transport MileageStep 4 – third if statementStep 4 – third if statement
If all three fields that contain mileage are equal to 0
Input 0.00 into transport mileage
Determine Transport MileageDetermine Transport MileageStep 5: fourth if statementStep 5: fourth if statement
Assumption – lodmileage is the correct field
Use dstmileage if lodmileage is 0 and dst mileage greater than 0
If not, we wanted to use dstmileage
Determine Transport MileageDetermine Transport MileageStep 6: fifth if statementStep 6: fifth if statement
We had 1 record that did not fit into the rest of the categories, it was coming up as 9999.99
So we just added an if statement to put the actual value in based on data we could see
This represents the value of using a default value that ensures your formulas are working
Determine Transport MileageDetermine Transport MileageResult: new field with mileage valueResult: new field with mileage value
Calculate Miles Billed – external Calculate Miles Billed – external data sourcedata sourceAdd a new expression fieldExisting data has a separate field for
mileage dollars charged
Calculate Miles BilledCalculate Miles BilledStep 1: Field name and default Step 1: Field name and default valuevalue
Calculate Miles BilledCalculate Miles BilledStep 2: First if Statement Miles billed prior to 4/1/08Step 2: First if Statement Miles billed prior to 4/1/08
Different billing rates before and after 4/1/08.
Pulled in only internal calls
Calculate Miles BilledCalculate Miles BilledStep 3: Second If Statement – Miles billed after 4/1/08Step 3: Second If Statement – Miles billed after 4/1/08
Accounted for billing rate after 4/1/08
Calculate Miles BilledCalculate Miles BilledStep 4: Third If Statement – Records not associated with Step 4: Third If Statement – Records not associated with this providerthis provider
Other volunteer unit information is also in database. Wanted to weed those out as accurately billed, but not a billable record.
Calculate Miles BilledCalculate Miles BilledResults – new field with miles billedResults – new field with miles billed
Analyze Results – join internal and Analyze Results – join internal and external data sourceexternal data source Had 2 create fields in both tables to link
results External Data Source
Internal Data Source
Run join command and include all primary and secondary to create a new table
Analyze Results – was billing Analyze Results – was billing accurate?accurate?Yes: (prov_name = "CHESTERFIELD
FIRE DEPARTMENT") AND BETWEEN( (Recalculate_Mileage - Transport_Mileage) , 0, 1)
NC = Not Chesterfield prov_name <> "CHESTERFIELD FIRE
DEPARTMENT"
Analyze Results – was billing Analyze Results – was billing accurate?accurate? NO: (prov_name = "CHESTERFIELD FIRE
DEPARTMENT") AND BETWEEN( (Recalculate_Mileage - Transport_Mileage) , -1, 0)
NO: (prov_name = "CHESTERFIELD FIRE DEPARTMENT") AND ((Recalculate_Mileage - Transport_Mileage) > 1)
NO: (prov_name = "CHESTERFIELD FIRE DEPARTMENT") AND ((Recalculate_Mileage - Transport_Mileage) < -1)
Analyze Results: Was billing Analyze Results: Was billing AccurateAccurateClassify Command
Next steps: sample the no records, recommend they be reviewed by Fire if sample turns out there was incorrect billing
ResultsResults
$7,667 not billed due to not rounding mileage up to next whole mile
Accurate Billing
CountPercent of
Count
no 3,427 24.76%
yes 10,416 75.24%
Totals 13,843 100%
Audit Step – review audit trails to determine Audit Step – review audit trails to determine if ID number was changed on a medical if ID number was changed on a medical record that has a billrecord that has a bill
Concerns– ID numbers for records can be changed– Once ID number is changed, there is no record
on the front end that the transport ever occurred – there is a bill with no medical record
Audit Step – review audit trails to determine Audit Step – review audit trails to determine if ID number was changed on a medical if ID number was changed on a medical record that has a billrecord that has a bill Challenges
– Over 3,000,000 audit trail records on a very short data set
– Department is unable to run reports on their audit trail data
– New text field and old text field is a combination of all fields changed in the record – wanted to focus on ID number only
– Figure out if ID number was actually changed– Link to billing data from external file to determine if
there is a bill on the old record
Audit Step – analyze ID numbersAudit Step – analyze ID numbers
Extracted all audit log records associated with table that contains ID numbers – Reduced from 3,000,000 records to 68,000 records
Isolated new and old ID numbers using split function
Added new expressions to determine if new ID number was different than OLD ID number
Joined records to billing data to determine if bills went out on OLD ID number
Analyze ID numbersAnalyze ID numbers
Split old and new fields
Create field that identifies old field that had an official transport number starting with FR0
Create field that identifies records where old and new number do not match
Analyze ID Numbers - ResultsAnalyze ID Numbers - Results
38 records where old ID number in medical record matched a bill in the external billing data