ORRECP1 ; BSL - VOE RECORD PRINT UTILITY; 11/02/06 [11/02/06 01:43am]
 ;;1.0;ORDER ENTRY/RESULTS PRINTING;****;Nov 02, 2006;Build 1
 ;Two primary tags one for all of today's data (TODAY) and one for date range (HIST)
 ;
PRINT   ;
 N AMDATA,AMDTL,AMID,L,LNCT,I,ORRET,NOTELN,ORNXT,ORID,ORDT,ORIEN,ORALID,TEXT,TIUDA,TIUY
 N STATION,RET,RESNUM,PRBID,PDET,PAGE,ORRLST,ORRESNUM,ORPRBID,ORPDET,ORNUM,ORLST,Y
 K ^TMP("ORDATA",$J)
 S PAGE=1
 S LNCT=1
 S ^TMP("ORDATA",$J,1,"LABS")=""
 S ^TMP("ORDATA",$J,1,"ORDERS")=""
 ;
 ;Format Active Medications for output
 K ORRET S ORRET=""
 M ORRET=ORTMP("ACTIVE")
 S TEXT="Active Medications"
 S $P(^TMP("ORDATA",$J,1,"ACTIVE",LNCT)," ",(80-$L(TEXT)/2))=TEXT
 S LNCT=LNCT+1
 S ORNXT=0
 F  S ORNXT=$O(ORRET(ORNXT)) Q:ORNXT=""  D AMP
 ;
 ;Format Allergies for output
 K ORRET S ORRET=""
 M ORRET=ORTMP("ALLERGIES")
 S ^TMP("ORDATA",$J,1,"ALLERGIES",LNCT)=""
 S LNCT=LNCT+1
 S TEXT="Allergies"
 S $P(^TMP("ORDATA",$J,1,"ALLERGIES",LNCT)," ",(80-$L(TEXT)/2))=TEXT
 S LNCT=LNCT+1
 S ^TMP("ORDATA",$J,1,"ALLERGIES",LNCT)=""
 S LNCT=LNCT+1
 S ORNXT=0
 F  S ORNXT=$O(ORRET(ORNXT)) Q:ORNXT=""  D
 . K X S X=""
 . S ORALID=$P($G(ORRET(ORNXT)),U,1)
 . D DETAIL^ORQQAL(.X,ORDFN,ORALID)
 . S I=""
 . F  S I=$O(X(I)) Q:I=""  D
 .. S ^TMP("ORDATA",$J,1,"ALLERGIES",LNCT)=$G(X(I))
 .. S LNCT=LNCT+1
 . Q
 S ^TMP("ORDATA",$J,1,"ALLERGIES",LNCT)=""
 S LNCT=LNCT+1
 ;
 ;Format Clinical Reminders for output
 K ORRET S ORRET=""
 M ORRET=ORTMP("CR")
 S ^TMP("ORDATA",$J,1,"CR",LNCT)=""
 S LNCT=LNCT+1
 S TEXT="Clinical Reminders"
 S $P(^TMP("ORDATA",$J,1,"CR",LNCT)," ",(80-$L(TEXT)/2))=TEXT
 S LNCT=LNCT+1
 S ^TMP("ORDATA",$J,1,"CR",LNCT)=""
 S LNCT=LNCT+1
 S ORNXT=0
 F  S ORNXT=$O(ORRET(ORNXT)) Q:ORNXT=""  D
 . S ORIEN=$G(ORRET(ORNXT))
 . K ORCRDET S ORCRDET=""
 . D REMDET^ORQQPXRM(.ORCRDET,ORDFN,ORIEN)
 . S I=""
 . F  S I=$O(ORCRDET(I)) Q:I=""  D
 .. S ^TMP("ORDATA",$J,1,"CR",LNCT)=$G(ORCRDET(I))
 .. S LNCT=LNCT+1
 . Q
 S ^TMP("ORDATA",$J,1,"CR",LNCT)=""
 S LNCT=LNCT+1
 ;
 ;Format Discharge Summaries for output
 K ORRET S ORRET=""
 M ORRET=ORTMP("DC")
 S ^TMP("ORDATA",$J,1,"DC",LNCT)=""
 S LNCT=LNCT+1
 S TEXT="Discharge Summaries"
 S $P(^TMP("ORDATA",$J,1,"DC",LNCT)," ",(80-$L(TEXT)/2))=TEXT
 S LNCT=LNCT+1
 S ^TMP("ORDATA",$J,1,"DC",LNCT)=""
 S LNCT=LNCT+1
 S ORNXT=0
 F  S ORNXT=$O(ORRET(ORNXT)) Q:ORNXT=""  D
 . S ^TMP("ORDATA",$J,1,"DC",LNCT)=$G(ORRET(ORNXT))
 . S LNCT=LNCT+1
 . Q
 S ^TMP("ORDATA",$J,1,"DC",LNCT)=""
 S LNCT=LNCT+1 ;
 ;
 ;Format Immunizations for output
 N SNIMM,IDT,PXIEN,IMREC,IMREC0,IMREC1,IMDT,ORSPC
 D IMMUN^PXRHS03(ORDFN)
 S ORSPC=""
 S TEXT="Immunizations"
 S $P(^TMP("ORDATA",$J,1,"IMMUN",LNCT)," ",(80-$L(TEXT)/2))=TEXT
 S LNCT=LNCT+1
 S ^TMP("ORDATA",$J,1,"IMMUN",LNCT)=""
 S LNCT=LNCT+1
 F I=1:1:80 S ORSPC=ORSPC_" "
 I $D(^TMP("PXI",$J)) D
 . S ^TMP("ORDATA",$J,1,"IMMUN",LNCT)="Immunization  Series      Date      Facility       Reaction"
 . S LNCT=LNCT+1
 . S ^TMP("ORDATA",$J,1,"IMMUN",LNCT)=""
 . S LNCT=LNCT+1
 . S SNIMM=""
 . F  S SNIMM=$O(^TMP("PXI",$J,SNIMM)) Q:SNIMM=""  D
 .. S IDT=""
 .. F  S IDT=$O(^TMP("PXI",$J,SNIMM,IDT)) Q:IDT=""  D
 ... S PXIEN=""
 ... F  S PXIEN=$O(^TMP("PXI",$J,SNIMM,IDT,PXIEN)) Q:PXIEN=""  D
 .... S IMREC0=$G(^TMP("PXI",$J,SNIMM,IDT,PXIEN,0))
 .... S IMREC1=$G(^TMP("PXI",$J,SNIMM,IDT,PXIEN,1))
 .... S Y=$P(IMREC0,U,3),Y=$P(Y,".") D DD^%DT S IMDT=Y
 .... S IMREC=""
 .... S IMREC=$P(IMREC0,U,2)
 .... S IMREC=IMREC_$E(ORSPC,1,17-$L(IMREC))_$P(IMREC0,U,4)
 .... S IMREC=IMREC_$E(ORSPC,1,22-$L(IMREC))_IMDT
 .... S IMREC=IMREC_$E(ORSPC,1,36-$L(IMREC))_$P(IMREC1,U,1)
 .... S IMREC=IMREC_$E(ORSPC,1,51-$L(IMREC))_$P(IMREC0,U,6)
 .... S ^TMP("ORDATA",$J,1,"IMMUN",LNCT)=IMREC
 .... S LNCT=LNCT+1
 . Q
 I '$D(^TMP("PXI",$J)) D
 . S ^TMP("ORDATA",$J,1,"IMMUN",LNCT)=""
 . S LNCT=LNCT+1
 . S ^TMP("ORDATA",$J,1,"IMMUN",LNCT)="No Immunizations found."
 . S LNCT=LNCT+1
 . S ^TMP("ORDATA",$J,1,"IMMUN",LNCT)=""
 . S LNCT=LNCT+1
 . Q
 S ^TMP("ORDATA",$J,1,"IMMUN",LNCT)=""
 S LNCT=LNCT+1
 ;
 ;Format Labs for output
 K ORRET S ORRET=""
 M ORRET=ORTMP("LABS")
 S ^TMP("ORDATA",$J,1,"LABS",LNCT)=""
 S LNCT=LNCT+1
 S TEXT="Labs"
 S $P(^TMP("ORDATA",$J,1,"LABS",LNCT)," ",(80-$L(TEXT)/2))=TEXT
 S LNCT=LNCT+1
 S ^TMP("ORDATA",$J,1,"LABS",LNCT)=""
 S LNCT=LNCT+1
 S ORNXT=0
 F  S ORNXT=$O(^TMP("LR7OGX",$J,"OUTPUT",ORNXT)) Q:ORNXT=""  D
 . S ^TMP("ORDATA",$J,1,"LABS",LNCT)=$G(^TMP("LR7OGX",$J,"OUTPUT",ORNXT))
 . S LNCT=LNCT+1
 . Q
 S ^TMP("ORDATA",$J,1,"LABS",LNCT)=""
 S LNCT=LNCT+1
 ;
 ;Format Notes for output
 K ORRET S ORRET=""
 M ORRET=ORTMP("NOTES")
 S TEXT="Notes"
 S $P(^TMP("ORDATA",$J,1,"NOTES",LNCT)," ",(80-$L(TEXT)/2))=TEXT
 S LNCT=LNCT+1
 S ORNXT=0 D NOTEP
 ;
 ;Format Orders for output
 K ORRET S ORRET=""
 M ORRET=ORTMP("ORDERS")
 S TEXT="Orders"
 S $P(^TMP("ORDATA",$J,1,"ORDERS",LNCT)," ",(80-$L(TEXT)/2))=TEXT
 S LNCT=LNCT+1
 S ORDT="",ORNUM="",ORRLST=0
 F  S ORDT=$O(^TMP("ORR",$J,ORDT)) Q:ORDT=""  D
 . F  S ORNUM=$O(^TMP("ORR",$J,ORDT,ORNUM)) Q:ORNUM=""  D
 .. S ORRLST=ORRLST+1,ORLST(ORRLST)=$P($G(^TMP("ORR",$J,ORDT,ORNUM)),U,1)
 .. Q
 . Q
 S ORNUM=0
 S ^TMP("ORDATA",$J,1,"ORDERS",LNCT)=""
 S LNCT=LNCT+1
 F  S ORNUM=$O(ORLST(ORNUM)) Q:ORNUM=""  D
 . K ORRET S ORRET=""
 . S ORID=$G(ORLST(ORNUM))
 . D DETAIL^ORWOR(.ORRET,ORID,ORDFN)
 . S ORRESNUM=0
 . F  S ORRESNUM=$O(^TMP("ORTXT",$J,ORRESNUM)) Q:ORRESNUM=""  D
 .. S ^TMP("ORDATA",$J,1,"ORDERS",LNCT)=$G(^TMP("ORTXT",$J,ORRESNUM))
 .. S LNCT=LNCT+1
 . Q
 S ^TMP("ORDATA",$J,1,"ORDERS",LNCT)=""
 S LNCT=LNCT+1
 ;
 ;Format Problems for output
 K ORRET S ORRET=""
 M ORRET=ORTMP("PROB")
 S TEXT="Problems"
 S $P(^TMP("ORDATA",$J,1,"PROB",LNCT)," ",(80-$L(TEXT)/2))=TEXT
 S LNCT=LNCT+1
 S ^TMP("ORDATA",$J,1,"PROB",LNCT)=""
 S LNCT=LNCT+1
 S ORNXT=0
 F  S ORNXT=$O(ORRET(ORNXT)) Q:ORNXT=""!($G(ORRET(ORNXT))="")  D
 . S ORPRBID=$P($G(ORRET(ORNXT)),U,1)
 . S ORPDET=""
 . D DETAIL^ORQQPL(.ORPDET,ORDFN,ORPRBID,"")
 . F I=1:1:$O(ORPDET(""),-1) D
 .. S ^TMP("ORDATA",$J,1,"PROB",LNCT)=ORPDET(I)
 .. S LNCT=LNCT+1
 . Q
 S ^TMP("ORDATA",$J,1,"PROB",LNCT)=""
 S LNCT=LNCT+1
 ;
 ;Format Visits for output
 K ORRET S ORRET=""
 M ORRET=ORTMP("VISITS")
 S ^TMP("ORDATA",$J,1,"VISITS",LNCT)=""
 S LNCT=LNCT+1
 S TEXT="Visits"
 S $P(^TMP("ORDATA",$J,1,"VISITS",LNCT)," ",(80-$L(TEXT)/2))=TEXT
 S LNCT=LNCT+1
 S ^TMP("ORDATA",$J,1,"VISITS",LNCT)=""
 S LNCT=LNCT+1
 S ORNXT=0
 F  S ORNXT=$O(ORRET(ORNXT)) Q:ORNXT=""  D
 . S ^TMP("ORDATA",$J,1,"VISITS",LNCT)=$G(ORRET(ORNXT))
 . S LNCT=LNCT+1
 . Q
 S ^TMP("ORDATA",$J,1,"VISITS",LNCT)=""
 S LNCT=LNCT+1
 ;
 ;Format Vitals for output
 K ORRET S ORRET=""
 M ORRET=ORTMP("VITALS")
 S ^TMP("ORDATA",$J,1,"VITALS",LNCT)=""
 S LNCT=LNCT+1
 S TEXT="Vitals"
 S $P(^TMP("ORDATA",$J,1,"VITALS",LNCT)," ",(80-$L(TEXT)/2))=TEXT
 S LNCT=LNCT+1
 S ^TMP("ORDATA",$J,1,"VITALS",LNCT)=""
 S LNCT=LNCT+1
 S ORNXT=0
 F  S ORNXT=$O(ORRET(ORNXT)) Q:ORNXT=""  D
 . S ^TMP("ORDATA",$J,1,"VITALS",LNCT)=$G(ORRET(ORNXT))
 . S LNCT=LNCT+1
 . Q
 S ^TMP("ORDATA",$J,1,"VITALS",LNCT)=""
 S LNCT=LNCT+1
 ;
 K ORTMP
 Q
 ;
AMP     ;special routine for printing active medications
 S AMDATA=$G(ORRET(ORNXT))
 I $E(AMDATA,1)="~" D
 . S ^TMP("ORDATA",$J,1,"ACTIVE",LNCT)=""
 . S LNCT=LNCT+1
 . S ^TMP("ORDATA",$J,1,"ACTIVE",LNCT)=""
 . S LNCT=LNCT+1
 . S AMID=$P($G(AMDATA),U,2)
 . S AMDTL=""
 . D DETAIL^ORWPS(.AMDTL,ORDFN,AMID)
 . F I=1:1:$O(^TMP("ORXPND",$J,""),-1) D
 .. S ^TMP("ORDATA",$J,1,"ACTIVE",LNCT)=^TMP("ORXPND",$J,I,0)
 .. S LNCT=LNCT+1
 Q
 ;
NOTEP   ;special routine for printing notes.
 F  S ORNXT=$O(ORRET(ORNXT)) Q:ORNXT=""  D
 . S ^TMP("ORDATA",$J,1,"NOTES",LNCT)=""
 . S LNCT=LNCT+1
 . S TIUY=""
 . S TIUDA=$G(ORRET(ORNXT))
 . D TGET^TIUSRVR1(.TIUY,TIUDA)
 . S NOTELN=0
 . F  S NOTELN=$O(^TMP("TIUVIEW",$J,NOTELN)) Q:NOTELN=""  D
 .. S ^TMP("ORDATA",$J,1,"NOTES",LNCT)=^TMP("TIUVIEW",$J,NOTELN)
 .. S LNCT=LNCT+1
 . S ^TMP("ORDATA",$J,1,"NOTES",LNCT)=""
 . S LNCT=LNCT+1
 . Q
 Q
 ;
PROBP   ;special routine for printing problems.
 S TEXT="Patient Record Print / Problems"
 D HEAD^ORWRPP1(ORDFN,PAGE,TEXT,$G(STATION))
 S ORNXT=""
 F  S ORNXT=$O(^TMP("ORDATA",$J,1,L,ORNXT)) Q:ORNXT=""  D
 . S PRBID=$P($G(^TMP("ORDATA",$J,1,L,ORNXT)),U,1)
 . S PDET=""
 . D DETAIL^ORQQPL(.PDET,ORDFN,PRBID,"")
 . F I=1:1:$O(PDET(""),-1) W !?10,PDET(I)
 . Q
 Q
 ;
ORDP    ;special routine for printing orders
 S TEXT="Patient Record Print / Orders"
 D HEAD^ORWRPP1(ORDFN,PAGE,TEXT,$G(STATION)) W !
 ;N ORLST,RET
 S ORDT="",ORNUM="",ORRLST=0
 F  S ORDT=$O(^TMP("ORR",$J,ORDT)) Q:ORDT=""  D
 . F  S ORNUM=$O(^TMP("ORR",$J,ORDT,ORNUM)) Q:ORNUM=""  D
 .. S ORRLST=ORRLST+1,ORLST(ORRLST)=$P($G(^TMP("ORR",$J,ORDT,ORNUM)),U,1)
 .. Q
 . Q
 ;D GET4V11^ORWORR(.RET,2,-1,.ORLST)
 S ORNUM=0
 W !
 F  S ORNUM=$O(ORLST(ORNUM)) Q:ORNUM=""  D
 . S RET=""
 . S ORID=$G(ORLST(ORNUM))
 . D DETAIL^ORWOR(.RET,ORID,ORDFN)
 . S RESNUM=0
 . F  S RESNUM=$O(^TMP("ORTXT",$J,RESNUM)) Q:RESNUM=""  W !?10,^(RESNUM)
 . Q
 Q
