- PXRMARCH ;SLC/PKR/BNT - Clinical Reminder ARCH routines. ;12/09/2011
- ;;2.0;CLINICAL REMINDERS;**20,23**;Feb 04, 2005;Build 3
- ;==========================================================
- ELIG(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,DATA,TEXT) ;Multiple occurrence
- ;computed finding for ARCH eligibility.
- N ARCHDATA,IND,SDIR
- ;DBIA #5619
- S IND=$$ELIG^FBARCH0(DFN,BDT,EDT,.ARCHDATA)
- S SDIR=$S(NGET<0:-1,1:1)
- S NGET=$S(NGET<0:-NGET,1:NGET)
- S IND="",NFOUND=0
- F S IND=$O(ARCHDATA(IND),SDIR) Q:(IND="")!(NFOUND=NGET) D
- . S NFOUND=NFOUND+1
- . S TEST(NFOUND)=$P(ARCHDATA(IND),U,1)
- . S DATE(NFOUND)=$P(ARCHDATA(IND),U,2)
- . S TEXT(NFOUND)=""
- Q
- ;
- ;==========================================================
- LIST(NGET,BDT,EDT,PLIST,PARAM) ;List computed finding for building a list
- ;of ARCH eligible patients.
- N CNT,DATE,DFN,IND,NL,TEMP
- ;DBIA #5619
- S NL=$$LIST^FBARCH0(BDT,EDT)
- F IND=1:1:NL D
- . S TEMP=^TMP($J,"ARCHFEE",IND)
- .;Check eligibility.
- . I '$P(TEMP,U,2) Q
- . S DFN=$P(TEMP,U,1),DATE=$P(TEMP,U,3)
- . S ^TMP($J,"TLIST",DFN,DATE)=""
- S DFN=""
- F S DFN=$O(^TMP($J,"TLIST",DFN)) Q:DFN="" D
- . S CNT=0,DATE=""
- . F S DATE=$O(^TMP($J,"TLIST",DFN,DATE)) Q:(DATE="")!(CNT=NGET) D
- .. S CNT=CNT+1,^TMP($J,PLIST,DFN,CNT)=U_DATE
- K ^TMP($J,"ARCHFEE"),^TMP($J,"TLIST")
- Q
- ;
- ;==========================================================
- ISDUE(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,DATA,TEXT) ;Multiple occurrence
- ; computed finding for a Project ARCH Reminder Custom Date Due.
- ; The $$GETDELAY^FBARCH0 API returns a site defined numeric value that represents
- ; the number of days to delay the reminder from being due again after
- ; being declined or refused through one of the related health factors.
- ;
- ; $$GETDELAY^FBARCH0 Supported by IA 5619
- ;
- N X,HFID,ARCHVHF,ARCHDLAY
- S NFOUND=1
- S ARCHDLAY=$$GETDELAY^FBARCH0()
- S ARCHVHF($P($$NOW^PXRMDATE(),"."))=""
- ; Get DECLINES and REFUSES Health Factor ID and last date created
- F X="DECLINES","REFUSES" S HFID=$O(^AUTTHF("B","ARCH-SERVICE NEEDED THIS VISIT "_X,0)) D
- . Q:'$D(^PXRMINDX(9000010.23,"PI",DFN,HFID))
- . ; Get date and add delay value
- . S ARCHVHF($$FMADD^XLFDT($P($O(^PXRMINDX(9000010.23,"PI",DFN,HFID," "),-1),"."),ARCHDLAY))=""
- S TEST(NFOUND)=1
- S TEXT(NFOUND)=""
- S DATE(NFOUND)=$O(ARCHVHF(" "),-1)
- Q
- ;
- PXRMARCH ;SLC/PKR/BNT - Clinical Reminder ARCH routines. ;12/09/2011
- +1 ;;2.0;CLINICAL REMINDERS;**20,23**;Feb 04, 2005;Build 3
- +2 ;==========================================================
- ELIG(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,DATA,TEXT) ;Multiple occurrence
- +1 ;computed finding for ARCH eligibility.
- +2 NEW ARCHDATA,IND,SDIR
- +3 ;DBIA #5619
- +4 SET IND=$$ELIG^FBARCH0(DFN,BDT,EDT,.ARCHDATA)
- +5 SET SDIR=$SELECT(NGET<0:-1,1:1)
- +6 SET NGET=$SELECT(NGET<0:-NGET,1:NGET)
- +7 SET IND=""
- SET NFOUND=0
- +8 FOR
- SET IND=$ORDER(ARCHDATA(IND),SDIR)
- IF (IND="")!(NFOUND=NGET)
- QUIT
- Begin DoDot:1
- +9 SET NFOUND=NFOUND+1
- +10 SET TEST(NFOUND)=$PIECE(ARCHDATA(IND),U,1)
- +11 SET DATE(NFOUND)=$PIECE(ARCHDATA(IND),U,2)
- +12 SET TEXT(NFOUND)=""
- End DoDot:1
- +13 QUIT
- +14 ;
- +15 ;==========================================================
- LIST(NGET,BDT,EDT,PLIST,PARAM) ;List computed finding for building a list
- +1 ;of ARCH eligible patients.
- +2 NEW CNT,DATE,DFN,IND,NL,TEMP
- +3 ;DBIA #5619
- +4 SET NL=$$LIST^FBARCH0(BDT,EDT)
- +5 FOR IND=1:1:NL
- Begin DoDot:1
- +6 SET TEMP=^TMP($JOB,"ARCHFEE",IND)
- +7 ;Check eligibility.
- +8 IF '$PIECE(TEMP,U,2)
- QUIT
- +9 SET DFN=$PIECE(TEMP,U,1)
- SET DATE=$PIECE(TEMP,U,3)
- +10 SET ^TMP($JOB,"TLIST",DFN,DATE)=""
- End DoDot:1
- +11 SET DFN=""
- +12 FOR
- SET DFN=$ORDER(^TMP($JOB,"TLIST",DFN))
- IF DFN=""
- QUIT
- Begin DoDot:1
- +13 SET CNT=0
- SET DATE=""
- +14 FOR
- SET DATE=$ORDER(^TMP($JOB,"TLIST",DFN,DATE))
- IF (DATE="")!(CNT=NGET)
- QUIT
- Begin DoDot:2
- +15 SET CNT=CNT+1
- SET ^TMP($JOB,PLIST,DFN,CNT)=U_DATE
- End DoDot:2
- End DoDot:1
- +16 KILL ^TMP($JOB,"ARCHFEE"),^TMP($JOB,"TLIST")
- +17 QUIT
- +18 ;
- +19 ;==========================================================
- ISDUE(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,DATA,TEXT) ;Multiple occurrence
- +1 ; computed finding for a Project ARCH Reminder Custom Date Due.
- +2 ; The $$GETDELAY^FBARCH0 API returns a site defined numeric value that represents
- +3 ; the number of days to delay the reminder from being due again after
- +4 ; being declined or refused through one of the related health factors.
- +5 ;
- +6 ; $$GETDELAY^FBARCH0 Supported by IA 5619
- +7 ;
- +8 NEW X,HFID,ARCHVHF,ARCHDLAY
- +9 SET NFOUND=1
- +10 SET ARCHDLAY=$$GETDELAY^FBARCH0()
- +11 SET ARCHVHF($PIECE($$NOW^PXRMDATE(),"."))=""
- +12 ; Get DECLINES and REFUSES Health Factor ID and last date created
- +13 FOR X="DECLINES","REFUSES"
- SET HFID=$ORDER(^AUTTHF("B","ARCH-SERVICE NEEDED THIS VISIT "_X,0))
- Begin DoDot:1
- +14 IF '$DATA(^PXRMINDX(9000010.23,"PI",DFN,HFID))
- QUIT
- +15 ; Get date and add delay value
- +16 SET ARCHVHF($$FMADD^XLFDT($PIECE($ORDER(^PXRMINDX(9000010.23,"PI",DFN,HFID," "),-1),"."),ARCHDLAY))=""
- End DoDot:1
- +17 SET TEST(NFOUND)=1
- +18 SET TEXT(NFOUND)=""
- +19 SET DATE(NFOUND)=$ORDER(ARCHVHF(" "),-1)
- +20 QUIT
- +21 ;