| 1 | ORWPFSS1 ;SLC/GSS - CPRS PFSS; 05/24/05 [05/24/05 11:44am]
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**228**;Dec 17, 1997
 | 
|---|
| 3 |  ; Sub-routines for phase II of the CPRS PFSS project (CPRS v26=phase I)
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  Q
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | ACCTREF(ORIEN,ORACTREF) ;File PFSS Account Reference Number (ARN)
 | 
|---|
| 8 |  ; PFSS ARN stored as 1st piece of ^OR(100,ORIEN,5.5), aka Field #97
 | 
|---|
| 9 |  ; Call as an extrinsic function,i.e., $$ACCTREF^ORWPFSS1(ORIEN,ORACTREF)
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ; Input:
 | 
|---|
| 12 |  ;   ORIEN     Order internal reference number related to PFSS ARN
 | 
|---|
| 13 |  ;   ORACTREF  PFSS ARN to store, which is a pointer to File #375
 | 
|---|
| 14 |  ; Output:
 | 
|---|
| 15 |  ;   if error, returns #^reason, where #>1
 | 
|---|
| 16 |  ;   if valid, returns 1
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  ; Additional variables used:
 | 
|---|
| 19 |  ;   ORERCK    error variable (error #^verbiage)
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  ; new variables
 | 
|---|
| 22 |  N ARE,ORER,ORERCK,ORFDA,ORNEWER
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  ; check for a valid ORIEN
 | 
|---|
| 25 |  S ORERCK=$$ORDERCK^ORWPFSS(ORIEN)
 | 
|---|
| 26 |  I +ORERCK>1 Q ORERCK
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  ; check for pre-existing, non-null entry, if there is to be no editing
 | 
|---|
| 29 |  I $G(^OR(100,ORIEN,5.5))'="" Q 97_U_"PFSS Acct Ref # exists in Order file"
 | 
|---|
| 30 |  ; check that PFSS ARN is in a valid format
 | 
|---|
| 31 |  I '+ORACTREF Q 98_U_"PFSS is null or of invalid format"
 | 
|---|
| 32 |  ; check that PFSS ARN exists in PFSS Acount file #375 - DBIA #4741
 | 
|---|
| 33 |  I '$D(^IBBAA(375,ORACTREF,0)) Q 99_U_"PFSS Acct Ref # doesn't exist"
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  ; store PARN (while checking for errors)
 | 
|---|
| 36 |  S ORERCK=$$STRPARN(ORIEN,ORACTREF)
 | 
|---|
| 37 |  Q ORERCK
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | EDO1 ; Event Delayed Orders called from EN1^ORCSEND for delayed releases
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  ;  EIEN     = Release event IEN
 | 
|---|
| 42 |  ;  EPOINTER = Event pointer
 | 
|---|
| 43 |  ;  ETYPE    = Event type
 | 
|---|
| 44 |  ;  DFN      = Patient IEN
 | 
|---|
| 45 |  ;  ORACTREF = PFSS Account Reference Number
 | 
|---|
| 46 |  ;  ORERCK   = Order check results (1 = OK)
 | 
|---|
| 47 |  ;  ORIFN    = Order IEN (previously defined)
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ; new variables used
 | 
|---|
| 50 |  N EIEN,EPOINTER,ETYPE,DFN,ORACTREF,ORERCK,ORPFSS
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  ; quit if PFSS is not active
 | 
|---|
| 53 |  D PFSSACTV^ORWPFSS(.ORPFSS) I ORPFSS=0 G EDO1Q
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  ; check validity/support of order
 | 
|---|
| 56 |  S ORERCK=$$ORDERCK^ORWPFSS(ORIFN) I +ORERCK>1 G EDO1Q
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  ; get Event Pointer
 | 
|---|
| 59 |  S EPOINTER=$P(^OR(100,ORIFN,0),U,17)
 | 
|---|
| 60 |  ; if EPOINTER is null then quit
 | 
|---|
| 61 |  I EPOINTER="" G EDO1Q
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  ; get Release Event Record
 | 
|---|
| 64 |  S EIEN=$P(^ORE(100.2,EPOINTER,0),U,2)
 | 
|---|
| 65 |  ; if EIEN is null then quit
 | 
|---|
| 66 |  I EIEN="" G EDO1Q
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  ; get Event Type
 | 
|---|
| 69 |  S ETYPE=$P(^ORD(100.5,EIEN,0),U,2)
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  ; if ETYPE is Admission or Transfer get PFSS ARN from VADPT
 | 
|---|
| 72 |  I ETYPE="A"!(ETYPE="T") D
 | 
|---|
| 73 |  . ; set patient IEN (DFN)
 | 
|---|
| 74 |  . S DFN=$P($P(^OR(100,ORIFN,0),";"),U,2)
 | 
|---|
| 75 |  . ; call VADPT (hospital adm/txfr) routine to get PFSS ARN (ORACTREF)
 | 
|---|
| 76 |  . S ORACTREF=$$HAAR^ORWPFSS4(DFN)
 | 
|---|
| 77 |  . ; store PFSS ARN in Order file (#100)
 | 
|---|
| 78 |  . S X=$$STRPARN(ORIFN,ORACTREF)
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  ; if ETYPE is Discharge store PFSS ARN as null in Order file (#100)
 | 
|---|
| 81 |  I ETYPE="D" S X=$$STRPARN(ORIFN,"")
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  ; ???-course of action if errors or EPOINTER or EIEN null?
 | 
|---|
| 84 | EDO1Q Q
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 | EDO2 ; Event Delayed Orders called from EN2^ORCSEND for manual releases
 | 
|---|
| 87 |  ; Get the PARN in effecxt when the event delayed order (EDO) released.
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 |  ; Variables used:
 | 
|---|
| 90 |  ;  EIEN     = Release event IEN
 | 
|---|
| 91 |  ;  EPOINTER = Event pointer
 | 
|---|
| 92 |  ;  DFN      = Patient IEN
 | 
|---|
| 93 |  ;  ORACTREF = PFSS Account Reference Number
 | 
|---|
| 94 |  ;  ORERCK   = Order check results (1 = OK)
 | 
|---|
| 95 |  ;  ORIFN    = Order IEN (previously defined)
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  ; new variables used
 | 
|---|
| 98 |  N EIEN,EPOINTER,ETYPE,DFN,ORACTREF,ORERCK,ORPFSS
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  ; quit if PFSS is not active
 | 
|---|
| 101 |  D PFSSACTV^ORWPFSS(.ORPFSS) I ORPFSS=0 G EDO2Q
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  ; check validity/support of order
 | 
|---|
| 104 |  S ORERCK=$$ORDERCK^ORWPFSS(ORIFN) I +ORERCK>1 G EDO2Q
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  ; get Event Pointer
 | 
|---|
| 107 |  S EPOINTER=$P(^OR(100,ORIFN,0),U,17)
 | 
|---|
| 108 |  ; if EPOINTER is null then quit
 | 
|---|
| 109 |  I EPOINTER="" G EDO2Q
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 |  ; get Release Event Record
 | 
|---|
| 112 |  S EIEN=$P(^ORE(100.2,EPOINTER,0),U,2)
 | 
|---|
| 113 |  ; if EIEN is null then quit
 | 
|---|
| 114 |  I EIEN="" G EDO2Q
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 |  ; set patient IEN (DFN)
 | 
|---|
| 117 |  S DFN=$P($P(^OR(100,ORIFN,0),";"),U,2)
 | 
|---|
| 118 |  ; call VADPT (hospital adm/txfr) routine to get PFSS ARN (ORACTREF)
 | 
|---|
| 119 |  S ORACTREF=$$HAAR^ORWPFSS4(DFN)
 | 
|---|
| 120 |  ; store PFSS ARN in Order file (#100)
 | 
|---|
| 121 |  S X=$$STRPARN(ORIFN,ORACTREF)
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 |  ; ???-course of action if errors or EPOINTER or EIEN null?
 | 
|---|
| 124 | EDO2Q Q
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 | STRPARN(ORIEN,ORACTREF) ; store of PFSS ARN
 | 
|---|
| 127 |  ; stores PFSS Account Reference Number in the Order file #100, field 97
 | 
|---|
| 128 |  ; see ACCTREF for passed in variable descriptions
 | 
|---|
| 129 |  ;
 | 
|---|
| 130 |  ; Variables used:
 | 
|---|
| 131 |  ;   ORER      = Error message
 | 
|---|
| 132 |  ;   ORFIELD   = PFSS ARN field (#97)
 | 
|---|
| 133 |  ;   ORFILE    = ORDER file (#100)
 | 
|---|
| 134 |  ;   ORFLAGS   = null (flags used in controlling use of FDA^DIFL)
 | 
|---|
| 135 |  ;
 | 
|---|
| 136 |  ; new variables
 | 
|---|
| 137 |  N ORER,ORFILE,ORFIELD,ORFLAGS
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 |  ; set contants
 | 
|---|
| 140 |  S ORFILE=100,ORFIELD=97,ORFLAGS=""
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  ; do FDA loader to compose FDA_ROOT
 | 
|---|
| 143 |  D FDA^DILF(ORFILE,ORIEN,ORFIELD,ORFLAGS,ORACTREF,"ORFDA","ORER")
 | 
|---|
| 144 |  ; check for an error
 | 
|---|
| 145 |  D ERRCHK I $D(ORNEWER) Q ORER
 | 
|---|
| 146 |  ; file PFSS ARN in Order file
 | 
|---|
| 147 |  D UPDATE^DIE("","ORFDA","","ORER")
 | 
|---|
| 148 |  ; another error check
 | 
|---|
| 149 |  D ERRCHK I $D(ORNEWER) Q ORER
 | 
|---|
| 150 |  ; successful data
 | 
|---|
| 151 |  Q 1
 | 
|---|
| 152 |  ;
 | 
|---|
| 153 | ERRCHK ; Compose error message if there's an error from use of DILF or DIE
 | 
|---|
| 154 |  I $G(ORER("DIERR",1)) D
 | 
|---|
| 155 |  . S ORNEWER=$G(ORER("DIERR",1))_U_$G(ORER("DIERR",1,"TEXT",1))
 | 
|---|
| 156 |  Q
 | 
|---|