| 1 | RGPVMPI ;BIR/PTD-REMOTE PRIMARY VIEW DISPLAY FROM MPI ;5/17/07 | 
|---|
| 2 | ;;1.0;CLINICAL INFO RESOURCE NETWORK;**48,53**;30 Apr 99;Build 2 | 
|---|
| 3 | ; | 
|---|
| 4 | ;Reference to EN1^XWB2HL7 supported by IA #3144 | 
|---|
| 5 | ;Reference to RPCCHK^XWB2HL7 supported by IA #3144 | 
|---|
| 6 | ; | 
|---|
| 7 | INTRO ;Display purpose of option | 
|---|
| 8 | W @IOF S SAPV=1 ;from stand alone option, not EH | 
|---|
| 9 | W !,"This option sends a remote request for data to the Master Patient" | 
|---|
| 10 | W !,"Index, using a Remote Procedure Call (RPC).  When the RPC returns" | 
|---|
| 11 | W !,"the information, you can review Primary View data as it currently" | 
|---|
| 12 | W !,"exists on the MPI Patient Data Inquiry (PDAT) report." | 
|---|
| 13 | ; | 
|---|
| 14 | W !!,"Choose the patient for whom Primary View data is to be requested." | 
|---|
| 15 | W !,"The selected patient must have an Integration Control Number (ICN)." | 
|---|
| 16 | W !,"You can select by Patient Name, Social Security Number, or ICN.",! | 
|---|
| 17 | ; | 
|---|
| 18 | ASK ;Ask For Patient | 
|---|
| 19 | S DFN="",RGICN="" K DTOUT,DUOUT | 
|---|
| 20 | S DIC="^DPT(",DIC(0)="QEAM",DIC("A")="Select PATIENT: ",D="SSN^AICN^B^BS^BS5" | 
|---|
| 21 | D MIX^DIC1 K DIC,D | 
|---|
| 22 | I Y<0 G EXIT | 
|---|
| 23 | S DFN=+Y | 
|---|
| 24 | S RGICN=+$$GETICN^MPIF001(DFN) I RGICN<1 W !,"There is no Integration Control Number for this patient." G ASK | 
|---|
| 25 | ; | 
|---|
| 26 | SEND ;Send a remote query to the MPI for Primary View PDAT | 
|---|
| 27 | ;Entry point from Exception Handler; DATA should be defined. | 
|---|
| 28 | S (QFLG,QUIT)=0 N RETURN,RESULT,SNTDT | 
|---|
| 29 | I SAPV=0 D  I QUIT=1 G EXIT | 
|---|
| 30 | .I DATA="" W !,"No Exception Data available." S QUIT=1 Q | 
|---|
| 31 | .S RGICN=$P(DATA,"^",6) I RGICN="" W !,"No ICN defined." S QUIT=1 Q | 
|---|
| 32 | .S VALMBCK="" | 
|---|
| 33 | .D FULL^VALM1 | 
|---|
| 34 | NOQ ;No previous query exists for this ICN | 
|---|
| 35 | I '$D(^XTMP("RGPVMPI"_RGICN)) D RPC G DISP | 
|---|
| 36 | ; | 
|---|
| 37 | OLDQ ;Query previously sent for this ICN | 
|---|
| 38 | I $D(^XTMP("RGPVMPI"_RGICN)) D | 
|---|
| 39 | .S SNTDT=$$FMTE^XLFDT($P(^XTMP("RGPVMPI"_RGICN,"DATA"),"^",2)) | 
|---|
| 40 | .W !,"A query was last sent for this ICN on "_SNTDT | 
|---|
| 41 | .;Has data returned for query? | 
|---|
| 42 | .S RETURN(0)=$P(^XTMP("RGPVMPI"_RGICN,"DATA"),"^") | 
|---|
| 43 | .D RPCCHK^XWB2HL7(.RESULT,RETURN(0)) | 
|---|
| 44 | .;Data has NOT returned | 
|---|
| 45 | .I +RESULT(0)'=1 D FAIL  Q  ;**53 | 
|---|
| 46 | .I +RESULT(0)=1 D  ;Data has returned | 
|---|
| 47 | ..S DIR("A")="Do you wish to view the existing query data now? ",DIR(0)="YA" | 
|---|
| 48 | ..S DIR("?")="Enter YES to review the existing data; enter NO to send a new query" | 
|---|
| 49 | ..S DIR("B")="YES" D ^DIR K DIR I $D(DIRUT) S QUIT=1 Q  ;up-arrowed out | 
|---|
| 50 | ..I Y>0 K DIR Q  ;yes, use existing query | 
|---|
| 51 | ..I Y=0 D  Q  ;no, don't use existing, send new query | 
|---|
| 52 | ...K ^XTMP("RGPVMPI"_RGICN) | 
|---|
| 53 | ...D RPC | 
|---|
| 54 | ...K DIR | 
|---|
| 55 | ; | 
|---|
| 56 | DISP ;Display Primary View Data | 
|---|
| 57 | I QUIT'=1 D  I QFLG G EXIT | 
|---|
| 58 | .I SAPV=1 D  Q:QFLG  ;Stand alone PV display | 
|---|
| 59 | ..W !,"(Be sure HISTORY is enabled to capture data!)" | 
|---|
| 60 | ..S DIR(0)="E" W ! D ^DIR K DIR I 'Y S QFLG=1 Q | 
|---|
| 61 | ..W !,@IOF D SAPV^RGEX06(RGICN) | 
|---|
| 62 | .I SAPV=0 D EN^RGEX06(RGICN) ;Exception Handler PV display | 
|---|
| 63 | ; | 
|---|
| 64 | EXIT ;Kill variables and quit | 
|---|
| 65 | K CNT,D,DFN,DIC,DIR,DIRUT,DTOUT,DUOUT,QFLG,QUIT,RGICN,SAPV,X,Y | 
|---|
| 66 | Q | 
|---|
| 67 | ; | 
|---|
| 68 | RPC ;Send the Remote Query | 
|---|
| 69 | W !!,"Sending a Remote Query to the Master Patient Index." | 
|---|
| 70 | W !,"This will take some time; please be patient." | 
|---|
| 71 | D EN1^XWB2HL7(.RETURN,"200M","RG PRIMARY VIEW FROM MPI",1,RGICN) I RETURN(0)'="" D  Q | 
|---|
| 72 | .S ^XTMP("RGPVMPI"_RGICN,0)=$$FMADD^XLFDT(DT,2)_"^"_DT_"^"_"PRIMARY VIEW MPI PDAT" | 
|---|
| 73 | .S ^XTMP("RGPVMPI"_RGICN,"DATA")=RETURN(0)_"^"_$$NOW^XLFDT | 
|---|
| 74 | .;Has data returned for this query? | 
|---|
| 75 | .S CNT=0 F  S CNT=CNT+1 D RPCCHK^XWB2HL7(.RESULT,RETURN(0)) Q:RESULT(0)  H 2 I CNT>15 Q  ;result(0)=status of handle | 
|---|
| 76 | .I +RESULT(0)=1 W !,"Query data has returned from the MPI and is available for review." | 
|---|
| 77 | .I +RESULT(0)'=1 D FAIL  ;**53 | 
|---|
| 78 | W !!,"Problem with Query: ",RETURN(0)_"^"_$G(RETURN(1)) | 
|---|
| 79 | S QUIT=1 | 
|---|
| 80 | I SAPV=0 D PAUSE^VALM1 | 
|---|
| 81 | Q | 
|---|
| 82 | ; | 
|---|
| 83 | FAIL ;Status of RPC call - unsuccessful after 30 seconds ;**53 | 
|---|
| 84 | W !,"Your query request has NOT returned data from the MPI after trying for" | 
|---|
| 85 | W !,"30 seconds. This could be due to network issues. Please try again later." | 
|---|
| 86 | K ^XTMP("RGPVMPI"_RGICN) | 
|---|
| 87 | S QUIT=1 | 
|---|
| 88 | I SAPV=0 D PAUSE^VALM1 | 
|---|
| 89 | Q | 
|---|
| 90 | ; | 
|---|