[1501] | 1 | C0QKIDS ; VEN/SMH - Kids Utilities for transporting C0Q data ; 7/31/12 3:01pm
|
---|
| 2 | ;;1.0;C0Q;;May 21, 2012;Build 63
|
---|
[1438] | 3 | ; Licensed under package license. See Documentation.
|
---|
| 4 | ;
|
---|
[1501] | 5 | ; PEPs: TRAN, POST, PRE
|
---|
[1438] | 6 | ;
|
---|
| 7 | TRAN ; Unified Transport; PEP
|
---|
| 8 | ; D TRAN301 ; looks like I won't send that file over
|
---|
[1501] | 9 | D TRAN201 ; C0Q MEASUREMENT
|
---|
| 10 | D TRAN101 ; C0Q QUALITY MEASURE
|
---|
[1438] | 11 | QUIT
|
---|
| 12 | POST ; Unified Post; PEP
|
---|
| 13 | ; D POST301 ; looks like I won't send that file over
|
---|
[1501] | 14 | ; D POST101 ; C0Q QUALITY MEASURE ; As of T11, I won't do that anymore. -->
|
---|
| 15 | ; I discovered that it will do it on destination systems that are set-up.
|
---|
| 16 | ; So bad bad bad idea for me to do it in a post-init.
|
---|
| 17 | ; ... I wrote TRAN101 to do the function of POST101.
|
---|
| 18 | D POST201 ; C0Q MEASUREMENT
|
---|
[1438] | 19 | QUIT
|
---|
| 20 | ;
|
---|
[1501] | 21 | PRE ; Unified Pre; PEP
|
---|
| 22 | D PRE101
|
---|
| 23 | QUIT
|
---|
| 24 | ;
|
---|
[1438] | 25 | ; << >>
|
---|
| 26 | ;
|
---|
[1501] | 27 | TRAN101 ; Remove Untransportable pointers in C0Q QUALITY MEASURE; Private EP
|
---|
| 28 | ; NB: I am reaching into KIDS's data here. This may not work for future versions
|
---|
| 29 | ; of KIDS. However, I am exporting this only; once exported, it should work in
|
---|
| 30 | ; any version of KIDS.
|
---|
| 31 | N XPDIEN S XPDIEN=$QS(XPDGREF,2) ; Get IEN of KIDS Transport Global
|
---|
| 32 | N X S X=$NA(^XTMP("XPDT",XPDIEN,"DATA",1130580001.101)) ; KIDS transports our data here
|
---|
| 33 | N IEN S IEN=0 ; Looper
|
---|
| 34 | F S IEN=$O(@X@(IEN)) Q:'IEN D ; For each IEN, remove the following:
|
---|
| 35 | . S $P(@X@(IEN,0),U,2)="" ; Numerator Patient List
|
---|
| 36 | . S $P(@X@(IEN,0),U,3)="" ; Denominator Patient List
|
---|
| 37 | . S $P(@X@(IEN,7),U,4)="" ; Negative Numerator List
|
---|
| 38 | . S $P(@X@(IEN,7),U,2)="" ; Alternate Numerator List
|
---|
| 39 | . S $P(@X@(IEN,7),U,3)="" ; Alternate Denominator List
|
---|
| 40 | . S $P(@X@(IEN,7),U,5)="" ; Alternate Negative Numerator List
|
---|
| 41 | QUIT
|
---|
| 42 | ;
|
---|
[1438] | 43 | TRAN301 ; Grab FDA for entire file C0Q PATIENT LIST and store in Transport Global; Private EP
|
---|
[1501] | 44 | ; Not used. Dead code.
|
---|
[1438] | 45 | N C0QIEN S C0QIEN=0 ; IEN walker
|
---|
| 46 | N C0QREF1 S C0QREF1=$NAME(^TMP("C0QOLD",$J)) ; Temporary Global Reference
|
---|
| 47 | N C0QREF2 S C0QREF2=$NAME(^TMP("C0QNEW",$J)) ; Temporary Global Reference
|
---|
| 48 | K @C0QREF1,@C0QREF2 ; Kill that
|
---|
| 49 | F S C0QIEN=$O(^C0Q(301,C0QIEN)) Q:'+C0QIEN D
|
---|
| 50 | . D GETS^DIQ(1130580001.301,C0QIEN_",","*","",C0QREF1) ; Load FDA's in there
|
---|
| 51 | . M @C0QREF2@(1130580001.301,"?+"_C0QIEN_",")=@C0QREF1@(1130580001.301,C0QIEN_",") ; Change IENs to ?+ IENs
|
---|
| 52 | M @XPDGREF@("C0Q","1130580001.301")=@C0QREF2 ; Put in Transport Global
|
---|
| 53 | K @C0QREF1,@C0QREF2 ; Remove
|
---|
| 54 | QUIT
|
---|
| 55 | ;
|
---|
| 56 | TRAN201 ; Grab FDA for 201 C0Q MEASUREMENTS selected fields; Private EP
|
---|
| 57 | N C0QIEN S C0QIEN=0 ; IEN walker
|
---|
| 58 | N C0QREF1 S C0QREF1=$NAME(^TMP("C0QOLD",$J)) ; Temporary Global Reference
|
---|
| 59 | N C0QREF2 S C0QREF2=$NAME(^TMP("C0QNEW",$J)) ; Temporary Global Reference
|
---|
| 60 | K @C0QREF1,@C0QREF2 ; Kill that
|
---|
| 61 | ;
|
---|
| 62 | ; We need C0QCOUNT so that it wouldn't reuse the numbers, b/c updater wants numbers for every different item
|
---|
| 63 | N C0QCOUNT S C0QCOUNT=$O(^C0Q(201," "),-1) ; Counter for SubIENs for destination array; init at highest IEN to prevent dups
|
---|
| 64 | F S C0QIEN=$O(^C0Q(201,C0QIEN)) Q:'+C0QIEN D ; Walk IENs
|
---|
| 65 | . W "Exporting "_C0QIEN,!
|
---|
| 66 | . ; Fields SET NAME, BEGIN DATE, END DATE, LOCKED, USE ALL MEASURES, MU YEAR KEY
|
---|
| 67 | . D GETS^DIQ(1130580001.201,C0QIEN_",",".01;.02;.03;.05;.2;.3","",C0QREF1)
|
---|
| 68 | . M @C0QREF2@(1130580001.201,"?+"_C0QIEN_",")=@C0QREF1@(1130580001.201,C0QIEN_",") ; Change IENs to ?+ IENs
|
---|
| 69 | . N C0QIEN2 S C0QIEN2=0 ; Subfile walker
|
---|
| 70 | . F S C0QIEN2=$O(^C0Q(201,C0QIEN,5,C0QIEN2)) Q:'+C0QIEN2 D ; MEASURE subfile
|
---|
| 71 | . . W "Exporting IENS "_C0QIEN2_","_C0QIEN_",",!
|
---|
| 72 | . . D GETS^DIQ(1130580001.2011,C0QIEN2_","_C0QIEN_",",".01","",C0QREF1) ; MEASURE (#.01)
|
---|
| 73 | . . S C0QCOUNT=C0QCOUNT+1 ; Increment the counter for SubIEN (can't reuse)
|
---|
| 74 | . . M @C0QREF2@(1130580001.2011,"?+"_C0QCOUNT_","_"?+"_C0QIEN_",")=@C0QREF1@(1130580001.2011,C0QIEN2_","_C0QIEN_",") ; as above
|
---|
| 75 | ;
|
---|
| 76 | M @XPDGREF@("C0Q","1130580001.201")=@C0QREF2 ; Put in transport global
|
---|
| 77 | K @C0QREF1,@C0QREF2 ; Remove temp
|
---|
| 78 | QUIT
|
---|
| 79 | ;
|
---|
| 80 | POST201 ; File FDA for 201; Private EP
|
---|
[1501] | 81 | ;
|
---|
| 82 | ; Clean-up data if it already exists!
|
---|
| 83 | ; ZWRITE ^C0Q(201,:,5,:,0)
|
---|
| 84 | ; ^C0Q(201,1,5,599,0)=50
|
---|
| 85 | ; ^C0Q(201,1,5,600,0)=4
|
---|
| 86 | ; ^C0Q(201,1,5,601,0)=39
|
---|
| 87 | ; ^C0Q(201,1,5,602,0)=6
|
---|
| 88 | ; ^C0Q(201,1,5,603,0)=7
|
---|
| 89 | ; ^C0Q(201,1,5,604,0)=48
|
---|
| 90 | ; ^C0Q(201,1,5,605,0)=46
|
---|
| 91 | ;
|
---|
[1438] | 92 | IF $O(^C0Q(201,0)) DO QUIT ; Quit if data is already there.
|
---|
| 93 | . D MES^XPDUTL("Data exists in file C0Q MEASUREMENTS... Not adding new data")
|
---|
[1501] | 94 | . D MES^XPDUTL("Cleaning up broken pointers in C0Q MEASUREMENTS from deleted data in C0Q QUALITY MEASURE")
|
---|
| 95 | . ; This is very hairy code. Run through the 5 multiple in C0Q MEASUREMENT
|
---|
| 96 | . ; Grab the IEN in the .01, check if it exists; if not, kill.
|
---|
| 97 | . N DA,DIK ; DIK Variables; as well as our looper variables
|
---|
| 98 | . S (DA,DA(1))=0 ; Initial looper values
|
---|
| 99 | . F S DA(1)=$O(^C0Q(201,DA(1))) Q:'DA(1) D ; Loop through entries
|
---|
| 100 | . . D MES^XPDUTL("...Processing entry "_$P(^C0Q(201,DA(1),0),U)) ; msg
|
---|
| 101 | . . S DIK="^C0Q(201,"_DA(1)_",5," ; deletion root for the next loop
|
---|
| 102 | . . F S DA=$O(^C0Q(201,DA(1),5,DA)) Q:'DA D ; For each Measure
|
---|
| 103 | . . . N IEN S IEN=+^C0Q(201,DA(1),5,DA,0) ; Get IEN
|
---|
| 104 | . . . I IEN,'$D(^C0Q(101,IEN)) D ; If IEN is numeric, IEN exists in dest file
|
---|
| 105 | . . . . D MES^XPDUTL("......Deleting broken pointer "_IEN) ; msg
|
---|
| 106 | . . . . D ^DIK ; delete
|
---|
[1438] | 107 | ;
|
---|
[1501] | 108 | ; If new install, add data
|
---|
| 109 | ;
|
---|
[1438] | 110 | D MES^XPDUTL("Adding data to C0Q MEASUREMENTS")
|
---|
| 111 | N C0QFDA S C0QFDA=$NAME(@XPDGREF@("C0Q","1130580001.201")) ; Grab FDA from Transport Global
|
---|
| 112 | N C0QERR ; Error array for filer
|
---|
| 113 | D UPDATE^DIE("E",C0QFDA,"","C0QERR") ; File all
|
---|
| 114 | I $D(C0QERR) D ; if there's an error, print it out
|
---|
| 115 | . D MES^XPDUTL("Couldn't add data into C0Q MEASUREMENTS")
|
---|
| 116 | . S C0QERR=$Q(C0QERR)
|
---|
| 117 | . F S C0QERR=$Q(@C0QERR) Q:C0QERR="" D MES^XPDUTL(C0QERR_": "_@C0QERR)
|
---|
| 118 | QUIT
|
---|
| 119 | ;
|
---|
| 120 | POST301 ; Get FDA from Transport Global and install in destination system for C0Q PATIENT LIST; Private EP
|
---|
[1501] | 121 | ; Not used. Dead code.
|
---|
[1438] | 122 | N C0QFDA S C0QFDA=$NAME(@XPDGREF@("C0Q","1130580001.301")) ; FDA array name is the global reference
|
---|
| 123 | N C0QERR ; Error
|
---|
| 124 | D UPDATE^DIE("E",C0QFDA,"","C0QERR") ; File all
|
---|
| 125 | I $D(C0QERR) D ; if there's an error, print it out
|
---|
| 126 | . D MES^XPDUTL("Couldn't add data into C0Q PATIENT LIST file")
|
---|
| 127 | . S C0QERR=$Q(C0QERR)
|
---|
| 128 | . F S C0QERR=$Q(@C0QERR) Q:C0QERR="" D MES^XPDUTL(C0QERR_": "_@C0QERR)
|
---|
| 129 | QUIT
|
---|
| 130 | ;
|
---|
[1501] | 131 | PRE101 ; Clean existing data (from an earlier installation) from measures that are now merged to other measures
|
---|
| 132 | ; in C0Q QUALITY MEASURE in destination systems; Private EP
|
---|
| 133 | ;
|
---|
| 134 | ; Quit if C0Q Quality Measures isn't on the system.
|
---|
| 135 | Q:'$D(^C0Q(101))
|
---|
| 136 | ;
|
---|
| 137 | D MES^XPDUTL("Removing subsumed entries in C0Q QUALITY MEASURE")
|
---|
| 138 | ;
|
---|
| 139 | ; .01 field values to for records to remove
|
---|
| 140 | N C0QLIST
|
---|
| 141 | S C0QLIST("TEST M0028A")=""
|
---|
| 142 | S C0QLIST("MU EP 0028B")=""
|
---|
| 143 | S C0QLIST("M0013")=""
|
---|
| 144 | S C0QLIST("M0024")=""
|
---|
| 145 | S C0QLIST("M1")=""
|
---|
| 146 | S C0QLIST("M3")=""
|
---|
| 147 | S C0QLIST("M2")=""
|
---|
| 148 | S C0QLIST("M0028")=""
|
---|
| 149 | S C0QLIST("M111")=""
|
---|
| 150 | S C0QLIST("M112")=""
|
---|
| 151 | S C0QLIST("M113")=""
|
---|
| 152 | S C0QLIST("M128")=""
|
---|
| 153 | S C0QLIST("M5")=""
|
---|
| 154 | S C0QLIST("M7")=""
|
---|
| 155 | S C0QLIST("M0022")=""
|
---|
| 156 | S C0QLIST("12")=""
|
---|
| 157 | S C0QLIST("M0038")=""
|
---|
| 158 | S C0QLIST("M110")=""
|
---|
| 159 | S C0QLIST("MU EP NQF 0070")=""
|
---|
| 160 | ;
|
---|
| 161 | ; Root for ^DIK
|
---|
| 162 | N DIK S DIK="^C0Q(101,"
|
---|
| 163 | ;
|
---|
| 164 | ; Loop through list, find IEN for each one, kill off
|
---|
| 165 | N C0QITEM S C0QITEM="" ; Item
|
---|
| 166 | F S C0QITEM=$O(C0QLIST(C0QITEM)) Q:C0QITEM="" D ; Loop
|
---|
| 167 | . Q:'$DATA(^C0Q(101,"B",C0QITEM)) ; Quit if not present.
|
---|
| 168 | . N DA S DA=$O(^C0Q(101,"B",C0QITEM,"")) ; IEN
|
---|
| 169 | . ; The original software has MU EP NQF 0070 incorrectly. If the 1 node
|
---|
| 170 | . ; has Pneumonia, we want to remove that entry.
|
---|
| 171 | . I C0QITEM="MU EP NQF 0070",^C0Q(101,DA,1)'["Pneumonia" QUIT
|
---|
| 172 | . D MES^XPDUTL("...Removing "_C0QITEM) ; Message to user
|
---|
| 173 | . D ^DIK ; Delete
|
---|
| 174 | ;
|
---|
| 175 | REN ; Rename a bunch of entries
|
---|
| 176 | ; ("OLD NAME")="NEW NAME"
|
---|
| 177 | D MES^XPDUTL("Renaming Old entries in C0Q QUALITY MEASURE")
|
---|
| 178 | ;
|
---|
| 179 | N C0QLIST
|
---|
| 180 | S C0QLIST("NQF0038 NUM1 DPT")="MU EP NQF 0038 NUM1 DPT"
|
---|
| 181 | S C0QLIST("NQF0038 NUM10")="MU EP NQF 0038 NUM10 FLU"
|
---|
| 182 | S C0QLIST("NQF0038 NUM11 COMBO5")="MU EP NQF 0038 NUM11 COMBO5"
|
---|
| 183 | S C0QLIST("NQF0038 NUM12 COMBO6")="MU EP NQF 0038 NUM12 COMBO6"
|
---|
| 184 | S C0QLIST("NQF0038 NUM2 IPV")="MU EP NQF 0038 NUM2 IPV"
|
---|
| 185 | S C0QLIST("NQF0038 NUM3 MMR")="MU EP NQF 0038 NUM3 MMR"
|
---|
| 186 | S C0QLIST("NQF0038 NUM4 HiB")="MU EP NQF 0038 NUM4 HiB"
|
---|
| 187 | S C0QLIST("NQF0038 NUM5 HEP B")="MU EP NQF 0038 NUM5 HEP B"
|
---|
| 188 | S C0QLIST("NQF0038 NUM6 VZV")="MU EP NQF 0038 NUM6 VZV"
|
---|
| 189 | S C0QLIST("NQF0038 NUM7 PCV")="MU EP NQF 0038 NUM7 PCV"
|
---|
| 190 | S C0QLIST("NQF0038 NUM8 HEP A")="MU EP NQF 0038 NUM8 HEP A"
|
---|
| 191 | S C0QLIST("NQF0038 NUM9")="MU EP NQF 0038 NUM9 RV"
|
---|
| 192 | S C0QLIST("M124")="PQRI MEASURE 124"
|
---|
| 193 | S C0QLIST("M173")="PQRI MEASURE 173"
|
---|
| 194 | S C0QLIST("M39")="PQRI MEASURE 39"
|
---|
| 195 | S C0QLIST("M47")="PQRI MEASURE 47"
|
---|
| 196 | S C0QLIST("M48")="PQRI MEASURE 48"
|
---|
| 197 | ;
|
---|
| 198 | N C0QITEM S C0QITEM="" ; Item
|
---|
| 199 | N C0QFDA ; FDA
|
---|
| 200 | F S C0QITEM=$O(C0QLIST(C0QITEM)) Q:C0QITEM="" D ; Loop through
|
---|
| 201 | . N IEN S IEN=$O(^C0Q(101,"B",C0QITEM,"")) ; Get IEN from File using old name
|
---|
| 202 | . I IEN S C0QFDA(1130580001.101,IEN_",",.01)=C0QLIST(C0QITEM) ; If found, put new name in FDA for this IEN
|
---|
| 203 | . I IEN D MES^XPDUTL("...Renaming "_C0QITEM_" to "_C0QLIST(C0QITEM)) ; Print message to user
|
---|
| 204 | ;
|
---|
| 205 | N C0QERR ; Error for FILE^DIE
|
---|
| 206 | I $D(C0QFDA) D FILE^DIE("E",$NA(C0QFDA),$NA(C0QERR)) ; File if FDA has contents
|
---|
| 207 | E D MES^XPDUTL("No entries to rename") ; If nothing, tell user so
|
---|
| 208 | ;
|
---|
| 209 | D:$D(C0QERR) ; If Error, print it
|
---|
| 210 | . D MES^XPDUTL("Error Filing Data. FILE^DIE reported:")
|
---|
| 211 | . N REF S REF=$NA(C0QERR) ; $Q Reference
|
---|
| 212 | . F S REF=$Q(@REF) Q:REF="" D MES^XPDUTL(REF_"="_@REF) ; Loop and Print
|
---|
| 213 | ;
|
---|
[1438] | 214 | QUIT
|
---|