Changeset 623 for WorldVistAEHR/trunk/r/CLINICAL_PROCEDURES-MD/MDRPCOG.m
- Timestamp:
- Dec 4, 2009, 12:11:15 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
WorldVistAEHR/trunk/r/CLINICAL_PROCEDURES-MD/MDRPCOG.m
r613 r623 1 MDRPCOG ; HOIFO/DP - CP Gateway ; [01-09-2003 15:20] 2 ;;1.0;CLINICAL PROCEDURES;**6**;Apr 01, 2004;Build 102 3 ; Description: 4 ; This is the main routine that manages the CLINICAL PROCEDURES Gateway functions. 5 ; Access to these functions is controlled via the MD GATEWAY RPC. 6 ; 7 ; Integration Agreements: 8 ; IA# 10097 [Supported] %ZOSV calls 9 ; IA# 10103 [Supported] Calls to XLFDT 10 ; IA# 2263 [Supported] Calls to XPAR 11 ; 12 CLEANUP ; [Procedure] Cleanup a past results report 13 F X=0:0 S X=$O(^MDD(703.1,DATA,.1,X)) Q:'X D 14 .S:$G(^MDD(703.1,DATA,.1,X,.1))]"" MDFDA(703.11,X_","_DATA_",",.1)="@" 15 .S:$O(^MDD(703.1,DATA,.1,X,.2,0)) MDFDA(703.11,X_","_DATA_",",.2)="@" 16 D:$D(MDFDA) FILE^DIE("K","MDFDA","MDERR") 17 I $D(MDERR) D ERROR^MDRPCU(RESULTS,.MDERR) Q 18 ; Manual cleanup of the empty UNC nodes and WP root 19 F X=0:0 S X=$O(^MDD(703.1,DATA,.1,X)) Q:'X D 20 .K ^MDD(703.1,DATA,.1,X,.1) 21 .K ^MDD(703.1,DATA,.1,X,.2) 22 S @RESULTS@(0)="1^Item purged" 23 Q 24 ; 25 DONE ; [Procedure] Done processing, Mark study status 26 S MDFDA(703.1,+DATA_",",.09)=$G(P1,"U") 27 D FILE^DIE("","MDFDA") 28 Q 29 ; 30 GETATT ; [Procedure] Get attachments for study 31 F X=0:0 S X=$O(^MDD(703.1,+DATA,.1,X)) Q:'X D 32 .S Y=+$O(@RESULTS@(""),-1)+1 33 .S @RESULTS@(Y)="703.11;"_X_U_^MDD(703.1,+DATA,.1,X,0) 34 S @RESULTS@(0)=+$O(@RESULTS@(""),-1) 35 Q 36 ; 37 GETOLD ; [Procedure] Returns old results by date 38 ; Variables: 39 ; LOGDATE: [Private] Loop variable 40 ; STOPDATE: [Private] Date to stop retrieving entries 41 ; 42 ; New private variables 43 NEW LOGDATE,STOPDATE,MDX 44 S LOGDATE=+DATA,STOPDATE=+$P(DATA,U,2)+.2359 45 F S LOGDATE=$O(^MDD(703.1,"ADTP",LOGDATE)) W !,"-->",LOGDATE Q:'LOGDATE!(LOGDATE>STOPDATE) D Q:Y>50 46 .F MDX=0:0 S MDX=$O(^MDD(703.1,"ADTP",LOGDATE,MDX)) Q:'MDX D 47 ..I '$$CHECK(MDX) Q 48 ..S Y=$O(@RESULTS@(""),-1)+1 49 ..S @RESULTS@(Y)="703.1;"_MDX_U_$G(^MDD(703.1,MDX,0)) 50 S:'LOGDATE!(LOGDATE>STOPDATE) LOGDATE=STOPDATE 51 S @RESULTS@(0)=+$O(@RESULTS@(""),-1)_U_LOGDATE_U_$$FMTE^XLFDT(LOGDATE) 52 Q 53 ; 54 GETPAR ; [Procedure] Get a parameter value for an RPC Call 55 S @RESULTS@(0)=$$PARVAL(DATA) 56 Q 57 ; 58 GETTXT ; [Procedure] Get attachment text for processing 59 N X,STUDY,ATT 60 S X=0,STUDY=$P(DATA,",",2),ATT=+DATA 61 I '$O(^MDD(703.1,STUDY,.1,ATT,.2,0)) S @RESULTS@(0)="-1^No Data" Q 62 F S X=$O(^MDD(703.1,STUDY,.1,ATT,.2,X)) Q:'X S @RESULTS@(X)=^(X,0) 63 S @RESULTS@(0)=+$O(@RESULTS@(""),-1) 64 Q 65 ; 66 NEXT ; [Procedure] Get the next study to process 67 S Y=+$O(^MDD(703.1,"ASTATUS","P",$G(DATA))) 68 S @RESULTS@(0)=$S($D(^MDD(703.1,Y,0)):"703.1;"_Y_U_^MDD(703.1,Y,0),1:0) 69 Q 70 ; 71 PARVAL(INSTANCE) ; [Procedure] Extrinsic get of parameter values 72 ; Input parameters 73 ; 1. INSTANCE [Literal/Required] XPAR instance 74 ; 75 Q $$GET^XPAR("SYS","MD GATEWAY",INSTANCE) 76 ; 77 POLL ; [Procedure] Returns server time and flag for studies to process 78 I $$PARVAL("Shutdown Flag")]"" D Q 79 .S @RESULTS@(0)="-1^SHUTDOWN" 80 .D SETPAR("Shutdown Flag","") 81 S @RESULTS@(0)=$$FMTE^XLFDT($$NOW^XLFDT) 82 S @RESULTS@(1)=$D(^MDD(703.1,"ASTATUS","P")) 83 Q 84 ; 85 POLLER(RESULTS) ; [Procedure] Non-Disk activity poller 86 ; With the exception of a shutdown request pending, this stand alone RPC will operate 87 ; without creating any disk activity and not crash during backup operations on the main 88 ; VistA server. 89 ; 90 ; Input parameters 91 ; 1. RESULTS [Reference/Required] 92 ; 93 I $$PARVAL("Shutdown Flag")]"" D Q 94 .S RESULTS(0)="-1^SHUTDOWN" 95 .D SETPAR("Shutdown Flag","") 96 S RESULTS(0)=$$FMTE^XLFDT($$NOW^XLFDT) 97 S RESULTS(1)=$D(^MDD(703.1,"ASTATUS","P")) 98 Q 99 ; 100 RPC(RESULTS,OPTION,DATA,P1) ; [Procedure] 101 ; Input parameters 102 ; 1. RESULTS [Literal/Required] RPC Return Array 103 ; 2. OPTION [Literal/Required] Gateway Option to execute 104 ; 3. DATA [Literal/Required] Other information 105 ; 4. P1 [Literal/Required] Overflow variable 106 ; 107 ; Variables: 108 ; MDENV: [Private] Server environment variable 109 ; MDERR: [Private] Fileman return array 110 ; MDFDA: [Private] Fileman FDA 111 ; 112 ; New private variables 113 NEW MDENV,MDERR,MDFDA 114 S RESULTS=$NA(^TMP("MDRPCOB",$J)) K @RESULTS 115 D @OPTION 116 Q 117 ; 118 RUNNING ; [Procedure] Returns 0/1 and message on running status 119 ; Note: If lock CAN be obtained, then gateway is NOT running 120 L +^MDD("CPGATEWAY"):1 E S @RESULTS@(0)="1^RUNNING" Q 121 L -(^MDD("CPGATEWAY")) S @RESULTS@(0)="0^NOT RUNNING" 122 Q 123 ; 124 SETFILE ; [Procedure] Set filename of new attachment 125 S MDFDA(703.11,$P(DATA,U,1),.02)=$P(DATA,U,2) 126 D FILE^DIE("","MDFDA") 127 Q 128 ; 129 SETPAR(INSTANCE,VALUE) ; [Procedure] Set value into XPAR parameter 130 ; Input parameters 131 ; 1. INSTANCE [Literal/Required] Parameter Instance 132 ; 2. VALUE [Literal/Required] Parameter Value 133 ; 134 D EN^XPAR("SYS","MD GATEWAY",INSTANCE,VALUE) 135 Q 136 ; 137 START ; [Procedure] Can we begin? 138 ; Ensure only one Gateway per system by locking the phantom global node 139 L +^MDD("CPGATEWAY"):1 140 I '$T D STATUS S @RESULTS@(0)="-1^FAIL" Q 141 ; Clear all process settings 142 D NDEL^XPAR("SYS","MD GATEWAY") 143 S DATA=$G(DATA,"30^1000") ; Default poll interval and log entries 144 D SETPAR("Polling Interval",+$P(DATA,U,1)) 145 D SETPAR("Maximum Log Entries",+$P(DATA,U,2)) 146 D SETPAR("Job ID",$J) 147 D SETPAR("Started At",$$FMTE^XLFDT($$NOW^XLFDT)) 148 D SETPAR("Started By",$$GET1^DIQ(200,DUZ_",",.01)) 149 D GETENV^%ZOSV S MDENV=Y 150 D SETPAR("UCI",$P(MDENV,U,1)) 151 D SETPAR("Volume",$P(MDENV,U,2)) 152 D SETPAR("Node",$P(MDENV,U,3)) 153 D SETNM^%ZOSV("CP Gateway") 154 S @RESULTS@(0)="1^OK" 155 Q 156 ; 157 STATUS ; [Procedure] Return status of BP 158 D GETLST^XPAR(.MDRET,"SYS","MD GATEWAY","Q") 159 F X=0:0 S X=$O(MDRET(X)) Q:'X S @RESULTS@(X)=MDRET(X) 160 Q 161 ; 162 STOP ; [Procedure] Flag client to stop via cal to POLL 163 D SETPAR("Shutdown Flag","Yes") 164 Q 165 ; 166 XFERDIR ; [Procedure] Return Imaging xfer directory 167 S @RESULTS@(0)=$$GET^XPAR("SYS","MD IMAGING XFER") 168 Q 169 ; 170 CHECK(MDRI) ; Check if Upload Value and Upload Text has already been purged. 171 N MDFLG S MDFLG=0 172 F X=0:0 S X=$O(^MDD(703.1,MDRI,.1,X)) Q:'X D Q:MDFLG 173 .S:$G(^MDD(703.1,MDRI,.1,X,.1))]"" MDFLG=1 174 .S:$O(^MDD(703.1,MDRI,.1,X,.2,0)) MDFLG=1 175 Q MDFLG 1 MDRPCOG ; HOIFO/DP - CP Gateway ; [01-09-2003 15:20] 2 ;;1.0;CLINICAL PROCEDURES;;Apr 01, 2004 3 ; Description: 4 ; This is the main routine that manages the CLINICAL PROCEDURES Gateway functions. 5 ; Access to these functions is controlled via the MD GATEWAY RPC. 6 ; 7 ; Integration Agreements: 8 ; IA# 10097 [Supported] %ZOSV calls 9 ; IA# 10103 [Supported] Calls to XLFDT 10 ; IA# 2263 [Supported] Calls to XPAR 11 ; 12 CLEANUP ; [Procedure] Cleanup a past results report 13 F X=0:0 S X=$O(^MDD(703.1,DATA,.1,X)) Q:'X D 14 .S:$G(^MDD(703.1,DATA,.1,X,.1))]"" MDFDA(703.11,X_","_DATA_",",.1)="@" 15 .S:$O(^MDD(703.1,DATA,.1,X,.2,0)) MDFDA(703.11,X_","_DATA_",",.2)="@" 16 D:$D(MDFDA) FILE^DIE("K","MDFDA","MDERR") 17 I $D(MDERR) D ERROR^MDRPCU(RESULTS,.MDERR) Q 18 ; Manual cleanup of the empty UNC nodes and WP root 19 F X=0:0 S X=$O(^MDD(703.1,DATA,.1,X)) Q:'X D 20 .K ^MDD(703.1,DATA,.1,X,.1) 21 .K ^MDD(703.1,DATA,.1,X,.2) 22 S @RESULTS@(0)="1^Item purged" 23 Q 24 ; 25 DONE ; [Procedure] Done processing, Mark study status 26 S MDFDA(703.1,+DATA_",",.09)=$G(P1,"U") 27 D FILE^DIE("","MDFDA") 28 Q 29 ; 30 GETATT ; [Procedure] Get attachments for study 31 F X=0:0 S X=$O(^MDD(703.1,+DATA,.1,X)) Q:'X D 32 .S Y=+$O(@RESULTS@(""),-1)+1 33 .S @RESULTS@(Y)="703.11;"_X_U_^MDD(703.1,+DATA,.1,X,0) 34 S @RESULTS@(0)=+$O(@RESULTS@(""),-1) 35 Q 36 ; 37 GETOLD ; [Procedure] Returns old results by date 38 ; Variables: 39 ; LOGDATE: [Private] Loop variable 40 ; STOPDATE: [Private] Date to stop retrieving entries 41 ; 42 ; New private variables 43 NEW LOGDATE,STOPDATE,MDX 44 S LOGDATE=+DATA,STOPDATE=+$P(DATA,U,2)+.2359 45 F S LOGDATE=$O(^MDD(703.1,"ADTP",LOGDATE)) W !,"-->",LOGDATE Q:'LOGDATE!(LOGDATE>STOPDATE) D Q:Y>50 46 .F MDX=0:0 S MDX=$O(^MDD(703.1,"ADTP",LOGDATE,MDX)) Q:'MDX D 47 ..I '$$CHECK(MDX) Q 48 ..S Y=$O(@RESULTS@(""),-1)+1 49 ..S @RESULTS@(Y)="703.1;"_MDX_U_$G(^MDD(703.1,MDX,0)) 50 S:'LOGDATE!(LOGDATE>STOPDATE) LOGDATE=STOPDATE 51 S @RESULTS@(0)=+$O(@RESULTS@(""),-1)_U_LOGDATE_U_$$FMTE^XLFDT(LOGDATE) 52 Q 53 ; 54 GETPAR ; [Procedure] Get a parameter value for an RPC Call 55 S @RESULTS@(0)=$$PARVAL(DATA) 56 Q 57 ; 58 GETTXT ; [Procedure] Get attachment text for processing 59 N X,STUDY,ATT 60 S X=0,STUDY=$P(DATA,",",2),ATT=+DATA 61 I '$O(^MDD(703.1,STUDY,.1,ATT,.2,0)) S @RESULTS@(0)="-1^No Data" Q 62 F S X=$O(^MDD(703.1,STUDY,.1,ATT,.2,X)) Q:'X S @RESULTS@(X)=^(X,0) 63 S @RESULTS@(0)=+$O(@RESULTS@(""),-1) 64 Q 65 ; 66 NEXT ; [Procedure] Get the next study to process 67 S Y=+$O(^MDD(703.1,"ASTATUS","P",$G(DATA))) 68 S @RESULTS@(0)=$S($D(^MDD(703.1,Y,0)):"703.1;"_Y_U_^MDD(703.1,Y,0),1:0) 69 Q 70 ; 71 PARVAL(INSTANCE) ; [Procedure] Extrinsic get of parameter values 72 ; Input parameters 73 ; 1. INSTANCE [Literal/Required] XPAR instance 74 ; 75 Q $$GET^XPAR("SYS","MD GATEWAY",INSTANCE) 76 ; 77 POLL ; [Procedure] Returns server time and flag for studies to process 78 I $$PARVAL("Shutdown Flag")]"" D Q 79 .S @RESULTS@(0)="-1^SHUTDOWN" 80 .D SETPAR("Shutdown Flag","") 81 S @RESULTS@(0)=$$FMTE^XLFDT($$NOW^XLFDT) 82 S @RESULTS@(1)=$D(^MDD(703.1,"ASTATUS","P")) 83 Q 84 ; 85 POLLER(RESULTS) ; [Procedure] Non-Disk activity poller 86 ; With the exception of a shutdown request pending, this stand alone RPC will operate 87 ; without creating any disk activity and not crash during backup operations on the main 88 ; VistA server. 89 ; 90 ; Input parameters 91 ; 1. RESULTS [Reference/Required] 92 ; 93 I $$PARVAL("Shutdown Flag")]"" D Q 94 .S RESULTS(0)="-1^SHUTDOWN" 95 .D SETPAR("Shutdown Flag","") 96 S RESULTS(0)=$$FMTE^XLFDT($$NOW^XLFDT) 97 S RESULTS(1)=$D(^MDD(703.1,"ASTATUS","P")) 98 Q 99 ; 100 RPC(RESULTS,OPTION,DATA,P1) ; [Procedure] 101 ; Input parameters 102 ; 1. RESULTS [Literal/Required] RPC Return Array 103 ; 2. OPTION [Literal/Required] Gateway Option to execute 104 ; 3. DATA [Literal/Required] Other information 105 ; 4. P1 [Literal/Required] Overflow variable 106 ; 107 ; Variables: 108 ; MDENV: [Private] Server environment variable 109 ; MDERR: [Private] Fileman return array 110 ; MDFDA: [Private] Fileman FDA 111 ; 112 ; New private variables 113 NEW MDENV,MDERR,MDFDA 114 S RESULTS=$NA(^TMP("MDRPCOB",$J)) K @RESULTS 115 D @OPTION 116 Q 117 ; 118 SETFILE ; [Procedure] Set filename of new attachment 119 S MDFDA(703.11,$P(DATA,U,1),.02)=$P(DATA,U,2) 120 D FILE^DIE("","MDFDA") 121 Q 122 ; 123 SETPAR(INSTANCE,VALUE) ; [Procedure] Set value into XPAR parameter 124 ; Input parameters 125 ; 1. INSTANCE [Literal/Required] Parameter Instance 126 ; 2. VALUE [Literal/Required] Parameter Value 127 ; 128 D EN^XPAR("SYS","MD GATEWAY",INSTANCE,VALUE) 129 Q 130 ; 131 START ; [Procedure] Can we begin? 132 ; Ensure only one Gateway per system by locking the phantom global node 133 L +^MDD("CPGATEWAY"):1 134 I '$T D STATUS S @RESULTS@(0)="-1^FAIL" Q 135 ; Clear all process settings 136 D NDEL^XPAR("SYS","MD GATEWAY") 137 S DATA=$G(DATA,"30^1000") ; Default poll interval and log entries 138 D SETPAR("Polling Interval",+$P(DATA,U,1)) 139 D SETPAR("Maximum Log Entries",+$P(DATA,U,2)) 140 D SETPAR("Job ID",$J) 141 D SETPAR("Started At",$$FMTE^XLFDT($$NOW^XLFDT)) 142 D SETPAR("Started By",$$GET1^DIQ(200,DUZ_",",.01)) 143 D GETENV^%ZOSV S MDENV=Y 144 D SETPAR("UCI",$P(MDENV,U,1)) 145 D SETPAR("Volume",$P(MDENV,U,2)) 146 D SETPAR("Node",$P(MDENV,U,3)) 147 D SETNM^%ZOSV("CP Gateway") 148 S @RESULTS@(0)="1^OK" 149 Q 150 ; 151 STATUS ; [Procedure] Return status of BP 152 D GETLST^XPAR(.MDRET,"SYS","MD GATEWAY","Q") 153 F X=0:0 S X=$O(MDRET(X)) Q:'X S @RESULTS@(X)=MDRET(X) 154 Q 155 ; 156 STOP ; [Procedure] Flag client to stop via cal to POLL 157 D SETPAR("Shutdown Flag","Yes") 158 Q 159 ; 160 XFERDIR ; [Procedure] Return Imaging xfer directory 161 S @RESULTS@(0)=$$GET^XPAR("SYS","MD IMAGING XFER") 162 Q 163 ; 164 CHECK(MDRI) ; Check if Upload Value and Upload Text has already been purged. 165 N MDFLG S MDFLG=0 166 F X=0:0 S X=$O(^MDD(703.1,MDRI,.1,X)) Q:'X D Q:MDFLG 167 .S:$G(^MDD(703.1,MDRI,.1,X,.1))]"" MDFLG=1 168 .S:$O(^MDD(703.1,MDRI,.1,X,.2,0)) MDFLG=1 169 Q MDFLG
Note:
See TracChangeset
for help on using the changeset viewer.