- PXRMXSU ; SLC/PJH - Reminder Reports DIC Prompts;01/06/2006
- ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
- ;
- ;Called by PXRMXD
- ;
- ;Exits from SEL subroutine
- QUIT() I $D(DTOUT)!$D(DUOUT) Q 1
- ;Only one entry allowed
- I ONE="D",(CNT>0) Q 1
- ;Mandatory entry
- I Y=-1,(CHECK=3)!(CNT>0) Q 1
- ;Categories may already contain reminders
- I Y=-1,CHECK=2,$D(REMCAT) Q 1
- ;Otherwise
- Q 0
- ;
- ;Repeated Prompt using DIC
- ;-------------------------
- SEL(FILE,MODE,CNT,ARRAY,ONE,CHECK) ;
- ;
- ; ONE = only allows one entry
- ; CHECK = number or null - validation of facility
- ;
- N X,Y,ARRAYN
- K DIROUT,DIRUT,DTOUT,DUOUT
- W !
- F D Q:$$QUIT
- .S DIC=FILE,DIC(0)=MODE
- .; Set up ^DIC("S") for duplicate check
- .S DIC("S")="I '$D(ARRAYN(+Y))"
- .I CHECK=1 D FACT^PXRMXAP
- .I CHECK=2 S DIC("S")=DIC("S")_",'(+$P(^(0),U,6))"
- .I CHECK=3 S DIC("S")=DIC("S")_",$$OK^PXRMXS1(+Y)"
- .I CHECK=4 S DIC("S")=DIC("S")_",$P($G(^PXRMXP(810.5,+Y,30,0)),U,3)>0"
- .I CHECK=5 S DIC("S")=DIC("S")_",$P($G(^OR(100.21,+Y,10,0)),U,3)>0"
- .I CNT>0 S DIC("A")=LIT
- .D ^DIC
- .I X=(U_U) S DTOUT=1
- .I $D(DTOUT)!$D(DUOUT) Q
- .I +Y'=-1 D Q
- ..I $D(ARRAYN(+Y)) W !,"Error - Duplicate entry" Q
- ..S CNT=CNT+1,ARRAY(CNT)=Y_U_Y(0,0)_U_$P(Y(0),U,3)
- ..S ARRAYN(+Y)=""
- .I CNT=0,'$$QUIT W !,LIT1
- .K DIC
- Q
- ;
- ;Establish the LOCATION criteria
- LOC(ADEF,BDEF) ;
- N X,Y,DIR
- LOC0 K DIROUT,DIRUT,DTOUT,DUOUT
- S DIR(0)="S"_U_"HA:All Outpatient Locations;"
- S DIR(0)=DIR(0)_"HAI:All Inpatient Locations;"
- S DIR(0)=DIR(0)_"HS:Selected Hospital Locations;"
- S DIR(0)=DIR(0)_"CA:All Clinic Stops(with encounters);"
- S DIR(0)=DIR(0)_"CS:Selected Clinic Stops;"
- S DIR(0)=DIR(0)_"GS:Selected Clinic Groups;"
- S DIR("A")=ADEF
- S DIR("B")=BDEF
- S DIR("?")="Select from the codes displayed. For detailed help type ??"
- S DIR("??")=U_"D HELP^PXRMXHLP(8)"
- D ^DIR K DIR
- I $D(DIROUT) S DTOUT=1
- I $D(DTOUT)!($D(DUOUT)) Q
- S PXRMLCSC=Y_U_Y(0)
- ;If locations are to be selected individually get the list.
- I Y="HS" D HLOC Q:$D(DTOUT) G:$D(DUOUT) LOC0
- I Y="CS" D CSTOP Q:$D(DTOUT) G:$D(DUOUT) LOC0
- I Y="GS" D CGRP(.PXRMCGRP) Q:$D(DTOUT) G:$D(DUOUT) LOC0
- Q
- ;
- ;Build a list of hospital locations
- HLOC N IEN,SC,X,Y,CHECK
- K DTOUT,DUOUT
- S NHL=0
- S DIC("A")="LOCATION: "
- W !
- F D Q:$D(DTOUT) Q:$D(DUOUT) Q:(Y=-1)&(NHL>0)
- .S DIC="^SC("
- .S DIC(0)="AEQMZ"
- .I NHL>0 S DIC("A")="Select another LOCATION: "
- .D ^DIC
- .I X=(U_U) S DTOUT=1
- .I $D(DTOUT)!($D(DUOUT)) Q
- .I +Y'=-1 D
- ..S IEN=$P(Y,U,1)
- ..;Check Facility code
- ..N FACILITY S FACILITY=$$FACL^PXRMXAP(IEN)
- ..I FACILITY="" W !,"Location has no facility code" Q
- ..I '$D(PXRMFACN(FACILITY)) D Q
- ...W !,"Location has a different facility code" Q
- ..;Check for duplicates
- ..I (NHL>0),$$DUP(IEN,.PXRMLCHL,2) W !,"Error - Duplicate entry" Q
- ..S NHL=NHL+1
- ..;Get the stop code.
- ..S X=$P(^SC(IEN,0),U,7)
- ..S SC="Unknown" I +X>0 S SC=$P(^DIC(40.7,X,0),U,2) ; DBIA #557
- ..I $L(SC)=0 S SC="Unknown"
- ..;Save the external form of the name, then IEN, and the stop code.
- ..S PXRMLCHL(NHL)=$P(Y(0,0),U,1)_U_IEN_U_SC
- ..;Check for mixed inpatient and outpatient locations
- ..I (NHL>1),$D(CHECK)=0 D
- ...Q:'$$LOCN^PXRMXAP(.PXRMLCHL)
- ...W !,"Inpatient and Outpatient locations have been selected"
- ...S CHECK="DONE"
- .K DIC
- .I (NHL=0)&(+Y=-1) W !,"You must select a hospital location!"
- ;
- I $D(DUOUT)!($D(DTOUT)) Q
- ;Sort the hospital location list into alphabetical order.
- S NHL=$$SORT(NHL,"PXRMLCHL",2)
- ;Build array by IEN
- S IC=""
- F S IC=$O(PXRMLCHL(IC)) Q:IC'>0 D
- .S PXRMLOCN($P(PXRMLCHL(IC),U,2))=IC
- Q
- ;---
- FACILITY(SEL) ;Select facility (COPIED EX- PXRR)
- N IC,STATION,X,Y,DIC
- K DIRUT,DTOUT,DUOUT
- S NFAC=0
- S DIC("B")=+$P($$SITE^VASITE,U,3)
- S DIC("A")="Select FACILITY: "
- W !
- F D Q:$D(DTOUT) Q:$D(DUOUT) Q:(Y=-1)&(NFAC>0)
- .S DIC=4
- .S DIC(0)="AEMQZ"
- .I NFAC>0 S DIC("A")="Select another FACILITY: "
- .D ^DIC
- .I X=(U_U) S DTOUT=1
- .I '$D(DTOUT),('$D(DUOUT)),+Y'=-1 D
- ..;Check for duplicates
- ..I (NFAC>0),$$DUP($P(Y,U,1),.PXRMFAC,1) W !,"Error - Duplicate entry" Q
- ..S NFAC=NFAC+1,PXRMFAC(NFAC)=Y_U_Y(0,0)
- .K DIC
- ;
- I $D(DTOUT)!$D(DUOUT) Q
- ;;Save the facility names and station.
- F IC=1:1:NFAC D
- .S X=$P(PXRMFAC(IC),U,1)
- .S STATION=$P($G(^DIC(4,X,99)),U,1)
- .S PXRMFACN(X)=$P(PXRMFAC(IC),U,2)_U_STATION
- ;Sort the facility list into alphabetical order.
- S NFAC=$$SORT(NFAC,"PXRMFAC",2)
- Q
- ; ---
- CGRP(TEMP) ; Clinic Group Selection
- N LIT,LIT1,DIC
- S DIC("A")="Select CLINIC GROUP: ",NOTM=0
- S LIT="Select another CLINIC GROUP: "
- S LIT1="You must select a clinic group!"
- D SEL(409.67,"AEQMZ",.NOTM,.TEMP,"","")
- ;Build array by IEN
- S NCGRP=0 N IC S IC=""
- F S IC=$O(PXRMCGRP(IC)) Q:IC="" D
- .S PXRMCGRN($P(PXRMCGRP(IC),U,1))=IC,NCGRP=IC
- Q
- ; ---
- LIST(TEMP) ; Patient List
- N LIT,LIT1,DIC,NLIST
- S DIC("A")="Select REMINDER PATIENT LIST: ",NLIST=0
- S DIC("?")="Select a patient list to run the reminder report against."
- S LIT="Select another PATIENT LIST: ",LIT1="You must select a list!"
- D SEL(810.5,"AEQMZ",.NLIST,.TEMP,"",4)
- Q
- ;
- ; ---
- PCMM(TEMP) ; PCMM teams
- N LIT,LIT1,DIC
- S DIC("A")="Select PCMM TEAM: ",NOTM=0
- S LIT="Select another PCMM TEAM: ",LIT1="You must select a team!"
- D SEL(404.51,"AEQMZ",.NOTM,.TEMP,"",1)
- Q
- ; ---
- OERR(TEAM) ; OE/RR teams
- N LIT,LIT1,DIC
- S DIC("A")="Select TEAM: ",NOTM=0
- S LIT="Select another TEAM: ",LIT1="You must select a team!"
- D SEL(100.21,"AEQMZ",.NOTM,.TEAM,"",5)
- Q
- ; ---
- RCAT(REMCAT,REM) ;Reminder Category/Reminder selection
- N CAT,DIC,LIT,LIT1,SEQ
- S NCAT=0 K REMCAT,REM
- ;Reminder Category
- RCATS I PXRMREP="S" D Q:$D(DUOUT)!$D(DTOUT)
- .K REMCAT S NCAT=0
- .S DIC("A")="Select a REMINDER CATEGORY: "
- .S LIT="Select another REMINDER CATEGORY: ",LIT1=""
- .D SEL(811.7,"AEQMZ",.NCAT,.REMCAT,PXRMREP,3)
- ;Individual Reminders
- D REM(.REM) Q:$D(DTOUT)
- I $D(DUOUT),PXRMREP="S" G RCATS
- Q
- ; ---
- REM(REM) ;Reminders selection
- N LIT,LIT1,DIC
- K REM S NREM=0
- S DIC("A")="Select individual REMINDER: "
- S LIT="Select another REMINDER: ",LIT1="You must select a reminder!"
- D SEL(811.9,"AEQMZ",.NREM,.REM,PXRMREP,2)
- Q
- ; ---
- PAT(VAR) ; Patient select
- N LIT,LIT1,DIC
- S DIC("A")="Select PATIENT: ",NPAT=0
- S LIT="Select another PATIENT: ",LIT1="You must select a patient!"
- D SEL(2,"AEQMZ",.NPAT,.VAR,"","")
- ;Sort the patient list into ascending order.
- S NPAT=$$SORT(NPAT,"VAR")
- Q
- ; ---
- PROV(PRV) ;Build a list of selected providers.
- N LIT,LIT1,DIC
- S DIC("A")="Select PROVIDER: ",NPRV=0
- S LIT="Select another PROVIDER: ",LIT1="You must select a provider!"
- D SEL(200,"AEQMZ",.NPRV,.PRV,"","")
- I $D(DTOUT)!($D(DUOUT)) Q
- ;Sort the provider list into ascending order.
- S NPRV=$$SORT(NPRV,"PRV")
- Q
- ; ---
- CSTOP ;Get a list of clinic stop codes.
- N LIT,LIT1,DIC,X,Y
- K DIROUT,DIRUT,DTOUT,DUOUT
- S DIC("A")="Select CLINIC STOP: "
- S LIT="Select another CLINIC STOP: "
- S LIT1="You must select a clinic stop!"
- S NCS=0
- W !
- F D Q:$D(DTOUT) Q:$D(DUOUT) Q:(Y=-1)&(NCS>0)
- .S DIC=40.7,DIC(0)="AEMQZ"
- .I NCS>0 S DIC("A")=LIT
- .D ^DIC
- .I X=(U_U) S DTOUT=1
- .I '$D(DTOUT),('$D(DUOUT)) D
- ..I +Y'=-1 D Q
- ...S NCS=NCS+1
- ...;Save the external form of the name, the IEN, and the stop code.
- ...S PXRMCS(NCS)=$P(Y(0,0),U,1)_U_$P(Y,U,1)_U_$P(Y(0),U,2)
- ..W:NCS=0 !,LIT1
- ;Sort the clinic stop list into alphabetical order.
- S NCS=$$SORT(NCS,"PXRMCS",2)
- ;Build array by IEN
- S IC=""
- F S IC=$O(PXRMCS(IC)) Q:IC="" D
- .S PXRMCSN($P(PXRMCS(IC),U,2))=IC
- Q
- ; ---
- SORT(N,ARRAY,KEY) ;Sort an ARRAY with N elements
- ;return the number of unique elements. KEY is the piece of ARRAY on
- ;which to base the sort. The default is the first piece.
- ;
- K ^TMP($J,"SORT")
- I (N'>0)!(N=1) Q N
- N IC,IND
- I '$D(KEY) S KEY=1
- F IC=1:1:N S ^TMP($J,"SORT",$P(@ARRAY@(IC),U,KEY))=@ARRAY@(IC)
- S IND=""
- F IC=1:1 S IND=$O(^TMP($J,"SORT",IND)) Q:IND="" D
- .S @ARRAY@(IC)=^TMP($J,"SORT",IND)
- K ^TMP($J,"SORT")
- Q IC-1
- ;
- ;Check for duplicate entries
- DUP(VALUE,ARRAY,PIECE) ;
- N IC,DUP
- S IC=0,DUP=0
- F S IC=$O(ARRAY(IC)) Q:IC="" D Q:DUP
- .I $P(ARRAY(IC),U,PIECE)=VALUE S DUP=1
- Q DUP
- PXRMXSU ; SLC/PJH - Reminder Reports DIC Prompts;01/06/2006
- +1 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
- +2 ;
- +3 ;Called by PXRMXD
- +4 ;
- +5 ;Exits from SEL subroutine
- QUIT() IF $DATA(DTOUT)!$DATA(DUOUT)
- QUIT 1
- +1 ;Only one entry allowed
- +2 IF ONE="D"
- IF (CNT>0)
- QUIT 1
- +3 ;Mandatory entry
- +4 IF Y=-1
- IF (CHECK=3)!(CNT>0)
- QUIT 1
- +5 ;Categories may already contain reminders
- +6 IF Y=-1
- IF CHECK=2
- IF $DATA(REMCAT)
- QUIT 1
- +7 ;Otherwise
- +8 QUIT 0
- +9 ;
- +10 ;Repeated Prompt using DIC
- +11 ;-------------------------
- SEL(FILE,MODE,CNT,ARRAY,ONE,CHECK) ;
- +1 ;
- +2 ; ONE = only allows one entry
- +3 ; CHECK = number or null - validation of facility
- +4 ;
- +5 NEW X,Y,ARRAYN
- +6 KILL DIROUT,DIRUT,DTOUT,DUOUT
- +7 WRITE !
- +8 FOR
- Begin DoDot:1
- +9 SET DIC=FILE
- SET DIC(0)=MODE
- +10 ; Set up ^DIC("S") for duplicate check
- +11 SET DIC("S")="I '$D(ARRAYN(+Y))"
- +12 IF CHECK=1
- DO FACT^PXRMXAP
- +13 IF CHECK=2
- SET DIC("S")=DIC("S")_",'(+$P(^(0),U,6))"
- +14 IF CHECK=3
- SET DIC("S")=DIC("S")_",$$OK^PXRMXS1(+Y)"
- +15 IF CHECK=4
- SET DIC("S")=DIC("S")_",$P($G(^PXRMXP(810.5,+Y,30,0)),U,3)>0"
- +16 IF CHECK=5
- SET DIC("S")=DIC("S")_",$P($G(^OR(100.21,+Y,10,0)),U,3)>0"
- +17 IF CNT>0
- SET DIC("A")=LIT
- +18 DO ^DIC
- +19 IF X=(U_U)
- SET DTOUT=1
- +20 IF $DATA(DTOUT)!$DATA(DUOUT)
- QUIT
- +21 IF +Y'=-1
- Begin DoDot:2
- +22 IF $DATA(ARRAYN(+Y))
- WRITE !,"Error - Duplicate entry"
- QUIT
- +23 SET CNT=CNT+1
- SET ARRAY(CNT)=Y_U_Y(0,0)_U_$PIECE(Y(0),U,3)
- +24 SET ARRAYN(+Y)=""
- End DoDot:2
- QUIT
- +25 IF CNT=0
- IF '$$QUIT
- WRITE !,LIT1
- +26 KILL DIC
- End DoDot:1
- IF $$QUIT
- QUIT
- +27 QUIT
- +28 ;
- +29 ;Establish the LOCATION criteria
- LOC(ADEF,BDEF) ;
- +1 NEW X,Y,DIR
- LOC0 KILL DIROUT,DIRUT,DTOUT,DUOUT
- +1 SET DIR(0)="S"_U_"HA:All Outpatient Locations;"
- +2 SET DIR(0)=DIR(0)_"HAI:All Inpatient Locations;"
- +3 SET DIR(0)=DIR(0)_"HS:Selected Hospital Locations;"
- +4 SET DIR(0)=DIR(0)_"CA:All Clinic Stops(with encounters);"
- +5 SET DIR(0)=DIR(0)_"CS:Selected Clinic Stops;"
- +6 SET DIR(0)=DIR(0)_"GS:Selected Clinic Groups;"
- +7 SET DIR("A")=ADEF
- +8 SET DIR("B")=BDEF
- +9 SET DIR("?")="Select from the codes displayed. For detailed help type ??"
- +10 SET DIR("??")=U_"D HELP^PXRMXHLP(8)"
- +11 DO ^DIR
- KILL DIR
- +12 IF $DATA(DIROUT)
- SET DTOUT=1
- +13 IF $DATA(DTOUT)!($DATA(DUOUT))
- QUIT
- +14 SET PXRMLCSC=Y_U_Y(0)
- +15 ;If locations are to be selected individually get the list.
- +16 IF Y="HS"
- DO HLOC
- IF $DATA(DTOUT)
- QUIT
- IF $DATA(DUOUT)
- GOTO LOC0
- +17 IF Y="CS"
- DO CSTOP
- IF $DATA(DTOUT)
- QUIT
- IF $DATA(DUOUT)
- GOTO LOC0
- +18 IF Y="GS"
- DO CGRP(.PXRMCGRP)
- IF $DATA(DTOUT)
- QUIT
- IF $DATA(DUOUT)
- GOTO LOC0
- +19 QUIT
- +20 ;
- +21 ;Build a list of hospital locations
- HLOC NEW IEN,SC,X,Y,CHECK
- +1 KILL DTOUT,DUOUT
- +2 SET NHL=0
- +3 SET DIC("A")="LOCATION: "
- +4 WRITE !
- +5 FOR
- Begin DoDot:1
- +6 SET DIC="^SC("
- +7 SET DIC(0)="AEQMZ"
- +8 IF NHL>0
- SET DIC("A")="Select another LOCATION: "
- +9 DO ^DIC
- +10 IF X=(U_U)
- SET DTOUT=1
- +11 IF $DATA(DTOUT)!($DATA(DUOUT))
- QUIT
- +12 IF +Y'=-1
- Begin DoDot:2
- +13 SET IEN=$PIECE(Y,U,1)
- +14 ;Check Facility code
- +15 NEW FACILITY
- SET FACILITY=$$FACL^PXRMXAP(IEN)
- +16 IF FACILITY=""
- WRITE !,"Location has no facility code"
- QUIT
- +17 IF '$DATA(PXRMFACN(FACILITY))
- Begin DoDot:3
- +18 WRITE !,"Location has a different facility code"
- QUIT
- End DoDot:3
- QUIT
- +19 ;Check for duplicates
- +20 IF (NHL>0)
- IF $$DUP(IEN,.PXRMLCHL,2)
- WRITE !,"Error - Duplicate entry"
- QUIT
- +21 SET NHL=NHL+1
- +22 ;Get the stop code.
- +23 SET X=$PIECE(^SC(IEN,0),U,7)
- +24 ; DBIA #557
- SET SC="Unknown"
- IF +X>0
- SET SC=$PIECE(^DIC(40.7,X,0),U,2)
- +25 IF $LENGTH(SC)=0
- SET SC="Unknown"
- +26 ;Save the external form of the name, then IEN, and the stop code.
- +27 SET PXRMLCHL(NHL)=$PIECE(Y(0,0),U,1)_U_IEN_U_SC
- +28 ;Check for mixed inpatient and outpatient locations
- +29 IF (NHL>1)
- IF $DATA(CHECK)=0
- Begin DoDot:3
- +30 IF '$$LOCN^PXRMXAP(.PXRMLCHL)
- QUIT
- +31 WRITE !,"Inpatient and Outpatient locations have been selected"
- +32 SET CHECK="DONE"
- End DoDot:3
- End DoDot:2
- +33 KILL DIC
- +34 IF (NHL=0)&(+Y=-1)
- WRITE !,"You must select a hospital location!"
- End DoDot:1
- IF $DATA(DTOUT)
- QUIT
- IF $DATA(DUOUT)
- QUIT
- IF (Y=-1)&(NHL>0)
- QUIT
- +35 ;
- +36 IF $DATA(DUOUT)!($DATA(DTOUT))
- QUIT
- +37 ;Sort the hospital location list into alphabetical order.
- +38 SET NHL=$$SORT(NHL,"PXRMLCHL",2)
- +39 ;Build array by IEN
- +40 SET IC=""
- +41 FOR
- SET IC=$ORDER(PXRMLCHL(IC))
- IF IC'>0
- QUIT
- Begin DoDot:1
- +42 SET PXRMLOCN($PIECE(PXRMLCHL(IC),U,2))=IC
- End DoDot:1
- +43 QUIT
- +44 ;---
- FACILITY(SEL) ;Select facility (COPIED EX- PXRR)
- +1 NEW IC,STATION,X,Y,DIC
- +2 KILL DIRUT,DTOUT,DUOUT
- +3 SET NFAC=0
- +4 SET DIC("B")=+$PIECE($$SITE^VASITE,U,3)
- +5 SET DIC("A")="Select FACILITY: "
- +6 WRITE !
- +7 FOR
- Begin DoDot:1
- +8 SET DIC=4
- +9 SET DIC(0)="AEMQZ"
- +10 IF NFAC>0
- SET DIC("A")="Select another FACILITY: "
- +11 DO ^DIC
- +12 IF X=(U_U)
- SET DTOUT=1
- +13 IF '$DATA(DTOUT)
- IF ('$DATA(DUOUT))
- IF +Y'=-1
- Begin DoDot:2
- +14 ;Check for duplicates
- +15 IF (NFAC>0)
- IF $$DUP($PIECE(Y,U,1),.PXRMFAC,1)
- WRITE !,"Error - Duplicate entry"
- QUIT
- +16 SET NFAC=NFAC+1
- SET PXRMFAC(NFAC)=Y_U_Y(0,0)
- End DoDot:2
- +17 KILL DIC
- End DoDot:1
- IF $DATA(DTOUT)
- QUIT
- IF $DATA(DUOUT)
- QUIT
- IF (Y=-1)&(NFAC>0)
- QUIT
- +18 ;
- +19 IF $DATA(DTOUT)!$DATA(DUOUT)
- QUIT
- +20 ;;Save the facility names and station.
- +21 FOR IC=1:1:NFAC
- Begin DoDot:1
- +22 SET X=$PIECE(PXRMFAC(IC),U,1)
- +23 SET STATION=$PIECE($GET(^DIC(4,X,99)),U,1)
- +24 SET PXRMFACN(X)=$PIECE(PXRMFAC(IC),U,2)_U_STATION
- End DoDot:1
- +25 ;Sort the facility list into alphabetical order.
- +26 SET NFAC=$$SORT(NFAC,"PXRMFAC",2)
- +27 QUIT
- +28 ; ---
- CGRP(TEMP) ; Clinic Group Selection
- +1 NEW LIT,LIT1,DIC
- +2 SET DIC("A")="Select CLINIC GROUP: "
- SET NOTM=0
- +3 SET LIT="Select another CLINIC GROUP: "
- +4 SET LIT1="You must select a clinic group!"
- +5 DO SEL(409.67,"AEQMZ",.NOTM,.TEMP,"","")
- +6 ;Build array by IEN
- +7 SET NCGRP=0
- NEW IC
- SET IC=""
- +8 FOR
- SET IC=$ORDER(PXRMCGRP(IC))
- IF IC=""
- QUIT
- Begin DoDot:1
- +9 SET PXRMCGRN($PIECE(PXRMCGRP(IC),U,1))=IC
- SET NCGRP=IC
- End DoDot:1
- +10 QUIT
- +11 ; ---
- LIST(TEMP) ; Patient List
- +1 NEW LIT,LIT1,DIC,NLIST
- +2 SET DIC("A")="Select REMINDER PATIENT LIST: "
- SET NLIST=0
- +3 SET DIC("?")="Select a patient list to run the reminder report against."
- +4 SET LIT="Select another PATIENT LIST: "
- SET LIT1="You must select a list!"
- +5 DO SEL(810.5,"AEQMZ",.NLIST,.TEMP,"",4)
- +6 QUIT
- +7 ;
- +8 ; ---
- PCMM(TEMP) ; PCMM teams
- +1 NEW LIT,LIT1,DIC
- +2 SET DIC("A")="Select PCMM TEAM: "
- SET NOTM=0
- +3 SET LIT="Select another PCMM TEAM: "
- SET LIT1="You must select a team!"
- +4 DO SEL(404.51,"AEQMZ",.NOTM,.TEMP,"",1)
- +5 QUIT
- +6 ; ---
- OERR(TEAM) ; OE/RR teams
- +1 NEW LIT,LIT1,DIC
- +2 SET DIC("A")="Select TEAM: "
- SET NOTM=0
- +3 SET LIT="Select another TEAM: "
- SET LIT1="You must select a team!"
- +4 DO SEL(100.21,"AEQMZ",.NOTM,.TEAM,"",5)
- +5 QUIT
- +6 ; ---
- RCAT(REMCAT,REM) ;Reminder Category/Reminder selection
- +1 NEW CAT,DIC,LIT,LIT1,SEQ
- +2 SET NCAT=0
- KILL REMCAT,REM
- +3 ;Reminder Category
- RCATS IF PXRMREP="S"
- Begin DoDot:1
- +1 KILL REMCAT
- SET NCAT=0
- +2 SET DIC("A")="Select a REMINDER CATEGORY: "
- +3 SET LIT="Select another REMINDER CATEGORY: "
- SET LIT1=""
- +4 DO SEL(811.7,"AEQMZ",.NCAT,.REMCAT,PXRMREP,3)
- End DoDot:1
- IF $DATA(DUOUT)!$DATA(DTOUT)
- QUIT
- +5 ;Individual Reminders
- +6 DO REM(.REM)
- IF $DATA(DTOUT)
- QUIT
- +7 IF $DATA(DUOUT)
- IF PXRMREP="S"
- GOTO RCATS
- +8 QUIT
- +9 ; ---
- REM(REM) ;Reminders selection
- +1 NEW LIT,LIT1,DIC
- +2 KILL REM
- SET NREM=0
- +3 SET DIC("A")="Select individual REMINDER: "
- +4 SET LIT="Select another REMINDER: "
- SET LIT1="You must select a reminder!"
- +5 DO SEL(811.9,"AEQMZ",.NREM,.REM,PXRMREP,2)
- +6 QUIT
- +7 ; ---
- PAT(VAR) ; Patient select
- +1 NEW LIT,LIT1,DIC
- +2 SET DIC("A")="Select PATIENT: "
- SET NPAT=0
- +3 SET LIT="Select another PATIENT: "
- SET LIT1="You must select a patient!"
- +4 DO SEL(2,"AEQMZ",.NPAT,.VAR,"","")
- +5 ;Sort the patient list into ascending order.
- +6 SET NPAT=$$SORT(NPAT,"VAR")
- +7 QUIT
- +8 ; ---
- PROV(PRV) ;Build a list of selected providers.
- +1 NEW LIT,LIT1,DIC
- +2 SET DIC("A")="Select PROVIDER: "
- SET NPRV=0
- +3 SET LIT="Select another PROVIDER: "
- SET LIT1="You must select a provider!"
- +4 DO SEL(200,"AEQMZ",.NPRV,.PRV,"","")
- +5 IF $DATA(DTOUT)!($DATA(DUOUT))
- QUIT
- +6 ;Sort the provider list into ascending order.
- +7 SET NPRV=$$SORT(NPRV,"PRV")
- +8 QUIT
- +9 ; ---
- CSTOP ;Get a list of clinic stop codes.
- +1 NEW LIT,LIT1,DIC,X,Y
- +2 KILL DIROUT,DIRUT,DTOUT,DUOUT
- +3 SET DIC("A")="Select CLINIC STOP: "
- +4 SET LIT="Select another CLINIC STOP: "
- +5 SET LIT1="You must select a clinic stop!"
- +6 SET NCS=0
- +7 WRITE !
- +8 FOR
- Begin DoDot:1
- +9 SET DIC=40.7
- SET DIC(0)="AEMQZ"
- +10 IF NCS>0
- SET DIC("A")=LIT
- +11 DO ^DIC
- +12 IF X=(U_U)
- SET DTOUT=1
- +13 IF '$DATA(DTOUT)
- IF ('$DATA(DUOUT))
- Begin DoDot:2
- +14 IF +Y'=-1
- Begin DoDot:3
- +15 SET NCS=NCS+1
- +16 ;Save the external form of the name, the IEN, and the stop code.
- +17 SET PXRMCS(NCS)=$PIECE(Y(0,0),U,1)_U_$PIECE(Y,U,1)_U_$PIECE(Y(0),U,2)
- End DoDot:3
- QUIT
- +18 IF NCS=0
- WRITE !,LIT1
- End DoDot:2
- End DoDot:1
- IF $DATA(DTOUT)
- QUIT
- IF $DATA(DUOUT)
- QUIT
- IF (Y=-1)&(NCS>0)
- QUIT
- +19 ;Sort the clinic stop list into alphabetical order.
- +20 SET NCS=$$SORT(NCS,"PXRMCS",2)
- +21 ;Build array by IEN
- +22 SET IC=""
- +23 FOR
- SET IC=$ORDER(PXRMCS(IC))
- IF IC=""
- QUIT
- Begin DoDot:1
- +24 SET PXRMCSN($PIECE(PXRMCS(IC),U,2))=IC
- End DoDot:1
- +25 QUIT
- +26 ; ---
- SORT(N,ARRAY,KEY) ;Sort an ARRAY with N elements
- +1 ;return the number of unique elements. KEY is the piece of ARRAY on
- +2 ;which to base the sort. The default is the first piece.
- +3 ;
- +4 KILL ^TMP($JOB,"SORT")
- +5 IF (N'>0)!(N=1)
- QUIT N
- +6 NEW IC,IND
- +7 IF '$DATA(KEY)
- SET KEY=1
- +8 FOR IC=1:1:N
- SET ^TMP($JOB,"SORT",$PIECE(@ARRAY@(IC),U,KEY))=@ARRAY@(IC)
- +9 SET IND=""
- +10 FOR IC=1:1
- SET IND=$ORDER(^TMP($JOB,"SORT",IND))
- IF IND=""
- QUIT
- Begin DoDot:1
- +11 SET @ARRAY@(IC)=^TMP($JOB,"SORT",IND)
- End DoDot:1
- +12 KILL ^TMP($JOB,"SORT")
- +13 QUIT IC-1
- +14 ;
- +15 ;Check for duplicate entries
- DUP(VALUE,ARRAY,PIECE) ;
- +1 NEW IC,DUP
- +2 SET IC=0
- SET DUP=0
- +3 FOR
- SET IC=$ORDER(ARRAY(IC))
- IF IC=""
- QUIT
- Begin DoDot:1
- +4 IF $PIECE(ARRAY(IC),U,PIECE)=VALUE
- SET DUP=1
- End DoDot:1
- IF DUP
- QUIT
- +5 QUIT DUP