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

BDGICE2.m

Go to the documentation of this file.
  1. BDGICE2 ;IHS/OIT/LJF - NEW INCOMPLETE CHART EDIT OPTION
  1. ;;5.3;PIMS;**1004,1006**;MAY 28, 2004
  1. ;IHS/OIT/LJF 09/08/2005 PATCH 1004 New routine
  1. ; 07/05/2006 PATCH 1006 add back ability to edit discharge/surgery dates
  1. ;
  1. PAT ; ask user for patient
  1. NEW DFN D KILL^AUPNPAT
  1. S DFN=+$$READ^BDGF("PO^2:EMQZ","Select Patient") Q:DFN<1
  1. ;
  1. ; set variable so all deficiencies are shown
  1. NEW BDGDFALL S BDGDFALL=1
  1. ;
  1. ; find all entries in IC file for patient (including deleted ones)
  1. NEW BDGN,COUNT,BDGA,I
  1. S BDGN=0
  1. F S BDGN=$O(^BDGIC("B",DFN,BDGN)) Q:'BDGN D
  1. . S COUNT=$G(COUNT)+1,BDGA(COUNT)=BDGN
  1. ;
  1. ; display results of search for patient IC entries
  1. I '$D(BDGA) D ADD,PAT Q
  1. ;
  1. W !!,"Incomplete Chart Entries for "_$$GET1^DIQ(2,DFN,.01)_":"
  1. F I=1:1 Q:'$D(BDGA(I)) D
  1. . W !,$J(I,3),?6,$$GET1^DIQ(9009016.1,BDGA(I),.02),$$GET1^DIQ(9009016.1,BDGA(I),.05) ;discharge or surgery date
  1. . W ?30,$$GET1^DIQ(9009016.1,BDGA(I),.0392) ;type of visit
  1. . I $$GET1^DIQ(9009016.1,BDGA(I),.14)]"" W " **COMPLETED**"
  1. . I $$GET1^DIQ(9009016.1,BDGA(I),.17)]"" W " **DELETED**"
  1. W !,$J(I,3),?6,"ADD NEW ENTRY"
  1. D ASK I '$G(BDGN) D PAT Q
  1. D EN,PAT
  1. Q
  1. ;
  1. ASK ; process IC entry selection
  1. NEW PROMPT,Y
  1. S PROMPT="Select Discharge"_$S($$DSOKAY:"/Day Surgery",1:"")_" Date"
  1. S Y=$$READ^BDGF("NO^1:"_(COUNT+1),PROMPT) Q:Y<1
  1. I Y=(COUNT+1) D ADD Q
  1. S BDGN=BDGA(Y)
  1. I $$GET1^DIQ(9009016.1,BDGN,.17)]"",'$D(^XUSEC("DGZICE",DUZ)) W !!,"Only supervisors can access DELETED entries",! K BDGN D ASK Q
  1. Q
  1. ;
  1. ADD ; -- add new entry
  1. NEW Y,DIC,DA,DR,X,DD,DO,DLAYGO
  1. S Y=1
  1. I $$DSOKAY S Y=$$READ^BDGF("SO^1:Inpatient/Observation;2:Day Surgery","Select TYPE of Visit to Add") Q:Y<1
  1. S DIC="^BDGIC(",DIC(0)="L",DLAYGO=9009016.1,X=DFN
  1. S APCDOVRR=1
  1. I Y=1 S DIC("DR")=".02R;.03R;.04R" ;inpt/obser
  1. I Y=2 S DIC("DR")=".05R;.03R;.04R" ;ds
  1. D FILE^DICN Q:Y<1
  1. K APCDOVRR
  1. ;
  1. S BDGN=+Y
  1. D EN
  1. Q
  1. ;
  1. EN ;EP; -- main entry point for BDG IC EDIT
  1. ; called with DFN and BDGN set
  1. NEW VALMCNT D TERM^VALM0,CLEAR^VALM1
  1. D EN^VALM("BDG IC EDIT")
  1. D CLEAR^VALM1
  1. Q
  1. ;
  1. HDR ;EP; -- header code
  1. NEW X
  1. S X=$$PAD($G(IORVON)_$$GET1^DIQ(2,+$G(DFN),.01)_$G(IORVOFF),35)_"#"_$$HRCN^BDGF2(+$G(DFN),DUZ(2))
  1. S X=$$PAD(X,50)_"Insurance: "_$$GET1^DIQ(9009016.1,+$G(BDGN),.0391)
  1. S VALMHDR(1)=X
  1. ;
  1. S X="Category: "_$G(IORVON)_$$GET1^DIQ(9009016.1,+$G(BDGN),.0392)_$G(IORVOFF)
  1. S X=$$PAD(X,35)_"Service: "_$$GET1^DIQ(9009016.1,+$G(BDGN),.04)
  1. S VALMHDR(2)=X
  1. Q
  1. ;
  1. INIT ;EP; -- init variables and list array
  1. NEW CATG,LINE,FIELD,ITEM,X
  1. S VALMCNT=0 K ^TMP("BDGICE",$J)
  1. S CATG=$$GET1^DIQ(9009016.1,BDGN,.0392) ;service category
  1. S LINE=$$PAD($S(CATG="DAY SURGERY":"Visit",1:"Admit")_" Date/Time:",30)
  1. S LINE=LINE_$$GET1^DIQ(9009016.1,BDGN,.03)
  1. D SET(LINE,.VALMCNT)
  1. S LINE=$$PAD($S(CATG="DAY SURGERY":"Surgery",1:"Discharge")_" Date:",30)
  1. S LINE=LINE_$$GET1^DIQ(9009016.1,BDGN,$S(CATG="DAY SURGERY":.05,1:.02))
  1. D SET(LINE,.VALMCNT),SET("",.VALMCNT)
  1. ;
  1. F ITEM=202:1:208 D
  1. . I ITEM=207 D ;display required date completed field
  1. . . S LINE=$$PAD($$LABEL(.14)_":",30)_$$GET1^DIQ(9009016.1,BDGN,.14)
  1. . . D SET(LINE,.VALMCNT)
  1. . ;
  1. . Q:$$GET1^DIQ(9009020.1,$$DIV^BSDU,ITEM)'="YES" ;date not used
  1. . ;
  1. . S FIELD=$P($T(FIELDS+(ITEM-200)),";;",2) ;get corresponding field number
  1. . S LINE=$$PAD($$LABEL(FIELD)_":",30)_$$GET1^DIQ(9009016.1,BDGN,FIELD)
  1. . I (ITEM=206)!(ITEM=207) S LINE=$$PAD(LINE,47)_" By "_$$GET1^DIQ(9009016.1,BDGN,$S(ITEM=206:.22,1:.23))
  1. . D SET(LINE,.VALMCNT)
  1. ;
  1. ; if chart deleted, display deletion date
  1. S X=$$GET1^DIQ(9009016.1,BDGN,.17) I X]"" D
  1. . S LINE=$$PAD($$LABEL(.17)_":",30)_$$GET1^DIQ(9009016.1,BDGN,.17)
  1. . D SET(LINE,.VALMCNT)
  1. ;
  1. ; display comments
  1. S LINE=$$PAD($$LABEL(.18)_":",10)_$$GET1^DIQ(9009016.1,BDGN,.18)
  1. D SET("",.VALMCNT),SET(LINE,.VALMCNT),SET("",.VALMCNT)
  1. ;
  1. ; display pending provider deficiencies
  1. K ^TMP("BDGICE2",$J) NEW BDGN1,IENS,PROV,PROVN
  1. D SET($$PAD($$PAD("Provider",25)_"Deficiencies",60)_"Status",.VALMCNT)
  1. D SET($$REPEAT^XLFSTR("=",75),.VALMCNT)
  1. ;
  1. S BDGN1=0 F S BDGN1=$O(^BDGIC(BDGN,1,BDGN1)) Q:'BDGN1 D
  1. . S IENS=BDGN1_","_BDGN
  1. . I '$G(BDGDFALL),$$GET1^DIQ(9009016.11,IENS,.03)]"" Q ;skip if resolved & not displaying all
  1. . I '$G(BDGDFALL),$$GET1^DIQ(9009016.11,IENS,.04)]"" Q ;skip if deleted & not displaying all
  1. . ;
  1. . S PROV=$$GET1^DIQ(9009016.11,IENS,.01,"I") ;provider IEN
  1. . S PROVN=$$GET1^DIQ(9009016.11,IENS,.01) ;provider name
  1. . ;
  1. . S LINE=$$PAD($E(PROVN,1,22),25)_$$GET1^DIQ(9009016.11,IENS,.02) ;provider & deficiency
  1. . S LINE=$$PAD(LINE,60)_$$GET1^DIQ(9009016.11,IENS,.0393) ;resolution status
  1. . S ^TMP("BDGICE2",$J,PROVN,PROV,BDGN1)=LINE
  1. . ;
  1. . S X=$$GET1^DIQ(9009016.11,IENS,.06) I X]"" S ^TMP("BDGICE2",$J,PROVN,PROV,BDGN1,"C")=$$SP(10)_"Comments: "_X ;comments
  1. ;
  1. S PROVN=0 F S PROVN=$O(^TMP("BDGICE2",$J,PROVN)) Q:PROVN="" D
  1. . S PROV=0 F S PROV=$O(^TMP("BDGICE2",$J,PROVN,PROV)) Q:'PROV D
  1. . . S BDGN1=0 F S BDGN1=$O(^TMP("BDGICE2",$J,PROVN,PROV,BDGN1)) Q:'BDGN1 D
  1. . . . D SET(^TMP("BDGICE2",$J,PROVN,PROV,BDGN1),.VALMCNT)
  1. . . . I $D(^TMP("BDGICE2",$J,PROVN,PROV,BDGN1,"C")) D SET(^TMP("BDGICE2",$J,PROVN,PROV,BDGN1,"C"),.VALMCNT)
  1. ;
  1. I '$D(^TMP("BDGICE2",$J)),'$G(BDGDFALL) D SET($$SP(5)_"NO PENDING DEFICIENCIES FOUND",.VALMCNT)
  1. I '$D(^TMP("BDGICE2",$J)),$G(BDGDFALL) D SET($$SP(5)_"NO DEFICIENCIES ON RECORD",.VALMCNT)
  1. D SET("",.VALMCNT)
  1. Q
  1. ;
  1. SET(DATA,COUNT) ; stuff data into display lie
  1. S COUNT=COUNT+1
  1. S ^TMP("BDGICE",$J,COUNT,0)=DATA
  1. Q
  1. ;
  1. HELP ;EP; -- help code
  1. S X="?" D DISP^XQORM1 W !!
  1. Q
  1. ;
  1. EXIT ;EP; -- exit code
  1. K ^TMP("BDGICE",$J),^TMP("BDGICE2",$J)
  1. K BDGDFALL,BDGN
  1. Q
  1. ;
  1. EXPND ; -- expand code
  1. Q
  1. ;
  1. REBUILD ; EP; rebuild display
  1. ; Called by BDG ICE VIEW ALL and BDG ICE VIEW PENDING protocols
  1. D TERM^VALM0
  1. D HDR,INIT
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. TDATES ; EP; edit tracking dates - called by BDG ICE DATES
  1. D FULL^VALM1 NEW ITEM,FIELD,DIE,DA,DR,Y
  1. S DIE="^BDGIC(",DA=BDGN
  1. L +^BDGIC(BDGN):1 I '$T D MSG^BDGF("Another person is editing this entry!",2,0) D PAUSE^BDGF,REBUILD Q
  1. F ITEM=202:1:208 D Q:$D(Y)
  1. . I ITEM=207 D ;edit date completed field only if already answered
  1. . . Q:$$GET1^DIQ(9009016.1,BDGN,.14)="" S DR=".14" D ^DIE Q:$D(Y)
  1. . ;
  1. . Q:$$GET1^DIQ(9009020.1,$$DIV^BSDU,ITEM)'="YES" ;date not used
  1. . S DR=$P($T(FIELDS+(ITEM-200)),";;",2) ;get corresponding field number
  1. . I (ITEM=206)!(ITEM=207) S DR=DR_";"_$S(ITEM=206:.22,1:.23) ;coded by/bill prepped by
  1. . D ^DIE
  1. ;
  1. I $$GET1^DIQ(9009016.1,BDGN,.17)]"" S DR=.17 D ^DIE
  1. ;
  1. L -^BDGIC(BDGN)
  1. D REBUILD
  1. Q
  1. ;
  1. VDATE ; EP; fix visit link - called by BDG ICE FIX VISIT protocol
  1. NEW APCDOVRR,DIE,DA,DR
  1. D FULL^VALM1 S APCDOVRR=1
  1. S DIE="^BDGIC(",DR=".03",DA=BDGN
  1. ;
  1. ;IHS/OIT/LJF 07/05/2006 PATCH 1006
  1. NEW CATG S CATG=$$GET1^DIQ(9009016.1,BDGN,.0392) ;service category
  1. S DR=DR_";"_$S(CATG="DAY SURGERY":.05,1:.02)
  1. ;
  1. D ^DIE,PAUSE^BDGF,REBUILD
  1. Q
  1. ;
  1. COMMENT ; EP; edit comments - called by BDG ICE COMMENTS protocol
  1. D FULL^VALM1 NEW DIE,DA,DR
  1. S DIE="^BDGIC(",DR=".18",DA=BDGN
  1. D ^DIE,REBUILD
  1. Q
  1. ;
  1. ADDDEF ; EP; add chart deficiences - called by BDG ICE ADD DEF protocol
  1. NEW PROV,BDGDEF,COUNT,ACTION,CHOICES,Y,DIE,DR,DA,I,SCREEN,DATE
  1. D FULL^VALM1
  1. L +^BDGIC(BDGN):1 I '$T D MSG^BDGF("Someone Else is editing this record currently",1,1),PAUSE^BDGF Q
  1. S PROMPT="Select PROVIDER",SCREEN="I $D(^XUSEC(""PROVIDER"",+Y))&($P($G(^VA(200,+Y,""PS"")),U,4)="""")"
  1. F D Q:PROV<1
  1. . D MSG^BDGF("",1,0)
  1. . S PROV=+$$READ^BDGF("PO^200:EMQZ",PROMPT,"","",SCREEN)
  1. . Q:PROV<1
  1. . ;
  1. . ; stay in this provider until told to quit
  1. . S QUIT=0 F D Q:QUIT
  1. . . K BDGDEF D FINDDEF(BDGN,PROV) ;build array of deficiencies for provider
  1. . . I '$D(BDGDEF) D ADDMORE(BDGN,PROV) S QUIT=1 Q ;if none yet, go to add mode
  1. . . ;
  1. . . D MSG^BDGF($$SP(5)_"*** "_$$GET1^DIQ(200,PROV,.01)_" Deficiencies ***",2,0)
  1. . . F COUNT=1:1 Q:'$D(BDGDEF(COUNT)) D MSG^BDGF($P(BDGDEF(COUNT),U),1,0) ;display deficiencies
  1. . . ;
  1. . . D MSG^BDGF("",1,0)
  1. . . S ACTION(1)=" 1. ADD New Deficiencies"
  1. . . S ACTION(2)=" 2. EDIT Selected Deficiencies"
  1. . . S ACTION(3)=" 3. CLOSE Selected Deficiencies"
  1. . . S ACTION(4)=" 4. QUIT"
  1. . . S Y=$$READ^BDGF("NO^1:4","Select Action",4,"","",.ACTION) Q:Y<1
  1. . . I Y=4 S QUIT=1 Q
  1. . . I Y=1 D ADDMORE(BDGN,PROV) Q
  1. . . S ACTION=Y
  1. . . ;
  1. . . S CHOICES=$$READ^BDGF("LO^1:"_(COUNT-1),"Select Which Deficiencies to "_$S(ACTION=2:"EDIT",1:"CLOSE"))
  1. . . ;
  1. . . ; close multiple deficiencies
  1. . . I ACTION=3 D Q
  1. . . . S DATE=$$READ^BDGF("DO^::EX","Enter DATE RESOLVED") Q:'DATE
  1. . . . S DIE="^BDGIC("_BDGN_",1,",DR=".03///"_DATE,DA(1)=BDGN
  1. . . . F I=1:1 S DA=$P(CHOICES,",",I) Q:DA="" W !?3,"Closing "_$E($P(BDGDEF(DA),U),5,40) S DA=$P(BDGDEF(DA),U,2) D ^DIE
  1. . . ;
  1. . . ; else edit selected deficiencies
  1. . . S DIE="^BDGIC("_BDGN_",1,",DR=".02;.03;.06;.04;.05",DA(1)=BDGN
  1. . . F I=1:1 S DA=$P(CHOICES,",",I) Q:DA="" D
  1. . . . D MSG^BDGF($P(BDGDEF(DA),U),2,0)
  1. . . . S DA=$P(BDGDEF(DA),U,2)
  1. . . . D ^DIE
  1. L -^BDGIC(BDGN)
  1. D REBUILD
  1. Q
  1. ;
  1. FINDDEF(BDGN,PRV) ; return BDGDEF array with current deficiencies for provider PRV
  1. NEW COUNT,IEN,LINE,IENS
  1. S (IEN,COUNT)=0
  1. F S IEN=$O(^BDGIC(BDGN,1,"B",PROV,IEN)) Q:'IEN D
  1. . S IENS=IEN_","_BDGN
  1. . I '$G(BDGDFALL) Q:$$GET1^DIQ(9009016.11,IENS,.03)]"" ;if not view all mode, don't show resolved ones
  1. . I '$G(BDGDFALL) Q:$$GET1^DIQ(9009016.11,IENS,.04)]"" ;if not view all mode, don't show deleted ones
  1. . S COUNT=COUNT+1
  1. . S LINE=$$PAD($J(COUNT,3),5)_$$GET1^DIQ(9009016.11,IENS,.02) ;def name
  1. . S LINE=$$PAD(LINE,40)_$$GET1^DIQ(9009016.11,IENS,.0393) ;status
  1. . S BDGDEF(COUNT)=LINE_U_IEN
  1. Q
  1. ;
  1. ADDMORE(BDGN,PRV) ; add new deficiencies for provider
  1. NEW DIE,DR,DA,QUIT,DIC,DEF,DLAYGO,Y
  1. I $$GET1^DIQ(9009016.1,BDGN,.14)]"" D MSG^BDGF("Cannot add deficiencies to a COMPLETED chart",1,1),PAUSE^BDGF Q
  1. D MSG^BDGF(" Add Mode for Deficiencies. . .",2,0)
  1. S QUIT=0 F D Q:QUIT
  1. . K DIC S DIC="^BDGCD(",DIC(0)="AEMQZ",DIC("S")="I $P(^BDGCD(+Y,0),U,4)'=""I"""
  1. . D ^DIC S DEF=+Y I Y<1 S QUIT=1 Q
  1. . I $$HAVEDEF(BDGN,PRV,DEF) Q:'$$READ^BDGF("Y","This deficiency already defined for this provider. Do you really want to add it again","NO")
  1. . ;
  1. . Q:'$$READ^BDGF("Y","Okay to add "_Y(0,0)_" for this provider","YES")
  1. . K DIC,DA,DD,DO
  1. . S DIC="^BDGIC("_BDGN_",1,",DA(1)=BDGN,X=PRV,DIC(0)="L"
  1. . S DIC("P")=$P(^DD(9009016.1,1,0),U,2),DLAYGO=9009016.11
  1. . S DIC("DR")=".02///"_DEF
  1. . D FILE^DICN Q:Y=-1
  1. . ;
  1. . S DIE="^BDGIC("_BDGN_",1,",DA(1)=BDGN,DA=+Y,DR=".03;.06" D ^DIE
  1. Q
  1. ;
  1. HAVEDEF(BDGN,PRV,DEF) ;returns 1 if this record & this provider already have this deficincy defined
  1. NEW IEN,FOUND
  1. S (IEN,FOUND)=0 F S IEN=$O(^BDGIC(BDGN,1,"B",PRV,IEN)) Q:'IEN Q:FOUND D
  1. . I $P(^BDGIC(BDGN,1,IEN,0),U,2)=DEF S FOUND=1
  1. Q FOUND
  1. ;
  1. COMPLETE ; EP; mark chart as completed - called by BDG ICE COMPLETE protocol
  1. D FULL^VALM1 NEW DIE,DA,DR
  1. I $$PENDING(BDGN) D Q
  1. . D MSG^BDGF("SORRY, you cannot complete this chart; there are pending deficiences",1,1)
  1. . D PAUSE^BDGF S VALMBCK="R"
  1. S DIE="^BDGIC(",DR=".14",DA=BDGN
  1. D ^DIE,REBUILD
  1. Q
  1. ;
  1. DELETE ; EP; delete chart - in as a mistake - called by BDG ICE DELETE protocol
  1. D FULL^VALM1 NEW DIE,DA,DR
  1. I $$GET1^DIQ(9009016.1,BDGN,.17)="",'$$READ^BDGF("Y","Was this chart entered as a mistake or duplicate","NO") S VALMBCK="R" Q
  1. S DIE="^BDGIC(",DR=".17;.18",DA=BDGN
  1. D ^DIE,REBUILD
  1. Q
  1. ;
  1. PAD(D,L) ; pad length of data
  1. ; -- D=data L=length
  1. Q $E(D_$$REPEAT^XLFSTR(" ",L),1,L)
  1. ;
  1. SP(N) ; pad N number of spaces
  1. Q $$PAD(" ",N)
  1. ;
  1. DSOKAY() ; EP; does site use day surgery?
  1. Q $$GET1^DIQ(9009020.1,$$DIV^BSDU,201,"I")
  1. ;
  1. LABEL(FIELD) ; returns field's title or label
  1. NEW X
  1. S X=$$GET1^DID(9009016.1,FIELD,"","TITLE")
  1. I X="" S X=$$GET1^DID(9009016.1,FIELD,"","LABEL")
  1. Q X
  1. ;
  1. PENDING(IEN) ; return 1 if chart has at least one pending deficiency
  1. NEW IEN2,FOUND,IENS
  1. S (IEN2,FOUND)=0 F S IEN2=$O(^BDGIC(IEN,1,IEN2)) Q:'IEN2 Q:FOUND D
  1. . S IENS=IEN2_","_IEN
  1. . I $$GET1^DIQ(9009016.11,IENS,.03)]"" Q ;skip if resolved
  1. . I $$GET1^DIQ(9009016.11,IENS,.04)]"" Q ;skip if deleted
  1. . S FOUND=1
  1. Q FOUND
  1. ;
  1. FIELDS ;;
  1. ;;
  1. ;;.11;;date received;;
  1. ;;.19;;date tagged;;
  1. ;;.21;;insurance identified;;
  1. ;;.12;;ready to code;;
  1. ;;.13;;coded;;.22;;coded by;;
  1. ;;.15;;bill prep ready;;.23;;bill prep by;;
  1. ;;.16;;date billed;;