[641] | 1 | XBFUNC ; IHS/ADC/GTH - FUNCTION LIBRARY ; [ 10/29/2002 7:42 AM ]
|
---|
| 2 | ;;4.0;XB;;Jul 20, 2009;Build 2
|
---|
| 3 | ;
|
---|
| 4 | FNDPATRN(STR,PAT) ;PEP - Find pattern in string. Return beginning position.
|
---|
| 5 | ;
|
---|
| 6 | ; E.g.: $$FNDPATRN^XBFUNC("ABC8RX","1A1N") will return 3.
|
---|
| 7 | ;
|
---|
| 8 | I '$L($G(STR))!('$L($G(PAT))) Q 0
|
---|
| 9 | I STR'?@(".E"_PAT_".E") Q 0
|
---|
| 10 | NEW I,J
|
---|
| 11 | S J=0
|
---|
| 12 | F I=1:1:$L(STR) I $E(STR,I,$L(STR))?@(PAT_".E") S J=I Q
|
---|
| 13 | Q J
|
---|
| 14 | ;
|
---|
| 15 | GETPATRN(STR,PAT) ;PEP - Retrieve pattern from string.
|
---|
| 16 | ;
|
---|
| 17 | ; E.g.: $$GETPATRN^XBFUNC("ABC8RX","1A1N") will return "C8".
|
---|
| 18 | ;
|
---|
| 19 | I '$L($G(STR))!('$L($G(PAT))) Q ""
|
---|
| 20 | NEW I,S
|
---|
| 21 | S I=$$FNDPATRN^XBFUNC(STR,PAT)
|
---|
| 22 | I 'I Q ""
|
---|
| 23 | S S=$E(STR,I,$L(STR))
|
---|
| 24 | F I=1:1 Q:(S="")!(S?@PAT) S S=$E(S,1,$L(S)-1)
|
---|
| 25 | Q S
|
---|
| 26 | ;
|
---|
| 27 | INTSET(FILE,FIELD,EXTVAL) ;PEP - Get Intnl Field Value Given Extnl Field Value
|
---|
| 28 | ; For a set of codes type field
|
---|
| 29 | ;
|
---|
| 30 | ; E.g.: $$INTSET^XBFUNC(9000001,.21,"RETIRED") returns 5.
|
---|
| 31 | ;
|
---|
| 32 | I '$G(FILE)!('$G(FIELD)) Q ""
|
---|
| 33 | I $G(EXTVAL)="" Q ""
|
---|
| 34 | I '$D(^DD(FILE,FIELD)) Q ""
|
---|
| 35 | S EXTVAL=":"_EXTVAL_";"
|
---|
| 36 | I $P(^DD(FILE,FIELD,0),"^",3)'[EXTVAL Q ""
|
---|
| 37 | NEW %,%A,%B
|
---|
| 38 | S %=$P(^DD(FILE,FIELD,0),"^",3),%A=$P(%,EXTVAL),%B=$L(%A,";")
|
---|
| 39 | Q $P(%A,";",%B)
|
---|
| 40 | ;
|
---|
| 41 | EXTSET(FILE,FIELD,INTVAL) ;PEP - Get Extnl Field Value Given Intnl Field Value
|
---|
| 42 | ; For a set of codes type field
|
---|
| 43 | ;
|
---|
| 44 | ; E.g.: $$EXTSET^XBFUNC(9000001,.21,5) returns "RETIRED".
|
---|
| 45 | ;
|
---|
| 46 | I '$G(FILE)!('$G(FIELD)) Q ""
|
---|
| 47 | I $G(INTVAL)="" Q ""
|
---|
| 48 | I '$D(^DD(FILE,FIELD)) Q ""
|
---|
| 49 | I $P(^DD(FILE,FIELD,0),"^",3)'[INTVAL Q ""
|
---|
| 50 | NEW %,%A
|
---|
| 51 | S %=$P(^DD(FILE,FIELD,0),"^",3),%A=$P(%,(INTVAL_":"),2)
|
---|
| 52 | Q $P(%A,";")
|
---|
| 53 | ;
|
---|
| 54 | DECFRAC(X) ;PEP - Convert Decimal to Fraction (X contains Decimal number).
|
---|
| 55 | ;
|
---|
| 56 | ; E.g.: $$DECFRAC^XBFUNC(.25) returns "1/4".
|
---|
| 57 | ;
|
---|
| 58 | Q:'$D(X) ""
|
---|
| 59 | Q:$E(X)'="." ""
|
---|
| 60 | NEW D,N
|
---|
| 61 | S N=+$P(X,".",2)
|
---|
| 62 | Q:'N ""
|
---|
| 63 | S $P(D,"0",$L(+X))="" S D="1"_D
|
---|
| 64 | F Q:(N#2) S N=N/2,D=D/2
|
---|
| 65 | F Q:(N#5) S N=N/5,D=D/5
|
---|
| 66 | Q N_"/"_D
|
---|
| 67 | ;
|
---|
| 68 | C(X,Y) ;PEP - Center X in field length Y/IOM/80.
|
---|
| 69 | Q $J("",$S($D(Y):Y,$G(IOM):IOM,1:80)-$L(X)\2)_X
|
---|
| 70 | ;
|
---|
| 71 | GDT(JDT) ;PEP - Return Gregorian Date, given Julian Date.
|
---|
| 72 | Q:'$G(JDT) -1
|
---|
| 73 | S:'$D(DT) DT=$$DT^XLFDT
|
---|
| 74 | Q $$HTE^XLFDT($P($$FMTH^XLFDT($E(DT,1,3)_"0101"),",")+JDT-1)
|
---|
| 75 | ;
|
---|
| 76 | JDT(XBDT) ;PEP - Return Julian Date, given FM date.
|
---|
| 77 | Q:'$D(XBDT) -1
|
---|
| 78 | Q:'(XBDT?7N) -1
|
---|
| 79 | S:'$D(DT) DT=$$DT^XLFDT
|
---|
| 80 | Q $$FMDIFF^XLFDT(XBDT,$E(DT,1,3)_"0101")+1
|
---|
| 81 | ;
|
---|
| 82 | USR() ;PEP - Return name of current user for ^VA(200.
|
---|
| 83 | Q $S($G(DUZ):$S($D(^VA(200,DUZ,0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
|
---|
| 84 | ;
|
---|
| 85 | LOC() ;PEP - Return location name from file 4 based on DUZ(2).
|
---|
| 86 | Q $S($G(DUZ(2)):$S($D(^DIC(4,DUZ(2),0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ(2) UNDEFINED OR 0")
|
---|
| 87 | ;
|
---|
| 88 | CV(X) ;PEP - Given a Namespace, return current version.
|
---|
| 89 | Q $$VERSION^XPDUTL(X) ;IHS/SET/GTH XB*3*9 10/29/2002
|
---|
| 90 | Q:'$L($G(X)) -1
|
---|
| 91 | S X=$O(^DIC(9.4,"C",X,0))
|
---|
| 92 | Q:'X -1
|
---|
| 93 | Q $G(^DIC(9.4,X,"VERSION"),-1)
|
---|
| 94 | ;
|
---|
| 95 | ;Begin New Code;IHS/SET/GTH XB*3*9 10/29/2002
|
---|
| 96 | FNAME(N) ;PEP - Given File number, return File Name.
|
---|
| 97 | Q:'$L($G(N)) -1
|
---|
| 98 | S N=$O(^DD(N,0,"NM",""))
|
---|
| 99 | Q:'$L(N) -1
|
---|
| 100 | Q N
|
---|
| 101 | ;
|
---|
| 102 | FGLOB(N) ;PEP - Given File number, return File Global.
|
---|
| 103 | Q:'$L($G(N)) -1
|
---|
| 104 | Q $G(^DIC(N,0,"GL"),-1)
|
---|
| 105 | ;
|
---|
| 106 | ZEROTH(A,B,C,D,E,F,G,H,I,J,K) ;PEP - Return dd 0th node. A is file #, rest fields.
|
---|
| 107 | I '$G(A) Q -1
|
---|
| 108 | I '$G(B) Q -1
|
---|
| 109 | F %=67:1:75 Q:'$G(@($C(%))) S A=+$P(^DD(A,B,0),U,2),B=@($C(%))
|
---|
| 110 | I 'A!('B) Q -1
|
---|
| 111 | I '$D(^DD(A,B,0)) Q -1
|
---|
| 112 | Q U_$P(^DD(A,B,0),U,2)
|
---|
| 113 | ;End New Code;IHS/SET/GTH XB*3*9 10/29/2002
|
---|
| 114 | ;
|
---|