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