| 1 | C0QKIDS ; VEN/SMH - Kids Utilities for transporting C0Q data ; 5/24/12 3:53pm
 | 
|---|
| 2 |         ;;1.0;C0Q;;May 21, 2012;Build 43
 | 
|---|
| 3 |         ; Licensed under package license. See Documentation.
 | 
|---|
| 4 |         ;
 | 
|---|
| 5 |         ; PEPs: TRAN, POST
 | 
|---|
| 6 |         ;
 | 
|---|
| 7 | TRAN    ; Unified Transport; PEP
 | 
|---|
| 8 |         ; D TRAN301  ; looks like I won't send that file over
 | 
|---|
| 9 |         D TRAN201
 | 
|---|
| 10 |         QUIT
 | 
|---|
| 11 | POST    ; Unified Post; PEP
 | 
|---|
| 12 |         ; D POST301  ; looks like I won't send that file over
 | 
|---|
| 13 |         D POST101
 | 
|---|
| 14 |         D POST201
 | 
|---|
| 15 |         QUIT
 | 
|---|
| 16 |         ;
 | 
|---|
| 17 |         ; << >>
 | 
|---|
| 18 |         ;
 | 
|---|
| 19 | TRAN301 ; Grab FDA for entire file C0Q PATIENT LIST and store in Transport Global; Private EP
 | 
|---|
| 20 |         N C0QIEN S C0QIEN=0 ; IEN walker
 | 
|---|
| 21 |         N C0QREF1 S C0QREF1=$NAME(^TMP("C0QOLD",$J)) ; Temporary Global Reference
 | 
|---|
| 22 |         N C0QREF2 S C0QREF2=$NAME(^TMP("C0QNEW",$J)) ; Temporary Global Reference
 | 
|---|
| 23 |         K @C0QREF1,@C0QREF2   ; Kill that
 | 
|---|
| 24 |         F  S C0QIEN=$O(^C0Q(301,C0QIEN)) Q:'+C0QIEN  D
 | 
|---|
| 25 |         . D GETS^DIQ(1130580001.301,C0QIEN_",","*","",C0QREF1) ; Load FDA's in there
 | 
|---|
| 26 |         . M @C0QREF2@(1130580001.301,"?+"_C0QIEN_",")=@C0QREF1@(1130580001.301,C0QIEN_",") ; Change IENs to ?+ IENs
 | 
|---|
| 27 |         M @XPDGREF@("C0Q","1130580001.301")=@C0QREF2  ; Put in Transport Global
 | 
|---|
| 28 |         K @C0QREF1,@C0QREF2  ; Remove
 | 
|---|
| 29 |         QUIT
 | 
|---|
| 30 |         ;
 | 
|---|
| 31 | TRAN201 ; Grab FDA for 201 C0Q MEASUREMENTS selected fields; Private EP
 | 
|---|
| 32 |         N C0QIEN S C0QIEN=0 ; IEN walker
 | 
|---|
| 33 |         N C0QREF1 S C0QREF1=$NAME(^TMP("C0QOLD",$J)) ; Temporary Global Reference
 | 
|---|
| 34 |         N C0QREF2 S C0QREF2=$NAME(^TMP("C0QNEW",$J)) ; Temporary Global Reference
 | 
|---|
| 35 |         K @C0QREF1,@C0QREF2   ; Kill that
 | 
|---|
| 36 |         ;
 | 
|---|
| 37 |         ; We need C0QCOUNT so that it wouldn't reuse the numbers, b/c updater wants numbers for every different item
 | 
|---|
| 38 |         N C0QCOUNT S C0QCOUNT=$O(^C0Q(201," "),-1) ; Counter for SubIENs for destination array; init at highest IEN to prevent dups
 | 
|---|
| 39 |         F  S C0QIEN=$O(^C0Q(201,C0QIEN)) Q:'+C0QIEN  D  ; Walk IENs
 | 
|---|
| 40 |         . W "Exporting "_C0QIEN,!
 | 
|---|
| 41 |         . ; Fields SET NAME, BEGIN DATE, END DATE, LOCKED, USE ALL MEASURES, MU YEAR KEY
 | 
|---|
| 42 |         . D GETS^DIQ(1130580001.201,C0QIEN_",",".01;.02;.03;.05;.2;.3","",C0QREF1)
 | 
|---|
| 43 |         . M @C0QREF2@(1130580001.201,"?+"_C0QIEN_",")=@C0QREF1@(1130580001.201,C0QIEN_",") ; Change IENs to ?+ IENs
 | 
|---|
| 44 |         . N C0QIEN2 S C0QIEN2=0 ; Subfile walker
 | 
|---|
| 45 |         . F  S C0QIEN2=$O(^C0Q(201,C0QIEN,5,C0QIEN2)) Q:'+C0QIEN2  D  ; MEASURE subfile
 | 
|---|
| 46 |         . . W "Exporting IENS "_C0QIEN2_","_C0QIEN_",",!
 | 
|---|
| 47 |         . . D GETS^DIQ(1130580001.2011,C0QIEN2_","_C0QIEN_",",".01","",C0QREF1) ; MEASURE (#.01)
 | 
|---|
| 48 |         . . S C0QCOUNT=C0QCOUNT+1 ; Increment the counter for SubIEN (can't reuse)
 | 
|---|
| 49 |         . . M @C0QREF2@(1130580001.2011,"?+"_C0QCOUNT_","_"?+"_C0QIEN_",")=@C0QREF1@(1130580001.2011,C0QIEN2_","_C0QIEN_",") ; as above
 | 
|---|
| 50 |         ;
 | 
|---|
| 51 |         M @XPDGREF@("C0Q","1130580001.201")=@C0QREF2 ; Put in transport global
 | 
|---|
| 52 |         K @C0QREF1,@C0QREF2  ; Remove temp
 | 
|---|
| 53 |         QUIT
 | 
|---|
| 54 |         ;
 | 
|---|
| 55 | POST201 ; File FDA for 201; Private EP
 | 
|---|
| 56 |         IF $O(^C0Q(201,0)) DO  QUIT  ; Quit if data is already there.
 | 
|---|
| 57 |         . D MES^XPDUTL("Data exists in file C0Q MEASUREMENTS... Not adding new data")
 | 
|---|
| 58 |         ;
 | 
|---|
| 59 |         D MES^XPDUTL("Adding data to C0Q MEASUREMENTS")
 | 
|---|
| 60 |         N C0QFDA S C0QFDA=$NAME(@XPDGREF@("C0Q","1130580001.201")) ; Grab FDA from Transport Global
 | 
|---|
| 61 |         N C0QERR ; Error array for filer
 | 
|---|
| 62 |         D UPDATE^DIE("E",C0QFDA,"","C0QERR") ; File all
 | 
|---|
| 63 |         I $D(C0QERR) D  ; if there's an error, print it out
 | 
|---|
| 64 |         . D MES^XPDUTL("Couldn't add data into C0Q MEASUREMENTS")
 | 
|---|
| 65 |         . S C0QERR=$Q(C0QERR)
 | 
|---|
| 66 |         . F  S C0QERR=$Q(@C0QERR) Q:C0QERR=""  D MES^XPDUTL(C0QERR_": "_@C0QERR)
 | 
|---|
| 67 |         QUIT
 | 
|---|
| 68 |         ;
 | 
|---|
| 69 | POST301 ; Get FDA from Transport Global and install in destination system for C0Q PATIENT LIST; Private EP
 | 
|---|
| 70 |         N C0QFDA S C0QFDA=$NAME(@XPDGREF@("C0Q","1130580001.301")) ; FDA array name is the global reference
 | 
|---|
| 71 |         N C0QERR ; Error 
 | 
|---|
| 72 |         D UPDATE^DIE("E",C0QFDA,"","C0QERR") ; File all
 | 
|---|
| 73 |         I $D(C0QERR) D  ; if there's an error, print it out
 | 
|---|
| 74 |         . D MES^XPDUTL("Couldn't add data into C0Q PATIENT LIST file")
 | 
|---|
| 75 |         . S C0QERR=$Q(C0QERR)
 | 
|---|
| 76 |         . F  S C0QERR=$Q(@C0QERR) Q:C0QERR=""  D MES^XPDUTL(C0QERR_": "_@C0QERR)
 | 
|---|
| 77 |         QUIT
 | 
|---|
| 78 |         ;
 | 
|---|
| 79 | POST101 ; Clean transported data from broken pointers in C0Q QUALITY MEASURE in destination systems; Private EP
 | 
|---|
| 80 |         D MES^XPDUTL("Cleaning C0Q QUALITY MEASURE data")
 | 
|---|
| 81 |         N C0QIEN S C0QIEN=0 ; Ien looper
 | 
|---|
| 82 |         N C0QFDA ; Fileman Data Array
 | 
|---|
| 83 |         F  S C0QIEN=$O(^C0Q(101,C0QIEN)) Q:'+C0QIEN  DO  ; For each record, delete these fields
 | 
|---|
| 84 |         . S C0QFDA(1130580001.101,C0QIEN_",",1)="@" ; NUMERATOR PATIENT LIST
 | 
|---|
| 85 |         . S C0QFDA(1130580001.101,C0QIEN_",",1.5)="@" ; NEGATIVE NUMERATOR LIST
 | 
|---|
| 86 |         . S C0QFDA(1130580001.101,C0QIEN_",",2)="@" ; DENOMINATOR PATIENT LIST
 | 
|---|
| 87 |         . ; ---
 | 
|---|
| 88 |         . ; I wasn't planning on emptying these out, but the IENs in desintation systems may be different
 | 
|---|
| 89 |         . ; so it is best to remove them for now. It's a pointer field, so IENs are important.
 | 
|---|
| 90 |         . ; Desination file is populated automatically, but only at the site, and only after config.
 | 
|---|
| 91 |         . ; So we can't really ship the pointers as part of the install.
 | 
|---|
| 92 |         . ; ---
 | 
|---|
| 93 |         . S C0QFDA(1130580001.101,C0QIEN_",",1.1)="@" ; ALTERNATIVE NUMERATOR LIST
 | 
|---|
| 94 |         . S C0QFDA(1130580001.101,C0QIEN_",",1.51)="@" ; ALTERNATE NEGATIVE NUM LIST
 | 
|---|
| 95 |         . S C0QFDA(1130580001.101,C0QIEN_",",2.1)="@" ; ALTERNATIVE DENOMINATOR LIST
 | 
|---|
| 96 |         N C0QERR ; Errors
 | 
|---|
| 97 |         D FILE^DIE("","C0QFDA","C0QERR") ; Do it!
 | 
|---|
| 98 |         I $D(C0QERR) D  ; if there's an error, print it out
 | 
|---|
| 99 |         . D MES^XPDUTL("Couldn't fix data into C0Q QUALITY MEASURE file")
 | 
|---|
| 100 |         . S C0QERR=$Q(C0QERR)
 | 
|---|
| 101 |         . F  S C0QERR=$Q(@C0QERR) Q:C0QERR=""  D MES^XPDUTL(C0QERR_": "_@C0QERR)
 | 
|---|
| 102 |         QUIT
 | 
|---|