Index: ccr/trunk/p/C0CFM2.m
===================================================================
--- ccr/trunk/p/C0CFM2.m	(revision 369)
+++ ccr/trunk/p/C0CFM2.m	(revision 370)
@@ -28,10 +28,13 @@
  Q
  ;
-SHOWBUG ;
- M C0CFDA=^KBAI("C0CFDA",1)
- D CLEAN^DILF
- D UPDATE^DIE("","C0CFDA","","ZERR")
- ZWR C0CFDA
- ZWR ZERR
+RIMTBL(ZWHICH) ; PUT ALL PATIENT IN RIMTBL ZWHICH INTO THE CCR ELEMENTS FILE
+ ;
+ I '$D(RIMBASE) D ASETUP^GPLRIMA ; FOR COMMAND LINE CALLS
+ N ZI,ZJ,ZC,ZPATBASE
+ S ZPATBASE=$NA(@RIMBASE@("RIMTBL","PATS",ZWHICH))
+ S ZI=""
+ F ZJ=0:0 D  Q:$O(@ZPATBASE@(ZI))=""  ; TIL END
+ . S ZI=$O(@ZPATBASE@(ZI))
+ . D PUTRIM(ZI) ; EXPORT THE PATIENT TO A FILE
  Q
  ;
@@ -56,6 +59,21 @@
  F  S C0CX=$O(@ZVARS@(C0CX)) Q:C0CX=""  D  ; FOR EACH OCCURANCE
  . W "ZOCC=",C0CX,!
+ . K C0CMDO ; MULTIPLE SUBELEMENTS FOR THIS OCCURANCE PASSED BY NAME
  . S C0CV=$NA(@ZVARS@(C0CX)) ; VARIABLES FOR THIS OCCURANCE
  . D PUTELS(DFN,ZZTYP,C0CX,C0CV) ; PUT THEM TO THE CCR ELEMENTS FILE
+ . I $D(C0CMDO) D  ; MULTIPLES TO HANDLE (THIS IS INSTEAD OF RECURSION :()
+ . . N ZZCNT,ZZC0CI,ZZVALS,ZT,ZZCNT,ZV
+ . . S ZZCNT=0
+ . . S ZZC0CI=0
+ . . S ZZVALS=$NA(@C0CMDO@("M")) ; LOCATION OF THIS MULTILPE
+ . . S ZT=$O(@ZZVALS@("")) ; ELEMENT TYPE OF MULTIPLE
+ . . S ZZVALS=$NA(@ZZVALS@(ZT)) ; PAST MULTIPLE TYPE INDICATOR
+ . . W "MULTIPLE:",ZZVALS,!
+ . . ;B
+ . . F  S ZZC0CI=$O(@ZZVALS@(ZZC0CI)) Q:ZZC0CI=""  D  ; EACH MULTIPLE
+ . . . S ZZCNT=ZZCNT+1 ;INCREMENT COUNT
+ . . . W "COUNT:",ZZCNT,!
+ . . . S ZV=$NA(@ZZVALS@(ZZC0CI))
+ . . . D PUTELS(DFN,ZT,C0CX_";"_ZZCNT,ZV)
  Q
  ;
@@ -68,5 +86,5 @@
  ; AND @ZVALS@("M",SUBOCCUR,"VAR2")="VALUE2" FOR SUB VARIABLES
  ;
- N ZSRC
+ N ZSRC,PATN,ZTYPN,XD0,ZTYP
  S ZSRC=1 ; CCR SOURCE IS ASSUMED TO BE THIS EHR, WHICH IS ALWAYS SOURCE 1
  ; PUT THIS IN PARAMETERS - SO SOURCE NUMBER FOR PROCESSING IN CONFIGURABLE
@@ -78,5 +96,5 @@
  ;FILE IS ^C0CE(PAT,1,SCR,1,TYP,1,OCC,1,VAR,1, ...
  ; AND WE HAVE TO ADD THEM LEVEL AT A TIME I THINK
- K C0CFDA
+ N C0CFDA
  S C0CFDA(C0CFPAT,"?+1,",.01)=DFN
  D UPDIE ; ADD THE PATIENT
@@ -94,5 +112,6 @@
  S ZD0=$O(^C0CE(PATN,1,ZSRC,1,ZTYP,1,"B"," "_ZOCC,""))
  W "RECORD NUMBER: ",ZD0,!
- ;B
+ ;I ZD0=32 B
+ ;I ZD0=31 B
  N ZCNT,ZC0CI,ZVARN,C0CZ1
  S ZCNT=0
@@ -107,24 +126,20 @@
  . . S C0CFDA(C0CFVAR,"?+"_ZCNT_","_ZD0_","_C0CZ1,1)=@ZVALS@(ZC0CI)
  . E  D  ; THIS IS A SUBELEMENT
- . . N ZZCNT,ZZC0CI,ZZVALS,ZZVALS,ZT
- . . S ZZCNT=0
- . . S ZZC0CI=0
- . . S ZZVALS=$NA(@ZVALS@("M")) ; LOCATION OF THIS MULTILPE
- . . S ZT=$O(@ZZVALS@("")) ; ELEMENT TYPE OF MULTIPLE
- . . S ZZVALS=$NA(@ZZVALS@(ZT)) ; PAST MULTIPLE TYPE INDICATOR
- . . W "MULTIPLE:",ZZVALS,!
- . . ;B
- . . F  S ZZC0CI=$O(@ZZVALS@(ZZC0CI)) Q:ZZC0CI=""  D  ; EACH MULTIPLE
- . . . S ZZCNT=ZZCNT+1 ;INCREMENT COUNT
- . . . W "COUNT:",ZZCNT,!
- . . . S ZV=$NA(@ZZVALS@(ZZC0CI))
- . . . D PUTELS(DFN,ZT,ZOCC_";"_ZZCNT,ZV)
- D CLEAN^DILF
- D UPDATE^DIE("","C0CFDA","","ZERR")
- I $D(ZERR) D  ;
- . W "ERROR",!
- . ZWR ZERR
- . B
- K C0CFDA
+ . . ;PUT THE FOLLOWING BACK TO USE RECURSION
+ . . ;N ZZCNT,ZZC0CI,ZZVALS,ZT,ZZCNT,ZV
+ . . ;S ZZCNT=0
+ . . ;S ZZC0CI=0
+ . . ;S ZZVALS=$NA(@ZVALS@("M")) ; LOCATION OF THIS MULTILPE
+ . . ;S ZT=$O(@ZZVALS@("")) ; ELEMENT TYPE OF MULTIPLE
+ . . ;S ZZVALS=$NA(@ZZVALS@(ZT)) ; PAST MULTIPLE TYPE INDICATOR
+ . . ;W "MULTIPLE:",ZZVALS,!
+ . . ;B 
+ . . ;F  S ZZC0CI=$O(@ZZVALS@(ZZC0CI)) Q:ZZC0CI=""  D  ; EACH MULTIPLE
+ . . ;. S ZZCNT=ZZCNT+1 ;INCREMENT COUNT
+ . . ;. W "COUNT:",ZZCNT,!
+ . . ;. S ZV=$NA(@ZZVALS@(ZZC0CI))
+ . . ;. D PUTELS(DFN,ZT,ZOCC_";"_ZZCNT,ZV) ; PUT THIS BACK TO DEBUG RECURSION
+ . . S C0CMDO=ZVALS ; FLAG TO HANDLE MULTIPLES (INSTEAD OF RECURSION)
+ D UPDIE ; UPDATE
  Q
  ;
