| [613] | 1 | MDKRPC1 ;HIOFO/FT-RPC to return patient data ;2/19/08  13:13
 | 
|---|
 | 2 |         ;;1.0;CLINICAL PROCEDURES;**6**;Apr 01, 2004;Build 102
 | 
|---|
 | 3 |         ;
 | 
|---|
 | 4 |         ; This routine uses the following IAs:
 | 
|---|
 | 5 |         ; #1239  - ^PXRHS03               (controlled)
 | 
|---|
 | 6 |         ; #1240  - ^PXRHS04               (private)
 | 
|---|
 | 7 |         ; #1625  - ^XUA4A72               (supported)
 | 
|---|
 | 8 |         ; #2263  - ^XPAR                  (supported)
 | 
|---|
 | 9 |         ; #2864  - ^TIUPP3 calls          (controlled)
 | 
|---|
 | 10 |         ; #3065  - ^XLFNAME               (supported)
 | 
|---|
 | 11 |         ; #3556  - ^LA7QRY                (controlled)
 | 
|---|
 | 12 |         ; #10035 - ^DPT global refs       (supported)
 | 
|---|
 | 13 |         ; #10060 - ^FILE 200 refs         (supported)
 | 
|---|
 | 14 |         ; #10099 - ^GMRADPT calls         (supported)
 | 
|---|
 | 15 |         ; #10103 - ^XLFDT calls           (supported)
 | 
|---|
 | 16 |         ; #4868  - VA(200,"AUSER"         (Private)
 | 
|---|
 | 17 |         ;
 | 
|---|
 | 18 | RPC(RESULT,OPTION,DATA) ; RPC to return existing VistA patient data for
 | 
|---|
 | 19 |         ; renal dialysis data entry.
 | 
|---|
 | 20 |         ; RPC: [MDK GET VISTA DATA]
 | 
|---|
 | 21 |         ;
 | 
|---|
 | 22 |         ; Input parameters
 | 
|---|
 | 23 |         ;  1. RESULT [Reference/Required] RPC Return array
 | 
|---|
 | 24 |         ;  2. OPTION [Literal/Required] RPC Option to execute
 | 
|---|
 | 25 |         ;  3. DATA [Literal/Required] Other data as required for call
 | 
|---|
 | 26 |         ;
 | 
|---|
 | 27 |         K RESULT
 | 
|---|
 | 28 |         D:$T(@OPTION)]"" @OPTION
 | 
|---|
 | 29 |         S:'$D(RESULT) RESULT(0)="-1^No results returned"
 | 
|---|
 | 30 |         Q
 | 
|---|
 | 31 | DEMO    ; demographic
 | 
|---|
 | 32 |         N DFN,MDKNODE0,MDKSSN
 | 
|---|
 | 33 |         S DFN=$G(DATA)
 | 
|---|
 | 34 |         I '$G(DFN) D  Q
 | 
|---|
 | 35 |         .S RESULT(0)="-1^DFN is not defined"
 | 
|---|
 | 36 |         .Q
 | 
|---|
 | 37 |         I '$D(^DPT(DFN,0)) D  Q
 | 
|---|
 | 38 |         .S RESULT(0)="-1^Patient not found"
 | 
|---|
 | 39 |         .Q
 | 
|---|
 | 40 |         S MDKNODE0=$G(^DPT(DFN,0))
 | 
|---|
 | 41 |         S RESULT(1)=$P(MDKNODE0,U,1) ;name
 | 
|---|
 | 42 |         S RESULT(2)=$P(MDKNODE0,U,9) ;ssn
 | 
|---|
 | 43 |         S RESULT(3)=$P(MDKNODE0,U,3) ;date of birth
 | 
|---|
 | 44 |         S RESULT(0)=3
 | 
|---|
 | 45 |         Q
 | 
|---|
 | 46 | ALLERGY ; get allergy data
 | 
|---|
 | 47 |         ; DATA = DFN
 | 
|---|
 | 48 |         S DFN=$G(DATA)
 | 
|---|
 | 49 |         N GMRAL
 | 
|---|
 | 50 |         N MDKCNT,MDLOOP
 | 
|---|
 | 51 |         S (MDKCNT,MDKLOOP)=0
 | 
|---|
 | 52 |         D EN1^GMRADPT
 | 
|---|
 | 53 |         I $O(GMRAL(0))'>0 D  Q
 | 
|---|
 | 54 |         .S:$G(GMRAL)="" RESULT(1)="No Allergy Assessment"
 | 
|---|
 | 55 |         .S:$G(GMRAL)=0 RESULT(1)="No Known Allergies"
 | 
|---|
 | 56 |         .S RESULT(0)=1
 | 
|---|
 | 57 |         .Q
 | 
|---|
 | 58 |         I $O(GMRAL(0))>0 D
 | 
|---|
 | 59 |         .F  S MDKLOOP=$O(GMRAL(MDKLOOP)) Q:MDKLOOP'>0  D
 | 
|---|
 | 60 |         ..S MDKCNT=MDKCNT+1
 | 
|---|
 | 61 |         ..S RESULT(MDKCNT)=$P($G(GMRAL(MDKLOOP)),U,2)
 | 
|---|
 | 62 |         ..Q
 | 
|---|
 | 63 |         .S RESULT(0)=MDKCNT
 | 
|---|
 | 64 |         .Q
 | 
|---|
 | 65 |         Q
 | 
|---|
 | 66 | SHOTS   ; get latest vaccination data
 | 
|---|
 | 67 |         N MDKCNT,MDKDATE,MDKIEN,MDKIMMUM,MDKNAME,MDKNODE
 | 
|---|
 | 68 |         S DFN=$G(DATA)
 | 
|---|
 | 69 |         S (MDKCNT,RESULT(0))=0
 | 
|---|
 | 70 |         S MDKIMMUM("HEP A")="HEPATITIS A"
 | 
|---|
 | 71 |         S MDKIMMUM("HEP B")="HEPATITIS B"
 | 
|---|
 | 72 |         S MDKIMMUM("INFLUENZA")="FLU"
 | 
|---|
 | 73 |         S MDKIMMUM("PNEUMO-VAC")="PNEUMOCOCCAL"
 | 
|---|
 | 74 |         ;S MDKIMMUM("PNEUMOCOCCAL")="PNEUMONIA"
 | 
|---|
 | 75 |         S MDKIMMUM("PPD")="PPD"
 | 
|---|
 | 76 |         D IMMUN^PXRHS03(DFN)
 | 
|---|
 | 77 |         F MDKNAME="HEP A","HEP B","INFLUENZA","PNEUMO-VAC" D
 | 
|---|
 | 78 |         .Q:'$D(^TMP("PXI",$J,MDKNAME))
 | 
|---|
 | 79 |         .S MDKDATE=0
 | 
|---|
 | 80 |         .F  S MDKDATE=$O(^TMP("PXI",$J,MDKNAME,MDKDATE)) Q:'MDKDATE  D
 | 
|---|
 | 81 |         ..S MDKIEN=0
 | 
|---|
 | 82 |         ..F  S MDKIEN=$O(^TMP("PXI",$J,MDKNAME,MDKDATE,MDKIEN)) Q:'MDKIEN  D
 | 
|---|
 | 83 |         ...S MDKNODE=$G(^TMP("PXI",$J,MDKNAME,MDKDATE,MDKIEN,0))
 | 
|---|
 | 84 |         ...Q:MDKNODE=""
 | 
|---|
 | 85 |         ...S MDKCNT=MDKCNT+1
 | 
|---|
 | 86 |         ...;RESULT(N)=shot name^date^reaction^contraindicated
 | 
|---|
 | 87 |         ...S RESULT(MDKCNT)=MDKIMMUM(MDKNAME)_U_$P(MDKNODE,U,3)_U_$P(MDKNODE,U,6)_U_$P(MDKNODE,U,7)
 | 
|---|
 | 88 |         ...Q
 | 
|---|
 | 89 |         ..Q
 | 
|---|
 | 90 |         .Q
 | 
|---|
 | 91 |         S RESULT(0)=MDKCNT
 | 
|---|
 | 92 |         K ^TMP("PXI",$J)
 | 
|---|
 | 93 |         ; get PPD (skin) result
 | 
|---|
 | 94 |         D SKIN^PXRHS04(DFN)
 | 
|---|
 | 95 |         I $D(^TMP("PXS",$J)) D
 | 
|---|
 | 96 |         .S MDKDATE=0
 | 
|---|
 | 97 |         .F  S MDKDATE=$O(^TMP("PXS",$J,"PPD",MDKDATE)) Q:'MDKDATE  D
 | 
|---|
 | 98 |         ..S MDKIEN=0
 | 
|---|
 | 99 |         ..F  S MDKIEN=$O(^TMP("PXS",$J,"PPD",MDKDATE,MDKIEN)) Q:'MDKIEN  D
 | 
|---|
 | 100 |         ...S MDKNODE=$G(^TMP("PXS",$J,"PPD",MDKDATE,MDKIEN,0))
 | 
|---|
 | 101 |         ...Q:MDKNODE=""
 | 
|---|
 | 102 |         ...S MDKCNT=MDKCNT+1
 | 
|---|
 | 103 |         ...;RESULT(N)=skin test^date
 | 
|---|
 | 104 |         ...S RESULT(MDKCNT)=$P(MDKNODE,U,1)_U_$P(MDKNODE,U,2)
 | 
|---|
 | 105 |         ...S RESULT(0)=MDKCNT
 | 
|---|
 | 106 |         ...Q
 | 
|---|
 | 107 |         ..Q
 | 
|---|
 | 108 |         .Q
 | 
|---|
 | 109 |         K ^TMP("PXS",$J)
 | 
|---|
 | 110 |         Q
 | 
|---|
 | 111 | LAB     ; get lab results
 | 
|---|
 | 112 |         ; data = dfn^start date^end date^max # of entires to return
 | 
|---|
 | 113 |         N LA7PTID,LA7SDT,LA7EDT,LA7SC,LA7SPEC
 | 
|---|
 | 114 |         N MDK64PTR,MDKARRAY,MDKCNT,MDKCODE,MDKDATE,MDKEDT,MDKFLAG,MDKLOOP,MDKMAX,MDKNLT,MDKNODE,MDKODT,MDKRSULT
 | 
|---|
 | 115 |         N MDKSC,MDKSDT,MDKSSN,MDKTEST,MDKTOT,MDKUNIT
 | 
|---|
 | 116 |         S DATA=$G(DATA)
 | 
|---|
 | 117 |         S DFN=$P(DATA,U,1)
 | 
|---|
 | 118 |         Q:'DFN
 | 
|---|
 | 119 |         S MDKSDT=$P(DATA,U,2) ;start date
 | 
|---|
 | 120 |         S MDKEDT=$P(DATA,U,3) ;end date
 | 
|---|
 | 121 |         S MDKMAX=+$P(DATA,U,4) ;# of entries per test
 | 
|---|
 | 122 |         S MDKSSN=$P($G(^DPT(DFN,0)),U,9) ;patient ssn
 | 
|---|
 | 123 |         I MDKEDT="" S MDKEDT=$$NOW^XLFDT()
 | 
|---|
 | 124 |         ;I MDKSDT="" S MDKSDT=$$FMADD^XLFDT(DT,-90) ;go back 90 days
 | 
|---|
 | 125 |         I MDKSDT="" S MDKSDT=$$FMADD^XLFDT(DT,-365) ;<-- TESTING ONLY
 | 
|---|
 | 126 |         I 'MDKMAX S MDKMAX=3
 | 
|---|
 | 127 |         ; array(nlt code)=test name
 | 
|---|
 | 128 |         S MDKSC("84520.")="BUN"
 | 
|---|
 | 129 |         S MDKSC("82565.")="CREATININE"
 | 
|---|
 | 130 |         S MDKSC("84295.")="SODIUM"
 | 
|---|
 | 131 |         S MDKSC("84140.")="POTASSIUM"
 | 
|---|
 | 132 |         S MDKSC("82435.")="CHLORIDE"
 | 
|---|
 | 133 |         S MDKSC("82830.")="CARBON DIOXIDE"
 | 
|---|
 | 134 |         S MDKSC("82310.")="CALCIUM"
 | 
|---|
 | 135 |         S MDKSC("84100.")="PHOSPHORUS"
 | 
|---|
 | 136 |         S MDKSC("82040.")="ALBUMIN"
 | 
|---|
 | 137 |         S MDKSC("84455.")="AST"
 | 
|---|
 | 138 |         S MDKSC("84465.")="ALT"
 | 
|---|
 | 139 |         S MDKSC("84075.")="ALKALINE PHOSPHATASE"
 | 
|---|
 | 140 |         S MDKSC("82250.")="BILIRUBIN"
 | 
|---|
 | 141 |         S MDKSC("83020.")="HEMOGLOBIN"
 | 
|---|
 | 142 |         S MDKSC("85055.")="HEMATOCRIT"
 | 
|---|
 | 143 |         S MDKSC("85569.")="WBC"
 | 
|---|
 | 144 |         S MDKSC("86806.")="PLATELETS"
 | 
|---|
 | 145 |         S MDKSC("83057.")="HEMOGLOBIN A1C"
 | 
|---|
 | 146 |         S MDKSC("82466.")="CHOLESTEROL"
 | 
|---|
 | 147 |         S MDKSC("84480.")="TRIGLYCERIDES"
 | 
|---|
 | 148 |         S MDKSC("82370.")="FERRITIN"
 | 
|---|
 | 149 |         S MDKSC("83540.")="IRON"
 | 
|---|
 | 150 |         S MDKSC("82060.")="TRANSFERRIN"
 | 
|---|
 | 151 |         S MDKSC("84012.")="PARATHRYROID HORMONE"
 | 
|---|
 | 152 |         S MDKSC("81512.")="ALUMINUM"
 | 
|---|
 | 153 |         S MDKSC("89068.")="HEPATITIS B SURFACE ANTIGEN"
 | 
|---|
 | 154 |         S MDKSC("89065.")="HEPATITIS B SURFACE ANTIBODY"
 | 
|---|
 | 155 |         S MDKSC("89067.")="HEPATITIS B SURFACE ANTIBODY"
 | 
|---|
 | 156 |         S MDKSC("82013.")="HEPATITIS B SURFACE ANTIBODY"
 | 
|---|
 | 157 |         S MDKSC("89095.")="HEPATITIS B SURFACE ANTIBODY"
 | 
|---|
 | 158 |         S MDKSC("89127.")="HEPATITIS B SURFACE ANTIBODY"
 | 
|---|
 | 159 |         S MDKSC("89128.")="HEPATITIS B SURFACE ANTIBODY"
 | 
|---|
 | 160 |         S MDKSC("87398.")="HEPATITIS B SURFACE ANTIBODY"
 | 
|---|
 | 161 |         S MDKSC("89699.")="HEPATITIS B SURFACE ANTIBODY"
 | 
|---|
 | 162 |         S MDKSC("89070.")="HEPATITIS C ANTIBODY"
 | 
|---|
 | 163 |         S MDKSC("87261.")="FLU"
 | 
|---|
 | 164 |         K ^TMP("HLS",$J)
 | 
|---|
 | 165 |         S LA7SDT=MDKSDT_"^RAD" ;start date
 | 
|---|
 | 166 |         S LA7EDT=MDKEDT_"^RAD" ;end date
 | 
|---|
 | 167 |         S LA7SC="CH" ;all chemistry tests
 | 
|---|
 | 168 |         S LA7SPEC="*" ;all specimens
 | 
|---|
 | 169 |         S LA7PTID=MDKSSN ;patient's ssn
 | 
|---|
 | 170 |         S MDKARRAY=$$GCPR^LA7QRY(LA7PTID,LA7SDT,LA7EDT,.LA7SC,LA7SPEC,"","","")
 | 
|---|
 | 171 |         S (MDKCNT,MDKTOT)=0
 | 
|---|
 | 172 |         F  S MDKCNT=$O(^TMP("HLS",$J,MDKCNT)) Q:'MDKCNT  D
 | 
|---|
 | 173 |         .S MDKNODE=$G(^TMP("HLS",$J,MDKCNT))
 | 
|---|
 | 174 |         .Q:$E(MDKNODE,1,3)'="OBX"
 | 
|---|
 | 175 |         .S MDKFLAG=0
 | 
|---|
 | 176 |         .S MDKTEST=$P(MDKNODE,"|",4) ;test ids
 | 
|---|
 | 177 |         .S MDKCODE=""
 | 
|---|
 | 178 |         .F  S MDKCODE=$O(MDKSC(MDKCODE)) Q:MDKCODE=""!(MDKFLAG=1)  D
 | 
|---|
 | 179 |         ..I MDKTEST[MDKCODE S MDKFLAG=1,MDKNLT=MDKCODE
 | 
|---|
 | 180 |         ..Q
 | 
|---|
 | 181 |         .Q:'MDKFLAG  ;nlt code doesn't match
 | 
|---|
 | 182 |         .S MDKDATE=$P(MDKNODE,"|",15) ;date
 | 
|---|
 | 183 |         .S MDKDATE=$P(MDKDATE,"-",1) ;strip off time zone offset
 | 
|---|
 | 184 |         .S MDKRSULT=$P(MDKNODE,"|",6) ;result
 | 
|---|
 | 185 |         .S MDKUNIT=$P(MDKNODE,"|",7) ;unit
 | 
|---|
 | 186 |         .S MDKTOT=MDKTOT+1
 | 
|---|
 | 187 |         .S RESULT(MDKTOT)=$G(MDKSC(MDKNLT))_U_MDKDATE_U_MDKRSULT_U_MDKUNIT
 | 
|---|
 | 188 |         .S RESULT(0)=$G(RESULT(0))+1
 | 
|---|
 | 189 |         .Q
 | 
|---|
 | 190 |         K ^TMP("HLS",$J)
 | 
|---|
 | 191 |         Q
 | 
|---|
 | 192 | AD      ; get advance directives
 | 
|---|
 | 193 |         ; DATA = DFN
 | 
|---|
 | 194 |         S DFN=$G(DATA)
 | 
|---|
 | 195 |         N MDKLOOP
 | 
|---|
 | 196 |         K ^TMP("TIUPPCV",$J)
 | 
|---|
 | 197 |         D ENCOVER^TIUPP3(DFN)
 | 
|---|
 | 198 |         I '$D(^TMP("TIUPPCV",$J)) Q
 | 
|---|
 | 199 |         S RESULT(1)="No",RESULT(0)=1
 | 
|---|
 | 200 |         S MDKLOOP=0
 | 
|---|
 | 201 |         F  S MDKLOOP=$O(^TMP("TIUPPCV",$J,MDKLOOP)) Q:'MDKLOOP  D
 | 
|---|
 | 202 |         .I $P(^TMP("TIUPPCV",$J,MDKLOOP),U,2)'="D" Q
 | 
|---|
 | 203 |         .S RESULT(1)="Yes"
 | 
|---|
 | 204 |         .S RESULT(0)=1
 | 
|---|
 | 205 |         .Q
 | 
|---|
 | 206 |         K ^TMP("TIUPPCV",$J)
 | 
|---|
 | 207 |         Q
 | 
|---|
 | 208 |         ;
 | 
|---|
 | 209 | CW      ; get clinical warnings
 | 
|---|
 | 210 |         ; DATA = DFN
 | 
|---|
 | 211 |         S DFN=$G(DATA)
 | 
|---|
 | 212 |         N MDKCNT,MDKLOOP
 | 
|---|
 | 213 |         K ^TMP("TIUPPCV",$J)
 | 
|---|
 | 214 |         D ENCOVER^TIUPP3(DFN)
 | 
|---|
 | 215 |         S RESULT(1)="None",RESULT(0)=1
 | 
|---|
 | 216 |         I '$D(^TMP("TIUPPCV",$J)) Q
 | 
|---|
 | 217 |         S (MDKCNT,MDKLOOP)=0
 | 
|---|
 | 218 |         F  S MDKLOOP=$O(^TMP("TIUPPCV",$J,MDKLOOP)) Q:'MDKLOOP  D
 | 
|---|
 | 219 |         .I $P(^TMP("TIUPPCV",$J,MDKLOOP),U,2)'="W" Q
 | 
|---|
 | 220 |         .S MDKCNT=MDKCNT+1
 | 
|---|
 | 221 |         .S RESULT(MDKCNT)=^TMP("TIUPPCV",$J,MDKLOOP)
 | 
|---|
 | 222 |         .Q
 | 
|---|
 | 223 |         S RESULT(0)=MDKCNT
 | 
|---|
 | 224 |         K ^TMP("TIUPPCV",$J)
 | 
|---|
 | 225 |         Q
 | 
|---|
 | 226 |         ;
 | 
|---|
 | 227 | GETPROV ; Get list of available providers with name starting with P1
 | 
|---|
 | 228 |         N MDDATE,MDDUP,MDRI,MDI1,MDI2,MDLAST,MDMAX,MDPREV,MDTTL
 | 
|---|
 | 229 |         S MDRI=0,MDMAX=44,(MDLAST,MDPREV)="",X1=DT,MDFROM=DATA,MDDATE=DT
 | 
|---|
 | 230 |         F  Q:MDRI'<MDMAX  S MDFROM=$O(^VA(200,"AUSER",MDFROM),1) Q:MDFROM=""  D
 | 
|---|
 | 231 |         .S MDI1=""
 | 
|---|
 | 232 |         .F  S MDI1=$O(^VA(200,"AUSER",MDFROM,MDI1),1) Q:'MDI1  D
 | 
|---|
 | 233 |         ..I MDDATE>0,$$GET^XUA4A72(MDI1,MDDATE)<1 Q    ; Check date?
 | 
|---|
 | 234 |         ..S MDRI=MDRI+1,RESULT(MDRI)=MDI1_U_$$NAMEFMT^XLFNAME(MDFROM,"F","DcMPC")
 | 
|---|
 | 235 |         I MDRI<1 S RESULT(0)="-1^No matches found." Q
 | 
|---|
 | 236 |         S RESULT(0)=MDRI
 | 
|---|
 | 237 |         Q
 | 
|---|
 | 238 |         ;
 | 
|---|
 | 239 | TIME    ; Get time
 | 
|---|
 | 240 |         S RESULT(0)=$$NOW^XLFDT()
 | 
|---|
 | 241 |         Q
 | 
|---|
 | 242 | GETLD   ; Get MDK Application Install Info
 | 
|---|
 | 243 |         N MDS
 | 
|---|
 | 244 |         S MDS=$$GET^XPAR("SYS","MDK APPLICATION INSTALL","DATE_TIME_OF_LAUNCH")
 | 
|---|
 | 245 |         S MDS=MDS_"^"_$$GET^XPAR("SYS","MDK APPLICATION INSTALL","USER")
 | 
|---|
 | 246 |         S MDS=MDS_"^"_$$GET^XPAR("SYS","MDK APPLICATION INSTALL","OPTION_LOADED")
 | 
|---|
 | 247 |         S MDS=MDS_"^"_$$GET^XPAR("SYS","MDK APPLICATION INSTALL","WORKSTATION")
 | 
|---|
 | 248 |         S RESULT(0)=MDS
 | 
|---|
 | 249 |         Q
 | 
|---|
 | 250 | SETLD   ; Set MDK Application Install Info
 | 
|---|
 | 251 |         D EN^XPAR("SYS","MDK APPLICATION INSTALL","DATE_TIME_OF_LAUNCH",$P(DATA,"^"))
 | 
|---|
 | 252 |         D EN^XPAR("SYS","MDK APPLICATION INSTALL","USER",$P(DATA,"^",2))
 | 
|---|
 | 253 |         D EN^XPAR("SYS","MDK APPLICATION INSTALL","OPTION_LOADED",$P(DATA,"^",3))
 | 
|---|
 | 254 |         D EN^XPAR("SYS","MDK APPLICATION INSTALL","WORKSTATION",$P(DATA,"^",4))
 | 
|---|
 | 255 |         Q
 | 
|---|