[613] | 1 | ORB3C1 ; slc/CLA - Routine to pre-convert OE/RR 2.5 to OE/RR 3 notifications ;7/3/96 15:16 [ 04/03/97 1:41 PM ]
|
---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**9**;Dec 17, 1997
|
---|
| 3 | Q
|
---|
| 4 | PREORB ;initiate pre-inits for converting OE/RR 2.5 notification fields to OE/RR 3.0 notification parameters
|
---|
| 5 | ;called by ORCPRE (OE/RR 3 pre-init)
|
---|
| 6 | N ORBC,ORBERR,ORBNOW
|
---|
| 7 | I $L($T(GET^XPAR))>1,($D(^XTV(8989.51,"B","ORBC CONVERSION"))>0) D
|
---|
| 8 | .S ORBC=$$GET^XPAR("SYS","ORBC CONVERSION",1,"Q")
|
---|
| 9 | I +$G(ORBC)>0 D BMES^XPDUTL("Notifications already PRE-converted.") Q
|
---|
| 10 | D BMES^XPDUTL("PRE-conversion of notifications...")
|
---|
| 11 | S ORBNOW=$$NOW^XLFDT
|
---|
| 12 | S ^XTMP("ORBC",0)=$$FMADD^XLFDT(ORBNOW,30,"","","")_U_ORBNOW
|
---|
| 13 | D PRESTUB,PREPKG,PRECONV,PRECLEAN,PRERU,PRERG,PREPF,PREEX
|
---|
| 14 | I $L($T(EN^XPAR))>1,($D(^XTV(8989.51,"B","ORBC CONVERSION"))>0) D
|
---|
| 15 | .D EN^XPAR("SYS","ORBC CONVERSION",1,"1",.ORBERR) ;1:pre-convert done
|
---|
| 16 | D BMES^XPDUTL("PRE-conversion of notifications completed.")
|
---|
| 17 | Q
|
---|
| 18 | POSTORB ;initiate post-inits for converting OE/RR 2.5 notification fields to OE/RR 3.0 notification parameters
|
---|
| 19 | D POSTORB^ORB3C2
|
---|
| 20 | Q
|
---|
| 21 | PRESTUB ;initiate stubbing of notifications 30-57 and renaming of some existing notifictions
|
---|
| 22 | D BMES^XPDUTL("Stubbing notifications 30-49,51-58.")
|
---|
| 23 | N ORBI,ORBA,ORBIEN,ORBERR
|
---|
| 24 | S ORBA(100.9,"+30,",.01)="CONSULT/REQUEST CANCEL/HOLD",ORBIEN(30)=30
|
---|
| 25 | S ORBA(100.9,"+31,",.01)="NPO DIET MORE THAN 72 HRS",ORBIEN(31)=31
|
---|
| 26 | S ORBA(100.9,"+32,",.01)="SITE-FLAGGED RESULTS",ORBIEN(32)=32
|
---|
| 27 | S ORBA(100.9,"+33,",.01)="ORDERER-FLAGGED RESULTS",ORBIEN(33)=33
|
---|
| 28 | S ORBA(100.9,"+35,",.01)="DISCHARGE",ORBIEN(35)=35
|
---|
| 29 | S ORBA(100.9,"+36,",.01)="TRANSFER FROM PSYCHIATRY",ORBIEN(36)=36
|
---|
| 30 | S ORBA(100.9,"+37,",.01)="ORDER REQUIRES CO-SIGNATURE",ORBIEN(37)=37
|
---|
| 31 | S ORBA(100.9,"+41,",.01)="SITE-FLAGGED ORDER",ORBIEN(41)=41
|
---|
| 32 | S ORBA(100.9,"+42,",.01)="LAB ORDER CANCELED",ORBIEN(42)=42
|
---|
| 33 | S ORBA(100.9,"+43,",.01)="STAT ORDER",ORBIEN(43)=43
|
---|
| 34 | S ORBA(100.9,"+44,",.01)="STAT RESULTS",ORBIEN(44)=44
|
---|
| 35 | S ORBA(100.9,"+45,",.01)="DNR EXPIRING",ORBIEN(45)=45
|
---|
| 36 | S ORBA(100.9,"+46,",.01)="FREE TEXT",ORBIEN(46)=46
|
---|
| 37 | S ORBA(100.9,"+47,",.01)="MEDICATIONS EXPIRING",ORBIEN(47)=47
|
---|
| 38 | S ORBA(100.9,"+48,",.01)="UNVERIFIED MEDICATION ORDER",ORBIEN(48)=48
|
---|
| 39 | S ORBA(100.9,"+51,",.01)="STAT IMAGING REQUEST",ORBIEN(51)=51
|
---|
| 40 | S ORBA(100.9,"+52,",.01)="URGENT IMAGING REQUEST",ORBIEN(52)=52
|
---|
| 41 | S ORBA(100.9,"+53,",.01)="IMAGING RESULTS AMENDED",ORBIEN(53)=53
|
---|
| 42 | S ORBA(100.9,"+54,",.01)="ORDER CHECK",ORBIEN(54)=54
|
---|
| 43 | S ORBA(100.9,"+55,",.01)="FOOD/DRUG INTERACTION",ORBIEN(55)=55
|
---|
| 44 | S ORBA(100.9,"+56,",.01)="ERROR MESSAGE",ORBIEN(56)=56
|
---|
| 45 | S ORBA(100.9,"+57,",.01)="CRITICAL LAB RESULTS (ACTION)",ORBIEN(57)=57
|
---|
| 46 | S ORBA(100.9,"+58,",.01)="ABNORMAL LAB RESULT (INFO)",ORBIEN(58)=58
|
---|
| 47 | D CLEAN^DILF
|
---|
| 48 | D UPDATE^DIE("","ORBA","ORBIEN","ORBERR")
|
---|
| 49 | D BMES^XPDUTL("Notification stubbing completed.")
|
---|
| 50 | D BMES^XPDUTL("Renaming notifications 14,21,22,24,25,26,50.")
|
---|
| 51 | S $P(^ORD(100.9,14,0),U)="ABNORMAL LAB RESULTS (ACTION)"
|
---|
| 52 | S $P(^ORD(100.9,21,0),U)="IMAGING PATIENT EXAMINED"
|
---|
| 53 | S $P(^ORD(100.9,22,0),U)="IMAGING RESULTS"
|
---|
| 54 | S $P(^ORD(100.9,24,0),U)="CRITICAL LAB RESULT (INFO)"
|
---|
| 55 | S $P(^ORD(100.9,25,0),U)="ABNORMAL IMAGING RESULTS"
|
---|
| 56 | S $P(^ORD(100.9,26,0),U)="IMAGING REQUEST CANCEL/HELD"
|
---|
| 57 | S $P(^ORD(100.9,50,0),U)="NEW ORDER"
|
---|
| 58 | ;kill then rebuild "B" x-ref:
|
---|
| 59 | K ^ORD(100.9,"B")
|
---|
| 60 | S DIK="^ORD(100.9,",DIK(1)=".01^B" D ENALL^DIK
|
---|
| 61 | K DIK
|
---|
| 62 | D BMES^XPDUTL("Notification renaming completed.")
|
---|
| 63 | Q
|
---|
| 64 | PREPKG ;pre-init to kill bad entries in the package file
|
---|
| 65 | S DA=0,DIK="^DIC(9.4,",DA=$O(^DIC(9.4,"C","ORA",DA)) I $L($G(DA)) D ^DIK
|
---|
| 66 | S DA=0,DIK="^DIC(9.4,",DA=$O(^DIC(9.4,"C","ORB",DA)) I $L($G(DA)) D ^DIK
|
---|
| 67 | K DA,DIK
|
---|
| 68 | Q
|
---|
| 69 | PRECONV ;convert OE/RR 2.5 alerts that are deleted in the CPRS conversion into
|
---|
| 70 | ;informational alerts and send them to the appropriate user
|
---|
| 71 | N ORBUSR,ORBDT,ORBNOW,ORBNODE,ORBMSG,ORBN,ORBCNT,ORBAID
|
---|
| 72 | S ORBNOW=$$NOW^XLFDT
|
---|
| 73 | S ORBUSR=0,ORBCNT=0
|
---|
| 74 | D BMES^XPDUTL("Converting existing alerts...")
|
---|
| 75 | F S ORBUSR=$O(^XTV(8992,ORBUSR)) Q:+$G(ORBUSR)<.5 D
|
---|
| 76 | .S ORBDT=0 F S ORBDT=$O(^XTV(8992,ORBUSR,"XQA",ORBDT)) Q:ORBDT="" D
|
---|
| 77 | ..S ORBNODE=^XTV(8992,ORBUSR,"XQA",ORBDT,0)
|
---|
| 78 | ..S ORBAID=$P($P(ORBNODE,U,2),";")
|
---|
| 79 | ..Q:$P(ORBAID,",")'="OR" ;quit if not an OE/RR alert
|
---|
| 80 | ..S ORBN=$P(ORBAID,",",3) ;get notification ien
|
---|
| 81 | ..;if notification is an alert to be deleted during conversion:
|
---|
| 82 | ..I (ORBN=3)!(ORBN=6)!(ORBN=12)!(ORBN=14)!(ORBN=24)!(ORBN=50) D
|
---|
| 83 | ...S ORBCNT=ORBCNT+1
|
---|
| 84 | ...S ORBMSG=$P(ORBNODE,U,3)
|
---|
| 85 | ...S XQAMSG="[CONV] "_ORBMSG
|
---|
| 86 | ...S XQAID="OR3CONV"_","_ORBCNT_","_ORBNOW
|
---|
| 87 | ...S XQA(ORBUSR)=""
|
---|
| 88 | ...S XQAFLG="I"
|
---|
| 89 | ...D SETUP^XQALERT
|
---|
| 90 | ...K XQAMSG,XQAID,XQA,XQAFLG
|
---|
| 91 | Q
|
---|
| 92 | PRECLEAN ;clean up old alerts and unused entries in Notification file
|
---|
| 93 | ; 3 - Lab Results
|
---|
| 94 | ; 6 - Flagged Orders
|
---|
| 95 | ;10 - Unsigned Progress Notes
|
---|
| 96 | ;12 - Orders Requiring Electronic Signature
|
---|
| 97 | ;13 - Co-signature on Progress Notes
|
---|
| 98 | ;14 - Abnormal Labs
|
---|
| 99 | ;15 - Cytology Results
|
---|
| 100 | ;16 - Anatomical Pathology Results
|
---|
| 101 | ;17 - Autopsy Report
|
---|
| 102 | ;24 - Critical Lab Results
|
---|
| 103 | ;50 - Lab critical/abnormal/new rslt
|
---|
| 104 | ;97 - Test Notification
|
---|
| 105 | ;
|
---|
| 106 | ;clean up old alerts with fup actions unprocessable or unused by CPRS:
|
---|
| 107 | N ORBI,ORX S ORBI=""
|
---|
| 108 | D BMES^XPDUTL("Cleaning up old alerts...")
|
---|
| 109 | F ORBI=3,6,10,12,13,14,15,16,17,24,50,97 D
|
---|
| 110 | .Q:'$D(^ORD(100.9,ORBI))
|
---|
| 111 | .D NOTIPURG^XQALBUTL(ORBI)
|
---|
| 112 | .S ORX=" "_$P(^ORD(100.9,ORBI,0),U)_" cleaned up."
|
---|
| 113 | .D BMES^XPDUTL(ORX)
|
---|
| 114 | ;
|
---|
| 115 | K XPDIDTOT
|
---|
| 116 | ;clean up unused entries in the notification file:
|
---|
| 117 | S ORBI=""
|
---|
| 118 | F ORBI=10,13,15,16,17,97 D
|
---|
| 119 | .Q:'$D(^ORD(100.9,ORBI))
|
---|
| 120 | .S DA=ORBI,DIK="^ORD(100.9," D ^DIK
|
---|
| 121 | .K DA,DIK
|
---|
| 122 | KILLC ;kill then rebuild "C" x-ref
|
---|
| 123 | K ^ORD(100.9,"C")
|
---|
| 124 | S DIK="^ORD(100.9,",DIK(1)=".02^C" D ENALL^DIK ;rebuild the "C" x-ref
|
---|
| 125 | K DA,DIK
|
---|
| 126 | Q
|
---|
| 127 | PRERU ;pre-init conversion of OE/RR 2.5 RECIPIENT USERS
|
---|
| 128 | N ORBN,ORBU,ORI,I
|
---|
| 129 | S ORBN=0,ORI="",I=1
|
---|
| 130 | F S ORBN=$O(^ORD(100.9,ORBN)) Q:+ORBN<1 D
|
---|
| 131 | .I $G(^ORD(100.9,ORBN,200,0))="" Q
|
---|
| 132 | .S ORI=0 F S ORI=$O(^ORD(100.9,ORBN,200,ORI)) Q:'ORI D
|
---|
| 133 | ..S ORBU=$G(^ORD(100.9,ORBN,200,ORI,0)) Q:ORBU=""
|
---|
| 134 | ..Q:'$L($G(^VA(200,ORBU,0)))
|
---|
| 135 | ..S ^XTMP("ORBC","USER PROCESSING FLAG",I)=ORBU_U_ORBN
|
---|
| 136 | ..S ^XTMP("ORBC","USER PROCESSING FLAG",0)=I,I=I+1
|
---|
| 137 | Q
|
---|
| 138 | PRERG ;pre-init conversion of OE/RR 2.5 RECIPIENT GROUPS
|
---|
| 139 | N ORBN,ORBT,ORI,I
|
---|
| 140 | S ORBN=0,ORI="",I=1
|
---|
| 141 | F S ORBN=$O(^ORD(100.9,ORBN)) Q:+ORBN<1 D
|
---|
| 142 | .I $G(^ORD(100.9,ORBN,2,0))="" Q
|
---|
| 143 | .S ORI=0 F S ORI=$O(^ORD(100.9,ORBN,2,ORI)) Q:'ORI D
|
---|
| 144 | ..S ORBT=$G(^ORD(100.9,ORBN,2,ORI,0)) Q:ORBT=""
|
---|
| 145 | ..Q:'$L($G(^OR(100.21,ORBT,0)))
|
---|
| 146 | ..S ^XTMP("ORBC","DEFAULT RECIPIENTS",I)=ORBT_U_ORBN
|
---|
| 147 | ..S ^XTMP("ORBC","DEFAULT RECIPIENTS",0)=I,I=I+1
|
---|
| 148 | Q
|
---|
| 149 | PREPF ;pre-init conversion of OE/RR 2.5 PROCESSING FLAG
|
---|
| 150 | N ORBN,ORBF,I
|
---|
| 151 | S ORBN=0,I=1
|
---|
| 152 | F S ORBN=$O(^ORD(100.9,ORBN)) Q:+ORBN<1 D
|
---|
| 153 | .S ORBF=$G(^ORD(100.9,ORBN,3)) Q:ORBF=""
|
---|
| 154 | .S ORBF=$S(ORBF["^":$P(ORBF,U),1:ORBF) Q:ORBF=""
|
---|
| 155 | .S ORBF=$S(ORBF="M":"Mandatory",ORBF="E":"Disabled",ORBF="N":"Disabled",ORBF="D":"Disabled",1:"Disabled")
|
---|
| 156 | .S ^XTMP("ORBC","SITE PROCESSING FLAG",I)=ORBF_U_ORBN
|
---|
| 157 | .S ^XTMP("ORBC","SITE PROCESSING FLAG",0)=I,I=I+1
|
---|
| 158 | Q
|
---|
| 159 | PREEX ;pre-init conversion of OE/RR 2.5 EXCLUDE ATTENDING & EXCLUDE PRIMARY
|
---|
| 160 | N ORBN,ORBXA,ORBXP,ORBNTOP,I
|
---|
| 161 | S ORBN=0,I=1
|
---|
| 162 | ;
|
---|
| 163 | ;check Order Param file for value of Notification to Physician field:
|
---|
| 164 | S ORBNTOP=$P($G(^ORD(100.99,1,2)),U,11)
|
---|
| 165 | ;
|
---|
| 166 | F S ORBN=$O(^ORD(100.9,ORBN)) Q:+ORBN<1 D
|
---|
| 167 | .Q:$G(^ORD(100.9,ORBN,0))=""
|
---|
| 168 | .Q:$G(^ORD(100.9,ORBN,3))="" ;quit if a stubbed notif
|
---|
| 169 | .S ORBXA=$P(^ORD(100.9,ORBN,0),U,9),ORBXP=$P(^ORD(100.9,ORBN,0),U,10)
|
---|
| 170 | .I '$L(ORBNTOP),(+$G(ORBXA)<1),(+$G(ORBXP)<1) Q
|
---|
| 171 | .I ($L(ORBXA))!($L(ORBXP)) D
|
---|
| 172 | ..S ^XTMP("ORBC","PROVIDER RECIPIENTS",I)=ORBXA_U_ORBXP_U_ORBNTOP_U_ORBN
|
---|
| 173 | ..S ^XTMP("ORBC","PROVIDER RECIPIENTS",0)=I,I=I+1
|
---|
| 174 | Q
|
---|