com.mmm.cms.homehealth.v0203c
Class GrouperVersion0203cAndPrior

java.lang.Object
  extended by com.mmm.cms.homehealth.HomeHealthEventNotifier
      extended by com.mmm.cms.homehealth.v0203c.GrouperVersion0203cAndPrior
All Implemented Interfaces:
HomeHealthEventNotifierIF, HomeHealthGrouperIF, Describable, Initializable, Namable, java.io.Serializable

public class GrouperVersion0203cAndPrior
extends HomeHealthEventNotifier
implements HomeHealthGrouperIF

This version connects to the older Grouper.DLL, verions 2.03, to score records based on that previous version of the scoring code. The time frame for this Grouper version is July 19, 1999 thru December 31, 2008. However this 2008 overlaps with the newer Java version of the Grouper. No changes have been made to the Grouper.DLL associted with this class. Two DLL are required, the Grouper.DLL and the JavaGrouperConnector.DLL. The Grouper.DLL is the supplied by CMS and is unchanged. The JavaGrouperConnector.DLL is the bridge that takes input from this Java module and communicates with the Grouper.DLL, receiving the resulting score and converting to something compatible with this Java version of the Grouper.

See Also:
Serialized Form

Field Summary
 
Fields inherited from interface com.mmm.cms.homehealth.proto.HomeHealthGrouperIF
DEFAULT_BLANK_VALUE, HH_LOGGER_NAME
 
Constructor Summary
GrouperVersion0203cAndPrior()
          Constructor to initialize the effective dates
 
Method Summary
 HomeHealthRecordValidatorIF getClincalValidator()
          Provides the validator for the Clinical portion of the scoring
 java.lang.String getDescription()
          gets the description of this version
 java.util.Calendar getEffectiveDateStart()
          gets the effective start date
 java.util.Calendar getEffectiveDateThru()
          gets the effective thru date
 java.lang.String getName()
          gets the name of this version
 HomeHealthRecordValidatorIF getNRSValidator()
          Provides the validator for the Non-Routine Supplies portion of the scoring
 java.lang.String getVersion()
          gets the version id
 void init(java.util.Properties arg0)
          There is no initialization for this DLL related version
 boolean isValidDiagnosisCode(HomeHealthRecordIF record, Icd9DiagnosisCodeIF code)
          Determines if the diagnosis code is valid for this version.
 boolean isValidForVersion(HomeHealthRecordIF record)
          Determines if a the record is within the effective dates of this version so that is can be scored.
 HomeHealthRecordValidatorIF populateValdateClinicalCodes(HomeHealthRecordIF record)
          This version is based on the older version DLL and does not contain any validator or record poplations.
 ScoringResultsIF score(HomeHealthRecordIF record, boolean validateDates)
          Scores the record using the classic Grouper.DLL
protected  java.lang.String scoreWithDLL(byte[] oasis)
          Native method to connect to the Grouper.DLL scoring method
 void setDescription(java.lang.String arg0)
          Does nothing - you can't reset the description
 void setName(java.lang.String arg0)
          Does nothing - you can't reset the name
 
Methods inherited from class com.mmm.cms.homehealth.HomeHealthEventNotifier
addEventListener, getEventListeners, getListenerCount, notifyEventListeners, removeEventListener, removeEventListeners
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.mmm.cms.homehealth.proto.HomeHealthEventNotifierIF
addEventListener, getEventListeners, getListenerCount, notifyEventListeners, removeEventListener, removeEventListeners
 

Constructor Detail

GrouperVersion0203cAndPrior

public GrouperVersion0203cAndPrior()
Constructor to initialize the effective dates

Method Detail

getVersion

public java.lang.String getVersion()
gets the version id

Specified by:
getVersion in interface HomeHealthGrouperIF
Returns:
the version id

getEffectiveDateStart

public java.util.Calendar getEffectiveDateStart()
gets the effective start date

Specified by:
getEffectiveDateStart in interface HomeHealthGrouperIF
Returns:
the effective start date - should never be null

getEffectiveDateThru

public java.util.Calendar getEffectiveDateThru()
gets the effective thru date

Specified by:
getEffectiveDateThru in interface HomeHealthGrouperIF
Returns:
the effective thru date - should never be null

isValidForVersion

public boolean isValidForVersion(HomeHealthRecordIF record)
                          throws InvalidDateException
Determines if a the record is within the effective dates of this version so that is can be scored. Does not validate the data, just the Date.

Specified by:
isValidForVersion in interface HomeHealthGrouperIF
Parameters:
record -
Returns:
true if this version can score this record.
Throws:
InvalidDateException

score

public ScoringResultsIF score(HomeHealthRecordIF record,
                              boolean validateDates)
Scores the record using the classic Grouper.DLL

Specified by:
score in interface HomeHealthGrouperIF
Parameters:
record -
validateDates - This parameter is ignore because the DLL for previous grouper versions does not support this.
Returns:
the scoring results for clinical and NRS scores

scoreWithDLL

protected java.lang.String scoreWithDLL(byte[] oasis)
Native method to connect to the Grouper.DLL scoring method

Parameters:
oasis -
Returns:
a String with values in the form of HIPPS,OASIS,VERSION,FLAG

isValidDiagnosisCode

public boolean isValidDiagnosisCode(HomeHealthRecordIF record,
                                    Icd9DiagnosisCodeIF code)
Determines if the diagnosis code is valid for this version. Used mostly for debugging.

Specified by:
isValidDiagnosisCode in interface HomeHealthGrouperIF
Parameters:
record -
code -
Returns:
true if the diagnosis code is part of the valid list of code

populateValdateClinicalCodes

public HomeHealthRecordValidatorIF populateValdateClinicalCodes(HomeHealthRecordIF record)
This version is based on the older version DLL and does not contain any validator or record poplations. So, this method does not do anything.

Specified by:
populateValdateClinicalCodes in interface HomeHealthGrouperIF
Parameters:
record -
Returns:
Always null

getName

public java.lang.String getName()
gets the name of this version

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

setName

public void setName(java.lang.String arg0)
Does nothing - you can't reset the name

Specified by:
setName in interface Namable
Parameters:
arg0 -

getDescription

public java.lang.String getDescription()
gets the description of this version

Specified by:
getDescription in interface Describable
Returns:
The description of this version

setDescription

public void setDescription(java.lang.String arg0)
Does nothing - you can't reset the description

Specified by:
setDescription in interface Describable
Parameters:
arg0 -

init

public void init(java.util.Properties arg0)
          throws java.lang.Exception,
                 java.rmi.RemoteException
There is no initialization for this DLL related version

Specified by:
init in interface Initializable
Parameters:
arg0 -
Throws:
java.lang.Exception
java.rmi.RemoteException

getClincalValidator

public HomeHealthRecordValidatorIF getClincalValidator()
Description copied from interface: HomeHealthGrouperIF
Provides the validator for the Clinical portion of the scoring

Specified by:
getClincalValidator in interface HomeHealthGrouperIF
Returns:
HomeHealthRecordValidatorIF

getNRSValidator

public HomeHealthRecordValidatorIF getNRSValidator()
Description copied from interface: HomeHealthGrouperIF
Provides the validator for the Non-Routine Supplies portion of the scoring

Specified by:
getNRSValidator in interface HomeHealthGrouperIF
Returns:
HomeHealthRecordValidatorIF