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

CIAULKP.m

Go to the documentation of this file.
  1. CIAULKP ;MSC/IND/DKM - File lookup utility;14-Aug-2006 09:35;DKM
  1. ;;1.2;CIA UTILITIES;;Mar 20, 2007
  1. ;;Copyright 2000-2006, Medsphere Systems Corporation
  1. ;=================================================================
  1. ; Inputs:
  1. ; %CIADIC = Global root or file #
  1. ; %CIAOPT = Options
  1. ; A allow automatic selection of exact match
  1. ; B sound bell with selection prompt
  1. ; C use roll & scroll mode
  1. ; D index is in date/time format
  1. ; E use line editor
  1. ; F forget the entry (i.e., ^DISV not updated)
  1. ; G start with prior entry
  1. ; H HTML-formatted output
  1. ; I show only lookup identifiers
  1. ; J show only secondary identifiers
  1. ; K null entry at select prompt exits
  1. ; L like X, but allows lookup at select prompt
  1. ; M allow multiple selection
  1. ; O show entry only once
  1. ; P partial lookup
  1. ; Q silent lookup
  1. ; R reverse search through indices
  1. ; S start selection list at last selection
  1. ; T forget trapped inputs
  1. ; U force uppercase translation
  1. ; V extended DISV recall (prompt-specific)
  1. ; W use multi-term lookup algorithm
  1. ; X do not prompt for input
  1. ; Y right justify secondary identifiers
  1. ; Z perform special formatting of output
  1. ; 1 automatic selection if one match only
  1. ; 2-9 # of columns for selection display (default=1)
  1. ; * force all indices to be searched
  1. ; ^ allow search to be aborted
  1. ; %CIAPRMP = Prompt (optional)
  1. ; %CIAXRFS = Cross-references to examine (all "B"'s by default)
  1. ; %CIADATA = Data to lookup (optional)
  1. ; %CIASCN = Screening criteria (optional)
  1. ; %CIAMUL = Local variable or global reference to
  1. ; store multiple hits
  1. ; %CIAX = Column position for prompt (optional)
  1. ; %CIAY = Row position for prompt (optional)
  1. ; %CIASID = Piece # of secondary identifier (optional)
  1. ; or executable M code to display same
  1. ; %CIATRP = Special inputs to trap (optional)
  1. ; %CIAHLP = Entry point to invoke help
  1. ; Outputs:
  1. ; Return value = index of selected entry or:
  1. ; -1 for forced exit by ^
  1. ; -2 for forced exit by ^^
  1. ; 0 for null entry
  1. ;=================================================================
  1. ENTRY(%CIADIC,%CIAOPT,%CIAPRMP,%CIAXRFS,%CIADATA,%CIASCN,%CIAMUL,%CIAX,%CIAY,%CIASID,%CIATRP,%CIAHLP) ;
  1. N %,%1,%N,%S,%Z,%CIAPID,%CIAXRF,%CIASCT,%CIAKEY,%CIAKEY1,%CIADISV,%CIASLCT
  1. N %CIAXALL,%CIAXRN,%CIASMAX,%CIATRNC,%CIAD,%CIAD1,%CIAD2,%CIABEL,%CIANUM
  1. N %CIADIR,%CIASLT,%CIACOL,%CIALAST,%CIASAME,%CIAEOS,%CIAEOL,%CIAHTML,%CIARS,%CIAQT
  1. I $$NEWERR^%ZTER N $ET S $ET=""
  1. S (%CIAOPT,%CIAOPT(0))=$$UP^XLFSTR($G(%CIAOPT)),%CIAPID="%CIALKP"_$J
  1. S %CIABEL=$S(%CIAOPT["B":$C(7),1:""),%CIADIR=$S(%CIAOPT["R":-1,1:1)
  1. S %CIASLT=1,%CIACOL=1,%CIAEOS=$C(27,91,74),%CIAEOL=$C(27,91,75),%CIAHTML=0
  1. S %CIAX=$G(%CIAX,0),%CIAY=$G(%CIAY,3),DTIME=$G(DTIME,99999999)
  1. S %CIALAST=0,%CIARS=%CIAOPT["C",%CIAQT=%CIAOPT["Q"
  1. S:%CIARS %CIAEOS="",%CIAY=$Y
  1. S:%CIAQT %CIAOPT=%CIAOPT_"XHM"
  1. S:%CIAOPT["H" (%CIABEL,%CIAEOL,%CIAEOS)="",%CIAOPT=%CIAOPT_"X",%CIAHTML=1
  1. S:%CIAOPT["L" %CIAOPT=%CIAOPT_"X"
  1. S U="^",DUZ=$G(DUZ,0),IO=$G(IO,$I),IOM=$G(IOM,80),%CIAMUL=$G(%CIAMUL),%CIAHLP=$G(%CIAHLP),%CIATRP=$G(%CIATRP),%CIASCN=$G(%CIASCN),%CIASAME=%CIAOPT["M"&(%CIAMUL'="")
  1. F %=2:1:9 S:%CIAOPT[% %CIACOL=%
  1. S:%CIAOPT'["M" %CIAMUL=""
  1. K:%CIAMUL'="" @%CIAMUL
  1. S:%CIADIC=+%CIADIC %CIADIC=$$ROOT^DILFD(%CIADIC)
  1. S:$E(%CIADIC,$L(%CIADIC))="(" %CIADIC=$E(%CIADIC,1,$L(%CIADIC)-1)
  1. S:$E(%CIADIC,$L(%CIADIC))="," %CIADIC=$E(%CIADIC,1,$L(%CIADIC)-1)
  1. I %CIADIC["(",$E(%CIADIC,$L(%CIADIC))'=")" S %CIADIC=%CIADIC_")"
  1. S %CIAPRMP=$G(%CIAPRMP,$S(%CIAOPT["X":"",1:"Enter identifier: "))
  1. S %CIADISV=$S(%CIADIC[")":$TR(%CIADIC,")",","),1:%CIADIC_"(")_$S(%CIAOPT["V":";"_%CIAPRMP,1:"")
  1. S %CIASID=$G(%CIASID),%CIAXRFS=$G(%CIAXRFS),%CIADATA=$G(%CIADATA)
  1. S:%CIASID=+%CIASID %CIASID=$S(%CIASID<0:%CIASID,1:"$P(%Z,U,"_%CIASID_")")
  1. W:'%CIAHTML $$XY(%CIAX,%CIAY),%CIAEOS,!
  1. I %CIAOPT["G",$G(^DISV(DUZ,%CIADISV))'="" D
  1. .S %CIADATA=^(%CIADISV)
  1. .S:+%CIADATA=%CIADATA %CIADATA=$P($G(@%CIADIC@(%CIADATA,0)),U)
  1. I %CIAXRFS="" D
  1. .S (%,%CIAXRFS)="B"
  1. .F S %=$O(@%CIADIC@(%)) Q:$E(%)'="B" S %CIAXRFS=%CIAXRFS_U_%
  1. F %=1:1:$L(%CIAXRFS,U) S %1=$P(%CIAXRFS,U,%) S:%1'="" %CIAXRFS($P(%1,":"))=$P(%1,":",2),$P(%CIAXRFS,U,%)=$P(%1,":")
  1. S (%CIAD1,%CIAD2)=""
  1. D RM(0)
  1. S %CIAIEN=$$INPUT
  1. W:'%CIAHTML $$XY(%CIAX+$L(%CIAPRMP),%CIAY),$$TRUNC^CIAU(%CIAD2,IOM-$X),%CIAEOS
  1. D RM(IOM)
  1. K ^TMP(%CIAPID)
  1. Q %CIAIEN
  1. INPUT() ;
  1. INP K ^TMP(%CIAPID)
  1. D READ
  1. S:%CIAOPT["U" %CIAD=$$UP^XLFSTR(%CIAD)
  1. S @$$TRAP^CIAUOS("ERROR^CIAULKP")
  1. I %CIAD="",%CIATRP'="" S %CIAD=$G(@%CIATRP@(" "))
  1. Q:"^^"[%CIAD -$L(%CIAD)
  1. I "?"[%CIAD D HELP1^CIAULK2 G INP
  1. I %CIAD=" " D SAME G:%CIAD="" INP2
  1. I %CIATRP'="",$D(@%CIATRP@(%CIAD)) D Q %CIAD
  1. .S %CIASAME=1
  1. .D:%CIAOPT'["T" DISV^CIAULK2(%CIAD)
  1. .S %CIAD2=$G(@%CIATRP@(%CIAD))
  1. .S:%CIAD2="" %CIAD2=%CIAD
  1. S:%CIAD="??" %CIAD=""
  1. I $E(%CIAD,$L(%CIAD))="*" S %CIAXALL=1,%CIAD=$E(%CIAD,1,$L(%CIAD)-1)
  1. E S %CIAXALL=%CIAOPT["*"
  1. S %CIAIEN=$$LKP^CIAULK2(%CIAD)
  1. INP2 G INP:%CIAIEN=""!$L(%CIAD1)
  1. Q %CIAIEN
  1. READ S %CIAD=""
  1. F Q:%CIAD'=""!(%CIAD1="") S %CIAD=$P(%CIAD1,";"),%CIAD1=$P(%CIAD1,";",2,999)
  1. Q:$L(%CIAD)
  1. S %CIAD=%CIADATA,%CIADATA=""
  1. W:'%CIAHTML $$XY(0,%CIAY+2),%CIAEOS,$$XY(%CIAX,%CIAY),%CIAPRMP_%CIAEOL
  1. I %CIAOPT["X" S:%CIAOPT["E" %CIAOPT=$TR(%CIAOPT,"X"),%CIADATA=%CIAD Q
  1. I %CIAOPT["E" D
  1. .N %,%1
  1. .S:%CIAD?1"`"1.N %CIAD=+$E(%CIAD,2,99),%CIAD=$$FMT^CIAULK2(%CIAD,$P($G(@%CIADIC@(%CIAD,0)),U))
  1. .S %1=0,%=%CIAX+$L(%CIAPRMP),%=$$ENTRY^CIAUEDT(%CIAD,IOM-%-1,%,%CIAY,"","RHV",,,,,.%1)
  1. .S:%1=3 %=U
  1. .S:%="?" %CIADATA=%CIAD
  1. .S %CIAD=%
  1. E I '$L(%CIAD) R %CIAD:DTIME S:'$T %CIAD=U
  1. I %CIAOPT["M",%CIAD[";" S %CIAD1=%CIAD G READ
  1. Q
  1. SAME S %CIASAME=0,%CIAIEN="",%CIAD="",%CIASCT=0
  1. I %CIAMUL'="" D
  1. .S %=""
  1. .F S %=$O(^DISV(DUZ,%CIADISV,%)) Q:%="" D SM1
  1. E S %=$G(^DISV(DUZ,%CIADISV)) D:%'="" SM1
  1. S:%CIAHTML %CIAIEN=%CIASCT
  1. Q
  1. SM1 I %CIATRP'="",$D(@%CIATRP@(%)) S %CIAIEN=%,%CIAD=%
  1. E I $$VALD^CIAULK2(%) S %CIAIEN=%
  1. I D DISV^CIAULK2(%CIAIEN) S %CIASCT=%CIASCT+1
  1. Q
  1. XY(X,Y) Q $$XY^CIAULK2(.X,.Y)
  1. RM(X) X ^%ZOSF("RM")
  1. Q
  1. ERROR W:'%CIAHTML $$XY(0,%CIAY+1),*7,%CIAEOL,$$EC^%ZOSV
  1. S (%CIADATA,%CIAD1,%CIAD2)=""
  1. G INP