Index: ccr/trunk/p/GPLMEDS.m
===================================================================
--- ccr/trunk/p/GPLMEDS.m	(revision 166)
+++ ccr/trunk/p/GPLMEDS.m	(revision 167)
@@ -26,4 +26,12 @@
    ; IMEDXML WILL CONTAIN ONLY THE MEDICATIONS SECTION OF THE OVERALL TEMPLATE
    ;
+   N HASOP S HASOP=0 ; FLAG FOR HAS OUTPATIENT MEDS
+   N MEDCNT S MEDCNT=0 ; COUNT FOR MEDS ALREADY PROCESSED
+   ; OUTPATIENT MEDS ARE PROCESSED IN EXTRACT^CCRMEDS, ALL OTHERS HERE
+   D EXTRACT^CCRMEDS(MEDXML,DFN,MEDOUTXML) ; FIRST EXTRACT OUTPATIENT MEDS
+   I @MEDOUTXML@(0)>0 D  ; CCRMEDS FOUND ACTIVE OP MEDS
+   . S HASOP=1 ; SET FLAG TO KNOW HOW TO ADD XML
+   . S MEDCNT=@MEDOUTXML@(0) ; SAVE COUNT TO KNOW HOW TO ADD TO MAP
+   . W "HAS ACTIVE OP MEDS",!
    N MEDRSLT,I,J,K,MEDPTMP,X,MEDVMAP,TBUF
    D ACTIVE^ORWPS(.MEDRSLT,DFN)
@@ -36,5 +44,5 @@
    S MEDTVMAP=$NA(^TMP("GPLCCR",$J,"MEDMAP"))
    S MEDTARYTMP=$NA(^TMP("GPLCCR",$J,"MEDARYTMP"))
-   K @MEDTVMAP,@MEDTARYTMP
+   I 'HASOP K @MEDTVMAP,@MEDTARYTMP
    ; FIRST GO THROUGH MEDRSLT ARRAY AND COUNT MEDS AND LINES IN MEDS
    ; ZA(0) IS TOTAL NUMBER OF MEDS ZA(ZI) IS LINES IN MED ZI
@@ -54,10 +62,11 @@
    F ZI=1:1:ZA(0) D  ; FOR EACH MED
    . I DEBUG W "ZI IS ",ZI,!
-   . S MEDVMAP=$NA(@MEDTVMAP@(ZI))
+   . S MEDVMAP=$NA(@MEDTVMAP@(ZI+MEDCNT)) ; START PAST OP ACTIVE MEDS
    . K @MEDVMAP
    . I DEBUG W "VMAP= ",MEDVMAP,!
    . S ZJ=$P(ZA(ZI),U,1) ; INDEX OF FIRST LINE OF MED IN MEDRSLT
    . S MEDPTMP=MEDRSLT(ZJ) ; PULL OUT FIRST LINE OF MED
-   . S @MEDVMAP@("MEDOBJECTID")="MED"_ZI ; UNIQUE OBJID FOR MEDS
+   . I $P(MEDPTMP,U,1)?1"~OP"&$P(MEDPTMP,"^",10)="ACTIVE" Q  ; SKIP OP ACTIVE
+   . S @MEDVMAP@("MEDOBJECTID")="MED"_(ZI+MEDCNT) ; UNIQUE OBJID FOR MEDS
    . I $P(MEDPTMP,"^",11)="" S @MEDVMAP@("MEDISSUEDATETXT")=""
    . E  S @MEDVMAP@("MEDISSUEDATETXT")=$$FMDTOUTC^CCRUTIL($P(MEDPTMP,"^",11),"DT") ; GETS LAST FILL DATE
@@ -140,8 +149,8 @@
    . K @MEDARYTMP
    . D MAP^GPLXPATH(MEDXML,MEDVMAP,MEDARYTMP)
-   . I ZI=1 D  ; FIRST ONE IS JUST A COPY
+   . I ZI=1&('HASOP) D  ; FIRST ONE IS JUST A COPY MAKE SURE OP IS NOT THERE
    . . ; W "FIRST ONE",!
    . . D CP^GPLXPATH(MEDARYTMP,MEDOUTXML)
-   . I ZI>1 D  ; AFTER THE FIRST, INSERT INNER XML
+   . E  D  ; AFTER THE FIRST OR IF THERE ARE OP, INSERT INNER XML
    . . D INSINNER^GPLXPATH(MEDOUTXML,MEDARYTMP)
    N MEDTMP,MEDI
Index: ccr/trunk/p/GPLRIMA.m
===================================================================
--- ccr/trunk/p/GPLRIMA.m	(revision 166)
+++ ccr/trunk/p/GPLRIMA.m	(revision 167)
@@ -101,4 +101,5 @@
     I $D(@SBASE@("VITALS",1)) D APOST("SATTR","RIMTBL","VITALS")
     I $D(@SBASE@("MEDS",1)) D APOST("SATTR","RIMTBL","MEDS")
+    ; D PATD^GPLRIMA(2,"MEDS","MEDPRODUCTNAMECODEVALUE") CHECK FOR MED CODES
     D APOST("SATTR","RIMTBL","NOTEXTRACTED") ; OUTPUT NOT YET PRODUCED
     W "ATTRIBUTES: ",SATTR,!
Index: ccr/trunk/p/GPLXPATH.m
===================================================================
--- ccr/trunk/p/GPLXPATH.m	(revision 166)
+++ ccr/trunk/p/GPLXPATH.m	(revision 167)
@@ -448,4 +448,20 @@
  Q
  ;
+DXVARS(DXIN) ;DISPLAY ALL VARIABLES IN A TEMPLATE
+ ; IF PARAMETERS ARE NULL, DEFAULTS TO CCR TEMPLATE
+ ;
+ N DXUSE,DTMP ; DXUSE IS NAME OF VARIABLE, DTMP IS VARIABLE IF NOT SUPPLIED
+ I DXIN="CCR" D  ; NEED TO GO GET CCR TEMPLATE
+ . D LOAD^GPLCCR0("DTMP") ; LOAD CCR TEMPLATE INTO DXTMP
+ . S DXUSE="DTMP" ; DXUSE IS NAME
+ E  I DXIN="CCD" D  ; NEED TO GO GET CCD TEMPLATE
+ . D LOAD^GPLCCD1("DTMP") ; LOAD CCR TEMPLATE INTO DXTMP
+ . S DXUSE="DTMP" ; DXUSE IS NAME
+ E  S DXUSE=DXIN ; IF PASSED THE TEMPLATE TO USE
+ N DVARS ; PUT VARIABLE NAME RESULTS IN ARRAY HERE
+ D XVARS("DVARS",DXUSE) ; PULL OUT VARS
+ D PARY^GPLXPATH("DVARS") ;AND DISPLAY THEM
+ Q
+ ;
 TEST     ; Run all the test cases
  D TESTALL^GPLUNIT("GPLXPAT0")
