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

IBUCSP.m

Go to the documentation of this file.
  1. IBUCSP ;WOIFO/AAT-URGENT CARE SINGLE PATIENT PROFILE ; 20-FEB-02
  1. ;;2.0;INTEGRATED BILLING;**663,671**;21-MAR-94;Build 13
  1. ;; Per VHA Directive 6402, this routine should not be modified
  1. ;
  1. Q
  1. ;
  1. ENTER ; Entry point for the routine
  1. S:'$D(DTIME) DTIME=300 D HOME^%ZIS
  1. ;
  1. ;
  1. N IBQUIT,POP,IBDFN,IBCLK,IBDT1,IBDT2,IBNOW
  1. F S IBQUIT=0 D Q:IBQUIT
  1. . S IBDFN=$$ASKPAT() I IBDFN=-1 S IBQUIT=1 Q
  1. . ; Ask about beginning and ending date and perform action
  1. . ; No default valies provided
  1. . D DATE I IBDT1<0 Q S IBQUIT=1 Q ;Enter date range (defaults are begin/end of the clock)
  1. . D ASKDEV
  1. Q
  1. ;
  1. ASKDEV ; Ask about output device and print the report (or run task)
  1. N %ZIS
  1. S %ZIS="QM"
  1. W ! D ^%ZIS Q:POP ; Quit and ask for patient again. Otherwise Set IBSTOP=1
  1. ; If it was queued
  1. I $D(IO("Q")) D RUNTASK Q
  1. U IO D REPORT^IBUCSP1 ; Generate report directly
  1. D ^%ZISC ; Close the device
  1. Q
  1. ;
  1. ;
  1. RUNTASK ; Start Taskman job
  1. N ZTRTN,ZTSK,IBVAR,ZTSAVE,ZTDESC
  1. S ZTRTN="REPORT^IBAECP1",ZTDESC="LTC SINGLE PATIENT BILLING PROFILE"
  1. F IBVAR="IBDFN","IBCLK","IBDT1","IBDT2" S ZTSAVE(IBVAR)=""
  1. D ^%ZTLOAD
  1. K IO("Q")
  1. D HOME^%ZIS W !
  1. Q
  1. ;
  1. DATE N %DT,Y,IBDT,IBNOW
  1. DATAGN ;Loop entry point
  1. S IBNOW=$$NOW^IBUCMM
  1. S (IBDT1,IBDT2)=-1
  1. ; Get beginning date
  1. S IBDT1=$$ASKDT("Start YEAR: ",2019)
  1. I IBDT1<1 Q
  1. ; Get ending date
  1. I '$G(IBDT) S IBDT=IBNOW
  1. E I $G(IBDT)>IBNOW S IBDT=IBNOW
  1. S IBDT2=$$ASKDT("Go to YEAR: ",IBDT1)
  1. I IBDT2<1 S IBDT1=-1 Q
  1. I IBDT2<IBDT1 W !,"Ending date must follow start date!",! G DATAGN
  1. Q
  1. ;
  1. ASKDT(IBPRMT,IBDFLT) ;Date input
  1. N DIR,Y,X,DIROUT,DIRUT
  1. I $G(IBPRMT)'="" S DIR("A")=IBPRMT
  1. S DIR("B")=IBDFLT
  1. S DIR(0)="F^4:4:K:X'?4N X"
  1. D ^DIR I $D(DIRUT) Q -1
  1. W " ",Y
  1. Q Y
  1. ;
  1. ;Enter PATIENT NAME
  1. ;Customized dialog (added more explanation on '??' input)
  1. ASKPAT() N DIR,DIC,Y,X,IBDFN
  1. F D Q:$D(DIRUT) Q:Y>0
  1. . S DIR("A")="Select PATIENT NAME"
  1. . S DIR(0)="FO"
  1. . S DIR("?")="Enter '??' to list all LTC Patients"
  1. . S DIR("?",1)="Enter a name of LTC Patient"
  1. . S DIR("?",2)="Answer with PATIENT NAME, or SOCIAL SECURITY NUMBER, or last 4 digits"
  1. . S DIR("?",3)="of SOCIAL SECURITY NUMBER, or first initial of last name with last"
  1. . S DIR("?",4)="4 digits of SOCIAL SECURITY NUMBER"
  1. . S DIR("?",5)=""
  1. . D ^DIR Q:$D(DIRUT)
  1. . S X=Y
  1. . I X?3N1"-"2N1"-"4N.3A S X=$TR(X,"-","") ; Remove dashes from SSN
  1. . S DIC="^DPT(",DIC(0)="QME"
  1. . N DPTNOFZY S DPTNOFZY=1 ;Suppress PATIENT file fuzzy lookups
  1. . D ^DIC Q:Y<1 ; Patient code
  1. . S Y=+$G(Y)
  1. . ;W " " D WRTPAT(Y)
  1. I $D(DIRUT) Q -1
  1. Q +Y
  1. ;
  1. WRTPAT(IBDFN) ; Write patient's data
  1. N IBZ,IBVET,IBSC
  1. S IBZ=$G(^DPT(IBDFN,0)) Q:IBZ="" ""
  1. S IBSC=($P($G(^DPT(IBDFN,3)),U)="Y")
  1. S IBVET=($P($G(^DPT(IBDFN,"VET")),U)="Y")
  1. W $P(IBZ,U)
  1. W " ",?30,$$FMTE^XLFDT($P($P(IBZ,U,3),"."),"5MZ")
  1. W " ",?42,$$SSN($$EXTERNAL^DILFD(2,.09,"",$P(IBZ,U,9)))
  1. W " ",?55,$S(IBVET:$S(IBSC:"S/C",1:"NSC")_" VETERAN",1:"")
  1. W " ",?68,$$FMTE^XLFDT($P($O(^IBA(351.81,"AE",IBDFN,""),-1),"."),"5MZ")
  1. Q
  1. ;
  1. SSN(IBN) ;Format SSN Value
  1. I $L(+IBN)<7 Q IBN
  1. Q $E(IBN,1,3)_"-"_$E(IBN,4,5)_"-"_$E(IBN,6,255)