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