Ejemplo n.º 1
0
 public Procedure()
 {
     UnitQty    = 1;
     IcdVersion = PrefC.GetByte(PrefName.DxIcdVersion);
 }
Ejemplo n.º 2
0
        ///<summary>Gets all patplans with DateNextClaims that are today or in the past.</summary>
        public static DataTable GetOutstandingOrtho()
        {
            if (RemotingClient.RemotingRole == RemotingRole.ClientWeb)
            {
                return(Meth.GetTable(MethodBase.GetCurrentMethod()));
            }
            if (DataConnection.DBtype == DatabaseType.Oracle)
            {
                throw new ApplicationException("Currently not Oracle compatible.  Please call support.");
            }
            byte        orthoMonthsTreat         = PrefC.GetByte(PrefName.OrthoDefaultMonthsTreat);
            long        orthoDefaultAutoCodeNum  = PrefC.GetLong(PrefName.OrthoAutoProcCodeNum);
            List <long> listOrthoBandingCodeNums = ProcedureCodes.GetOrthoBandingCodeNums();
            string      command = @"
				SELECT CONCAT(patient.LName,', ', patient.FName) Patient, 
					patient.PatNum,
					carrier.CarrierName,
					patplan.OrthoAutoNextClaimDate, 
					IF(patientnote.OrthoMonthsTreatOverride=-1,
						"                         + orthoMonthsTreat + @",
						patientnote.OrthoMonthsTreatOverride) MonthsTreat,
					patclaims.LastSent, 
					patclaims.NumSent,
					IF(insplan.OrthoAutoProcCodeNumOverride = 0, 
						"                         + orthoDefaultAutoCodeNum + @",
						insplan.OrthoAutoProcCodeNumOverride) AS AutoCodeNum,
					banding.DateBanding,
					banding.ProvNum,
					banding.ClinicNum,
					patplan.PatPlanNum,
					inssub.InsSubNum,
					insplan.PlanNum
				FROM patplan 
				INNER JOIN inssub ON inssub.InsSubNum = patplan.InsSubNum
				INNER JOIN insplan ON insplan.PlanNum = inssub.PlanNum
					AND insplan.OrthoType = "                     + POut.Int((int)OrthoClaimType.InitialPlusPeriodic) + @"
				INNER JOIN carrier ON carrier.CarrierNum = insplan.CarrierNum
				INNER JOIN patient ON patient.PatNum = patplan.PatNum
				LEFT JOIN patientnote ON patientnote.PatNum = patient.PatNum
				LEFT JOIN (
					SELECT MAX(claim.DateSent) LastSent, COUNT(claim.ClaimNum) NumSent, claim.PatNum, claim.InsSubNum, procedurelog.CodeNum
					FROM claim
					INNER JOIN claimproc ON claimproc.ClaimNum = claim.ClaimNum
					INNER JOIN insplan ON claim.PlanNum = insplan.PlanNum
					INNER JOIN procedurelog ON procedurelog.ProcNum = claimproc.ProcNum
						AND procedurelog.CodeNum = 
							IF(insplan.OrthoAutoProcCodeNumOverride = 0, 
							"                             + orthoDefaultAutoCodeNum + @",
							insplan.OrthoAutoProcCodeNumOverride)
					WHERE claim.ClaimStatus IN ('S','R')
					GROUP BY claim.PatNum, claim.InsSubNum
				)patclaims ON patclaims.PatNum = patplan.PatNum 
					AND patclaims.InsSubNum = patplan.InsSubNum
				LEFT JOIN (
					SELECT procedurelog.PatNum, MIN(procedurelog.ProcDate) AS DateBanding, procedurelog.ProvNum, procedurelog.ClinicNum
					FROM procedurelog "                    ;

            if (listOrthoBandingCodeNums.Count == 0)           //The first rendition of ortho auto codes looked for hard coded D codes.
            {
                command += @"INNER JOIN procedurecode ON procedurecode.CodeNum = procedurelog.CodeNum
					AND(procedurecode.ProcCode LIKE 'D8080%' OR procedurecode.ProcCode LIKE 'D8090%') "                    ;
            }
            command += @"WHERE procedurelog.ProcStatus = " + POut.Int((int)ProcStat.C) + " ";
            if (listOrthoBandingCodeNums.Count > 0)
            {
                command += @"AND procedurelog.CodeNum IN ( " + String.Join(",", listOrthoBandingCodeNums) + @") ";
            }
            command += @"	GROUP BY procedurelog.PatNum
				)banding ON banding.PatNum = patplan.PatNum
				WHERE (patplan.OrthoAutoNextClaimDate > "                 + POut.Date(new DateTime(1880, 1, 1)) + " AND patplan.OrthoAutoNextClaimDate <= " + DbHelper.Curdate() + @")
				AND patplan.Ordinal IN (1,2) "                ;
            //TODO: Consider the edge case where an office falls behind and the patient really needs to create multiple claims.
            //E.g. NextClaimDate = 11/01/2016, today is 12/16/2016, this query would only show the Nov. row, but needs to also show a row for 12/01/2016.
            return(Db.GetTable(command));
        }