ORQQPX ; SLC/JM - PCE and Reminder routines ;11/16/2004 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,85,184,187,190,226**;Dec 17, 1997 Q IMMLIST(ORY,ORPT) ;return pt's immunization list: ;id^name^date/time^reaction^inverse d/t I $L($T(IMMUN^PXRHS03))<1 S ORY(1)="^Immunizations not available." Q K ^TMP("PXI",$J) D IMMUN^PXRHS03(ORPT) N ORI,IMM,IVDT,IEN,X S ORI=0,IMM="",IVDT="",IEN=0 F S IMM=$O(^TMP("PXI",$J,IMM)) Q:IMM="" D .F S IVDT=$O(^TMP("PXI",$J,IMM,IVDT)) Q:IVDT="" D ..F S IEN=$O(^TMP("PXI",$J,IMM,IVDT,IEN)) Q:IEN<1 D ...S ORI=ORI+1,X=$G(^TMP("PXI",$J,IMM,IVDT,IEN,0)) Q:'$L(X) ...S ORY(ORI)=IEN_U_IMM_U_$P(X,U,3) ...I $P(X,U,7)=1 S ORY(ORI)=ORY(ORI)_U_$P(X,U,6)_U_IVDT ...E S ORY(ORI)=ORY(ORI)_U_U_IVDT S:+$G(ORY(1))<1 ORY(1)="^No immunizations found.^2900101^^9999999" K ^TMP("PXI",$J) Q DETAIL(ORY,IMM) ; return detailed information for an immunization S ORY(1)="Detailed information on immunizations is not available." Q REMIND(ORY,ORPT) ;return pt's currently due PCE clinical reminders ; in the format file 811.9 ien^reminder print name^date due^last occur. N ORTMPLST,ORI,ORJ,ORIEN,ORTXT,ORX,ORLASTDT,ORDUEDT,ORLOC S ORJ=0 ; ;get patient's location flag (INPATIENT ONLY - outpt locations cannot be ;reliably determined, and many simultaneous outpt locations can occur): I +$G(ORPT)>0 D .N DFN S DFN=ORPT,VA200="" D OERR^VADPT .I +$G(VAIN(4))>0 S ORLOC=+$G(^DIC(42,+$G(VAIN(4)),44)) .K VA200,VAIN ; D REMLIST(.ORTMPLST,$G(ORLOC)) ;D GETLST^XPAR(.ORTMPLST,"USR^LOC.`"_$G(ORLOC)_"^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORQQPX SEARCH ITEMS","Q",.ORERR) ;I ORERR>0 S ORY(1)=U_"Error: "_$P(ORERR,U,2) Q S ORI=0 F S ORI=$O(ORTMPLST(ORI)) Q:'ORI D .S ORIEN=$P(ORTMPLST(ORI),U,2) .K ^TMP("PXRHM",$J) .N ORPRI,ORDUE,ORSTA .D MAIN^PXRM(ORPT,ORIEN,0) .S ORTXT="",ORTXT=$O(^TMP("PXRHM",$J,ORIEN,ORTXT)) Q:ORTXT="" D ..S ORX=^TMP("PXRHM",$J,ORIEN,ORTXT) ..S ORSTA=$P(ORX,U) ..S ORDUEDT=$P(ORX,U,2),ORLASTDT=$P(ORX,U,3) ..S ORLASTDT=$S(+$G(ORLASTDT)>0:ORLASTDT,1:"") ;null if not a date ..S ORJ=ORJ+1 ..S ORDUE=$S(ORSTA["DUE":1,ORSTA["ERROR":3,ORSTA["CNBD":4,1:2) ..I ORDUE'=2 D ...S ORPRI=$P($G(^PXD(811.9,ORIEN,0)),U,10) I ORPRI="" S ORPRI=2 ...S ORY(ORJ)=ORIEN_U_ORTXT_U_ORDUEDT_U_ORLASTDT_U_ORPRI_U_ORDUE_U_$$DLG^PXRMRPCA(ORIEN)_U_U_U_U_$$DLGWIPE^PXRMRPCA(ORIEN) ..I ORDUE=2 D ...S ORY(ORJ)=ORIEN_U_ORTXT_U_U_U_U_ORDUE_U_$$DLG^PXRMRPCA(ORIEN)_U_U_U_U_$$DLGWIPE^PXRMRPCA(ORIEN) .K ^TMP("PXRHM",$J) Q REMDET(ORY,ORPT,ORIEN) ;return detail for a pt's clinical reminder ; ORY - return array ; ORPT - patient DFN ; ORIEN - clinical reminder (811.9 ien) K ^TMP("PXRHM",$J) D MAIN^PXRM(ORPT,ORIEN,5) ; 5 returns all reminder info N CR,I,J,ORTXT S I=1 S ORTXT="",ORTXT=$O(^TMP("PXRHM",$J,ORIEN,ORTXT)) Q:ORTXT="" D .S J=0 F S J=$O(^TMP("PXRHM",$J,ORIEN,ORTXT,"TXT",J)) Q:J="" D ..S ORY(I)=^TMP("PXRHM",$J,ORIEN,ORTXT,"TXT",J),I=I+1 K ^TMP("PXRHM",$J) Q NEWACTIV(ORY) ;Return true if Interactive Reminders are active S ORY=0 I $T(APPL^PXRMRPCA)'="",+$G(DUZ) D . N SRV . ;S SRV=$P($G(^VA(200,DUZ,5)),U) . S SRV=$$GET1^DIQ(200,DUZ,29,"I") . S ORY=$$GET^XPAR(DUZ_";VA(200,^SRV.`"_+$G(SRV)_"^DIV^SYS","PXRM GUI REMINDERS ACTIVE",1,"Q") . I +ORY S ORY=1 . E S ORY=0 Q HISTLOC(LST) ;Returns a list of historical locations N IDX,PTR,LINE,NAME K ^TMP("OR",$J,"LOC") S LST=$NA(^TMP("OR",$J,"LOC")) S (LINE,IDX)=0 F S IDX=$O(^AUTTLOC(IDX)) Q:'IDX D .S PTR=+$G(^AUTTLOC(IDX,0)) .I +PTR D ..;S NAME=$P($G(^DIC(4,PTR,0)),U) ..S NAME=$$GET1^DIQ(4,PTR,.01,"I") ..I NAME'="" D ...S LINE=LINE+1 ...S ^TMP("OR",$J,"LOC",LINE)=PTR_U_NAME Q GETFLDRS(ORFLDRS) ;Return Visible Reminder Folders ; Codes: D=Due, A=Applicable, N=Not Applicable, E=Evaluated, O=Other N SRV,ORERR,ORTMP ;S SRV=$P($G(^VA(200,DUZ,5)),U) S SRV=$$GET1^DIQ(200,DUZ,29,"I") D GETLST^XPAR(.ORTMP,"USR^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORQQPX REMINDER FOLDERS","Q",.ORERR) I +ORTMP S ORFLDRS=$P($G(ORTMP(1)),U,2) E S ORFLDRS="DAO" Q SETFLDRS(ORY,ORFLDRS) ;Sets Visible Reminder Folders for the current user N ORERR D EN^XPAR(DUZ_";VA(200,","ORQQPX REMINDER FOLDERS",1,ORFLDRS,.ORERR) S ORY=1 Q GETDEFOL(ORDEFLOC) ;Return Default Outside Locations N SRV,ORERR ;S SRV=$P($G(^VA(200,DUZ,5)),U) S SRV=$$GET1^DIQ(200,DUZ,29,"I") D GETLST^XPAR(.ORDEFLOC,"USR^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORQQPX DEFAULT LOCATIONS","Q",.ORERR) Q INSCURS(ORY) ; Returns status of ORQQPX REMINDER TEXT AT CURSOR N SRV,ORERR,ORTMP ;S ORY=0,SRV=$P($G(^VA(200,DUZ,5)),U) S ORY=0,SRV=$$GET1^DIQ(200,DUZ,29,"I") D GETLST^XPAR(.ORTMP,"USR^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORQQPX REMINDER TEXT AT CURSOR","Q",.ORERR) I +ORTMP S ORY=$P($G(ORTMP(1)),U,2) Q NEWCVOK(ORY) ; Returns status of N SRV,ORERR,ORTMP ;S ORY=0,SRV=$P($G(^VA(200,DUZ,5)),U) S ORY=0,SRV=$$GET1^DIQ(200,DUZ,29,"I") D GETLST^XPAR(.ORTMP,"USR^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORQQPX NEW REMINDER PARAMS","Q",.ORERR) I +ORTMP S ORY=$P($G(ORTMP(1)),U,2) Q ADDNAME(ORX) ; Add Reminder or Category Name as 3rd piece N CAT,IEN S CAT=$E($P(ORX,U,2),2) S IEN=$E($P(ORX,U,2),3,99) I +IEN D .I CAT="R" S $P(ORX,U,3)=$P($G(^PXD(811.9,IEN,0)),U,3) .I CAT="C" S $P(ORX,U,3)=$P($G(^PXRMD(811.7,IEN,0)),U) Q ORX REMACCUM(ORY,LVL,TYP,SORT,CLASS) ; Accumulates ORTMP into ORY ; Format of entries in ORQQPX COVER SHEET REMINDERS: ; L:Lock;R:Remove;N:Normal / C:Category;R:Reminder / Cat or Rem IEN N IDX,I,J,K,M,FOUND,ORERR,ORTMP,FLAG,IEN N FFLAG,FIEN,OUT,P2,ADD,DOADD,CODE I LVL="CLASS" D I 1 .N ORLST,ORCLS,ORCLSPRM,ORWP .S ORCLSPRM="ORQQPX COVER SHEET REM CLASSES" .D GETLST^XPAR(.ORLST,"SYS",ORCLSPRM,"Q",.ORERR) .S I=0,M=0,CLASS=$G(CLASS) .F S I=$O(ORLST(I)) Q:'I D ..S ORCLS=$P(ORLST(I),U,1) ..I +CLASS S ADD=(ORCLS=+CLASS) I 1 ..E S ADD=$$ISA^USRLM(DUZ,ORCLS,.ORERR) ..I +ADD D ...D GETWP^XPAR(.ORWP,"SYS",ORCLSPRM,ORCLS,.ORERR) ...S K=0 ...F S K=$O(ORWP(K)) Q:'K D ....S M=M+1 ....S J=$P(ORWP(K,0),";",1) ....S ORTMP(M)=J_U_$P(ORWP(K,0),";",2) E D GETLST^XPAR(.ORTMP,LVL,"ORQQPX COVER SHEET REMINDERS",TYP,.ORERR) S I=0,IDX=$O(ORY(999999),-1)+1,ADD=(SORT="") F S I=$O(ORTMP(I)) Q:'I D .S (FOUND,J)=0,P2=$P(ORTMP(I),U,2) .S FLAG=$E(P2),IEN=$E(P2,2,999) .I ADD S DOADD=1 .E D ..S DOADD=0 ..F S J=$O(ORY(J)) Q:'J D Q:FOUND ...S P2=$P(ORY(J),U,2) ...S FIEN=$E(P2,2,999) ...I FIEN=IEN S FOUND=J,FFLAG=$E(P2) ..I FOUND D I 1 ...I FLAG="R",FFLAG'="L" K ORY(FOUND) ...I FLAG'=FFLAG,(FLAG_FFLAG)["L" S $E(P2)="L",$P(ORY(FOUND),U,2)=P2 ..E I (FLAG'="R") S DOADD=1 .I DOADD D ..S OUT(IDX)=ORTMP(I) ..S $P(OUT(IDX),U)=$P(OUT(IDX),U)_SORT ..I SORT="" S OUT(IDX)=$$ADDNAME(OUT(IDX)) ..S IDX=IDX+1 M ORY=OUT Q ADDREM(ORY,IDX,IEN) ; Add Reminder to ORY list I $D(ORY("B",IEN)) Q ; See if it's in the list I '$D(^PXD(811.9,IEN)) Q ; Check if Exists I $P($G(^PXD(811.9,IEN,0)),U,6)'="" Q ; Check if Active ;check to see if the reminder is assigned to CPRS I $P($G(^PXD(811.9,IEN,100)),U,4)["L" Q I $P($G(^PXD(811.9,IEN,100)),U,4)'["C",$P($G(^PXD(811.9,IEN,100)),U,4)'="*" Q S ORY(IDX)=IDX_U_IEN S ORY("B",IEN)="" Q ADDCAT(ORY,IDX,IEN) ; Add Category Reminders to ORY list N ORREM,I,IDX2,NREM D CATREM^PXRMAPI0(IEN,.ORREM) S I=0 F S I=$O(ORREM(I)) Q:'I D . S IDX2="00000"_I . S IDX2=$E(IDX2,$L(IDX2)-5,99) . D ADDREM(.ORY,+(IDX_"."_IDX2),$P(ORREM(I),U,1)) Q REMLIST(ORY,LOC) ;Returns a list of all cover sheet reminders N SRV,I,J,ORLST,CODE,IDX,IEN,NEWP ;S SRV=$P($G(^VA(200,DUZ,5)),U) S SRV=$$GET1^DIQ(200,DUZ,29,"I") D NEWCVOK(.NEWP) I 'NEWP D GETLST^XPAR(.ORY,"USR^LOC.`"_$G(LOC)_"^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORQQPX SEARCH ITEMS","Q",.ORERR) Q D REMACCUM(.ORLST,"PKG","Q",1000) D REMACCUM(.ORLST,"SYS","Q",2000) D REMACCUM(.ORLST,"DIV","Q",3000) I +SRV D REMACCUM(.ORLST,"SRV.`"_+$G(SRV),"Q",4000) I +LOC D REMACCUM(.ORLST,"LOC.`"_+$G(LOC),"Q",5000) D REMACCUM(.ORLST,"CLASS","Q",6000) D REMACCUM(.ORLST,"USR","Q",7000) S I=0 F S I=$O(ORLST(I)) Q:'I D .S IDX=$P(ORLST(I),U,1) .F Q:'$D(ORY(IDX)) S IDX=IDX+1 .S CODE=$E($P(ORLST(I),U,2),2) .S IEN=$E($P(ORLST(I),U,2),3,999) .I CODE="R" D ADDREM(.ORY,IDX,IEN) .I CODE="C" D ADDCAT(.ORY,IDX,IEN) K ORY("B") Q LVREMLST(ORY,LVL,CLASS) ;Returns cover sheet reminders at a specified level D REMACCUM(.ORY,LVL,"Q","",$G(CLASS)) Q SAVELVL(ORY,LVL,CLASS,DATA) ;Save cover sheet reminders at a specified level N ORERR,PARAM,I I LVL="CLASS" D I 1 .S PARAM="ORQQPX COVER SHEET REM CLASSES" .S LVL="SYS" .D DEL^XPAR(LVL,PARAM,"`"_CLASS,.ORERR) .D EN^XPAR(LVL,PARAM,"`"_CLASS,.DATA,.ORERR) E D .S PARAM="ORQQPX COVER SHEET REMINDERS" .D NDEL^XPAR(LVL,PARAM,.ORERR) .S I=0 .F S I=$O(DATA(I)) Q:'I D ..D EN^XPAR(LVL,PARAM,$P(DATA(I),U,1),$P(DATA(I),U,2),.ORERR) S ORY=1 Q GETLIST(ORY,ORLOC) ;Returns a list of all cover sheet reminders N I D REMLIST(.ORY,$G(ORLOC)) S I=0 F S I=$O(ORY(I)) Q:'I D .S ORY(I)=$P(ORY(I),U,2) Q EVALCOVR(ORY,ORPT,ORLOC) ; Evaluate Cover Sheet Reminders N ORTMP D GETLIST(.ORTMP,$G(ORLOC)) D ALIST^ORQQPXRM(.ORY,ORPT,.ORTMP) Q