PXRMXTE ; SLC/PJH - Reminder Reports Template Edit ;07/30/2009
;;2.0;CLINICAL REMINDERS;**4,6,12**;Feb 04, 2005;Build 73
;
; Called from PXRMYD,PXRMXD
;
;Option to Edit
;--------------
EDIT ;
N DIDEL,DIE,DR K DTOUT,DUOUT
;Edit report name, title and PXRMSEL (patient sample)
S DIE=810.1,DA=$P(PXRMTMP,U),DR=".01T;1.9;1.2",DIDEL=810.1
D ^DIE I $D(Y) S DUOUT=1 Q
;Check if template has been deleted
I '$D(DA) Q
;Get updated value of PXRMXSEL
N PXRMSEL,PXRMFUT S PXRMSEL=X
;Needed for 1.6 validation - Prior/Future or Current/Admissions
;N PXRMINP
;Further fields depend on value in PXRMXSEL
I PXRMSEL="I" S DR="6T~R",PXRMINP=0
I PXRMSEL="R" S DR="14T",PXRMINP=0
I PXRMSEL="L" D Q:$D(DUOUT)
.;Get location report type
.S DR="3T;1.5R" D ^DIE I $D(Y) S DUOUT=1 Q
.N PXRMLCSC S PXRMLCSC=X,DR="",PXRMINP=0
.;All location reports - prompt for prior/future/current/admissions
.I PXRMLCSC="HAI" S PXRMINP=1,DR="1.6" Q
.I PXRMLCSC="HA" S PXRMINP=0,DR="1.6"
.I PXRMLCSC="CA" S PXRMINP=0,DR="1.6"
.D ^DIE I $D(Y) S DUOUT=1 Q
.S PXRMFUT=X,DR=""
.;Selected Location/Stop Code/Clinic Group fields
.I PXRMLCSC="HS" D Q:$D(DUOUT)
..S DR="10T~R"
..D ^DIE I $D(Y) S DUOUT=1 Q
..;Determine if locations input are all wards
..S PXRMINP=$$INP^PXRMXAP(PXRMLCSC,.PXRMLOCN)
..;Select Prior/Future or Current Inpatient/Admissions
..S DR="1.6"
..D ^DIE I $D(Y) S DUOUT=1 Q
..S PXRMFUT=X,DR=""
.;Clinic Stop input and prior/future
.I PXRMLCSC="CS" S PXRMINP=0,DR="11T~R;1.6" D I $G(DUOUT)=1 Q
..D ^DIE I $D(Y) S DUOUT=1 Q
..S PXRMFUT=X,DR=""
.;Clinic Group input and prior/future
.I PXRMLCSC="GS" S PXRMINP=0,DR="12T~R;1.6" D I $G(DUOUT)=1 Q
..D ^DIE I $D(Y) S DUOUT=1 Q
..S PXRMFUT=X,DR=""
.;Service categories (except for inpatient reports)
.I PXRMINP=0,PXRMFUT'="F",PXRMFUT'="C" S DR=DR_";9T~R"
;OE/RR teams
I PXRMSEL="O" S DR="7T~R"
;PCMM Provider and Primary care/All
I PXRMSEL="P" S DR="4T~R;1.3"
;PCMM teams
I PXRMSEL="T" S DR="3T~R;8T~R"
D ^DIE
;Report type (detail or summary)
S DR=DR=DR_";1.4"
;Print Locations without patients and print percentages
S DR=DR_";1.7;1.8"
;Reminder Categories
I $D(^PXRMPT(810.1,DA,12,0))>0 D
.N IEN,CNT,NODE
.S CNT=0,IEN=0 F S IEN=$O(^PXRMPT(810.1,DA,12,IEN)) Q:IEN'>0 D
..S CNT=CNT+1,NODE=$G(^PXRMPT(810.1,DA,12,IEN,0))
..S PXRMTCAT(DA,CNT)=$P(NODE,U)_U_$P($G(^PXRMD(811.7,$P(NODE,U),0)),U)_U_$P(NODE,U,2)
S DR=DR_";13T"
;Reminders
I $D(^PXRMPT(810.1,DA,1,0))>0 D
.N IEN,CNT,NODE,REMNODE
.S CNT=0,IEN=0 F S IEN=$O(^PXRMPT(810.1,DA,1,IEN)) Q:IEN'>0 D
..S CNT=CNT+1,NODE=$G(^PXRMPT(810.1,DA,1,IEN,0))
..S REMNODE=$G(^PXD(811.9,$P(NODE,U),0))
..S PXRMTREM(DA,CNT)=$P(NODE,U)_U_$P(REMNODE,U)_U_$P(NODE,U,2)_U_$P($G(REMNODE),U,3)
S DR=DR_";2T"
;
;Strip of any leading semi-colons
I $E(DR)=";" S DR=$P(DR,";",2,99)
;
D ^DIE I $D(Y) S DUOUT=1 Q
;
;if manager all an owner to be assigned
I $D(^XUSEC("PXRM MANAGER",DUZ)) S DR="15" D ^DIE
;
;If all reminders have been deleted from the template disallow save
I +$P($G(^PXRMPT(810.1,DA,1,0)),U,4)=0 D
.;Check categories also
.I +$P($G(^PXRMPT(810.1,DA,12,0)),U,4)>0 D Q
.. N CAT,CATIEN
.. S CAT=0 F S CAT=$O(^PXRMPT(810.1,DA,12,CAT)) Q:+CAT'>0 D
... S CATIEN=$P($G(^PXRMPT(810.1,DA,12,CAT,0)),U)
... I +$P($G(^PXRMD(811.7,CATIEN,2,0)),U,4)<1 W !!,"** WARNING **",!,"Reminder Category "_$P($G(^PXRMD(811.7,CATIEN,0)),U)_" does not have any reminders assigned to it"
.S DUOUT=1
.W !!,"No reminders defined"
Q
;
PXRMXTE ; SLC/PJH - Reminder Reports Template Edit ;07/30/2009
+1 ;;2.0;CLINICAL REMINDERS;**4,6,12**;Feb 04, 2005;Build 73
+2 ;
+3 ; Called from PXRMYD,PXRMXD
+4 ;
+5 ;Option to Edit
+6 ;--------------
EDIT ;
+1 NEW DIDEL,DIE,DR
KILL DTOUT,DUOUT
+2 ;Edit report name, title and PXRMSEL (patient sample)
+3 SET DIE=810.1
SET DA=$PIECE(PXRMTMP,U)
SET DR=".01T;1.9;1.2"
SET DIDEL=810.1
+4 DO ^DIE
IF $DATA(Y)
SET DUOUT=1
QUIT
+5 ;Check if template has been deleted
+6 IF '$DATA(DA)
QUIT
+7 ;Get updated value of PXRMXSEL
+8 NEW PXRMSEL,PXRMFUT
SET PXRMSEL=X
+9 ;Needed for 1.6 validation - Prior/Future or Current/Admissions
+10 ;N PXRMINP
+11 ;Further fields depend on value in PXRMXSEL
+12 IF PXRMSEL="I"
SET DR="6T~R"
SET PXRMINP=0
+13 IF PXRMSEL="R"
SET DR="14T"
SET PXRMINP=0
+14 IF PXRMSEL="L"
Begin DoDot:1
+15 ;Get location report type
+16 SET DR="3T;1.5R"
DO ^DIE
IF $DATA(Y)
SET DUOUT=1
QUIT
+17 NEW PXRMLCSC
SET PXRMLCSC=X
SET DR=""
SET PXRMINP=0
+18 ;All location reports - prompt for prior/future/current/admissions
+19 IF PXRMLCSC="HAI"
SET PXRMINP=1
SET DR="1.6"
QUIT
+20 IF PXRMLCSC="HA"
SET PXRMINP=0
SET DR="1.6"
+21 IF PXRMLCSC="CA"
SET PXRMINP=0
SET DR="1.6"
+22 DO ^DIE
IF $DATA(Y)
SET DUOUT=1
QUIT
+23 SET PXRMFUT=X
SET DR=""
+24 ;Selected Location/Stop Code/Clinic Group fields
+25 IF PXRMLCSC="HS"
Begin DoDot:2
+26 SET DR="10T~R"
+27 DO ^DIE
IF $DATA(Y)
SET DUOUT=1
QUIT
+28 ;Determine if locations input are all wards
+29 SET PXRMINP=$$INP^PXRMXAP(PXRMLCSC,.PXRMLOCN)
+30 ;Select Prior/Future or Current Inpatient/Admissions
+31 SET DR="1.6"
+32 DO ^DIE
IF $DATA(Y)
SET DUOUT=1
QUIT
+33 SET PXRMFUT=X
SET DR=""
End DoDot:2
IF $DATA(DUOUT)
QUIT
+34 ;Clinic Stop input and prior/future
+35 IF PXRMLCSC="CS"
SET PXRMINP=0
SET DR="11T~R;1.6"
Begin DoDot:2
+36 DO ^DIE
IF $DATA(Y)
SET DUOUT=1
QUIT
+37 SET PXRMFUT=X
SET DR=""
End DoDot:2
IF $GET(DUOUT)=1
QUIT
+38 ;Clinic Group input and prior/future
+39 IF PXRMLCSC="GS"
SET PXRMINP=0
SET DR="12T~R;1.6"
Begin DoDot:2
+40 DO ^DIE
IF $DATA(Y)
SET DUOUT=1
QUIT
+41 SET PXRMFUT=X
SET DR=""
End DoDot:2
IF $GET(DUOUT)=1
QUIT
+42 ;Service categories (except for inpatient reports)
+43 IF PXRMINP=0
IF PXRMFUT'="F"
IF PXRMFUT'="C"
SET DR=DR_";9T~R"
End DoDot:1
IF $DATA(DUOUT)
QUIT
+44 ;OE/RR teams
+45 IF PXRMSEL="O"
SET DR="7T~R"
+46 ;PCMM Provider and Primary care/All
+47 IF PXRMSEL="P"
SET DR="4T~R;1.3"
+48 ;PCMM teams
+49 IF PXRMSEL="T"
SET DR="3T~R;8T~R"
+50 DO ^DIE
+51 ;Report type (detail or summary)
+52 SET DR=DR=DR_";1.4"
+53 ;Print Locations without patients and print percentages
+54 SET DR=DR_";1.7;1.8"
+55 ;Reminder Categories
+56 IF $DATA(^PXRMPT(810.1,DA,12,0))>0
Begin DoDot:1
+57 NEW IEN,CNT,NODE
+58 SET CNT=0
SET IEN=0
FOR
SET IEN=$ORDER(^PXRMPT(810.1,DA,12,IEN))
IF IEN'>0
QUIT
Begin DoDot:2
+59 SET CNT=CNT+1
SET NODE=$GET(^PXRMPT(810.1,DA,12,IEN,0))
+60 SET PXRMTCAT(DA,CNT)=$PIECE(NODE,U)_U_$PIECE($GET(^PXRMD(811.7,$PIECE(NODE,U),0)),U)_U_$PIECE(NODE,U,2)
End DoDot:2
End DoDot:1
+61 SET DR=DR_";13T"
+62 ;Reminders
+63 IF $DATA(^PXRMPT(810.1,DA,1,0))>0
Begin DoDot:1
+64 NEW IEN,CNT,NODE,REMNODE
+65 SET CNT=0
SET IEN=0
FOR
SET IEN=$ORDER(^PXRMPT(810.1,DA,1,IEN))
IF IEN'>0
QUIT
Begin DoDot:2
+66 SET CNT=CNT+1
SET NODE=$GET(^PXRMPT(810.1,DA,1,IEN,0))
+67 SET REMNODE=$GET(^PXD(811.9,$PIECE(NODE,U),0))
+68 SET PXRMTREM(DA,CNT)=$PIECE(NODE,U)_U_$PIECE(REMNODE,U)_U_$PIECE(NODE,U,2)_U_$PIECE($GET(REMNODE),U,3)
End DoDot:2
End DoDot:1
+69 SET DR=DR_";2T"
+70 ;
+71 ;Strip of any leading semi-colons
+72 IF $EXTRACT(DR)=";"
SET DR=$PIECE(DR,";",2,99)
+73 ;
+74 DO ^DIE
IF $DATA(Y)
SET DUOUT=1
QUIT
+75 ;
+76 ;if manager all an owner to be assigned
+77 IF $DATA(^XUSEC("PXRM MANAGER",DUZ))
SET DR="15"
DO ^DIE
+78 ;
+79 ;If all reminders have been deleted from the template disallow save
+80 IF +$PIECE($GET(^PXRMPT(810.1,DA,1,0)),U,4)=0
Begin DoDot:1
+81 ;Check categories also
+82 IF +$PIECE($GET(^PXRMPT(810.1,DA,12,0)),U,4)>0
Begin DoDot:2
+83 NEW CAT,CATIEN
+84 SET CAT=0
FOR
SET CAT=$ORDER(^PXRMPT(810.1,DA,12,CAT))
IF +CAT'>0
QUIT
Begin DoDot:3
+85 SET CATIEN=$PIECE($GET(^PXRMPT(810.1,DA,12,CAT,0)),U)
+86 IF +$PIECE($GET(^PXRMD(811.7,CATIEN,2,0)),U,4)<1
WRITE !!,"** WARNING **",!,"Reminder Category "_$PIECE($GET(^PXRMD(811.7,CATIEN,0)),U)_" does not have any reminders assigned to it"
End DoDot:3
End DoDot:2
QUIT
+87 SET DUOUT=1
+88 WRITE !!,"No reminders defined"
End DoDot:1
+89 QUIT
+90 ;