VistA-FOIAVistA/r/TEXT_INTEGRATION_UTILITIES-.../TIUPXAPM.m

85 lines
2.9 KiB
Mathematica

TIUPXAPM ;SLC/RMO - CPT Modifier API(s) ;03/06/03@1500
;;1.0;TEXT INTEGRATION UTILITIES;**82,161**;Jun 20, 1997
;
;Pass in encounter date for CSV **161**
MOD(CPT,TIUI,TIUVDT) ;Select CPT Modifiers for CPT Code
; Input -- CPT CPT Selection Array
; TIUI Item Number in CPT Selection Array
; TIUVDT Encounter Date
; Output -- CPT CPT Selection Array
N CPTIEN,I,MOD,MODATA,MODCNT
S CPTIEN=+CPT(TIUI)
;
;Check if there are any selectable CPT Modifiers for the CPT Code
;Current date passed to ICPTCOD, changed to encounter date for CSV **161**
I +$$CODM^ICPTCOD(CPTIEN,,"",TIUVDT)'>0 G MODQ
;
;Set CPT Modifier Selection Array for pre-selected CPT Modifiers
S (I,MODCNT)=0
F S I=$O(CPT(TIUI,"MOD",I)) Q:'I D
. S MODCNT=MODCNT+1
. S MOD(+$G(CPT(TIUI,"MOD",MODCNT)))=""
;
;Display pre-selected CPT Modifiers
D DISMOD(.CPT,TIUI,1)
;
;Ask CPT Modifiers
S MODCNT=$S($G(MODCNT):MODCNT,1:0)
;Pass encounter date to ASKMOD for CSV **161**
F Q:'$$ASKMOD(CPTIEN,.MOD,MODCNT,.MODATA,TIUVDT) D
. S MOD(+MODATA)=""
. S MODCNT=MODCNT+1
. S CPT(TIUI,"MOD",MODCNT)=MODATA
. S MODATA=""
MODQ Q
;
;Pass in encounter date for CSV **161**
ASKMOD(CPTIEN,MOD,MODCNT,MODATA,TIUVDT) ;Ask CPT Modifier
; Input -- CPTIEN CPT file (#81) IEN
; MOD CPT Modifier Selection Array
; MODCNT Number of Modifiers Selected
; TIUVDT Encounter Date
; Output -- 1=Successful and 0=Failure
; MODATA Modifier Data from Modifier file (#81.3)
; 1st Piece=IEN
; 2nd Piece=Modifier field (#.01)
; 3rd Piece=Name field (#.02)
N DIR,DTOUT,DUOUT,Y
S DIR(0)="PAO^81.3:AEMQZ^K:'$$CHKMOD^TIUPXAPM(.MOD,+Y) X"
S DIR("A")="Select "_$S($G(MODCNT):"another ",1:"")_"CPT MODIFIER: "
;Pass encounter date to ICPTMOD for CSV **161**
S DIR("S")="I +$$MODP^ICPTMOD(CPTIEN,+Y,""I"",TIUVDT)>0"
D ^DIR
I Y>0 S MODATA=+Y_U_$P(Y(0),U,1,2)
Q $S($G(MODATA)="":0,1:1)
;
CHKMOD(MOD,MODIEN) ;Check Selected CPT Modifier
; Input -- MOD CPT Modifier Selection Array
; MODIEN Modifier file (#81.3) IEN
; Output -- 1=Successful and 0=Failure
N Y
S Y=1
;Check if CPT Modifier has already been selected
I $D(MOD(MODIEN)) D EN^DDIOL("This CPT Modifier has already been selected.","","!?5") S Y=0
Q +$G(Y)
;
DISMOD(CPT,TIUI,TIUSELF) ;Display Selected CPT Modifiers
; Input -- CPT CPT Selection Array
; TIUI Item Number in CPT Selection Array
; TIUSELF Selection Process Flag (Optional)
; 1=Selection Process
; Output -- None
N CAP,MODATA,MODCNT,TC
;
;Set caption and format parameter
I $G(TIUSELF) D
. S CAP="Current CPT Modifiers:",TC=0
ELSE D
. S CAP="CPT Modifier(s):",TC=8
S MODCNT=0
F S MODCNT=$O(CPT(TIUI,"MOD",MODCNT)) Q:'MODCNT D
. S MODATA=$G(CPT(TIUI,"MOD",MODCNT))
. W:MODCNT=1 !,?TC,CAP
. W !?12,"-",$P(MODATA,U,2),?19,$P(MODATA,U,3)
Q