Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BDGICR1

BDGICR1.m

Go to the documentation of this file.
  1. BDGICR1 ; IHS/ANMC/LJF - INCOMPLETE CHART BY PATIENT ; [ 08/20/2004 11:45 AM ]
  1. ;;5.3;PIMS;**1001,1005**;MAY 28, 2004
  1. ;IHS/ITSC/WAR 07/23/2004 PATCH 1001 added printable date range
  1. ;IHS/ITSC/LJF 08/09/2004 PATCH 1001 combined boservations with day surgery listing
  1. ;IHS/OIT/LJF 02/16/2006 PATCH 1005 added discharge or visit date sort
  1. ; 04/05/2006 PATCH 1005 added new subtotals (by deficiency & coded vs. ready to code)
  1. ;
  1. NEW BDGTYP,DEFAULT,BDGBD,BDGED,BDGSEL,BDGSRT
  1. ;
  1. ;S BDGTYP=$$READ^BDGF("SO^1:Inpatients Only;2:Day Surgeries Only;3:Both","Select Visit Types to Include") Q:BDGTYP<1
  1. S BDGTYP=$$READ^BDGF("SO^1:Inpatients;2:Observations & Day Surgeries;3:All","Select Visit Types to Include") Q:BDGTYP<1 ;IHS/ITSC/LJF 8/9/2004 PATCH #1001
  1. ;
  1. ;S DEFAULT=$S(BDGTYP=1:"Discharge",BDGTYP=2:"Surgery",1:"Discharge/Surgery")
  1. S DEFAULT=$S(BDGTYP=1:"Discharge",1:"Discharge/Surgery") ;IHS/ITSC/LJF 8/9/2004 PATCH #1001
  1. S BDGBD=$$READ^BDGF("DO^::EX","Select Beginning "_DEFAULT_" Date")
  1. Q:BDGBD<1
  1. S BDGED=$$READ^BDGF("DO^::EX","Select Ending "_DEFAULT_" Date")
  1. Q:BDGED<1
  1. ;IHS/ITSC/WAR 7/23/04 PATCH #1001 printable date range
  1. S BDGDTS="from "_$E(BDGBD,4,5)_"/"_$E(BDGBD,6,7)_"/"_($E(BDGBD,1,3)+1700)
  1. S BDGDTS=BDGDTS_" to "_$E(BDGED,4,5)_"/"_$E(BDGED,6,7)_"/"_($E(BDGED,1,3)+1700)
  1. ;End of 7/23/04 PATCH #1001
  1. ;
  1. S BDGSEL=$$SELECT Q:BDGSEL=U
  1. ;
  1. ;IHS/OIT/LJF 02/16/2006 PATCH 1005
  1. ;S BDGSRT=$$READ^BDGF("SO^1:Sort Alphabetically by Name;2:Sort by Terminal Digit","Select Patient Sort") Q:BDGSRT<1
  1. S X=$S(BDGTYP=1:"Discharge",1:"Discharge/Surgery")
  1. S BDGSRT=$$READ^BDGF("SO^1:Sort Alphabetically by Name;2:Sort by Terminal Digit;3:Sort by "_X_" Date","Select Patient Sort") Q:BDGSRT<1
  1. ;
  1. ;IHS/OIT/LJF 04/05/2006 PATCH 1005 add 2 more questions
  1. NEW BDGDEF,BDGRTC
  1. S BDGDEF=$$READ^BDGF("Y","Include COUNTS by CHART DEFICIENCY","NO") Q:BDGDEF=U
  1. S BDGRTC=$$READ^BDGF("Y","Subtotal CODED vs. READY TO CODE","NO") Q:BDGRTC=U
  1. ;
  1. I $$BROWSE^BDGF="B" D EN Q
  1. ;IHS/ITSC/WAR 7/23/04 PATCH #1001 printable date range
  1. ;IHS/OIT/LJF 04/05/2006 PATCH 1005 added BDGDEF & BDGRTC to variable list
  1. ;D ZIS^BDGF("PQM","EN^BDGICR1","IC LIST BY PATIENT","BDGTYP;BDGBD;BDGED;BDGSEL;BDGSRT")
  1. ;D ZIS^BDGF("PQM","EN^BDGICR1","IC LIST BY PATIENT","BDGTYP;BDGBD;BDGED;BDGSEL;BDGSRT;BDGDTS")
  1. D ZIS^BDGF("PQM","EN^BDGICR1","IC LIST BY PATIENT","BDGTYP;BDGBD;BDGED;BDGSEL;BDGSRT;BDGDTS;BDGDEF;BDGRTC")
  1. Q
  1. ;
  1. ;
  1. EN ; -- main entry point for BDG IC CHARTS BY PATIENT
  1. I $E(IOST,1,2)="P-" S BDGPRT=1 D INIT,PRINT Q ;printing to paper
  1. NEW VALMCNT D TERM^VALM0,CLEAR^VALM1
  1. D EN^VALM("BDG IC CHARTS BY PATIENT")
  1. D CLEAR^VALM1
  1. Q
  1. ;
  1. HDR ; -- header code
  1. NEW X
  1. S VALMHDR(1)=$$SP(15)_$$CONF^BDGF
  1. ;
  1. ;IHS/ITSC/LJF 8/9/2004 PATCH #1001
  1. ;S X=$S(BDGTYP=1:"Inpatients Only",BDGTYP=2:"Day Surgeries Only",1:"Inpatients & Day Surgeries")
  1. S X=$S(BDGTYP=1:"Inpatients",BDGTYP=2:"Observations & Day Surgeries",1:"Inpatients, Observations & Day Surgeries")
  1. ;
  1. S X=X_" ("_$P($T(CHOICE+BDGSEL),";;",2)_")" ;chart selection
  1. S VALMHDR(2)=$$SP(75-$L(X)\2)_X
  1. ;IHS/ITSC/WAR 7/23/04 PATCH #1001 NextLine Center printable date range
  1. S VALMHDR(3)=$$SP(75-$L(BDGDTS)\2)_BDGDTS
  1. Q
  1. ;
  1. INIT ; -- init variables and list array
  1. I '$G(BDGPRT) D MSG^BDGF("Please wait while I compile the list...",2,0)
  1. K ^TMP("BDGICR1",$J),^TMP("BDGICR1A",$J)
  1. S VALMCNT=0
  1. ;
  1. ; first find incomplete entries by date range & sort by patient
  1. NEW DATE,END,BDGCNT
  1. S DATE=BDGBD-.0001,END=BDGED+.24
  1. ;I BDGTYP'=1 D FIND("AS" ;gather day surgeries
  1. I BDGTYP'=1 D FIND("AS"),FIND("AD",1) ;gather day surgeries & observations;IHS/ITSC/LJF 8/9/2004 PATCH #1001
  1. I BDGTYP'=2 D FIND("AD") ;gather inpatients
  1. ;
  1. ; now take sorted list and put into display array
  1. ;NEW SORT,IEN,LINE,PRV,NAME
  1. NEW SORT,IEN,LINE,PRV,NAME,IEN2 ;IHS/ITSC/LJF 5/29/2004; PATCH #1001
  1. S SORT=0
  1. F S SORT=$O(^TMP("BDGICR1A",$J,SORT)) Q:SORT="" D
  1. . S IEN=0 F S IEN=$O(^TMP("BDGICR1A",$J,SORT,IEN)) Q:'IEN D
  1. .. ;
  1. .. ; build display line
  1. .. S LINE=$$PAD($$GET1^DIQ(9009016.1,IEN,.01),20) ;patient
  1. .. S LINE=LINE_$J($$GET1^DIQ(9009016.1,IEN,.011),8) ;chart #
  1. .. S LINE=$$PAD(LINE,30)_$$DATES(IEN,1) ;admit/surg date
  1. .. S LINE=$$PAD(LINE,48)_$$WRD(IEN) ;type or ward
  1. .. S LINE=$$PAD(LINE,61)_$$CODE(IEN,1) ;ready to code
  1. .. S LINE=$$PAD(LINE,81)_$$GET1^DIQ(9009016.1,IEN,.0391) ;insurance
  1. .. D SET(LINE,.VALMCNT)
  1. .. ;
  1. .. ; build 2nd line
  1. .. S LINE=$$SP(30)_$$DATES(IEN,2) ;discharge date
  1. .. S LINE=$$PAD(LINE,48)_$$SRV(IEN) ;srv
  1. .. S LINE=$$PAD(LINE,61)_$$CODE(IEN,2) ;date coded
  1. .. S LINE=$$PAD(LINE,81)_$$GET1^DIQ(9009016.1,IEN,.18) ;comments
  1. .. D SET(LINE,.VALMCNT)
  1. .. ;
  1. .. ; now list unresolved deficiencies
  1. .. S PRV=0 F S PRV=$O(^BDGIC(IEN,1,"B",PRV)) Q:'PRV D
  1. ... S IEN2=0 F S IEN2=$O(^BDGIC(IEN,1,"B",PRV,IEN2)) Q:'IEN2 D
  1. .... Q:$$GET1^DIQ(9009016.11,IEN2_","_IEN,.03)]"" ;resolved
  1. .... Q:$$GET1^DIQ(9009016.11,IEN2_","_IEN,.04)]"" ;deleted
  1. .... S LINE=$$SP(81)_$E($$GET1^DIQ(200,PRV,.01),1,18)
  1. .... S LINE=$$PAD(LINE,101)_$$GET1^DIQ(9009016.11,IEN2_","_IEN,.02)
  1. .... D SET($$PAD(LINE,132),.VALMCNT)
  1. .... ;
  1. .... ;IHS/OIT/LJF 04/05/2006 PATCH 1005 count by deficiency
  1. .... I BDGDEF S X=$$GET1^DIQ(9009016.11,IEN2_","_IEN,.02) S BDGDEF(X)=$G(BDGDEF(X))+1
  1. .. ;
  1. .. ;IHS/OIT/LJF 04/05/2006 PATCH 1005 count by coding status
  1. .. I BDGRTC D
  1. ... I $$GET1^DIQ(9009016.1,IEN,.13)]"" S BDGRTC("CODED")=$G(BDGRTC("CODED"))+1
  1. ... E I $$GET1^DIQ(9009016.1,IEN,.12)]"" S BDGRTC("READY TO CODE")=$G(BDGRTC("READY TO CODE"))+1
  1. ... E S BDGRTC("NOT READY")=$G(BDGRTC("NOT READY"))+1
  1. .. ;
  1. .. ;
  1. .. D SET("",.VALMCNT) ;blank line between patient entries
  1. ;
  1. ;IHS/OIT/LJF 04/05/2006 PATCH 1005 display subtotals
  1. ;I $G(BDGCNT)>0 D SET("TOTAL INCOMPLETE CHARTS: "_BDGCNT,.VALMCNT)
  1. I $G(BDGCNT)>0 D
  1. . D SET("TOTAL INCOMPLETE CHARTS: "_BDGCNT,.VALMCNT)
  1. . I BDGDEF D D SET("",.VALMCNT)
  1. .. D SET(" SUBCOUNTS BY DEFICIENCY:",.VALMCNT)
  1. .. I $O(BDGDEF(0))="" D SET($$SP(5)_"NO DEFICIENCIES FOUND",.VALMCNT)
  1. .. S X=0 F S X=$O(BDGDEF(X)) Q:X="" D SET($$SP(5)_$$PAD(X,32)_BDGDEF(X),.VALMCNT)
  1. . I BDGRTC D
  1. .. D SET(" SUBCOUNTS BY CODING STATUS",.VALMCNT)
  1. .. F I="CODED","READY TO CODE","NOT READY" D SET($$SP(5)_$$PAD(I,20)_(+$G(BDGRTC(I))),.VALMCNT)
  1. ;IHS/OIT/LJF 04/05/2006 end of PATCH 1005 changes
  1. ;
  1. I '$D(^TMP("BDGICR1",$J)) D SET("NO DATA FOUND",.VALMCNT)
  1. K ^TMP("BDGICR1A",$J)
  1. Q
  1. ;
  1. FIND(SUB,OBS) ; find all inpatient entries for date range
  1. ; SUB=subscript depending on visit type
  1. ; OBS=1 if looking for observation patients; optional ;IHS/ITSC/LJF 8/9/2004 PATCH #1001
  1. NEW DATE,END,IEN,SORT
  1. S DATE=BDGBD-.0001,END=BDGED+.24
  1. F S DATE=$O(^BDGIC(SUB,DATE)) Q:'DATE Q:(DATE>END) D
  1. . S IEN=0 F S IEN=$O(^BDGIC(SUB,DATE,IEN)) Q:'IEN D
  1. .. ;
  1. .. I $G(OBS),$$GET1^DIQ(9009016.1,IEN,.0392)'="OBSERVATION" Q ;IHS/ITSC/LJF 8/9/2004 PATCH #1001
  1. .. ;
  1. .. ; check entry against user selection
  1. .. K DATA D ENP^XBDIQ1(9009016.1,IEN,".11:.21","DATA(")
  1. .. Q:DATA(.17)]"" ;quit if deleted
  1. .. I BDGSEL'=7 Q:DATA(.14)]"" ;quit if completed
  1. .. I BDGSEL=2 Q:DATA(.11)]"" ;quit if received
  1. .. I BDGSEL=3 Q:DATA(.19)]"" ;quit if tagged
  1. .. I BDGSEL=4 Q:DATA(.21)]"" ;quit if insur iden
  1. .. I BDGSEL=5 Q:DATA(.13)]"" ;quit if coded
  1. .. I BDGSEL=6 Q:DATA(.13)="" ;quit if not coded
  1. .. I BDGSEL=7 Q:DATA(.14)="" Q:DATA(.15)]"" ;quit not in bill p
  1. .. ;
  1. .. ;IHS/OIT/LJF 02/16/2006 PATCH 1005 add date as sort choice
  1. .. ; set sort value to patient name or chart #
  1. .. ;S SORT=$$GET1^DIQ(9009016.1,IEN,$S(BDGSRT=1:.01,1:.011))
  1. .. S SORT=$$GET1^DIQ(9009016.1,IEN,$S(BDGSRT=1:.01,BDGSRT=2:.011,BDGTYP=1:.02,1:.03),$S(BDGSRT=3:"I",1:""))
  1. .. I BDGSRT=3,BDGTYP=2 S SORT=$$GET1^DIQ(9000010,SORT,.01,"I") ;convert visit pointer to date
  1. .. ;
  1. .. I BDGSRT=2 S SORT=$$HRCNT^BDGF2(SORT) ;convert to terminal digit
  1. .. ;
  1. .. S ^TMP("BDGICR1A",$J,SORT,IEN)=""
  1. .. S BDGCNT=$G(BDGCNT)+1
  1. Q
  1. ;
  1. DATES(IEN,NUM) ; return dates for entry
  1. ; NUM=1 for visit date, =2 for discharge date
  1. NEW X
  1. I NUM=2 Q $$NUMDATE^BDGF($$GET1^DIQ(9009016.1,IEN,.02,"I")\1,1)
  1. S X=$$GET1^DIQ(9009016.1,IEN,.03,"I") I 'X Q "??" ;visit ien
  1. Q $$NUMDATE^BDGF($$GET1^DIQ(9000010,X,.01,"I")\1,1) ;visit date
  1. ;
  1. WRD(IEN) ; returns ds type or ward
  1. NEW TYPE,X,DATE,CA,PAT
  1. S TYPE=$$GET1^DIQ(9009016.1,IEN,.0392) ;visit type
  1. ;I TYPE'["HOS" Q $S(TYPE["DAY":"DS",TYPE["OBS":"DSO",1:"??")
  1. I TYPE'["HOS" Q $S(TYPE["DAY":"DS",TYPE["OBS":"OBS",1:"??") ;IHS/ITSC/LJF 8/9/2004 PATCH #1001
  1. ;
  1. ; for inpatients
  1. S V=$$GET1^DIQ(9009016.1,IEN,.03,"I") ;visit
  1. S X=$O(^DGPM("AVISIT",V,0)) I 'X Q "??" ;link to 405
  1. Q $$GET1^DIQ(405,+$$GET1^DIQ(405,X,.17,"I"),200) ;ward at discharge
  1. ;
  1. SRV(IEN) ; returns service
  1. Q $$GET1^DIQ(45.7,+$$GET1^DIQ(9009016.1,IEN,.04,"I"),99)
  1. ;
  1. CODE(IEN,NUM) ; returns ready to code date and date coded
  1. ; NUM=1 for ready to code; =2 for date coded
  1. NEW X,Y
  1. I NUM=1 Q $$NUMDATE^BDGF($$GET1^DIQ(9009016.1,IEN,.12,"I"),1)
  1. Q $$NUMDATE^BDGF($$GET1^DIQ(9009016.1,IEN,.13,"I"),1)
  1. ;
  1. SET(DATA,NUM) ; puts display line into list template array
  1. S NUM=NUM+1
  1. S ^TMP("BDGICR1",$J,NUM,0)=DATA
  1. Q
  1. ;
  1. HELP ; -- help code
  1. S X="?" D DISP^XQORM1 W !!
  1. Q
  1. ;
  1. EXIT ; -- exit code
  1. K ^TMP("BDGICR1",$J) K BDGPRT
  1. Q
  1. ;
  1. EXPND ; -- expand code
  1. Q
  1. ;
  1. PRINT ; print report to paper
  1. NEW BDGX,BDGLN,BDGPG
  1. U IO D INIT^BDGF ;initialize heading variables
  1. D HDG
  1. ;
  1. ; loop thru display array
  1. S BDGX=0 F S BDGX=$O(^TMP("BDGICR1",$J,BDGX)) Q:'BDGX D
  1. . I $Y>(IOSL-4) D HDG
  1. . S BDGLN=^TMP("BDGICR1",$J,BDGX,0)
  1. . W !,BDGLN
  1. D ^%ZISC,PRTKL^BDGF,EXIT
  1. Q
  1. ;
  1. HDG ; heading for paper report
  1. S BDGPG=$G(BDGPG)+1 I BDGPG>1 W @IOF
  1. W !,BDGUSR,?11,"*****",$$CONF^BDGF,"*****"
  1. W !,BDGDATE,?25,"Incomplete Charts by Patient",?70,"Page: ",BDGPG
  1. ;
  1. ;IHS/ITSC/LJF 8/9/2004 PATCH 1001
  1. ;NEW X S X=$S(BDGTYP=1:"Inpatient Charts Only",BDGTYP=2:"Day Surgery Charts Only",1:"Inpatient and Day Surgery Charts")
  1. NEW X S X=$S(BDGTYP=1:"Inpatients",BDGTYP=2:"Observations & Day Surgeries",1:"Inpatients, Observations & Day Surgeries")
  1. ;
  1. S X=X_"("_$P($T(CHOICE+BDGSEL),";;",2)_")"
  1. W !,BDGTIME,?(80-$L(X)\2),X
  1. ;IHS/ITSC/WAR 7/23/04 PATCH #1001 Next line center printable date range
  1. W !,?(80-$L(BDGDTS)\2),BDGDTS
  1. W !,$$REPEAT^XLFSTR("-",80)
  1. W !?2,"Patient",?23,"HRCN",?30,"Admt/Dsch",?45,"Ward/Srv",?60
  1. W "Ready/Coded",?81,"Insurance/Unresolved Deficiencies & Comments"
  1. W !,$$REPEAT^XLFSTR("=",80)
  1. Q
  1. ;
  1. PAD(D,L) ;EP -- SUBRTN to pad length of data
  1. ; -- D=data L=length
  1. Q $E(D_$$REPEAT^XLFSTR(" ",L),1,L)
  1. ;
  1. SP(N) ; -- SUBRTN to pad N number of spaces
  1. Q $$PAD(" ",N)
  1. ;
  1. SELECT() ; ask user to choose selected charts
  1. NEW Y,ARRAY,I
  1. W !!
  1. F I=1:1:7 S ARRAY(I)=" "_I_". "_$P($T(CHOICE+I),";;",2)
  1. S Y=$$READ^BDGF("NO^1:7","Select Charts to Print",1,"","",.ARRAY)
  1. Q Y
  1. ;
  1. CHOICE ;;
  1. ;;All Incomplete Charts;;
  1. ;;Charts Not Yet Received;;
  1. ;;Charts Not Yet Tagged;;
  1. ;;Insurance Not Identified;;
  1. ;;Not Coded (Tagged or Not);;
  1. ;;Coded, Not Completed;;
  1. ;;Completed, In Bill Prep;;