com.mmm.cms.homehealth.v2308_1
Class NRS_ScoringModel_v2308

java.lang.Object
  extended by com.mmm.cms.homehealth.v2308_1.NRS_ScoringModel_v2308
All Implemented Interfaces:
HomeHealthScoringModelIF, Namable

public class NRS_ScoringModel_v2308
extends java.lang.Object
implements HomeHealthScoringModelIF

This provides scoring based on the Non-Routine Supplies model for the Home Health Grouper, version 2.03


Field Summary
static java.lang.String SHORTNAME
           
 
Constructor Summary
NRS_ScoringModel_v2308(HomeHealthGrouperIF grouper, GrouperDataManager dataManager)
          Constructor that initialized with the Grouper and data manager references
 
Method Summary
 int[] calculateInitialScore(HomeHealthRecordIF record, HomeHealthRecordValidatorIF validator)
          Calculate maximum possible score for each of the 18 diagnoses to support choice of scoring variable when an etiology and a manifestation are both NRS casemix variables.
 void determinePrimaryDiagnosis(HomeHealthRecordIF record, HomeHealthRecordValidatorIF validator, int[] icd9Points)
          Determine the primary diagnosis between the two pairs M0230a240b or M0246x3/M0246x4 Pseudo code lines: 1600 thru 1643
 void fireScoringEvent(HomeHealthEvent event)
          This method, along with the other fire...
 int getCaseMixAdjustmentEquation(int caseMixId)
          This gets the Case Mix Adjustment table value, by essentially getting the caseMixId (i.e.
protected  Icd9DiagnosisCodeIF getDiagnosisCode(java.lang.String codeValue)
          Gets an NRS related Diagnosis code.
 HomeHealthGrouperIF getGrouper()
          Gets the Grouper reference
 java.lang.String getName()
          Gets the name of this scoring module
 void populateCodes(HomeHealthRecordIF record)
          This populates the record with all Diagnosis codes that are valid for this grouper version that are listed on the record.
 void preprocessRecord(HomeHealthRecordIF record, HomeHealthRecordValidatorIF validator)
          This preprocesses the record to adjust the diagnostic groups based on the presence of an Ulcer or Diabetic Ulcer on the record.
 void recalculateNonPrimaryCodes(HomeHealthRecordIF record, HomeHealthRecordValidatorIF validator, int[] icd9Points, int[] dualPoints)
          Pseudo code lines: 1645 thru 1681
 boolean[] resolveEtiologyManifestationContention(HomeHealthRecordIF record, HomeHealthRecordValidatorIF validator, int[] icd9Points, boolean[] diagGroupsUsed)
          Cycle through all diagnosis positions with points.
 ScoringPointsIF score(HomeHealthRecordIF record, HomeHealthRecordValidatorIF validator)
          This is the main scoring module, which scores the non routine supplies information.
 int scoreRemainingVariables(HomeHealthRecordIF record, HomeHealthRecordValidatorIF validator, int[] points)
          This scores the remaining clinical variables.
 void setGrouper(HomeHealthGrouperIF grouper)
          Sets the reference to the Grouper this model belongs to
 void setName(java.lang.String arg0)
          This method does nothing - the name can not be reset
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SHORTNAME

public static final java.lang.String SHORTNAME
See Also:
Constant Field Values
Constructor Detail

NRS_ScoringModel_v2308

public NRS_ScoringModel_v2308(HomeHealthGrouperIF grouper,
                              GrouperDataManager dataManager)
Constructor that initialized with the Grouper and data manager references

Parameters:
grouper -
dataManager -
Method Detail

score

public ScoringPointsIF score(HomeHealthRecordIF record,
                             HomeHealthRecordValidatorIF validator)
This is the main scoring module, which scores the non routine supplies information.

Specified by:
score in interface HomeHealthScoringModelIF
Parameters:
record -
validator -
Returns:
ScoringPointsIF that contains the clinical and functional scoring elements. This will never be null

preprocessRecord

public void preprocessRecord(HomeHealthRecordIF record,
                             HomeHealthRecordValidatorIF validator)
This preprocesses the record to adjust the diagnostic groups based on the presence of an Ulcer or Diabetic Ulcer on the record. Pseudo code lines: 1530 thru 1575

Specified by:
preprocessRecord in interface HomeHealthScoringModelIF
Parameters:
record -
validator -

calculateInitialScore

public int[] calculateInitialScore(HomeHealthRecordIF record,
                                   HomeHealthRecordValidatorIF validator)
Calculate maximum possible score for each of the 18 diagnoses to support choice of scoring variable when an etiology and a manifestation are both NRS casemix variables. special case for primaries and ulcers Pseudo code lines: 1521 thru 1574

Parameters:
record -
validator -
Returns:
int array with score per diagnosis

determinePrimaryDiagnosis

public void determinePrimaryDiagnosis(HomeHealthRecordIF record,
                                      HomeHealthRecordValidatorIF validator,
                                      int[] icd9Points)
Determine the primary diagnosis between the two pairs M0230a240b or M0246x3/M0246x4 Pseudo code lines: 1600 thru 1643

Parameters:
record -
validator -
icd9Points -

resolveEtiologyManifestationContention

public boolean[] resolveEtiologyManifestationContention(HomeHealthRecordIF record,
                                                        HomeHealthRecordValidatorIF validator,
                                                        int[] icd9Points,
                                                        boolean[] diagGroupsUsed)
Cycle through all diagnosis positions with points. Drop points for non-initial occurrences of any NRS diagnosis groups. Resolve contention within etiology/manifestation pairs when both are casemix diagnoses in different diagnosis groups by retaining the DG with higher score unless that DG has already earned points via a previous occurrence. Any points lost at this point are not recaptured Pseudo code lines: 1683 thru 1762

Parameters:
record -
validator -
icd9Points -
diagGroupsUsed -
Returns:

recalculateNonPrimaryCodes

public void recalculateNonPrimaryCodes(HomeHealthRecordIF record,
                                       HomeHealthRecordValidatorIF validator,
                                       int[] icd9Points,
                                       int[] dualPoints)
Pseudo code lines: 1645 thru 1681

Parameters:
record -
validator -
icd9Points -
dualPoints -

scoreRemainingVariables

public int scoreRemainingVariables(HomeHealthRecordIF record,
                                   HomeHealthRecordValidatorIF validator,
                                   int[] points)
This scores the remaining clinical variables. Pseudo code lines: 1764 thru 1833

Parameters:
record -
validator -
points -
Returns:

populateCodes

public void populateCodes(HomeHealthRecordIF record)
This populates the record with all Diagnosis codes that are valid for this grouper version that are listed on the record. Codes that are found are marked as Valid, otherwise the code is mark as not Valid, and not Valid for scoring. This method should be called prior to scoring the

Specified by:
populateCodes in interface HomeHealthScoringModelIF
Parameters:
record -

getName

public java.lang.String getName()
Gets the name of this scoring module

Specified by:
getName in interface Namable
Returns:
The name of this scoring model

setName

public void setName(java.lang.String arg0)
This method does nothing - the name can not be reset

Specified by:
setName in interface Namable
Parameters:
arg0 -

getCaseMixAdjustmentEquation

public int getCaseMixAdjustmentEquation(int caseMixId)
This gets the Case Mix Adjustment table value, by essentially getting the caseMixId (i.e. row) and the equation and returning the value.

Parameters:
caseMixId -
Returns:
the adjustment or 0 if the case mix id is not found, or the adjustment value is blank

getDiagnosisCode

protected Icd9DiagnosisCodeIF getDiagnosisCode(java.lang.String codeValue)
Gets an NRS related Diagnosis code.

Parameters:
codeValue -
Returns:
the Icd9Code with its value being codeValue. If the code is not valid (found for this version), then the Invalid flag will be set to true and all other information about the code will be meaninless. This method should never return null.

getGrouper

public HomeHealthGrouperIF getGrouper()
Gets the Grouper reference

Specified by:
getGrouper in interface HomeHealthScoringModelIF
Returns:
reference to the grouper this model belongs to

setGrouper

public void setGrouper(HomeHealthGrouperIF grouper)
Sets the reference to the Grouper this model belongs to

Specified by:
setGrouper in interface HomeHealthScoringModelIF
Parameters:
grouper -

fireScoringEvent

public void fireScoringEvent(HomeHealthEvent event)
This method, along with the other fire... methods, and a liberal amount of calls to these methods allows a developer to "watch" the scoring process in detail. These are not necessary for actual scoring, but provides an in depth view of the process; helpful for debugging and understanding the scoring process.

Parameters:
event -