| 1 | PXRMLPOE ; SLC/PJH - Build OE/RR Team from Patient List;07/08/2002 | 
|---|
| 2 | ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21 | 
|---|
| 3 | ; | 
|---|
| 4 | ; Called from PXRM PATIENT LIST OE/RR protocol | 
|---|
| 5 | ; | 
|---|
| 6 | OERR(IENO) ;Copy patient list to OE/RR Team | 
|---|
| 7 | ; | 
|---|
| 8 | ;Check if OK to copy | 
|---|
| 9 | D ASK(IENO,"Copy") Q:$D(DUOUT)!$D(DTOUT) | 
|---|
| 10 | ; | 
|---|
| 11 | N IENN,NNAME,ONAME,TEXT,X,Y | 
|---|
| 12 | ; | 
|---|
| 13 | ;Select OE/RR Team to copy to | 
|---|
| 14 | S TEXT="Select OE/RR TEAM name to copy to: " | 
|---|
| 15 | D OTEAM(.IENN,.NNAME,TEXT) Q:$D(DUOUT)!$D(DTOUT)  Q:'IENN | 
|---|
| 16 | ; | 
|---|
| 17 | S ONAME=$P($G(^PXRMXP(810.5,IENO,0)),U) | 
|---|
| 18 | ; | 
|---|
| 19 | ;Load list into ^TMP | 
|---|
| 20 | D LOAD("PXRMRULE",IENO) | 
|---|
| 21 | ;Update OE/RR Team list | 
|---|
| 22 | D UPDLST("PXRMRULE",IENN,NNAME) | 
|---|
| 23 | ; | 
|---|
| 24 | W !!,"Completed copy of patient list '"_ONAME_"'" | 
|---|
| 25 | W !,"into OE/RR Team '"_NNAME_"'",! H 4 | 
|---|
| 26 | Q | 
|---|
| 27 | ; | 
|---|
| 28 | OK ;Option to overwrite existing list | 
|---|
| 29 | N X,Y,TEXT | 
|---|
| 30 | K DIROUT,DIRUT,DTOUT,DUOUT | 
|---|
| 31 | S DIR(0)="YA0" | 
|---|
| 32 | S DIR("A")="Overwrite existing OE/RR Team list: " | 
|---|
| 33 | S DIR("B")="N" | 
|---|
| 34 | S DIR("?")="Enter Y or N. For detailed help type ??" | 
|---|
| 35 | S DIR("??")=U_"D HELP^PXRMLCR(1)" | 
|---|
| 36 | W ! | 
|---|
| 37 | D ^DIR K DIR | 
|---|
| 38 | I $D(DIROUT) S DTOUT=1 | 
|---|
| 39 | I $D(DTOUT)!($D(DUOUT)) Q | 
|---|
| 40 | I $E(Y(0))="N" S DUOUT=1 Q | 
|---|
| 41 | Q | 
|---|
| 42 | ; | 
|---|
| 43 | ASK(PLIEN,OPT) ;Verify patient list name | 
|---|
| 44 | N X,Y,TEXT | 
|---|
| 45 | K DIROUT,DIRUT,DTOUT,DUOUT | 
|---|
| 46 | S DIR(0)="YA0" | 
|---|
| 47 | S DIR("A")=OPT_" patient list "_$P($G(^PXRMXP(810.5,PLIEN,0)),U)_"?: " | 
|---|
| 48 | S DIR("B")="N" | 
|---|
| 49 | S DIR("?")="Enter Y or N. For detailed help type ??" | 
|---|
| 50 | W ! | 
|---|
| 51 | D ^DIR K DIR | 
|---|
| 52 | I $D(DIROUT) S DTOUT=1 | 
|---|
| 53 | I $D(DTOUT)!($D(DUOUT)) Q | 
|---|
| 54 | I $E(Y(0))="N" S DUOUT=1 Q | 
|---|
| 55 | Q | 
|---|
| 56 | ; | 
|---|
| 57 | ; | 
|---|
| 58 | LOAD(NODE,LIST) ;Load Patient List | 
|---|
| 59 | N DFN,INC,SUB | 
|---|
| 60 | S SUB=0,INC=0 | 
|---|
| 61 | K ^TMP(NODE,$J) | 
|---|
| 62 | F  S SUB=$O(^PXRMXP(810.5,LIST,30,SUB)) Q:'SUB  D | 
|---|
| 63 | .S DFN=$P($G(^PXRMXP(810.5,LIST,30,SUB,0)),U) Q:'DFN | 
|---|
| 64 | .S INC=INC+1,^TMP(NODE,$J,INC)=DFN | 
|---|
| 65 | Q | 
|---|
| 66 | ; | 
|---|
| 67 | OTEAM(LIST,NAME,TEXT) ;Select OERR/Team | 
|---|
| 68 | N X,Y,DIC,DIE,DR,DLAYGO | 
|---|
| 69 | W ! | 
|---|
| 70 | W !,"To overwrite an existing list you must be the creator of the list and" | 
|---|
| 71 | W !,"the OE/RR team list must be defined as a Team List." | 
|---|
| 72 | OT1 S DIC=100.21,DLAYGO=DIC,DIC(0)="QAEMZL" | 
|---|
| 73 | S DIC("S")="I $P($G(^(0)),U,2)=""TM"",$P($G(^(0)),U,5)=DUZ" | 
|---|
| 74 | S DIC("A")=TEXT | 
|---|
| 75 | W ! | 
|---|
| 76 | D ^DIC | 
|---|
| 77 | I X="" W !,"An OE/RR Team name must be entered" G OT1 | 
|---|
| 78 | I X=(U_U) S DTOUT=1 | 
|---|
| 79 | I Y=-1 S DUOUT=1 | 
|---|
| 80 | I $D(DTOUT)!$D(DUOUT) Q | 
|---|
| 81 | ; | 
|---|
| 82 | ;Check if OK to overwrite | 
|---|
| 83 | I $P(Y,U,3)'=1  D  Q:$D(DTOUT)  G:$D(DUOUT) OT1 | 
|---|
| 84 | .D OK | 
|---|
| 85 | ;Return list ien | 
|---|
| 86 | S LIST=$P(Y,U),NAME=$P(Y,U,2) | 
|---|
| 87 | Q | 
|---|
| 88 | ; | 
|---|
| 89 | UPDLST(NODE,LIST,NAME) ;Update patient list | 
|---|
| 90 | N CNT,DA,DFN,DIK,DUOUT,FDA,MSG,SUB,TEMP | 
|---|
| 91 | ;Lock patient list | 
|---|
| 92 | D LOCK Q:$D(DUOUT) | 
|---|
| 93 | ; | 
|---|
| 94 | ;Clear existing list | 
|---|
| 95 | S SUB=0 | 
|---|
| 96 | F  S SUB=$O(^OR(100.21,LIST,10,SUB)) Q:'SUB  D | 
|---|
| 97 | .S DA=SUB,DA(1)=LIST,DIK="^OR(100.21,"_DA(1)_",10," | 
|---|
| 98 | .D ^DIK | 
|---|
| 99 | ; | 
|---|
| 100 | ;DBIA #4561 putting data into OE/RR list | 
|---|
| 101 | ;Merge ^TMP into Patient List | 
|---|
| 102 | W !,"Updating "_NAME | 
|---|
| 103 | S DFN=0,CNT=1 | 
|---|
| 104 | F  S DFN=$O(^TMP(NODE,$J,DFN)) Q:'DFN  D | 
|---|
| 105 | .S CNT=CNT+1 | 
|---|
| 106 | .S ^TMP("PXRMFDA",$J,100.2101,"?+"_CNT_",?1,",.01)=$G(^TMP(NODE,$J,DFN))_";DPT(" | 
|---|
| 107 | ;Update | 
|---|
| 108 | S ^TMP("PXRMFDA",$J,100.21,"?1,",.01)=NAME | 
|---|
| 109 | S ^TMP("PXRMFDA",$J,100.21,"?1,",.1)=$$UP^XLFSTR(NAME) | 
|---|
| 110 | S ^TMP("PXRMFDA",$J,100.21,"?1,",1)="TM" | 
|---|
| 111 | S ^TMP("PXRMFDA",$J,100.21,"?1,",1.6)=DUZ | 
|---|
| 112 | S ^TMP("PXRMFDA",$J,100.21,"?1,",1.65)=$$NOW^XLFDT | 
|---|
| 113 | S TEMP="^TMP(""PXRMFDA"","_$J_")" | 
|---|
| 114 | D UPDATE^DIE("",TEMP,"","MSG") | 
|---|
| 115 | ;Error | 
|---|
| 116 | I $D(MSG) D ERR | 
|---|
| 117 | ;Unlock patient list | 
|---|
| 118 | D UNLOCK | 
|---|
| 119 | K ^TMP(NODE,$J) | 
|---|
| 120 | Q | 
|---|
| 121 | ; | 
|---|
| 122 | ;File locking | 
|---|
| 123 | UNLOCK L -^PXRMXP(100.21,LIST) Q | 
|---|
| 124 | LOCK L +^PXRMXP(100.21,LIST):0 | 
|---|
| 125 | E  W !!?5,"Another user is using this OE/RR team list" S DUOUT=1 | 
|---|
| 126 | Q | 
|---|
| 127 | ; | 
|---|
| 128 | ERR ;Error Handler | 
|---|
| 129 | N ERROR,IC,REF | 
|---|
| 130 | S ERROR(1)="Unable to build patient list : " | 
|---|
| 131 | S ERROR(2)=NAME | 
|---|
| 132 | S ERROR(3)="Error in UPDATE^DIE, needs further investigation" | 
|---|
| 133 | ;Move MSG into ERROR | 
|---|
| 134 | S REF="MSG" | 
|---|
| 135 | F IC=4:1 S REF=$Q(@REF) Q:REF=""  S ERROR(IC)=REF_"="_@REF | 
|---|
| 136 | ;Screen message | 
|---|
| 137 | D BMES^XPDUTL(.ERROR) | 
|---|
| 138 | Q | 
|---|