Changeset 1586 for ccr/trunk/p/C0COVREU.m
- Timestamp:
- Oct 30, 2012, 1:11:02 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ccr/trunk/p/C0COVREU.m
r1544 r1586 1 1 C0COVREU ; CCDCCR/ELN - CCR/CCD PROCESSING FOR LAB,RAD,TIU RESULTS ; 10/12/15 2 ;;1.2;C0C;;May 11, 2012;Build 47 3 ; 4 ; 5 GHL7 ; GET HL7 MESSAGE FOR LABS FOR THIS PATIENT 6 N C0CPTID,C0CSPC,C0CSDT,C0CEDT,C0CR,C0CLLMT,C0CLSTRT 7 ; SET UP FOR LAB API CALL 8 S C0CPTID=$$SSN^C0CDPT(DFN) ; GET THE SSN FOR THIS PATIENT 9 I C0CPTID="" D Q ; NO SSN, COMPLAIN AND QUIT 10 . W "LAB LOOKUP FAILED, NO SSN",! 11 . S C0CNSSN=1 ; SET NO SSN FLAG 12 S C0CSPC="*" ; LOOKING FOR ALL LABS 13 ;I $D(^TMP("C0CCCR","RPMS")) D ; RUNNING RPMS 14 ;. D DT^DILF(,"T-365",.C0CSDT) ; START DATE ONE YEAR AGO TO LIMIT VOLUME 15 ;E D DT^DILF(,"T-5000",.C0CSDT) ; START DATE LONG AGO TO GET EVERYTHING 16 ;D DT^DILF(,"T",.C0CEDT) ; END DATE TODAY 17 S C0CLLMT=$$GET^C0CPARMS("LABLIMIT") ; GET THE LIMIT PARM 18 S C0CLSTRT=$$GET^C0CPARMS("LABSTART") ; GET START PARM 19 D DT^DILF(,C0CLLMT,.C0CSDT) ; 20 W "LAB LIMIT: ",C0CLLMT,! 21 D DT^DILF(,C0CLSTRT,.C0CEDT) ; END DATE TODAY - IMPLEMENT END DATE PARM 22 S C0CR=$$LAB^C0CLA7Q(C0CPTID,C0CSDT,C0CEDT,C0CSPC,C0CSPC) ; CALL LAB LOOKUP 23 Q 2 ;;1.2;CCD/CCR GENERATION UTILITIES;;Oct 30, 2012;Build 50 3 ; 4 ; 5 ; This program is free software: you can redistribute it and/or modify 6 ; it under the terms of the GNU Affero General Public License as 7 ; published by the Free Software Foundation, either version 3 of the 8 ; License, or (at your option) any later version. 9 ; 10 ; This program is distributed in the hope that it will be useful, 11 ; but WITHOUT ANY WARRANTY; without even the implied warranty of 12 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 ; GNU Affero General Public License for more details. 14 ; 15 ; You should have received a copy of the GNU Affero General Public License 16 ; along with this program. If not, see <http://www.gnu.org/licenses/>. 17 ; 18 ; 19 GHL7 ; GET HL7 MESSAGE FOR LABS FOR THIS PATIENT 20 N C0CPTID,C0CSPC,C0CSDT,C0CEDT,C0CR,C0CLLMT,C0CLSTRT 21 ; SET UP FOR LAB API CALL 22 S C0CPTID=$$SSN^C0CDPT(DFN) ; GET THE SSN FOR THIS PATIENT 23 I C0CPTID="" D Q ; NO SSN, COMPLAIN AND QUIT 24 . W "LAB LOOKUP FAILED, NO SSN",! 25 . S C0CNSSN=1 ; SET NO SSN FLAG 26 S C0CSPC="*" ; LOOKING FOR ALL LABS 27 ;I $D(^TMP("C0CCCR","RPMS")) D ; RUNNING RPMS 28 ;. D DT^DILF(,"T-365",.C0CSDT) ; START DATE ONE YEAR AGO TO LIMIT VOLUME 29 ;E D DT^DILF(,"T-5000",.C0CSDT) ; START DATE LONG AGO TO GET EVERYTHING 30 ;D DT^DILF(,"T",.C0CEDT) ; END DATE TODAY 31 S C0CLLMT=$$GET^C0CPARMS("LABLIMIT") ; GET THE LIMIT PARM 32 S C0CLSTRT=$$GET^C0CPARMS("LABSTART") ; GET START PARM 33 D DT^DILF(,C0CLLMT,.C0CSDT) ; 34 W "LAB LIMIT: ",C0CLLMT,! 35 D DT^DILF(,C0CLSTRT,.C0CEDT) ; END DATE TODAY - IMPLEMENT END DATE PARM 36 S C0CR=$$LAB^C0CLA7Q(C0CPTID,C0CSDT,C0CEDT,C0CSPC,C0CSPC) ; CALL LAB LOOKUP 37 Q 24 38 LTYP(OSEG,OTYP,OVARA,OC0CQT) ; 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 39 N OI,OI2,OTAB,OTI,OV,OVAR 40 S OTAB=$NA(@C0CTAB@(OTYP)) ; TABLE FOR SEGMENT TYPE 41 I '$D(OC0CQT) S C0CQT=0 ; NOT C0CQT IS DEFAULT 42 E S C0CQT=OC0CQT ; ACCEPT C0CQT FLAG 43 I 1 D ; FOR HL7 SEGMENT TYPE 44 . S OI="" ; INDEX INTO FIELDS IN SEG 45 . F S OI=$O(@OTAB@(OI)) Q:OI="" D ; FOR EACH FIELD OF THE SEGMENT 46 . . S OTI=$P(@OTAB@(OI),"^",1) ; TABLE INDEX 47 . . S OVAR=$P(@OTAB@(OI),"^",4) ; CCR VARIABLE IF DEFINED 48 . . S OV=$P(OSEG,"|",OTI+1) ; PULL OUT VALUE 49 . . I $P(OI,";",2)'="" D ; THIS IS DEFINING A SUB-VALUE 50 . . . S OI2=$P(OTI,";",2) ; THE SUB-INDEX 51 . . . S OV=$P(OV,"^",OI2) ; PULL OUT SUB-VALUE 52 . . I OVAR'="" S OVARA(OVAR)=OV ; PASS BACK VARIABLE AND VALUE 53 . . I 'C0CQT D ; PRINT OUTPUT IF C0CQT IS FALSE 54 . . . I OV'="" W OI_": "_$P(@OTAB@(OI),"^",3),": ",OVAR,": ",OV,! 55 Q 42 56 LOBX ; 43 Q 44 ; 57 Q 45 58 OUT(DFN) ; WRITE OUT A CCR THAT HAS JUST BEEN PROCESSED (FOR TESTING) 46 47 48 49 50 51 59 N GA,GF,GD 60 S GA=$NA(^TMP("C0CCCR",$J,DFN,"CCR",1)) 61 S GF="RPMS_CCR_"_DFN_"_"_DT_".xml" 62 S GD=^TMP("C0CCCR","ODIR") 63 W $$OUTPUT^C0CXPATH(GA,GF,GD) 64 Q 52 65 SETTBL ; 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 66 K X ; CLEAR X 67 S X("PID","PID1")="1^00104^Set ID - Patient ID" 68 S X("PID","PID2")="2^00105^Patient ID (External ID)" 69 S X("PID","PID3")="3^00106^Patient ID (Internal ID)" 70 S X("PID","PID4")="4^00107^Alternate Patient ID" 71 S X("PID","PID5")="5^00108^Patient's Name" 72 S X("PID","PID6")="6^00109^Mother's Maiden Name" 73 S X("PID","PID7")="7^00110^Date of Birth" 74 S X("PID","PID8")="8^00111^Sex" 75 S X("PID","PID9")="9^00112^Patient Alias" 76 S X("PID","PID10")="10^00113^Race" 77 S X("PID","PID11")="11^00114^Patient Address" 78 S X("PID","PID12")="12^00115^County Code" 79 S X("PID","PID13")="13^00116^Phone Number - Home" 80 S X("PID","PID14")="14^00117^Phone Number - Business" 81 S X("PID","PID15")="15^00118^Language - Patient" 82 S X("PID","PID16")="16^00119^Marital Status" 83 S X("PID","PID17")="17^00120^Religion" 84 S X("PID","PID18")="18^00121^Patient Account Number" 85 S X("PID","PID19")="19^00122^SSN Number - Patient" 86 S X("PID","PID20")="20^00123^Drivers License - Patient" 87 S X("PID","PID21")="21^00124^Mother's Identifier" 88 S X("PID","PID22")="22^00125^Ethnic Group" 89 S X("PID","PID23")="23^00126^Birth Place" 90 S X("PID","PID24")="24^00127^Multiple Birth Indicator" 91 S X("PID","PID25")="25^00128^Birth Order" 92 S X("PID","PID26")="26^00129^Citizenship" 93 S X("PID","PID27")="27^00130^Veteran.s Military Status" 94 S X("PID","PID28")="28^00739^Nationality" 95 S X("PID","PID29")="29^00740^Patient Death Date/Time" 96 S X("PID","PID30")="30^00741^Patient Death Indicator" 97 S X("NTE","NTE1")="1^00573^Set ID - NTE" 98 S X("NTE","NTE2")="2^00574^Source of Comment" 99 S X("NTE","NTE3")="3^00575^Comment" 100 S X("ORC","ORC1")="1^00215^Order Control" 101 S X("ORC","ORC2")="2^00216^Placer Order Number" 102 S X("ORC","ORC3")="3^00217^Filler Order Number" 103 S X("ORC","ORC4")="4^00218^Placer Order Number" 104 S X("ORC","ORC5")="5^00219^Order Status" 105 S X("ORC","ORC6")="6^00220^Response Flag" 106 S X("ORC","ORC7")="7^00221^Quantity/Timing" 107 S X("ORC","ORC8")="8^00222^Parent" 108 S X("ORC","ORC9")="9^00223^Date/Time of Transaction" 109 S X("ORC","ORC10")="10^00224^Entered By" 110 S X("ORC","ORC11")="11^00225^Verified By" 111 S X("ORC","ORC12")="12^00226^Ordering Provider" 112 S X("ORC","ORC13")="13^00227^Enterer's Location" 113 S X("ORC","ORC14")="14^00228^Call Back Phone Number" 114 S X("ORC","ORC15")="15^00229^Order Effective Date/Time" 115 S X("ORC","ORC16")="16^00230^Order Control Code Reason" 116 S X("ORC","ORC17")="17^00231^Entering Organization" 117 S X("ORC","ORC18")="18^00232^Entering Device" 118 S X("ORC","ORC19")="19^00233^Action By" 119 S X("OBR","OBR1")="1^00237^Set ID - Observation Request" 120 S X("OBR","OBR2")="2^00216^Placer Order Number" 121 S X("OBR","OBR3")="3^00217^Filler Order Number" 122 S X("OBR","OBR4")="4^00238^Universal Service ID" 123 S X("OBR","OBR4;LOINC")="4;1^00238^Universal Service ID - LOINC^RESULTCODE" 124 S X("OBR","OBR4;DESC")="4;2^00238^Universal Service ID - DESC^RESULTDESCRIPTIONTEXT" 125 S X("OBR","OBR4;VACODE")="4;3^00238^Universal Service ID - VACODE^RESULTCODINGSYSTEM" 126 S X("OBR","OBR5")="5^00239^Priority" 127 S X("OBR","OBR6")="6^00240^Requested Date/Time" 128 S X("OBR","OBR7")="7^00241^Observation Date/Time^RESULTASSESSMENTDATETIME" 129 S X("OBR","OBR8")="8^00242^Observation End Date/Time" 130 S X("OBR","OBR9")="9^00243^Collection Volume" 131 S X("OBR","OBR10")="10^00244^Collector Identifier" 132 S X("OBR","OBR11")="11^00245^Specimen Action Code" 133 S X("OBR","OBR12")="12^00246^Danger Code" 134 S X("OBR","OBR13")="13^00247^Relevant Clinical Info." 135 S X("OBR","OBR14")="14^00248^Specimen Rcv'd. Date/Time" 136 S X("OBR","OBR15")="15^00249^Specimen Source" 137 S X("OBR","OBR16")="16^00226^Ordering Provider XCN^RESULTSOURCEACTORID" 138 S X("OBR","OBR17")="17^00250^Order Callback Phone Number" 139 S X("OBR","OBR18")="18^00251^Placers Field 1" 140 S X("OBR","OBR19")="19^00252^Placers Field 2" 141 S X("OBR","OBR20")="20^00253^Filler Field 1" 142 S X("OBR","OBR21")="21^00254^Filler Field 2" 143 S X("OBR","OBR22")="22^00255^Results Rpt./Status Change" 144 S X("OBR","OBR23")="23^00256^Charge to Practice" 145 S X("OBR","OBR24")="24^00257^Diagnostic Service Sect" 146 S X("OBR","OBR25")="25^00258^Result Status^RESULTSTATUS" 147 S X("OBR","OBR26")="26^00259^Parent Result" 148 S X("OBR","OBR27")="27^00221^Quantity/Timing" 149 S X("OBR","OBR28")="28^00260^Result Copies to" 150 S X("OBR","OBR29")="29^00261^Parent Number" 151 S X("OBR","OBR30")="30^00262^Transportation Mode" 152 S X("OBR","OBR31")="31^00263^Reason for Study" 153 S X("OBR","OBR32")="32^00264^Principal Result Interpreter" 154 S X("OBR","OBR33")="33^00265^Assistant Result Interpreter" 155 S X("OBR","OBR34")="34^00266^Technician" 156 S X("OBR","OBR35")="35^00267^Transcriptionist" 157 S X("OBR","OBR36")="36^00268^Scheduled Date/Time" 158 S X("OBR","OBR37")="37^01028^Number of Sample Containers" 159 S X("OBR","OBR38")="38^38^01029 Transport Logistics of Collected Sample" 160 S X("OBR","OBR39")="39^01030^Collector.s Comment" 161 S X("OBR","OBR40")="40^01031^Transport Arrangement Responsibility" 162 S X("OBR","OBR41")="41^01032^Transport Arranged" 163 S X("OBR","OBR42")="42^01033^Escort Required" 164 S X("OBR","OBR43")="43^01034^Planned Patient Transport Comment" 165 S X("OBX","OBX1")="1^00559^Set ID - OBX" 166 S X("OBX","OBX2")="2^00676^Value Type" 167 S X("OBX","OBX3")="3^00560^Observation Identifier" 168 S X("OBX","OBX3;C1")="3;1^00560^Observation Identifier^C1" 169 S X("OBX","OBX3;C2")="3;2^00560^Observation Identifier^C2" 170 S X("OBX","OBX3;C3")="3;3^00560^Observation Identifier^C3" 171 S X("OBX","OBX3;C4")="3;4^00560^Observation Identifier^C4" 172 S X("OBX","OBX3;C5")="3;5^00560^Observation Identifier^C5" 173 S X("OBX","OBX3;C6")="3;6^00560^Observation Identifier^C6" 174 S X("OBX","OBX4")="4^00769^Observation Sub-Id" 175 S X("OBX","OBX5")="5^00561^Observation Results^RESULTTESTVALUE" 176 S X("OBX","OBX6")="6^00562^Units^RESULTTESTUNITS" 177 S X("OBX","OBX7")="7^00563^Reference Range^RESULTTESTNORMALDESCTEXT" 178 S X("OBX","OBX8")="8^00564^Abnormal Flags^RESULTTESTFLAG" 179 S X("OBX","OBX9")="9^00639^Probability" 180 S X("OBX","OBX10")="10^00565^Nature of Abnormal Test" 181 S X("OBX","OBX11")="11^00566^Observ. Result Status^RESULTTESTSTATUSTEXT" 182 S X("OBX","OBX12")="12^00567^Date Last Normal Value" 183 S X("OBX","OBX13")="13^00581^User Defined Access Checks" 184 S X("OBX","OBX14")="14^00582^Date/Time of Observation^RESULTTESTDATETIME" 185 S X("OBX","OBX15")="15^00583^Producer.s ID^RESULTTESTSOURCEACTORID" 186 S X("OBX","OBX16")="16^00584^Responsible Observer" 187 S X("OBX","OBX17")="17^00936^Observation Method" 188 K ^TMP("C0CCCR","LABTBL") 189 M ^TMP("C0CCCR","LABTBL")=X ; SET VALUES IN LAB TBL 190 S ^TMP("C0CCCR","LABTBL",0)="V3" 191 Q
Note:
See TracChangeset
for help on using the changeset viewer.