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

PXAPIOE.m

Go to the documentation of this file.
PXAPIOE ;ALB/MJK,ESW - Supported References for ACRP ; 12/5/02 11:27am
 ;;1.0;PCE PATIENT CARE ENCOUNTER;**39,73,108**;Aug 12, 1996
 ;
 ;
CPT(PXVIEN,PXERR) ; -- at least one cpt for visit??
 ;
 N PXOK
 S PXOK=0
 ;
 ; -- do validation checks
 IF '$$VALVST(PXVIEN,$G(PXERR)) G CPTQ
 ;
 S PXOK=($O(^AUPNVCPT("AD",PXVIEN,0))>0)
CPTQ Q PXOK
 ;
 ;
GETCPT(PXVIEN,PXCPT,PXERR) ; -- get cpt's for visit
 ;
 ; -- do validation checks
 IF '$$VALVST(PXVIEN,$G(PXERR)) G GETCPTQ
 ;
 N I,CNT S (I,CNT)=0 F  S I=$O(^AUPNVCPT("AD",PXVIEN,I)) Q:'I  D
 . IF $D(^AUPNVCPT(I,0)) S @PXCPT@(I)=^(0),CNT=CNT+1
 S @PXCPT=CNT
GETCPTQ Q
 ;
CPTARR(PXVIEN,PXCPT,PXERR) ;+API to return all CPT data for a visit.
 N IEN,CNT
 S (IEN,CNT)=0
 Q:'$$VALVST(PXVIEN,$G(PXERR))
 F  S IEN=$O(^AUPNVCPT("AD",PXVIEN,IEN)) Q:'IEN  D
 . Q:'$D(^AUPNVCPT(IEN))
 . M @PXCPT@(IEN)=^AUPNVCPT(IEN)
 . S CNT=CNT+1
 S @PXCPT=CNT
 Q
 ;
DX(PXVIEN,PXERR) ; -- at least one dx for visit??
 ;
 N PXOK
 S PXOK=0
 ;
 ; -- do validation checks
 IF '$$VALVST(PXVIEN,$G(PXERR)) G DXQ
 ;
 S PXOK=($O(^AUPNVPOV("AD",PXVIEN,0))>0)
DXQ Q PXOK
 ;
 ;
GETDX(PXVIEN,PXDX,PXERR) ; -- get dx's for visit
 ;
 ; -- do validation checks
 IF '$$VALVST(PXVIEN,$G(PXERR)) G GETDXQ
 ;
 N I,CNT S (I,CNT)=0 F  S I=$O(^AUPNVPOV("AD",PXVIEN,I)) Q:'I  D
 . IF $D(^AUPNVPOV(I,0)) S @PXDX@(I)=^(0),CNT=CNT+1
 S @PXDX=CNT
GETDXQ Q
 ;
 ;
PRV(PXVIEN,PXERR) ; -- at least one provider for visit?
 ;
 N PXOK
 S PXOK=0
 ;
 ; -- do validation checks
 IF '$$VALVST(PXVIEN,$G(PXERR)) G PRVQ
 S PXOK=($O(^AUPNVPRV("AD",PXVIEN,0))>0)
PRVQ Q PXOK
 ;
 ;
GETPRV(PXVIEN,PXPRV,PXERR) ; -- get provider's for visit;108
 ;
 ; -- do validation checks
 IF '$$VALVST(PXVIEN,$G(PXERR)) G GETPRVQ
 ;
 ;PX*1*108;look for duplicates to exclude them
 N I,CNT,PR,PRS,PS,PP,PRV
 S (I,CNT)=0 F  S I=$O(^AUPNVPRV("AD",PXVIEN,I)) Q:'I  D
 .IF $D(^AUPNVPRV(I,0)) D
 ..S @PXPRV@(I)=^(0),PR=+@PXPRV@(I),PS=$P(@PXPRV@(I),U,4)
 ..IF PS="P" D
 ...I 'CNT S PRV=PR,CNT=1 Q
 ...I PR=PRV K @PXPRV@(I)
 ..I PS="S" S PRS(PR,I)=""
 S PR="" F  S PR=$O(PRS(PR)) Q:PR=""  S I="" D
 .F PP=1:1 S I=$O(PRS(PR,I)) Q:I=""  D
 ..I PR=$G(PRV) K @PXPRV@(I) Q
 ..I PP>1 K @PXPRV@(I)
 ..E  S CNT=CNT+1
 S @PXPRV=CNT
GETPRVQ Q
 ;
 ;
VALVST(PXVIEN,PXERR) ; -- validate visit ien input
 ;
 ; -- do checks
 IF PXVIEN,$D(^AUPNVSIT(PXVIEN,0)) Q 1
 ;
 ; -- build error msg
 N PXIN,PXOUT
 S PXIN("ID")=PXVIEN
 S PXOUT("ID")=PXVIEN
 D BLD^DIALOG(1509000.001,.PXIN,.PXOUT,$G(PXERR),"F")
 Q 0
 ;
 ;
POST ; -- post error action logic
 ;ZW DO
 ;ZW DIPI
 ;ZW DIPE
 Q
 ;
 ;
PDX(VSTPOV,RANK) ; -- set primary dx for V POV entry
 ;
 N VSTRT,VSTSEQ
 N VSTIEN,X
 ;
 ; -- set up structures
 D INIT(.VSTRT,.VSTSEQ)
 ;
 ; -- set up visit
 S X=$G(^AUPNVPOV(VSTPOV,0))
 S VSTIEN=+$P(X,U,3)
 D VNODES(VSTIEN,VSTRT,VSTSEQ)
 ;
 ; -- set up dx
 D DXNODES(VSTPOV,VSTRT,VSTSEQ)
 S $P(@VSTRT@("POV",1,0,"AFTER"),U,12)=RANK
 ;
 ; -- file change and kill
 D FINAL(VSTRT)
 Q
 ;
 ;
PCLASS(VSTPRV) ; -- set provider class for V PRV entry
 ;
 N VSTRT,VSTSEQ
 N VSTIEN,X
 ;
 ; -- set up structures
 D INIT(.VSTRT,.VSTSEQ)
 ;
 ; -- set up visit
 S X=$G(^AUPNVPRV(VSTPRV,0))
 S VSTIEN=+$P(X,U,3)
 D VNODES(VSTIEN,VSTRT,VSTSEQ)
 ;
 ; -- set up provider ; pxkmain will automatically set class
 D PRVNODES(VSTPRV,VSTRT,VSTSEQ)
 ;
 ; -- file change and kill
 D FINAL(VSTRT)
 Q
 ;
 ;
INIT(VSTRT,VSTSEQ) ; -- set up structures
 S VSTRT=$NA(^TMP("PXK",$J))
 S VSTSEQ=1
 K @VSTRT
 S @VSTRT@("SOR")=$O(^PX(839.7,"B","PIMS",0))
 Q
 ;
 ;
FINAL(VSTRT) ; -- file data and clean up
 N PXKNOEVT
 S PXKNOEVT=1
 D EN1^PXKMAIN
 K @VSTRT
 Q
 ;
 ;
VNODES(VSTIEN,VSTRT,VSTSEQ) ; -- get visit nodes
 N NODE,X
 S @VSTRT@("VST",VSTSEQ,"IEN")=VSTIEN
 F NODE=0,21,150,800,811,812 D
 . S X=$G(^AUPNVSIT(VSTIEN,NODE))
 . S @VSTRT@("VST",VSTSEQ,NODE,"BEFORE")=X
 . S @VSTRT@("VST",VSTSEQ,NODE,"AFTER")=X
 Q
 ;
 ;
DXNODES(VSTPOV,VSTRT,VSTSEQ) ; -- get dx nodes
 N NODE,X
 S @VSTRT@("POV",VSTSEQ,"IEN")=VSTPOV
 F NODE=0,12,812 D
 . S X=$G(^AUPNVPOV(VSTPOV,NODE))
 . S @VSTRT@("POV",VSTSEQ,NODE,"BEFORE")=X
 . S @VSTRT@("POV",VSTSEQ,NODE,"AFTER")=X
 Q
 ;
 ;
PRVNODES(VSTPRV,VSTRT,VSTSEQ) ; -- get provider nodes
 N NODE,X
 S @VSTRT@("PRV",VSTSEQ,"IEN")=VSTPRV
 F NODE=0,12,812 D
 . S X=$G(^AUPNVPRV(VSTPRV,NODE))
 . S @VSTRT@("PRV",VSTSEQ,NODE,"BEFORE")=X
 . S @VSTRT@("PRV",VSTSEQ,NODE,"AFTER")=X
 Q
 ;