- PXRRPASA ;ISL/PKR - Build and sort a list of appointments. ; 6/27/97
- ;;1.0;PCE PATIENT CARE ENCOUNTER;**18**;Aug 12, 1996
- ;
- SORT ;
- N BD,BUSY,CLINIEN,DFN,DONE,ED
- N IC,JC,FAC,FACILITY,FACNAM
- N HLOCIEN,POV,STATUS
- N TEMP
- ;
- ;Allow the task to be cleaned up upon successful completion.
- S ZTREQ="@"
- ;
- I '(PXRRQUE!$D(IO("S"))) D INIT^PXRRBUSY(.BUSY)
- ;
- ;Build a list of hospital locations to be included in the report.
- S TEMP=$P($G(PXRRLCSC),U,1)
- ;
- ;Check for selected hospital locations.
- I TEMP="HS" D
- . F IC=1:1:NHL D
- .. S HLOCIEN=$P(PXRRLCHL(IC),U,2)
- .. S FACILITY=$P(^SC(HLOCIEN,0),U,4)
- .. I $$FACCHECK(FACILITY) D
- ... S ^TMP(PXRRXTMP,$J,"HLOC",FACILITY,HLOCIEN)=""
- ;
- ;Check for selected clinics.
- I TEMP="CS" D
- . S IC=0
- . F S IC=$O(^SC(IC)) Q:+IC=0 D
- .. S DONE=0
- .. S CLINIEN=$P(^SC(IC,0),U,7)
- .. I +CLINIEN>0 D
- ... F JC=1:1:NCS Q:DONE D
- .... I CLINIEN=$P(PXRRCS(JC),U,2) D
- ..... S FACILITY=$P(^SC(IC,0),U,4)
- ..... I $$FACCHECK(FACILITY) S ^TMP(PXRRXTMP,$J,"HLOC",FACILITY,IC)=""
- ..... S DONE=1
- ;
- ;For all hospital locations or clinic stops we have to have
- ;all the locations in the file.
- I (TEMP="HA")!(TEMP="CA") D
- . S IC=0
- . F S IC=$O(^SC(IC)) Q:+IC=0 D
- .. S FACILITY=$P(^SC(IC,0),U,4)
- .. I $$FACCHECK(FACILITY) D
- ... S ^TMP(PXRRXTMP,$J,"HLOC",FACILITY,IC)=""
- ;
- ;Build a list of appointments for each location.
- S FAC=""
- NFAC S FAC=$O(^TMP(PXRRXTMP,$J,"HLOC",FAC))
- I FAC="" G APPDONE
- ;
- S HLOCIEN=""
- NHLOC S HLOCIEN=$O(^TMP(PXRRXTMP,$J,"HLOC",FAC,HLOCIEN))
- I HLOCIEN="" G NFAC
- ;
- ;If this is an interactive session let the user know that something
- ;is happening.
- ;I '(PXRRQUE!$D(IO("S"))) D SPIN^PXRRBUSY("Sorting appointments",.BUSY)
- ;
- ;Check for a user request to stop the task.
- I $$S^%ZTLOAD S ZTSTOP=1 D EXIT^PXRRGUT
- ;
- S BD=PXRRBADT-.0001
- S ED=PXRREADT+.2359
- NDATE S BD=$O(^SC(HLOCIEN,"S",BD))
- ;If we have passed the ending date we are done.
- I (BD>ED)!(BD="") G NHLOC
- ;
- ;If this is an interactive session let the user know that something
- ;is happening.
- I '(PXRRQUE!$D(IO("S"))) D SPIN^PXRRBUSY("Sorting appointments",.BUSY)
- ;
- ;At this point we have an appointment that can be added to the list.
- S IC=0
- F S IC=$O(^SC(HLOCIEN,"S",BD,1,IC)) Q:+IC=0 D
- . S DFN=$P(^SC(HLOCIEN,"S",BD,1,IC,0),U,1)
- . S POV=$P(^DPT(DFN,"S",BD,0),U,7)
- . S STATUS=$P(^DPT(DFN,"S",BD,0),U,2)
- . S ^XTMP(PXRRXTMP,"APPT",FAC,HLOCIEN,DFN,BD)=STATUS_U_POV
- ;
- ;Get the next appointment.
- G NDATE
- ;
- APPDONE ;
- I '(PXRRQUE!$D(IO("S"))) D DONE^PXRRBUSY("done")
- EXIT ;
- K ^TMP(PXRRXTMP)
- ;
- ;Build the list of patient activities.
- I PXRRQUE D
- .;Start the report that was queued but not scheduled.
- . N DESC,ROUTINE,TASK
- . S DESC="Patient Activity Report - patient activities"
- . S ROUTINE="PAT^PXRRPAPI"
- . S ZTDTH=$$NOW^XLFDT
- . S TASK=^XTMP(PXRRXTMP,"PATZTSK")
- . D REQUE^PXRRQUE(DESC,ROUTINE,TASK)
- E D PAT^PXRRPAPI
- Q
- ;
- ;=======================================================================
- FACCHECK(FAC,FACILITY) ;If FAC is on the list of facilities return true.
- N IC,FOUND
- S FOUND=0
- F IC=1:1:NFAC Q:FOUND D
- . I $P(PXRRFAC(IC),U,1)=FAC D
- .. S FOUND=1
- Q FOUND
- ;
- PXRRPASA ;ISL/PKR - Build and sort a list of appointments. ; 6/27/97
- +1 ;;1.0;PCE PATIENT CARE ENCOUNTER;**18**;Aug 12, 1996
- +2 ;
- SORT ;
- +1 NEW BD,BUSY,CLINIEN,DFN,DONE,ED
- +2 NEW IC,JC,FAC,FACILITY,FACNAM
- +3 NEW HLOCIEN,POV,STATUS
- +4 NEW TEMP
- +5 ;
- +6 ;Allow the task to be cleaned up upon successful completion.
- +7 SET ZTREQ="@"
- +8 ;
- +9 IF '(PXRRQUE!$DATA(IO("S")))
- DO INIT^PXRRBUSY(.BUSY)
- +10 ;
- +11 ;Build a list of hospital locations to be included in the report.
- +12 SET TEMP=$PIECE($GET(PXRRLCSC),U,1)
- +13 ;
- +14 ;Check for selected hospital locations.
- +15 IF TEMP="HS"
- Begin DoDot:1
- +16 FOR IC=1:1:NHL
- Begin DoDot:2
- +17 SET HLOCIEN=$PIECE(PXRRLCHL(IC),U,2)
- +18 SET FACILITY=$PIECE(^SC(HLOCIEN,0),U,4)
- +19 IF $$FACCHECK(FACILITY)
- Begin DoDot:3
- +20 SET ^TMP(PXRRXTMP,$JOB,"HLOC",FACILITY,HLOCIEN)=""
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +21 ;
- +22 ;Check for selected clinics.
- +23 IF TEMP="CS"
- Begin DoDot:1
- +24 SET IC=0
- +25 FOR
- SET IC=$ORDER(^SC(IC))
- IF +IC=0
- QUIT
- Begin DoDot:2
- +26 SET DONE=0
- +27 SET CLINIEN=$PIECE(^SC(IC,0),U,7)
- +28 IF +CLINIEN>0
- Begin DoDot:3
- +29 FOR JC=1:1:NCS
- IF DONE
- QUIT
- Begin DoDot:4
- +30 IF CLINIEN=$PIECE(PXRRCS(JC),U,2)
- Begin DoDot:5
- +31 SET FACILITY=$PIECE(^SC(IC,0),U,4)
- +32 IF $$FACCHECK(FACILITY)
- SET ^TMP(PXRRXTMP,$JOB,"HLOC",FACILITY,IC)=""
- +33 SET DONE=1
- End DoDot:5
- End DoDot:4
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +34 ;
- +35 ;For all hospital locations or clinic stops we have to have
- +36 ;all the locations in the file.
- +37 IF (TEMP="HA")!(TEMP="CA")
- Begin DoDot:1
- +38 SET IC=0
- +39 FOR
- SET IC=$ORDER(^SC(IC))
- IF +IC=0
- QUIT
- Begin DoDot:2
- +40 SET FACILITY=$PIECE(^SC(IC,0),U,4)
- +41 IF $$FACCHECK(FACILITY)
- Begin DoDot:3
- +42 SET ^TMP(PXRRXTMP,$JOB,"HLOC",FACILITY,IC)=""
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +43 ;
- +44 ;Build a list of appointments for each location.
- +45 SET FAC=""
- NFAC SET FAC=$ORDER(^TMP(PXRRXTMP,$JOB,"HLOC",FAC))
- +1 IF FAC=""
- GOTO APPDONE
- +2 ;
- +3 SET HLOCIEN=""
- NHLOC SET HLOCIEN=$ORDER(^TMP(PXRRXTMP,$JOB,"HLOC",FAC,HLOCIEN))
- +1 IF HLOCIEN=""
- GOTO NFAC
- +2 ;
- +3 ;If this is an interactive session let the user know that something
- +4 ;is happening.
- +5 ;I '(PXRRQUE!$D(IO("S"))) D SPIN^PXRRBUSY("Sorting appointments",.BUSY)
- +6 ;
- +7 ;Check for a user request to stop the task.
- +8 IF $$S^%ZTLOAD
- SET ZTSTOP=1
- DO EXIT^PXRRGUT
- +9 ;
- +10 SET BD=PXRRBADT-.0001
- +11 SET ED=PXRREADT+.2359
- NDATE SET BD=$ORDER(^SC(HLOCIEN,"S",BD))
- +1 ;If we have passed the ending date we are done.
- +2 IF (BD>ED)!(BD="")
- GOTO NHLOC
- +3 ;
- +4 ;If this is an interactive session let the user know that something
- +5 ;is happening.
- +6 IF '(PXRRQUE!$DATA(IO("S")))
- DO SPIN^PXRRBUSY("Sorting appointments",.BUSY)
- +7 ;
- +8 ;At this point we have an appointment that can be added to the list.
- +9 SET IC=0
- +10 FOR
- SET IC=$ORDER(^SC(HLOCIEN,"S",BD,1,IC))
- IF +IC=0
- QUIT
- Begin DoDot:1
- +11 SET DFN=$PIECE(^SC(HLOCIEN,"S",BD,1,IC,0),U,1)
- +12 SET POV=$PIECE(^DPT(DFN,"S",BD,0),U,7)
- +13 SET STATUS=$PIECE(^DPT(DFN,"S",BD,0),U,2)
- +14 SET ^XTMP(PXRRXTMP,"APPT",FAC,HLOCIEN,DFN,BD)=STATUS_U_POV
- End DoDot:1
- +15 ;
- +16 ;Get the next appointment.
- +17 GOTO NDATE
- +18 ;
- APPDONE ;
- +1 IF '(PXRRQUE!$DATA(IO("S")))
- DO DONE^PXRRBUSY("done")
- EXIT ;
- +1 KILL ^TMP(PXRRXTMP)
- +2 ;
- +3 ;Build the list of patient activities.
- +4 IF PXRRQUE
- Begin DoDot:1
- +5 ;Start the report that was queued but not scheduled.
- +6 NEW DESC,ROUTINE,TASK
- +7 SET DESC="Patient Activity Report - patient activities"
- +8 SET ROUTINE="PAT^PXRRPAPI"
- +9 SET ZTDTH=$$NOW^XLFDT
- +10 SET TASK=^XTMP(PXRRXTMP,"PATZTSK")
- +11 DO REQUE^PXRRQUE(DESC,ROUTINE,TASK)
- End DoDot:1
- +12 IF '$TEST
- DO PAT^PXRRPAPI
- +13 QUIT
- +14 ;
- +15 ;=======================================================================
- FACCHECK(FAC,FACILITY) ;If FAC is on the list of facilities return true.
- +1 NEW IC,FOUND
- +2 SET FOUND=0
- +3 FOR IC=1:1:NFAC
- IF FOUND
- QUIT
- Begin DoDot:1
- +4 IF $PIECE(PXRRFAC(IC),U,1)=FAC
- Begin DoDot:2
- +5 SET FOUND=1
- End DoDot:2
- End DoDot:1
- +6 QUIT FOUND
- +7 ;