The link to our v38 technical documentation is here: [link]
Please check the FAQ first, it really is a list of answers to our most frequently-asked questions.
Tuesday, October 6, 2020
V38 Released
As of about 9:30 am Eastern on October 6, 2020 we released versions of our products which support v38 of the US federal grouping algorithm, which version went into service on October 1st, 2020.
We were a bit delayed by COVID-19 related issues and an ancient bug in our exclusions loader (there are many new exclusions in this year's version).
For a list of what is new and different in this version, please refer to our latest documentation (link to PDF available on our etail site or this blog's main page).
Friday, April 10, 2020
Lowering AIX Support
Since we do not sell enough of them on-line to warrant putting them on-line every year,
we are dropping the AIX version of DRGFilt. We are still able to produce the product, so
we will be making it an on-demand item for at least the coming year. If you want to purchase
the AIX DRGFilt, you will have to send us an email, probably via this tech blog.
Please note that it may take us up to 5 business days to compile, validate and ship the item after we receive payment for an on-line invoice.
While we are on the topic, we can build DRGFilt for many more Unix systems than we do. Currently we do not charge extra for custom requests, but we reserve the right to do so.
we are dropping the AIX version of DRGFilt. We are still able to produce the product, so
we will be making it an on-demand item for at least the coming year. If you want to purchase
the AIX DRGFilt, you will have to send us an email, probably via this tech blog.
Please note that it may take us up to 5 business days to compile, validate and ship the item after we receive payment for an on-line invoice.
While we are on the topic, we can build DRGFilt for many more Unix systems than we do. Currently we do not charge extra for custom requests, but we reserve the right to do so.
V37b Released (CMS 37.1 R1)
The group responsible for defining the DRGs each year are the Centers for Medicare and Medicaid Services (CMS). They are a part of the US federal government.
Normally, each version DRGs is released on October 1st, the start of their fiscal year. So it was with version 37 on October 1st, 2019. A little while later we followed suit with our implementation of their algorithm.
On April 1st, 2020, CMS 37.1 release 1 (37.1 R1 in their terms) was released in response to the COVID-19 pandemic. This is a link to an AHA article on the subject.
This update also includes provision to support diagnosis of vaping. You can find a CMS bulletin about the support here.
Since this release supercedes v37 and v37a, we are replacing our v37 offerings with their v37b counterparts. For the most part, you can tell the difference by looking at the software's internal version number, which should be reported as "v37b".
However, in order to minimize the pain of upgrading, all the software still expects "v37" as the input and output version numbers and the masks file has the same name. You can tell the difference between the mask files, despite their names, by their md5sum values:
0056716453280971ae09e915fb2c738a drgmasks.v37 <---------v37b
dec337b97acaa2c50fb6738a6727b332 drgmasks.v37.0 <-------v37 & v37a
Any customer who purchased a V37 product will be offered a free upgrade.
Any customer who purchases a V37 product going forward will be v37b.
You can confirm that you are running v37b by using either of the two new diagnosis codes and seeing that they are properly handled:
Normally, each version DRGs is released on October 1st, the start of their fiscal year. So it was with version 37 on October 1st, 2019. A little while later we followed suit with our implementation of their algorithm.
On April 1st, 2020, CMS 37.1 release 1 (37.1 R1 in their terms) was released in response to the COVID-19 pandemic. This is a link to an AHA article on the subject.
This update also includes provision to support diagnosis of vaping. You can find a CMS bulletin about the support here.
Since this release supercedes v37 and v37a, we are replacing our v37 offerings with their v37b counterparts. For the most part, you can tell the difference by looking at the software's internal version number, which should be reported as "v37b".
However, in order to minimize the pain of upgrading, all the software still expects "v37" as the input and output version numbers and the masks file has the same name. You can tell the difference between the mask files, despite their names, by their md5sum values:
0056716453280971ae09e915fb2c738a drgmasks.v37 <---------v37b
dec337b97acaa2c50fb6738a6727b332 drgmasks.v37.0 <-------v37 & v37a
Any customer who purchases a V37 product going forward will be v37b.
You can confirm that you are running v37b by using either of the two new diagnosis codes and seeing that they are properly handled:
Code | Description | CC | MDC | DRGs |
---|---|---|---|---|
U07.0 | Vaping-related disorder | N | 04 | 205, 206 |
U07.1 | COVID-19 | MCC | 04 | 177, 178, 179 |
15 | 791, 793 | |||
25 | 974, 975, 976 |
Thursday, February 6, 2020
Bug Fix For DRGFilt
When validating some of our other software, we discovered a long-standing bug in our DRGFilt product which supports ICD10 codes, both the Linux and Windows implementations. This bug is in versions v33, v34 and v34a, v35 and v35a, v36 and v37.
The patched versions are as follows:
The bug does not affect DRG assignment; it only affects reporting of the DRG weight. Specifically, unpatched executables report the DRG weight as 10 times greater than it is. Thus 1.2345 was reported as 12.3450.
The good news is that if you are using the weights for their usual purpose, predicting relative resource consumption, you code worked because all the weights were increased by the same factor.
The bad news is that the weights were wrong.
Here are the steps we have taken to correct this issue:
The patched versions are as follows:
- v33a
- v34b
- v35b
- v36a
- v37a
The bug does not affect DRG assignment; it only affects reporting of the DRG weight. Specifically, unpatched executables report the DRG weight as 10 times greater than it is. Thus 1.2345 was reported as 12.3450.
The good news is that if you are using the weights for their usual purpose, predicting relative resource consumption, you code worked because all the weights were increased by the same factor.
The bad news is that the weights were wrong.
Here are the steps we have taken to correct this issue:
- We have patched the sources and built new DRGFilt executables: v33a, v34b, v35a, v36a and v37a.
- We have sent updated versions to any and all clients who purchased the buggy products.
- We have updated our on-line store with the new executables.
- We have posted this message on our Tech Blog
- We are updating our QA process to make sure that we do not have weight reporting problems ever again.
Thursday, January 30, 2020
Updated VB.NET Sample Code
We recently had to help a customer get our DLL to work in their VB.Net environment because our sample code was so out of date. In order to spare other customers this pain, we post this code example. Note that this code is for version 37 (v37); change the version to match your particular situation.
Option Explicit On
Imports System.Deployment
Imports System.Runtime.InteropServices
Module Module1
Private Declare Function mhdllver Lib "vbdrgv37.dll" (ByVal Buf As String,
ByVal BufLen As Int32) As Integer
Private Declare Function mhdrg1 Lib "vbdrgv37.dll" (ByRef drg As Int32,
ByVal DRGVersion As String, ByVal MasksPath As String, ByVal DischStat As String,
ByVal PtAge As String, ByVal PtGender As String, ByVal DXList As String,
ByVal ProcList As String, ByVal POAPresent As String, ByVal ExemptFlag As String) As Int32
Private Declare Sub mhinfo Lib "vbdrgv37.dll" (ByVal drg As Int32,
ByVal DRGVersion As String, ByVal MasksPath As String, ByRef mdc As Int32,
ByRef weight As Double, ByRef los As Double, ByVal Desc As String, ByVal DescLen As Int32)
Private Declare Function mhdrgver Lib "vbdrgv37.dll" (ByVal MPath As String,
ByVal Buf As String, ByVal BufLen As Int32) As Int32
Private Declare Sub mherrdesc Lib "vbdrgv37.dll" (ByVal errBuffer As String, ByVal errLength As Int32)
Sub Main()
AssignDRG()
End Sub
Public Function AssignDRG()
Dim ReturnCode As Integer
Dim drg As Int32, mdc As Int32
Dim Desc As String
Dim descLen As Int32
Dim weight As Double, los As Double
Dim masksdir As String
Dim myver As String, mydstat As String, myage As String, mysex As String, myexempt As String, mypoa As String
Dim mydxstring As String
Dim mypxstring As String
Dim pos As Int32
' Hardcoded in this example
masksdir = "C:\Program Files (x86)\MandH\MASKS\" & ControlChars.NullChar
' Ideally, got from registry. Old VB-for-Access example:
' masksdir = QueryValue("Software\MandH\", "BaseDir") & "\Masks\"
myver = "v37e" ' version 37, exempt from HAC rules
mydstat = "1"
myage = "77"
mysex = "1"
mydxstring = "I2119^" ' ^ terminates the string; any of ,|-+ separate fields; ~ is followed by PoA
mypxstring = "02703ZZ^"
mypoa = "N" ' no POA because no HAC rules
myexempt = "X" ' crazy way this works: X = exempt, Z = not exempt
descLen = 80 ' left over from dumb ASCII terminal days; use whatever you like
' these should come back from the DLL call
drg = 0
mdc = 0
weight = 150
los = 10
Desc = Space(descLen)
' confirm which DLL we have loaded
drg = mhdllver(Desc, descLen)
' deal with char ASCIIz (null-terminated string)
pos = InStr(1, Desc, ControlChars.NullChar, CompareMethod.Binary)
Console.WriteLine("DLL Version: " & Desc.Substring(0, pos))
' Assign the DRG for this age, sex, discharge status, exemption, diagnoses and procedures
ReturnCode = mhdrg1(drg, myver, masksdir, mydstat, myage, mysex, mydxstring, mypxstring, mypoa, myexempt)
Console.WriteLine("DLL.mhdrg1 returned RC=" & ReturnCode.ToString)
If ReturnCode = 0 Then
Console.WriteLine("DLL.mhdrg1 returned DRG=" & drg.ToString)
Call mhinfo(drg, myver, masksdir, mdc, weight, los, Desc, descLen)
Console.WriteLine("DLL.mhinfo returned ver=" & myver & " " _
& "MDC=" & mdc.ToString & " " _
& "Weight=" & weight.ToString & " " _
& "LOS=" & los.ToString & " ")
Console.WriteLine("Desc=[" & Desc & "]")
Else
Call mherrdesc(Desc, descLen)
Console.WriteLine("Error: " & Desc)
End If
' Should produce this output:
' DLL Version: mhdrgv37.dll v2.10 (c) 2015 M+H Consulting, LLC: v37
' DLL.mhdrg1 returned RC=0
' DLL.mhdrg1 returned DRG=251
' DLL.mhinfo returned ver=v37e MDC=5 Weight=1.683 LOS=2.2
' Desc=[PERC CARDIOVASC PROC W/O CORONARY ARTERY STENT W/O MCC ]
Return ReturnCode
End Function
End Module
Subscribe to:
Posts (Atom)