| 1 | ORDD43 ; SLC/MKB - Build xrefs for file 101.43 ;7/2/97  10:52 | 
|---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**26,68,94,164,190**;Dec 17, 1997 | 
|---|
| 3 | ; | 
|---|
| 4 | SET(X,IFN) ; Create new entry X in SET multiple | 
|---|
| 5 | N DIC,DA,Y Q:$D(^ORD(101.43,IFN,9,"B",X))  ; already exists | 
|---|
| 6 | S DIC="^ORD(101.43,"_IFN_",9,",DIC(0)="L",DA(1)=IFN | 
|---|
| 7 | S DIC("P")=$P(^DD(101.43,9,0),U,2) K DD,DO | 
|---|
| 8 | S ^ORD(101.43,"AH",X)=$H | 
|---|
| 9 | S ^ORD(101.43,"AH","S."_X)=$H | 
|---|
| 10 | D FILE^DICN | 
|---|
| 11 | Q | 
|---|
| 12 | ; | 
|---|
| 13 | KILL(X,IFN) ; Remove entry X from SET multiple | 
|---|
| 14 | N DIK,DA | 
|---|
| 15 | S DIK="^ORD(101.43,"_IFN_",9,",DA(1)=IFN | 
|---|
| 16 | S ^ORD(101.43,"AH",X)=$H | 
|---|
| 17 | S DA=$O(^ORD(101.43,IFN,9,"B",X,0)) I DA D ^DIK | 
|---|
| 18 | Q | 
|---|
| 19 | ; | 
|---|
| 20 | SETRA(NAME,ITYPE,CPROC) ; Set COMMON xref | 
|---|
| 21 | Q:'CPROC  Q:'$L(ITYPE)  ; not common, no IType | 
|---|
| 22 | S ^ORD(101.43,"COMMON",ITYPE,NAME,DA)="" | 
|---|
| 23 | Q | 
|---|
| 24 | ; | 
|---|
| 25 | KILLRA(NAME,ITYPE,CPROC) ; Kill COMMON xref | 
|---|
| 26 | Q:'CPROC  Q:'$L(ITYPE)  ; not common, no IType | 
|---|
| 27 | K ^ORD(101.43,"COMMON",ITYPE,NAME,DA) | 
|---|
| 28 | Q | 
|---|
| 29 | ; | 
|---|
| 30 | SS(NAME,DATE,LABTYP) ; -- Set S.SET xref by Name, Set multiple | 
|---|
| 31 | Q:'$L($G(NAME))  I ($G(LABTYP)="O")!($G(LABTYP)="N") D SK(NAME) Q | 
|---|
| 32 | N SET,SET0,SETNM,SETLST,QO | 
|---|
| 33 | S SET=0 F  S SET=$O(^ORD(101.43,DA,9,SET)) Q:SET'>0  S SET0=$G(^(SET,0)) D | 
|---|
| 34 | . S SETNM=$P(SET0,U),QO=$P(SET0,U,2) | 
|---|
| 35 | . S ^ORD(101.43,"S."_SETNM,$$UP^XLFSTR(NAME),DA)=U_NAME_U_$G(DATE)_U_U_QO | 
|---|
| 36 | . S ^ORD(101.43,"AH","S."_SETNM)=$H,SETLST("S."_SETNM)="" | 
|---|
| 37 | I $G(DATE),(DATE>$$NOW^XLFDT) D | 
|---|
| 38 | . N ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTSAVE,ZTSK | 
|---|
| 39 | . S ZTRTN="DQAH^ORDD43",ZTDESC="CPRS AH Update",ZTDTH=DATE,ZTIO="" | 
|---|
| 40 | . S ZTSAVE("SETLST(")="" D ^%ZTLOAD | 
|---|
| 41 | Q | 
|---|
| 42 | DQAH ; -- set new timestamps for sets where items are becoming inactive | 
|---|
| 43 | S ZTREQ="@" | 
|---|
| 44 | N X | 
|---|
| 45 | S X="" F  S X=$O(SETLST(X)) Q:X=""  S ^ORD(101.43,"AH",X)=$H | 
|---|
| 46 | Q | 
|---|
| 47 | ; | 
|---|
| 48 | SK(NAME) ; -- Kill S.SET xref by Name, Set multiple | 
|---|
| 49 | Q:'$L($G(NAME))  N SET,SETNM | 
|---|
| 50 | S SET=0 F  S SET=$O(^ORD(101.43,DA,9,SET)) Q:SET'>0  S SETNM=$P(^(SET,0),U) D | 
|---|
| 51 | . K ^ORD(101.43,"S."_SETNM,$$UP^XLFSTR(NAME),DA) | 
|---|
| 52 | . S ^ORD(101.43,"AH","S."_SETNM)=$H | 
|---|
| 53 | Q | 
|---|
| 54 | ; | 
|---|
| 55 | SS1(NAME,DATE,LABTYP) ; -- Set S.SET mnemonic xref by Synonym, Name, Set | 
|---|
| 56 | Q:'$L($G(NAME))  I ($G(LABTYP)="O")!($G(LABTYP)="N") D SK1(NAME) Q | 
|---|
| 57 | N SYN,SYNM,SET,SET0,SETNM,QO | 
|---|
| 58 | S SET=0 F  S SET=$O(^ORD(101.43,DA,9,SET)) Q:SET'>0  S SET0=$G(^(SET,0)) D | 
|---|
| 59 | . S SETNM=$P(SET0,U),QO=$P(SET0,U,2) | 
|---|
| 60 | . S SYN=0 F  S SYN=$O(^ORD(101.43,DA,2,SYN)) Q:SYN'>0  S SYNM=$P(^(SYN,0),U) D | 
|---|
| 61 | . . S:SYNM'=NAME ^ORD(101.43,"S."_SETNM,$$UP^XLFSTR(SYNM),DA)="1^"_SYNM_U_$G(DATE)_U_NAME_U_QO | 
|---|
| 62 | . . S ^ORD(101.43,"AH","S."_SETNM)=$H | 
|---|
| 63 | Q | 
|---|
| 64 | ; | 
|---|
| 65 | SK1(NAME) ; -- Kill S.SET mnemonic xref by Synonym, Name, Set | 
|---|
| 66 | N SYN,SYNM,SET,SETNM | 
|---|
| 67 | S SET=0 F  S SET=$O(^ORD(101.43,DA,9,SET)) Q:SET'>0  S SETNM=$P(^(SET,0),U) D | 
|---|
| 68 | . S SYN=0 F  S SYN=$O(^ORD(101.43,DA,2,SYN)) Q:SYN'>0  S SYNM=$P(^(SYN,0),U) D | 
|---|
| 69 | . . I $G(^ORD(101.43,"S."_SETNM,$$UP^XLFSTR(SYNM),DA)) K ^(DA) | 
|---|
| 70 | . . S ^ORD(101.43,"AH","S."_SETNM)=$H | 
|---|
| 71 | Q | 
|---|
| 72 | ; | 
|---|
| 73 | SS2 ; -- Set S.SET mnemonic xref from SET multiple | 
|---|
| 74 | N TYP,NAME,DATE,SYN,SYNM,I,QO | 
|---|
| 75 | S TYP=$P($G(^ORD(101.43,DA(1),"LR")),U,7) I (TYP="O")!(TYP="N") D SK2 Q | 
|---|
| 76 | S I=+$O(^ORD(101.43,DA(1),9,"B",X,0)) | 
|---|
| 77 | S QO=$P($G(^ORD(101.43,DA(1),9,I,0)),U,2) | 
|---|
| 78 | S SYN=0,NAME=$P(^ORD(101.43,DA(1),0),U),DATE=$G(^(.1)) | 
|---|
| 79 | F  S SYN=$O(^ORD(101.43,DA(1),2,SYN)) Q:SYN'>0  S SYNM=$P(^(SYN,0),U) D | 
|---|
| 80 | . S:SYNM'=NAME ^ORD(101.43,"S."_X,$$UP^XLFSTR(SYNM),DA(1))="1^"_SYNM_U_DATE_U_NAME_U_QO | 
|---|
| 81 | . S ^ORD(101.43,"AH","S."_X)=$H | 
|---|
| 82 | Q | 
|---|
| 83 | ; | 
|---|
| 84 | SK2 ; -- Kill S.SET mnemonic xref from SET multiple | 
|---|
| 85 | N SYN,SYNM | 
|---|
| 86 | S SYN=0 F  S SYN=$O(^ORD(101.43,DA(1),2,SYN)) Q:SYN'>0  S SYNM=$P(^(SYN,0),U) D | 
|---|
| 87 | . I $G(^ORD(101.43,"S."_X,$$UP^XLFSTR(SYNM),DA(1))) K ^(DA(1)) | 
|---|
| 88 | . S ^ORD(101.43,"AH","S."_X)=$H | 
|---|
| 89 | Q | 
|---|
| 90 | ; | 
|---|
| 91 | SS3 ; -- Set S.SET mnemonic xref from SYN multiple | 
|---|
| 92 | N TYP,NAME,DATE,SET,SET0,SETNM,QO | 
|---|
| 93 | S TYP=$P($G(^ORD(101.43,DA(1),"LR")),U,7) I (TYP="O")!(TYP="N") D SK3 Q | 
|---|
| 94 | S NAME=$P(^ORD(101.43,DA(1),0),U),DATE=$G(^(.1)),SET=0 Q:X=NAME | 
|---|
| 95 | F  S SET=$O(^ORD(101.43,DA(1),9,SET)) Q:SET'>0  S SET0=$G(^(SET,0)) D | 
|---|
| 96 | . S SETNM=$P(SET0,U),QO=$P(SET0,U,2) | 
|---|
| 97 | . S ^ORD(101.43,"S."_SETNM,$$UP^XLFSTR(X),DA(1))="1^"_X_U_DATE_U_NAME_U_QO | 
|---|
| 98 | . S ^ORD(101.43,"AH","S."_SETNM)=$H | 
|---|
| 99 | Q | 
|---|
| 100 | ; | 
|---|
| 101 | SK3 ; -- Kill S.SET mnemonic xref from SYN multiple | 
|---|
| 102 | N SET,SETNM | 
|---|
| 103 | S SET=0 F  S SET=$O(^ORD(101.43,DA(1),9,SET)) Q:SET'>0  S SETNM=$P(^(SET,0),U) D | 
|---|
| 104 | . I $G(^ORD(101.43,"S."_SETNM,$$UP^XLFSTR(X),DA(1))) K ^(DA(1)) | 
|---|
| 105 | . S ^ORD(101.43,"AH","S."_SETNM)=$H | 
|---|
| 106 | Q | 
|---|
| 107 | ; | 
|---|
| 108 | CS(NAME,CODE,DATE) ; -- Set C.SET xref by 'Code Name', Set | 
|---|
| 109 | Q:'$L($G(NAME))  Q:'$L($G(CODE)) | 
|---|
| 110 | N X,XP,ORS,SET0,SETNM,QO | 
|---|
| 111 | S X=CODE_" "_NAME,XP=$$UP^XLFSTR(X) | 
|---|
| 112 | S ORS=0 F  S ORS=$O(^ORD(101.43,DA,9,ORS)) Q:ORS'>0  S SET0=$G(^(ORS,0)) D | 
|---|
| 113 | . S SETNM=$P(SET0,U),QO=$P(SET0,U,2) | 
|---|
| 114 | . S ^ORD(101.43,"C."_SETNM,XP,DA)=U_X_U_$G(DATE)_U_U_QO | 
|---|
| 115 | Q | 
|---|
| 116 | ; | 
|---|
| 117 | CK(NAME,CODE) ; -- Kill C.SET xref | 
|---|
| 118 | Q:'$L($G(NAME))  Q:'$L($G(CODE)) | 
|---|
| 119 | N XP,ORS,ORSET S XP=$$UP^XLFSTR(CODE_" "_NAME) | 
|---|
| 120 | S ORS=0 F  S ORS=$O(^ORD(101.43,DA,9,ORS)) Q:ORS'>0  S ORSET=$P(^(ORS,0),U) K ^ORD(101.43,"C."_ORSET,XP,DA) | 
|---|
| 121 | Q | 
|---|
| 122 | ; | 
|---|
| 123 | QO(X) ; -- Add data to SET xrefs, set/kill AQO xref | 
|---|
| 124 | N NAME,XREF,SYN,SYNM S X=$G(X) | 
|---|
| 125 | S NAME=$$UP^XLFSTR($P($G(^ORD(101.43,DA(1),0)),U)),XREF="S."_$P($G(^(9,DA,0)),U) | 
|---|
| 126 | S:X ^ORD(101.43,DA(1),9,"AQO",XREF)="" | 
|---|
| 127 | K:'X ^ORD(101.43,DA(1),9,"AQO",XREF) | 
|---|
| 128 | Q:'$D(^ORD(101.43,XREF,NAME,DA(1)))  S $P(^(DA(1)),U,5)=X | 
|---|
| 129 | S SYN=0 F  S SYN=+$O(^ORD(101.43,DA(1),2,SYN)) Q:SYN<1  S SYNM=$P($G(^(SYN,0)),U),$P(^ORD(101.43,XREF,$$UP^XLFSTR(SYNM),DA(1)),U,5)=X | 
|---|
| 130 | S ^ORD(101.43,"AH",XREF)=$H | 
|---|
| 131 | Q | 
|---|
| 132 | ; | 
|---|
| 133 | XHELP(INDEX,SCREEN) ; -- ??Help | 
|---|
| 134 | N X,Y,Y0,Z,SYN,CNT,D,DONE | 
|---|
| 135 | S:'$L($G(INDEX)) INDEX="B" W !!,"Choose from:" S CNT=1,D=INDEX | 
|---|
| 136 | S X="" F  S X=$O(^ORD(101.43,INDEX,X)) Q:X=""  S Y=0 D  Q:$G(DONE) | 
|---|
| 137 | . F  S Y=$O(^ORD(101.43,INDEX,X,Y)) Q:Y'>0  S SYN=$G(^(Y)) I 'SYN D  Q:$G(DONE) | 
|---|
| 138 | . . S Y0=$G(^ORD(101.43,Y,0)) X:$L($G(SCREEN)) SCREEN Q:'$T | 
|---|
| 139 | . . W !,"   "_X ;W:SYN "     "_$P(SYN,U,4) ; echo .01 if synonym | 
|---|
| 140 | . . S CNT=CNT+1 Q:CNT'>(IOSL-5)  S CNT=0 | 
|---|
| 141 | . . W !,"   '^' TO STOP: " R Z:DTIME S:'$T!(Z["^") DONE=1 | 
|---|
| 142 | W ! | 
|---|
| 143 | Q | 
|---|
| 144 | ; | 
|---|
| 145 | ACTIVE(ITM) ; -- Screen, if inactive or restricted to QO use only | 
|---|
| 146 | ;        Use in DIC("S") when searching #101.43 | 
|---|
| 147 | N Y S Y=1 | 
|---|
| 148 | I $G(ORTYPE)="D",$L($G(D)),$D(^ORD(101.43,+ITM,9,"AQO",$P(D,U))) S Y=0 | 
|---|
| 149 | I $G(^ORD(101.43,+ITM,.1)),^(.1)'>$$NOW^XLFDT S Y=0  ;inactive | 
|---|
| 150 | Q Y | 
|---|
| 151 | ; | 
|---|
| 152 | ID(OLD,NEW) ; -- API for package to update ID field [ code;99XXX ] | 
|---|
| 153 | ;    Returns 1 or 0, if successful or not | 
|---|
| 154 | N IFN,Y S Y=0 | 
|---|
| 155 | G:'$G(OLD) IDQ G:$G(NEW)'?1.N1";99"3U IDQ ;invalid | 
|---|
| 156 | S IFN=+$O(^ORD(101.43,"ID",OLD,0)) G:IFN'>0 IDQ | 
|---|
| 157 | K ^ORD(101.43,"ID",OLD,IFN) | 
|---|
| 158 | S $P(^ORD(101.43,IFN,0),U,2)=NEW,^ORD(101.43,"ID",NEW,IFN)="",Y=1 | 
|---|
| 159 | IDQ Q Y | 
|---|