[613] | 1 | GMVRPCHL ;HIOFO/FT-RPC FOR HOSPITAL LOCATION SELECTION ;12/7/05 10:32
|
---|
| 2 | ;;5.0;GEN. MED. REC. - VITALS;**3**;Oct 31, 2002
|
---|
| 3 | ;
|
---|
| 4 | ; This routine uses the following IAs:
|
---|
| 5 | ; #1378 - DGPM references (controlled)
|
---|
| 6 | ; #2965 - FILE 405.1 references (controlled)
|
---|
| 7 | ; #10039 - FILE 42 references (supported)
|
---|
| 8 | ; #10040 - FILE 44 references (supported)
|
---|
| 9 | ; #10061 - ^VADPT calls (supported)
|
---|
| 10 | ; #10103 - ^XLFDT calls (supported)
|
---|
| 11 | ;
|
---|
| 12 | ; This routine supports the following IAs:
|
---|
| 13 | ; #4461 - GMV LOCATION SELECT RPC is called at RPC (private)
|
---|
| 14 | ;
|
---|
| 15 | RPC(RESULTS,OPTION,DATA) ; [Procedure] Main RPC call tag
|
---|
| 16 | ; RPC: [GMV LOCATION SELECT]
|
---|
| 17 | ;
|
---|
| 18 | ; Input parameters
|
---|
| 19 | ; 1. RESULTS [Reference/Required] RPC Return array
|
---|
| 20 | ; 2. OPTION [Literal/Required] RPC Option to execute
|
---|
| 21 | ; 3. DATA [Literal/Required] Other data as required for call
|
---|
| 22 | ;
|
---|
| 23 | S RESULTS=$NA(^TMP("GMVHLOC",$J)) K @RESULTS
|
---|
| 24 | D:$T(@OPTION)]"" @OPTION
|
---|
| 25 | S:'$D(@RESULTS) @RESULTS@(0)="-1^No results returned"
|
---|
| 26 | D CLEAN^DILF,KVAR^VADPT
|
---|
| 27 | Q
|
---|
| 28 | NAME ; Return list of clinics and wards by name
|
---|
| 29 | ; DATA=pieceA^pieceB^pieceC
|
---|
| 30 | ; where pieceA - file number (required)
|
---|
| 31 | ; pieceB - value to begin search with (required)
|
---|
| 32 | ; pieceC - field(s) to do the look-up on (optional, defaults to .01 field)
|
---|
| 33 | ;
|
---|
| 34 | ; RESULTS(0)=piece1^piece2
|
---|
| 35 | ; RESULTS(n)=piece3
|
---|
| 36 | ; where piece1 - -1 if error OR number of entries found
|
---|
| 37 | ; piece2 - error message if piece1=-1
|
---|
| 38 | ; piece3 - field values requested.
|
---|
| 39 | ; n - sequential number starting with 1
|
---|
| 40 | ;
|
---|
| 41 | N GMVSCRN,GMVFLD,X
|
---|
| 42 | S DATA=$G(DATA)
|
---|
| 43 | I +DATA'>0 D Q
|
---|
| 44 | .S @RESULTS@(0)="-1^Not a valid file number"
|
---|
| 45 | .Q
|
---|
| 46 | S GMVSCRN=$S(+DATA=44:"I $P(^(0),U,3)'=""Z""",1:"")
|
---|
| 47 | I $P(DATA,"^",3)="" S GMVFLD="@;.01"
|
---|
| 48 | E S GMVFLD="@;"_$P(DATA,"^",3)
|
---|
| 49 | S GMVFLD=$P(GMVFLD,";",1,5) ; Limit lookup to 4 display fields
|
---|
| 50 | D FIND^DIC(+DATA,"",GMVFLD,"P",$P(DATA,"^",2),"","",GMVSCRN)
|
---|
| 51 | I $D(^TMP("DIERR",$J)) D Q
|
---|
| 52 | .S @RESULTS@(0)="-1^"_$G(^TMP("DIERR",$J,1,"TEXT",1))
|
---|
| 53 | .Q
|
---|
| 54 | I ^TMP("DILIST",$J,0)<1 D Q
|
---|
| 55 | .S @RESULTS@(0)="-1^No entries found matching '"_$P(DATA,U,2)_"'."
|
---|
| 56 | .Q
|
---|
| 57 | ;I ^TMP("DILIST",$J,0)>60 D Q
|
---|
| 58 | ;.S @RESULTS@(0)="-1^Too many matches found, please be more specific."
|
---|
| 59 | ;.Q
|
---|
| 60 | F X=0:0 S X=$O(^TMP("DILIST",$J,X)) Q:'X D
|
---|
| 61 | .S @RESULTS@(X)=+DATA_";"_^TMP("DILIST",$J,X,0)
|
---|
| 62 | .Q
|
---|
| 63 | S @RESULTS@(0)=+$O(@RESULTS@(""),-1)
|
---|
| 64 | Q
|
---|
| 65 | APPT ; Get patient appointments using SDA^VADPT
|
---|
| 66 | ; DATA=GMVDFN^GMVFROM^GMVTO^GMVFLAG
|
---|
| 67 | ; GMVDFN - DFN (required)
|
---|
| 68 | ; GMVFROM - Start date of search (optional)
|
---|
| 69 | ; GMVTO - End date of search (optional)
|
---|
| 70 | ; GMVFLAG - kind of appt flag (optional)
|
---|
| 71 | ; RESULTS(0)=piece1^piece2
|
---|
| 72 | ; RESULTS(n)=piece3^piece4^piece5^piece6^piece7^piece8^piece9^piece10
|
---|
| 73 | ;
|
---|
| 74 | ; where piece1 - -1 if an error OR the number of records returned
|
---|
| 75 | ; piece2 - an error message if piece1 = -1
|
---|
| 76 | ; piece3 - appointment date/time (FM internal)
|
---|
| 77 | ; piece4 - appointment date/time (external)
|
---|
| 78 | ; piece5 - clinic (internal)
|
---|
| 79 | ; piece6 - clinic (external)
|
---|
| 80 | ; piece7 - status (internal)
|
---|
| 81 | ; piece8 - status (external)
|
---|
| 82 | ; piece9 - appointment type (external)
|
---|
| 83 | ; piece10 - appointment type (external)
|
---|
| 84 | ; n - a sequential number starting with 1
|
---|
| 85 | ;
|
---|
| 86 | N GMVARRAY,GMVCNT,GMVE,GMVI,GMVLOOP,GMVDFN,GMVFROM,GMVTO,GMVFLAG
|
---|
| 87 | N DFN,VAERR,VASD
|
---|
| 88 | S DATA=$G(DATA)
|
---|
| 89 | S GMVDFN=$P(DATA,U,1),GMVFROM=$P(DATA,U,2),GMVTO=$P(DATA,U,3),GMVFLAG=$P(DATA,U,4)
|
---|
| 90 | S GMVDFN=+$G(GMVDFN)
|
---|
| 91 | I '$G(GMVDFN) S @RESULTS@(0)="-1^Patient ID is missing" Q
|
---|
| 92 | I $G(GMVFROM)="" S GMVFROM=$$FMADD^XLFDT(DT,-365)
|
---|
| 93 | I $G(GMVTO)="" S GMVTO=DT_".235959"
|
---|
| 94 | S:GMVFLAG="" VASD("W")="123456789"
|
---|
| 95 | S DFN=GMVDFN,VASD("T")=GMVTO,VASD("F")=GMVFROM
|
---|
| 96 | D SDA^VADPT
|
---|
| 97 | I $G(VAERR)=1 S @RESULTS@(0)="-1^DFN or ^DPT(DFN,0) is not defined" Q
|
---|
| 98 | S @RESULTS@(0)=0
|
---|
| 99 | I '$D(^UTILITY("VASD",$J)) Q
|
---|
| 100 | S (GMVCNT,GMVLOOP)=0
|
---|
| 101 | F S GMVLOOP=$O(^UTILITY("VASD",$J,GMVLOOP)) Q:'GMVLOOP D
|
---|
| 102 | .S GMVE=$G(^UTILITY("VASD",$J,GMVLOOP,"E"))
|
---|
| 103 | .S GMVI=$G(^UTILITY("VASD",$J,GMVLOOP,"I"))
|
---|
| 104 | .Q:'$P(GMVI,U,1)
|
---|
| 105 | .S GMVCNT=GMVCNT+1
|
---|
| 106 | .S GMVARRAY(9999999.999999-$P(GMVI,U,1))=$P(GMVI,U,1)_U_$P(GMVE,U,1)_U_$P(GMVI,U,2)_U_$P(GMVE,U,2)_U_$P(GMVI,U,3)_U_$P(GMVE,U,3)_U_$P(GMVI,U,4)_U_$P(GMVE,U,4)
|
---|
| 107 | .Q
|
---|
| 108 | S $P(@RESULTS@(0),U,1)=GMVCNT
|
---|
| 109 | K ^UTILITY("VASD",$J)
|
---|
| 110 | S (GMVCNT,GMVLOOP)=0
|
---|
| 111 | F S GMVLOOP=$O(GMVARRAY(GMVLOOP)) Q:'GMVLOOP D
|
---|
| 112 | .S GMVCNT=GMVCNT+1
|
---|
| 113 | .S @RESULTS@(GMVCNT)=$G(GMVARRAY(GMVLOOP))
|
---|
| 114 | .Q
|
---|
| 115 | Q
|
---|
| 116 | ADMIT ; return a list of admissions
|
---|
| 117 | ; DATA=DFN
|
---|
| 118 | ; RESULTS(0)=piece1
|
---|
| 119 | ; RESULTS(n)=piece2^piece3^piece4^piece5^piece6
|
---|
| 120 | ; where piece1 - number of records returned
|
---|
| 121 | ; piece2 - movement date/time (external)
|
---|
| 122 | ; piece3 - location ien (FILE 44)
|
---|
| 123 | ; piece4 - location name (FILE 44, Field .01)
|
---|
| 124 | ; piece5 - type of move
|
---|
| 125 | ; PIECE6 - movement ien
|
---|
| 126 | ; n - a sequential number starting with 1
|
---|
| 127 | ;
|
---|
| 128 | N DFN,TIM,MOV,X0,MTIM,XTYP,XLOC,HLOC,ILST
|
---|
| 129 | S DFN=DATA,ILST=0,TIM=""
|
---|
| 130 | I '$G(DFN) Q
|
---|
| 131 | F S TIM=$O(^DGPM("ATID1",DFN,TIM)) Q:TIM'>0 D
|
---|
| 132 | .S MOV=0
|
---|
| 133 | .F S MOV=$O(^DGPM("ATID1",DFN,TIM,MOV)) Q:MOV'>0 D
|
---|
| 134 | ..S X0=$G(^DGPM(MOV,0)) I X0']"" Q
|
---|
| 135 | ..S MTIM=$P(X0,U),MTIM=$$FMTE^XLFDT(MTIM,"1P")
|
---|
| 136 | ..S XTYP=$P($G(^DG(405.1,+$P(X0,U,4),0)),U,1)
|
---|
| 137 | ..S XLOC=$P($G(^DIC(42,+$P(X0,U,6),0)),U,1),HLOC=+$G(^(44))
|
---|
| 138 | ..S ILST=ILST+1,@RESULTS@(ILST)=MTIM_U_HLOC_U_XLOC_U_XTYP_U_MOV
|
---|
| 139 | ..Q
|
---|
| 140 | .Q
|
---|
| 141 | S @RESULTS@(0)=ILST
|
---|
| 142 | Q
|
---|