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