| 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
 | 
|---|