MDKRPC1 ;HIOFO/FT-RPC to return patient data ;2/19/08 13:13 ;;1.0;CLINICAL PROCEDURES;**6**;Apr 01, 2004;Build 102 ; ; This routine uses the following IAs: ; #1239 - ^PXRHS03 (controlled) ; #1240 - ^PXRHS04 (private) ; #1625 - ^XUA4A72 (supported) ; #2263 - ^XPAR (supported) ; #2864 - ^TIUPP3 calls (controlled) ; #3065 - ^XLFNAME (supported) ; #3556 - ^LA7QRY (controlled) ; #10035 - ^DPT global refs (supported) ; #10060 - ^FILE 200 refs (supported) ; #10099 - ^GMRADPT calls (supported) ; #10103 - ^XLFDT calls (supported) ; #4868 - VA(200,"AUSER" (Private) ; RPC(RESULT,OPTION,DATA) ; RPC to return existing VistA patient data for ; renal dialysis data entry. ; RPC: [MDK GET VISTA DATA] ; ; Input parameters ; 1. RESULT [Reference/Required] RPC Return array ; 2. OPTION [Literal/Required] RPC Option to execute ; 3. DATA [Literal/Required] Other data as required for call ; K RESULT D:$T(@OPTION)]"" @OPTION S:'$D(RESULT) RESULT(0)="-1^No results returned" Q DEMO ; demographic N DFN,MDKNODE0,MDKSSN S DFN=$G(DATA) I '$G(DFN) D Q .S RESULT(0)="-1^DFN is not defined" .Q I '$D(^DPT(DFN,0)) D Q .S RESULT(0)="-1^Patient not found" .Q S MDKNODE0=$G(^DPT(DFN,0)) S RESULT(1)=$P(MDKNODE0,U,1) ;name S RESULT(2)=$P(MDKNODE0,U,9) ;ssn S RESULT(3)=$P(MDKNODE0,U,3) ;date of birth S RESULT(0)=3 Q ALLERGY ; get allergy data ; DATA = DFN S DFN=$G(DATA) N GMRAL N MDKCNT,MDLOOP S (MDKCNT,MDKLOOP)=0 D EN1^GMRADPT I $O(GMRAL(0))'>0 D Q .S:$G(GMRAL)="" RESULT(1)="No Allergy Assessment" .S:$G(GMRAL)=0 RESULT(1)="No Known Allergies" .S RESULT(0)=1 .Q I $O(GMRAL(0))>0 D .F S MDKLOOP=$O(GMRAL(MDKLOOP)) Q:MDKLOOP'>0 D ..S MDKCNT=MDKCNT+1 ..S RESULT(MDKCNT)=$P($G(GMRAL(MDKLOOP)),U,2) ..Q .S RESULT(0)=MDKCNT .Q Q SHOTS ; get latest vaccination data N MDKCNT,MDKDATE,MDKIEN,MDKIMMUM,MDKNAME,MDKNODE S DFN=$G(DATA) S (MDKCNT,RESULT(0))=0 S MDKIMMUM("HEP A")="HEPATITIS A" S MDKIMMUM("HEP B")="HEPATITIS B" S MDKIMMUM("INFLUENZA")="FLU" S MDKIMMUM("PNEUMO-VAC")="PNEUMOCOCCAL" ;S MDKIMMUM("PNEUMOCOCCAL")="PNEUMONIA" S MDKIMMUM("PPD")="PPD" D IMMUN^PXRHS03(DFN) F MDKNAME="HEP A","HEP B","INFLUENZA","PNEUMO-VAC" D .Q:'$D(^TMP("PXI",$J,MDKNAME)) .S MDKDATE=0 .F S MDKDATE=$O(^TMP("PXI",$J,MDKNAME,MDKDATE)) Q:'MDKDATE D ..S MDKIEN=0 ..F S MDKIEN=$O(^TMP("PXI",$J,MDKNAME,MDKDATE,MDKIEN)) Q:'MDKIEN D ...S MDKNODE=$G(^TMP("PXI",$J,MDKNAME,MDKDATE,MDKIEN,0)) ...Q:MDKNODE="" ...S MDKCNT=MDKCNT+1 ...;RESULT(N)=shot name^date^reaction^contraindicated ...S RESULT(MDKCNT)=MDKIMMUM(MDKNAME)_U_$P(MDKNODE,U,3)_U_$P(MDKNODE,U,6)_U_$P(MDKNODE,U,7) ...Q ..Q .Q S RESULT(0)=MDKCNT K ^TMP("PXI",$J) ; get PPD (skin) result D SKIN^PXRHS04(DFN) I $D(^TMP("PXS",$J)) D .S MDKDATE=0 .F S MDKDATE=$O(^TMP("PXS",$J,"PPD",MDKDATE)) Q:'MDKDATE D ..S MDKIEN=0 ..F S MDKIEN=$O(^TMP("PXS",$J,"PPD",MDKDATE,MDKIEN)) Q:'MDKIEN D ...S MDKNODE=$G(^TMP("PXS",$J,"PPD",MDKDATE,MDKIEN,0)) ...Q:MDKNODE="" ...S MDKCNT=MDKCNT+1 ...;RESULT(N)=skin test^date ...S RESULT(MDKCNT)=$P(MDKNODE,U,1)_U_$P(MDKNODE,U,2) ...S RESULT(0)=MDKCNT ...Q ..Q .Q K ^TMP("PXS",$J) Q LAB ; get lab results ; data = dfn^start date^end date^max # of entires to return N LA7PTID,LA7SDT,LA7EDT,LA7SC,LA7SPEC N MDK64PTR,MDKARRAY,MDKCNT,MDKCODE,MDKDATE,MDKEDT,MDKFLAG,MDKLOOP,MDKMAX,MDKNLT,MDKNODE,MDKODT,MDKRSULT N MDKSC,MDKSDT,MDKSSN,MDKTEST,MDKTOT,MDKUNIT S DATA=$G(DATA) S DFN=$P(DATA,U,1) Q:'DFN S MDKSDT=$P(DATA,U,2) ;start date S MDKEDT=$P(DATA,U,3) ;end date S MDKMAX=+$P(DATA,U,4) ;# of entries per test S MDKSSN=$P($G(^DPT(DFN,0)),U,9) ;patient ssn I MDKEDT="" S MDKEDT=$$NOW^XLFDT() ;I MDKSDT="" S MDKSDT=$$FMADD^XLFDT(DT,-90) ;go back 90 days I MDKSDT="" S MDKSDT=$$FMADD^XLFDT(DT,-365) ;<-- TESTING ONLY I 'MDKMAX S MDKMAX=3 ; array(nlt code)=test name S MDKSC("84520.")="BUN" S MDKSC("82565.")="CREATININE" S MDKSC("84295.")="SODIUM" S MDKSC("84140.")="POTASSIUM" S MDKSC("82435.")="CHLORIDE" S MDKSC("82830.")="CARBON DIOXIDE" S MDKSC("82310.")="CALCIUM" S MDKSC("84100.")="PHOSPHORUS" S MDKSC("82040.")="ALBUMIN" S MDKSC("84455.")="AST" S MDKSC("84465.")="ALT" S MDKSC("84075.")="ALKALINE PHOSPHATASE" S MDKSC("82250.")="BILIRUBIN" S MDKSC("83020.")="HEMOGLOBIN" S MDKSC("85055.")="HEMATOCRIT" S MDKSC("85569.")="WBC" S MDKSC("86806.")="PLATELETS" S MDKSC("83057.")="HEMOGLOBIN A1C" S MDKSC("82466.")="CHOLESTEROL" S MDKSC("84480.")="TRIGLYCERIDES" S MDKSC("82370.")="FERRITIN" S MDKSC("83540.")="IRON" S MDKSC("82060.")="TRANSFERRIN" S MDKSC("84012.")="PARATHRYROID HORMONE" S MDKSC("81512.")="ALUMINUM" S MDKSC("89068.")="HEPATITIS B SURFACE ANTIGEN" S MDKSC("89065.")="HEPATITIS B SURFACE ANTIBODY" S MDKSC("89067.")="HEPATITIS B SURFACE ANTIBODY" S MDKSC("82013.")="HEPATITIS B SURFACE ANTIBODY" S MDKSC("89095.")="HEPATITIS B SURFACE ANTIBODY" S MDKSC("89127.")="HEPATITIS B SURFACE ANTIBODY" S MDKSC("89128.")="HEPATITIS B SURFACE ANTIBODY" S MDKSC("87398.")="HEPATITIS B SURFACE ANTIBODY" S MDKSC("89699.")="HEPATITIS B SURFACE ANTIBODY" S MDKSC("89070.")="HEPATITIS C ANTIBODY" S MDKSC("87261.")="FLU" K ^TMP("HLS",$J) S LA7SDT=MDKSDT_"^RAD" ;start date S LA7EDT=MDKEDT_"^RAD" ;end date S LA7SC="CH" ;all chemistry tests S LA7SPEC="*" ;all specimens S LA7PTID=MDKSSN ;patient's ssn S MDKARRAY=$$GCPR^LA7QRY(LA7PTID,LA7SDT,LA7EDT,.LA7SC,LA7SPEC,"","","") S (MDKCNT,MDKTOT)=0 F S MDKCNT=$O(^TMP("HLS",$J,MDKCNT)) Q:'MDKCNT D .S MDKNODE=$G(^TMP("HLS",$J,MDKCNT)) .Q:$E(MDKNODE,1,3)'="OBX" .S MDKFLAG=0 .S MDKTEST=$P(MDKNODE,"|",4) ;test ids .S MDKCODE="" .F S MDKCODE=$O(MDKSC(MDKCODE)) Q:MDKCODE=""!(MDKFLAG=1) D ..I MDKTEST[MDKCODE S MDKFLAG=1,MDKNLT=MDKCODE ..Q .Q:'MDKFLAG ;nlt code doesn't match .S MDKDATE=$P(MDKNODE,"|",15) ;date .S MDKDATE=$P(MDKDATE,"-",1) ;strip off time zone offset .S MDKRSULT=$P(MDKNODE,"|",6) ;result .S MDKUNIT=$P(MDKNODE,"|",7) ;unit .S MDKTOT=MDKTOT+1 .S RESULT(MDKTOT)=$G(MDKSC(MDKNLT))_U_MDKDATE_U_MDKRSULT_U_MDKUNIT .S RESULT(0)=$G(RESULT(0))+1 .Q K ^TMP("HLS",$J) Q AD ; get advance directives ; DATA = DFN S DFN=$G(DATA) N MDKLOOP K ^TMP("TIUPPCV",$J) D ENCOVER^TIUPP3(DFN) I '$D(^TMP("TIUPPCV",$J)) Q S RESULT(1)="No",RESULT(0)=1 S MDKLOOP=0 F S MDKLOOP=$O(^TMP("TIUPPCV",$J,MDKLOOP)) Q:'MDKLOOP D .I $P(^TMP("TIUPPCV",$J,MDKLOOP),U,2)'="D" Q .S RESULT(1)="Yes" .S RESULT(0)=1 .Q K ^TMP("TIUPPCV",$J) Q ; CW ; get clinical warnings ; DATA = DFN S DFN=$G(DATA) N MDKCNT,MDKLOOP K ^TMP("TIUPPCV",$J) D ENCOVER^TIUPP3(DFN) S RESULT(1)="None",RESULT(0)=1 I '$D(^TMP("TIUPPCV",$J)) Q S (MDKCNT,MDKLOOP)=0 F S MDKLOOP=$O(^TMP("TIUPPCV",$J,MDKLOOP)) Q:'MDKLOOP D .I $P(^TMP("TIUPPCV",$J,MDKLOOP),U,2)'="W" Q .S MDKCNT=MDKCNT+1 .S RESULT(MDKCNT)=^TMP("TIUPPCV",$J,MDKLOOP) .Q S RESULT(0)=MDKCNT K ^TMP("TIUPPCV",$J) Q ; GETPROV ; Get list of available providers with name starting with P1 N MDDATE,MDDUP,MDRI,MDI1,MDI2,MDLAST,MDMAX,MDPREV,MDTTL S MDRI=0,MDMAX=44,(MDLAST,MDPREV)="",X1=DT,MDFROM=DATA,MDDATE=DT F Q:MDRI'0,$$GET^XUA4A72(MDI1,MDDATE)<1 Q ; Check date? ..S MDRI=MDRI+1,RESULT(MDRI)=MDI1_U_$$NAMEFMT^XLFNAME(MDFROM,"F","DcMPC") I MDRI<1 S RESULT(0)="-1^No matches found." Q S RESULT(0)=MDRI Q ; TIME ; Get time S RESULT(0)=$$NOW^XLFDT() Q GETLD ; Get MDK Application Install Info N MDS S MDS=$$GET^XPAR("SYS","MDK APPLICATION INSTALL","DATE_TIME_OF_LAUNCH") S MDS=MDS_"^"_$$GET^XPAR("SYS","MDK APPLICATION INSTALL","USER") S MDS=MDS_"^"_$$GET^XPAR("SYS","MDK APPLICATION INSTALL","OPTION_LOADED") S MDS=MDS_"^"_$$GET^XPAR("SYS","MDK APPLICATION INSTALL","WORKSTATION") S RESULT(0)=MDS Q SETLD ; Set MDK Application Install Info D EN^XPAR("SYS","MDK APPLICATION INSTALL","DATE_TIME_OF_LAUNCH",$P(DATA,"^")) D EN^XPAR("SYS","MDK APPLICATION INSTALL","USER",$P(DATA,"^",2)) D EN^XPAR("SYS","MDK APPLICATION INSTALL","OPTION_LOADED",$P(DATA,"^",3)) D EN^XPAR("SYS","MDK APPLICATION INSTALL","WORKSTATION",$P(DATA,"^",4)) Q