Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: CIAULK2

CIAULK2.m

Go to the documentation of this file.
  1. CIAULK2 ;MSC/IND/DKM - Continuation of CIAULKP;04-May-2006 08:19;DKM
  1. ;;1.2;CIA UTILITIES;;Mar 20, 2007
  1. ;;Copyright 2000-2006, Medsphere Systems Corporation
  1. ;=================================================================
  1. LKP(%CIADX) ;
  1. N %CIAD,%CIAZ,%CIAN
  1. S %CIAXRN=0,%CIATRNC=0,%CIAIEN="",%CIASCT=0,%CIAD=%CIADX
  1. W:'%CIAHTML $$XY(%CIAX+$L(%CIAPRMP),%CIAY),$S(%CIAOPT["X":"",1:%CIAD),%CIAEOS,!,"Searching"_$S(%CIAOPT[U:" (press ^ to abort)",1:"")_"...",*13
  1. I $E(%CIAD)="`" S %CIASLCT=%CIAD G:'%CIAHTML NR5 D SHOW($E(%CIAD,2,999)) Q 1
  1. NXTREF S %CIAXRN=%CIAXRN+1,%CIAXRF=$P(%CIAXRFS,U,%CIAXRN),%CIAD=%CIADX
  1. I %CIAXRF="" G:%CIASCT NR3 W:'%CIAHTML *7,*13,%CIAEOL,"Not found"_$S(%CIAD="":".",1:": ")_$S(%CIAD'=+%CIAD:%CIAD,%CIAOPT["D":$$ENTRY^CIAUDT(%CIAD),1:%CIAD) S %CIAD1=$S(%CIAOPT["X":U,1:"") Q ""
  1. S %CIAOPT(0)=%CIAOPT_%CIAXRFS(%CIAXRF)
  1. I %CIAOPT(0)["D",$L(%CIADX) D G:%CIAD<1 NXTREF
  1. .S %CIAD=$$DT^CIAU(%CIADX)
  1. I %CIAOPT(0)["W" D MTL G NXTREF
  1. S %CIAKEY=$S(%CIAOPT(0)["P":$P(%CIAD," "),1:%CIAD)_$S(%CIADIR<0:$C(255),1:""),%CIANUM=$S(%CIAKEY=+%CIAKEY:%CIAKEY,1:"")
  1. I %CIAD'="",$D(@%CIADIC@(%CIAXRF,%CIAD)) S %=%CIASCT+1 D ADD(%CIAD) I %CIASCT=%,%CIAOPT(0)["A" D SLCT(%CIASCT) Q %CIAIEN
  1. NR2 I %CIAOPT(0)[U R %#1:0 I %=U S %CIATRNC=1 G NR3:%CIASCT Q ""
  1. S %CIAKEY=$O(@%CIADIC@(%CIAXRF,%CIAKEY),%CIADIR)
  1. I (%CIANUM="")=(%CIAKEY=+%CIAKEY),%CIAD'="" S %CIAKEY=""
  1. I %CIAKEY'="",%CIAOPT(0)["P",%CIAKEY'=%CIAD S %=$$PARTIAL(%CIAD,%CIAKEY) D ADD(%CIAKEY):%>0 G:%'<0 NR2:%CIASCT<100
  1. I %CIAKEY'="",%CIAOPT(0)'["P",$E(%CIAKEY,1,$L(%CIAD))=%CIAD D ADD(%CIAKEY) G:%CIASCT<100 NR2
  1. I %CIANUM'="" S %CIAKEY=%CIANUM_$C($S(%CIADIR<0:255,1:1)),%CIANUM="" G NR2
  1. I %CIASCT'<100 W:'%CIAHTML *7 S %CIAXALL=0,%CIATRNC=1
  1. G:'%CIASCT!%CIAXALL NXTREF
  1. NR3 I %CIASCT=1,%CIAOPT(0)[1,'%CIATRNC D SLCT(1) Q %CIAIEN
  1. S %CIAKEY=%CIASLT,%CIASLT=1,%CIASMAX=$S(%CIAHTML!%CIARS:99999,1:17-%CIAY)
  1. NR4 W:'%CIAHTML $$XY(0,%CIAY+1),%CIAEOS,!
  1. F %CIAN=%CIAKEY:1:%CIAKEY+%CIASMAX-1 D Q:%CIAN=%CIASCT
  1. .F %CIAZ=0:1:%CIACOL-1 D
  1. ..S %1=IOM/%CIACOL*%CIAZ\1,%CIALAST=%CIAZ*%CIASMAX+%CIAN
  1. ..Q:%CIALAST>%CIASCT
  1. ..W:'%CIAHTML $$XY(%1,$Y),%CIAEOL,%CIALAST,?5
  1. ..D SHOW(^TMP(%CIAPID,%CIALAST),%1+4)
  1. .W:'%CIAQT !
  1. Q:%CIAHTML $S(%CIATRNC:-%CIASCT,1:%CIASCT)
  1. W:%CIALAST<%CIASCT !,%CIASCT-%CIALAST," more choice(s)..."
  1. W:%CIATRNC " (list was truncated)",!
  1. W %CIAEOS_%CIABEL,!!
  1. R "Enter selection: ",%CIASLCT:DTIME
  1. S:'$T %CIASLCT=U
  1. W *13
  1. I %CIAOPT["K",%CIASLCT="" Q -1
  1. I "Nn"[%CIASLCT S %CIAKEY=$S(%CIALAST<%CIASCT:%CIALAST+1,1:1) G NR4
  1. I "Bb"[%CIASLCT S %CIAKEY=$S(%CIAKEY=1:%CIASCT-%CIASMAX+1,%CIAKEY'>%CIASMAX:1,1:%CIAKEY-%CIASMAX) S:%CIAKEY<1 %CIAKEY=1 G NR4
  1. I "?"[%CIASLCT D HELP2 G NR4
  1. I "^^"[%CIASLCT S %CIAD2="",%CIAD1=$S(%CIAOPT(0)["X":%CIASLCT,%CIASLCT="^^":%CIASLCT,1:"") Q ""
  1. NR5 F D Q:%CIASLCT=""
  1. .I %CIAOPT(0)["M" S %CIAD=$P(%CIASLCT,";"),%CIASLCT=$P(%CIASLCT,";",2,999)
  1. .E S %CIAD=%CIASLCT,%CIASLCT=""
  1. .Q:'$L(%CIAD)
  1. .I %CIAD?1.N D SLCT(%CIAD) Q
  1. .I %CIAOPT(0)["M",%CIAD?1.N1"-".N D Q
  1. ..N %1,%2
  1. ..S %1=+%CIAD,%2=+$P(%CIAD,"-",2)
  1. ..S:'%2 %2=%CIASCT
  1. ..S:%1>%2 %CIAD=%1,%1=%2,%2=%CIAD
  1. ..S:%2>%CIASCT %2=%CIASCT
  1. ..F %=%1:1:%2 D SLCT(%)
  1. .I %CIAOPT["X",%CIAOPT'["L" S (%CIASLCT,%CIAD1,%CIAIEN)="" Q
  1. .I $E(%CIAD)="`" D Q
  1. ..S %CIAD=+$E(%CIAD,2,999)
  1. ..I $$VALD(%CIAD) D DISV(%CIAD) S %CIAIEN=%CIAD
  1. .S %CIAD1=%CIAD1_";"_%CIAD
  1. W $$XY(0,%CIAY+1),%CIAEOS,!
  1. Q %CIAIEN
  1. ; Add list selection to output
  1. SLCT(%CIASLCT) ;
  1. I %CIASLCT>0,%CIASLCT'>%CIASCT D
  1. .S %CIAIEN=+^TMP(%CIAPID,+%CIASLCT)
  1. .D DISV(%CIAIEN)
  1. Q
  1. ; Add IEN to output
  1. DISV(%CIAIEN) ;
  1. Q:%CIAIEN=""
  1. I %CIAMUL'="",'$D(@%CIAMUL@(%CIAIEN)) S @%CIAMUL@(%CIAIEN)="" D:'%CIAQT APP(%CIAIEN)
  1. D:%CIAMUL="" APP(%CIAIEN)
  1. Q:%CIAOPT(0)["F"
  1. K:%CIASAME ^DISV(DUZ,%CIADISV)
  1. S %CIASAME=0,^DISV(DUZ,%CIADISV)=%CIAIEN,^(%CIADISV,%CIAIEN)=""
  1. Q
  1. ; Append primary key to key list
  1. APP(%CIAIEN) ;
  1. N %CIAKEY
  1. S %CIAKEY=$S(%CIAIEN=+%CIAIEN:$P($G(@%CIADIC@(%CIAIEN,0)),U),1:%CIAIEN)
  1. S %CIAKEY=$$FMT(%CIAIEN,%CIAKEY)
  1. Q:'$L(%CIAKEY)!($L(%CIAKEY)+$L(%CIAD2)'<250)
  1. S %CIAD2=%CIAD2_$S($L(%CIAD2):";",1:"")_%CIAKEY
  1. I %CIAOPT(0)'["J",%CIAOPT(0)'["M" S %CIAD2=%CIAD2_" "_$$SID(%CIAIEN)
  1. Q
  1. ; Multi-term lookup
  1. MTL N %
  1. S %=$S(%CIADIC[")":$TR(%CIADIC,")",","),1:%CIADIC_"(")_"%CIAXRF)"
  1. S %=$$LKP^CIAUMTL(%,%CIAD,"^TMP(""MTL"",%CIAPID)",%CIAOPT(0)[U)
  1. S:%<0 %CIATRNC=1
  1. D:% ADD(%CIAPID,"^TMP","MTL")
  1. K ^TMP("MTL",%CIAPID)
  1. Q
  1. ; Add key to selection list
  1. ADD(%CIAKEY,%CIAIDX,%CIASUB) ;
  1. N %S
  1. S:'$D(%CIAIDX) %CIAIDX=%CIADIC,%CIASUB=%CIAXRF
  1. F %S=0:0 S %S=$O(@%CIAIDX@(%CIASUB,%CIAKEY,%S)) Q:'%S D
  1. .I %CIAOPT(0)["O",$D(^TMP(%CIAPID,0,%S)) Q
  1. .I $$VALD(%S) D
  1. ..S %CIASCT=%CIASCT+1,^TMP(%CIAPID,%CIASCT)=%S_U_$S(%CIAOPT(0)["W":"",1:%CIAKEY),^(0,%S)=""
  1. ..I %CIAOPT(0)["S",$G(^DISV(DUZ,%CIADISV))=%S S %CIASLT=%CIASCT
  1. Q
  1. ; Check entry against screening criteria
  1. VALD(%S) Q:'$D(@%CIADIC@(%S))!'%S 0
  1. Q:%CIASCN="" 1
  1. N %,%1
  1. S %1=1,@$$TRAP^CIAUOS("V3^CIAULK2")
  1. F %=0:0 S %=$O(@%CIASCN@(%)) Q:'% D Q:%1
  1. .S %1=0,@$$TRAP^CIAUOS("V2^CIAULK2")
  1. .X "S %1="_@%CIASCN@(%)
  1. V2 .Q
  1. Q %1
  1. V3 Q 0
  1. ; Show the specified selection
  1. SHOW(%CIASLCT,%CIACOL1,%CIACOL2) ;
  1. N %S,%Z,%P,%I
  1. S %S=+%CIASLCT,%Z=$G(@%CIADIC@(%S,0)),%P=$$FMT(%S,$S(%CIAOPT["I":$P(%CIASLCT,U,2),1:$P(%Z,U)))
  1. ;S %I=$$SID(%S,$P(%CIASLCT,U,2)),%I=$S(%I="":%P,1:%I)
  1. S %I=$$SID(%S,%P),%I=$S(%I="":%P,1:%I)
  1. I %CIAHTML D Q
  1. .I '%CIAQT W $$MSG^CIAU(%CIAPRMP,"|"),!
  1. .E D DISV(%S)
  1. S %CIACOL1=+$G(%CIACOL1,$X)
  1. I %CIAOPT(0)["Y" S %CIACOL2=+$G(%CIACOL2,IOM\%CIACOL+%CIACOL1-8-$L(%I))
  1. E S %CIACOL2=+$G(%CIACOL2,IOM\%CIACOL\$S(%CIAOPT(0)["D":3,1:2)-3+%CIACOL1)
  1. W $$XY(%CIACOL1,$Y)
  1. I %CIAOPT(0)'["J",%I'=%P W $$TRUNC^CIAU(%P,IOM\%CIACOL-6),?%CIACOL2," "_$$TRUNC^CIAU(%I,IOM-%CIACOL2-2)
  1. E W $$TRUNC^CIAU(%I,IOM\%CIACOL-6)
  1. Q
  1. ; Return external form of result
  1. FMT(%S,%CIAKEY) ;
  1. Q:%CIAKEY="" %CIAKEY
  1. I %CIATRP'="",$D(@%CIATRP@(%CIAKEY)) Q @%CIATRP@(%CIAKEY)
  1. S:%CIAOPT(0)["D" %CIAKEY=$$ENTRY^CIAUDT(%CIAKEY)
  1. I %CIAOPT(0)["Z",%CIASCN'="",$G(@%CIASCN)'="" S @("%CIAKEY="_@%CIASCN)
  1. S:%CIAOPT["J" %CIAKEY=$$SID(%S,%CIAKEY)
  1. Q %CIAKEY
  1. ; Return secondary identifier
  1. SID(%S,%CIAKEY) ;
  1. S %CIAKEY=$G(%CIAKEY)
  1. N %Z
  1. S %Z=$G(@%CIADIC@(%S,0)),@("%Z="_$S(%CIASID<0:$S(%CIAKEY=$$UP^XLFSTR($P(%Z,U)):"""""",1:"%CIAKEY"),%CIASID="":"%CIASID",1:%CIASID))
  1. Q %Z
  1. ; Partial key lookup
  1. PARTIAL(%CIAD,%CIAKEY) ;
  1. N %,%1,%2
  1. S (%(1),%(2))=0,%1(1)=%CIAD,%1(2)=%CIAKEY
  1. F %=1,2 S %1(%)=$TR(%1(%),".,;:?/!-"," ")
  1. P1 S (%2(1),%2(2))=""
  1. F %=1,2 D
  1. .F %(%)=%(%)+1:1:$L(%1(%)," ") S %2(%)=$P(%1(%)," ",%(%)) Q:%2(%)'=""
  1. Q:%2(1)="" 1
  1. Q:%2(1)'=$E(%2(2),1,$L(%2(1))) -(%(1)=1)
  1. G P1
  1. HELP(X) ; Application-specific help
  1. N %
  1. S %=""
  1. F S %=$O(X(%)) Q:%="" D:$Y>20 PAUSE W $G(X(%)),!
  1. Q
  1. ; Generic help
  1. HELP1 N %
  1. W !!
  1. D:%CIAHLP'="" @%CIAHLP
  1. W !,"Enter a blank line for default action.",!
  1. D:$Y>20 PAUSE
  1. W:%CIAOPT'["W" "Enter ?? to see all possible selections.",!
  1. D:$Y>20 PAUSE
  1. W "Enter a space to retrieve previous selection.",!
  1. D:$Y>20 PAUSE
  1. W "Enter a valid identifier for lookup."
  1. W:(%CIAOPT'["*")&(%CIAXRFS[U) " Append a * to include all indices."
  1. W !
  1. I %CIAOPT["M" D
  1. .D:$Y>20 PAUSE
  1. .W "Separate multiple selections by semicolons."
  1. R !!,"Press any key to continue...",*%:DTIME
  1. Q
  1. ; Help at choice prompt
  1. HELP2 N %
  1. W $$XY(0,16),%CIAEOS,!
  1. W $S(%CIAOPT(0)["K":"Enter N for next choices.",1:"Press RETURN for more choices.")
  1. W ?35,"Enter B for previous choices.",!
  1. W "Enter ^ to abort lookup.",?35,"Enter choice number to select.",!
  1. W "Any other entry = new lookup."
  1. W:%CIAOPT(0)["M" ?35,"Separate multiple selections by semicolons."
  1. R !!,"Press any key to continue...",*%:DTIME
  1. Q
  1. PAUSE Q:%CIARS
  1. N %
  1. R !,"Press any key for more...",*%:DTIME
  1. W $$XY(0,%CIAY+2),%CIAEOS
  1. Q
  1. XY(X,Y) ;I %CIARS W:'X *13 S $X=X,$Y=Y Q ""
  1. S:%CIARS Y=$Y
  1. Q $$XY^CIAU(X,Y)