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

BJPNCPIP.m

Go to the documentation of this file.
  1. BJPNCPIP ;GDIT/HS/BEE-Prenatal Care Module Problem Handling Calls ; 08 May 2012 12:00 PM
  1. ;;2.0;PRENATAL CARE MODULE;**7,8**;Feb 24, 2015;Build 25
  1. ;
  1. Q
  1. ;
  1. CDEL(DATA,DESCID,DFN) ;EP - BJPN CAN DELETE
  1. ;
  1. ;Determine whether problem can be deleted from the PIP/IPL
  1. ;
  1. NEW UID,II,CONCID,PRBIEN,PIPIEN,CDEL,PSTATUS,TMP
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNCPIP",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BJPNCPIP D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. S @DATA@(II)="T00001CAN_DELETE^T00001PIP_STATUS"_$C(30)
  1. ;
  1. ;Input validation
  1. I $G(DESCID)="" S II=II+1,@DATA@(II)="-1^MISSING DESCID"_$C(30) G XCDEL
  1. I $G(DFN)="" S II=II+1,@DATA@(II)="-1^MISSING DFN"_$C(30) G XCDEL
  1. ;
  1. ;Get the Concept ID
  1. S CONCID=$P($$DESC^BSTSAPI(DESCID_"^^1"),U) I CONCID="" S II=II+1,@DATA@(II)="-1^COULD NOT FIND CONCEPT ID"_$C(30) G XDEL
  1. ;
  1. ;Locate the PIP entry
  1. S (PIPIEN,PRBIEN,PSTATUS)=""
  1. F S PRBIEN=$O(^BJPNPL("F",DFN,PRBIEN)) Q:PRBIEN="" D Q:PIPIEN
  1. . NEW BPIEN,IPLCNC,DEL
  1. . ;
  1. . ;Skip deletes
  1. . S DEL=$$GET1^DIQ(9000011,PRBIEN_",",2.02,"I") I DEL]"" Q ;IPL Delete
  1. . ;
  1. . ;Get the Concept Id of the IPL entry - Look for a match
  1. . S IPLCNC=$$GET1^DIQ(9000011,PRBIEN_",",80001,"I") Q:IPLCNC=""
  1. . I IPLCNC'=CONCID Q
  1. . ;
  1. . ;Verify the PIPIEN is correct
  1. . S BPIEN="" F S BPIEN=$O(^BJPNPL("F",DFN,PRBIEN,BPIEN)) Q:BPIEN="" D Q:PIPIEN
  1. .. NEW DEL
  1. .. ;
  1. .. ;Skip deletes
  1. .. S DEL=$$GET1^DIQ(90680.01,BPIEN_",",2.01,"I") I DEL]"" Q
  1. .. ;
  1. .. ;Set the PIPIEN
  1. .. S PIPIEN=BPIEN
  1. .. S PSTATUS=$$GET1^DIQ(90680.01,BPIEN_",",.08,"I")
  1. ;
  1. ;Quit if no PIP entry found
  1. I ($G(PIPIEN)="")!($G(PRBIEN)="") S II=II+1,@DATA@(II)="-1^COULD NOT FIND PROBLEM ON PIP"_$C(30) G XCDEL
  1. ;
  1. ;Pull the IPL information - Determine if problem can be deleted
  1. D COMP^BJPNUTIL(DFN,UID,"",PRBIEN)
  1. S TMP=$NA(^TMP("BJPNIPL",UID)) ;Define compiled data reference
  1. ;
  1. ;Reset Can Delete flag
  1. D
  1. . NEW GGO,CGO,TGO,VGO,CPGSTS
  1. . ;Reset Can Delete flag
  1. . S CDEL="Y"
  1. . ;
  1. . ;Get Goal notes
  1. . S GGO="" F S GGO=$O(@TMP@("G",PRBIEN,GGO)) Q:GGO="" D Q:CDEL=""
  1. .. ;
  1. .. ;Look for inactive or active goals
  1. .. S CPGSTS=$P($G(@TMP@("G",PRBIEN,GGO,0)),U,6)
  1. .. I (CPGSTS="I")!(CPGSTS="A") S CDEL="" Q
  1. . ;
  1. . ;Get Care Plans
  1. . S CGO="" F S CGO=$O(@TMP@("C",PRBIEN,CGO)) Q:CGO="" D Q:CDEL=""
  1. .. ;
  1. .. ;Look for inactive or active Care Plans
  1. .. S CPGSTS=$P($G(@TMP@("C",PRBIEN,CGO,0)),U,6)
  1. .. I (CPGSTS="I")!(CPGSTS="A") S CDEL="" Q
  1. . ;
  1. . ;Look for Treatment/Regimen
  1. . S TGO=$O(@TMP@("T",PRBIEN,"")) I TGO]"" S CDEL=""
  1. . ;
  1. . ;Look for V Visit Instruction
  1. . S VGO=$O(@TMP@("I",PRBIEN,"")) I VGO]"" S CDEL=""
  1. . ;
  1. . ;Ever a POV - needed for deleting permission
  1. . I $O(^AUPNPROB(PRBIEN,14,"B",""))]"" S CDEL=""
  1. . I $O(^AUPNPROB(PRBIEN,15,"B",""))]"" S CDEL=""
  1. ;
  1. ;Quit if not allowed to delete
  1. S II=II+1,@DATA@(II)=CDEL_U_PSTATUS_$C(30)
  1. ;
  1. XCDEL S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. CPSTS(DATA,DESCID,DFN) ;EP - BJPN PICK LIST TOGGLE STATUS
  1. ;
  1. ;Toggle a problem status from the pick list
  1. ;
  1. NEW UID,II,CONCID,PRBIEN,PIPIEN,STS,%,NOW,NSTS,BJPNUPD,IPLUPD,DIC,DA,DLAYGO,X,Y,IENS,PIP,ERROR
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNCPIP",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BJPNCPIP D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. ;Define Header
  1. S @DATA@(II)="T00005RESULT^T00150ERROR_MESSAGE"_$C(30)
  1. ;
  1. ;Input validation
  1. I $G(DESCID)="" S II=II+1,@DATA@(II)="-1^MISSING DESCID"_$C(30) G XCPSTS
  1. I $G(DFN)="" S II=II+1,@DATA@(II)="-1^MISSING DFN"_$C(30) G XCPSTS
  1. ;
  1. ;Get the Concept ID
  1. S CONCID=$P($$DESC^BSTSAPI(DESCID_"^^1"),U) I CONCID="" S II=II+1,@DATA@(II)="-1^COULD NOT FIND CONCEPT ID"_$C(30) G XCPSTS
  1. ;
  1. ;Locate the PIP entry
  1. S (PIPIEN,PRBIEN)=""
  1. F S PRBIEN=$O(^BJPNPL("F",DFN,PRBIEN)) Q:PRBIEN="" D Q:PIPIEN
  1. . NEW BPIEN,IPLCNC,DEL
  1. . ;
  1. . ;Skip deletes
  1. . S DEL=$$GET1^DIQ(9000011,PRBIEN_",",2.02,"I") I DEL]"" Q ;IPL Delete
  1. . ;
  1. . ;Get the Concept Id of the IPL entry - Look for a match
  1. . S IPLCNC=$$GET1^DIQ(9000011,PRBIEN_",",80001,"I") Q:IPLCNC=""
  1. . I IPLCNC'=CONCID Q
  1. . ;
  1. . ;Verify the PIPIEN is correct
  1. . S BPIEN="" F S BPIEN=$O(^BJPNPL("F",DFN,PRBIEN,BPIEN)) Q:BPIEN="" D Q:PIPIEN
  1. .. NEW DEL
  1. .. ;
  1. .. ;Skip deletes
  1. .. S DEL=$$GET1^DIQ(90680.01,BPIEN_",",2.01,"I") I DEL]"" Q
  1. .. ;
  1. .. ;Set the PIPIEN
  1. .. S PIPIEN=BPIEN
  1. ;
  1. ;Quit if no PIP entry found
  1. I ($G(PIPIEN)="")!($G(PRBIEN)="") S II=II+1,@DATA@(II)="-1^COULD NOT FIND PROBLEM ON PIP"_$C(30) G XCPSTS
  1. ;
  1. D NOW^%DTC S NOW=%
  1. ;
  1. ;Get the problem (IPL) IEN
  1. S PRBIEN=$$GET1^DIQ(90680.01,PIPIEN_",",.1,"I") I PRBIEN="" S II=II+1,@DATA@(II)="-1^INVALID IPL POINTER"_$C(30) G XCPSTS
  1. ;
  1. ;Get the current status
  1. S STS=$$GET1^DIQ(90680.01,PIPIEN_",",.08,"I")
  1. I STS'="A",STS'="I" S STS="I" ;Default to "A" if null
  1. ;
  1. ;Define new values
  1. I STS="A" S NSTS="I",PIP="@"
  1. I STS="I" S NSTS="A",PIP=1
  1. S BJPNUPD(90680.01,PIPIEN_",",.08)=NSTS
  1. S BJPNUPD(9000011,PRBIEN_",",.19)=PIP
  1. S IPLUPD(9000011,PRBIEN_",",.03)=NOW
  1. S IPLUPD(9000011,PRBIEN_",",.14)=DUZ
  1. ;
  1. ;Add the IPL PIP flag
  1. S DIC="^BJPNPL("_PIPIEN_",5,"
  1. S DA(1)=PIPIEN
  1. S DLAYGO="90680.015",DIC("P")=$P(^DD(90680.01,5,0),U,2),DIC(0)="LOX"
  1. S X=NOW
  1. K DO,DD D FILE^DICN
  1. I +Y=-1 S II=II+1,@DATA@(II)="-1^Could not add PIP column history" G XCPSTS
  1. ;
  1. ;Add the User/PIP value
  1. S DA(1)=PIPIEN,DA=+Y,IENS=$$IENS^DILF(.DA)
  1. S BJPNUPD(90680.015,IENS,".02")=$S(PIP=1:1,1:0)
  1. S BJPNUPD(90680.015,IENS,".03")=DUZ
  1. ;
  1. D FILE^DIE("","BJPNUPD","ERROR")
  1. I $D(ERROR) S II=II+1,@DATA@(II)="-1^Status PIP update change failed"_$C(30) G XCPSTS
  1. D FILE^DIE("","IPLUPD","ERROR")
  1. I $D(ERROR) S II=II+1,@DATA@(II)="-1^Status IPL update change failed"_$C(30) G XCPSTS
  1. ;
  1. ;Broadcast update
  1. ;BJPN*2.0*7;Removed PPL
  1. ;D FIREEV^BJPNPDET("","PCC."_DFN_".PPL")
  1. D FIREEV^BJPNPDET("","PCC."_DFN_".PIP")
  1. ;
  1. S II=II+1,@DATA@(II)="1^"_$C(30)
  1. ;
  1. XCPSTS S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. DEL(DATA,VIEN,PIPIEN,DCODE,DRSN,DELIPL) ;BJPN DELETE PIP PROBLEM
  1. ;
  1. ;Delete prenatal problem from PIP and IPL
  1. ;
  1. NEW UID,II,%,NOW,PRUPD,ERROR,RSLT,DFN,PROC,DTTM,VFL,VPUPD,PRBIEN,DIC,DA,X,Y,DLAYGO
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNCPIP",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BJPNCPIP D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. S @DATA@(II)="T00010RESULT^T00150ERROR_MESSAGE"_$C(30)
  1. ;
  1. ;Input validation
  1. I $G(VIEN)="" S II=II+1,@DATA@(II)="-1^MISSING VISIT IEN"_$C(30) G XDEL
  1. I $G(PIPIEN)="" S II=II+1,@DATA@(II)="-1^MISSING PIPIEN"_$C(30) G XDEL
  1. S DELIPL=$G(DELIPL)
  1. I $$GET1^DIQ(90680.01,PIPIEN_",",".01","I")="" S II=II+1,@DATA@(II)="-1^INVALID PIPIEN"_$C(30) G XDEL
  1. I $$GET1^DIQ(90680.01,PIPIEN_",",2.01,"I")]"" S II=II+1,@DATA@(II)="-1^PROBLEM ALREADY DELETED"_$C(30) G XDEL
  1. S DCODE=$G(DCODE,""),DRSN=$G(DRSN,"")
  1. ;
  1. D NOW^%DTC S NOW=%
  1. ;
  1. ;Retrieve DFN
  1. S DFN=$$GET1^DIQ(9000010,VIEN_",",".05","I") I DFN="" S II=II+1,@DATA@(II)="-1^INVALID VISIT"_$C(30) G XDEL
  1. ;
  1. ;Get the problem (IPL) IEN
  1. S PRBIEN=$$GET1^DIQ(90680.01,PIPIEN_",",.1,"I") I PRBIEN="" S II=II+1,@DATA@(II)="-1^INVALID IPL POINTER"_$C(30) G XDEL
  1. ;
  1. ;Mark as deleted - PIP
  1. S RSLT="1"
  1. S PRUPD(90680.01,PIPIEN_",",2.01)=DUZ
  1. S PRUPD(90680.01,PIPIEN_",",2.02)=NOW
  1. S PRUPD(90680.01,PIPIEN_",",2.03)=DCODE
  1. S PRUPD(90680.01,PIPIEN_",",2.04)=DRSN
  1. S PRUPD(9000011,PRBIEN_",",.19)="@" ;Remove from PIP column in IPL
  1. I $D(PRUPD) D FILE^DIE("","PRUPD","ERROR")
  1. I $D(ERROR) S RSLT="-1^PIP DELETE FAILED",II=II+1,@DATA@(II)=RSLT_$C(30) G XDEL
  1. ;
  1. ;
  1. ;Add the IPL PIP flag history
  1. S DIC="^BJPNPL("_PIPIEN_",5,"
  1. S DA(1)=PIPIEN
  1. S DLAYGO="90680.015",DIC("P")=$P(^DD(90680.01,5,0),U,2),DIC(0)="LOX"
  1. S X=NOW
  1. K DO,DD D FILE^DICN
  1. I +Y=-1 S II=II+1,@DATA@(II)="-1^Could not add PIP column history" G XDEL
  1. ;
  1. ;Mark as deleted - IPL
  1. S RSLT="1"
  1. I $G(DELIPL)=1 D I RSLT'=1 G XDEL
  1. . NEW IPLUPD
  1. . S IPLUPD(9000011,PRBIEN_",",.12)="D"
  1. . S IPLUPD(9000011,PRBIEN_",",2.01)=DUZ
  1. . S IPLUPD(9000011,PRBIEN_",",2.02)=NOW
  1. . S IPLUPD(9000011,PRBIEN_",",2.03)=DCODE
  1. . S IPLUPD(9000011,PRBIEN_",",2.04)=DRSN
  1. . S IPLUPD(9000011,PRBIEN_",",.03)=NOW
  1. . S IPLUPD(9000011,PRBIEN_",",.14)=DUZ
  1. . D FILE^DIE("","IPLUPD","ERROR")
  1. . I $D(ERROR) S RSLT="-1^IPL DELETE FAILED",II=II+1,@DATA@(II)=RSLT_$C(30)
  1. ;
  1. S II=II+1,@DATA@(II)="1^"_$C(30)
  1. ;
  1. ;Broadcast update
  1. ;BJPN*2.0*7;Remove PPL alert
  1. ;D FIREEV^BJPNPDET("","PCC."_DFN_".PPL")
  1. D FIREEV^BJPNPDET("","PCC."_DFN_".PIP")
  1. ;
  1. XDEL S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. STS(DATA,PIPIEN,VIEN) ;EP - BJPN TOGGLE STATUS
  1. ;
  1. ;Toggle the PIP status of a problem
  1. ;
  1. NEW UID,II,STS,RESULT,PRBIEN,NSTS,PIP,BJPNUPD,ERROR,DFN,IPLUPD
  1. NEW DIC,DA,DLAYGO,X,Y,IENS
  1. ;
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNCPIP",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BJPNCPIP D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. ;Define Header
  1. S @DATA@(II)="T00005RESULT^T00150ERROR_MESSAGE"_$C(30)
  1. ;
  1. ;Input validation
  1. I $G(VIEN)="" S II=II+1,@DATA@(II)="-1^MISSING VISIT IEN"_$C(30) G XSTS
  1. I $G(PIPIEN)="" S II=II+1,@DATA@(II)="-1^MISSING PIPIEN"_$C(30) G XSTS
  1. ;
  1. D NOW^%DTC S NOW=%
  1. ;
  1. ;Get the problem (IPL) IEN
  1. S PRBIEN=$$GET1^DIQ(90680.01,PIPIEN_",",.1,"I") I PRBIEN="" S II=II+1,@DATA@(II)="-1^INVALID IPL POINTER"_$C(30) G XSTS
  1. S DFN=$$GET1^DIQ(9000011,PRBIEN_",",.02,"I")
  1. ;
  1. ;Get the current status
  1. S STS=$$GET1^DIQ(90680.01,PIPIEN_",",.08,"I")
  1. I STS'="A",STS'="I" S STS="I" ;Default to "A" if null
  1. ;
  1. ;Define new values
  1. I STS="A" S NSTS="I",PIP="@"
  1. I STS="I" S NSTS="A",PIP=1
  1. S BJPNUPD(90680.01,PIPIEN_",",.08)=NSTS
  1. S BJPNUPD(9000011,PRBIEN_",",.19)=PIP
  1. S IPLUPD(9000011,PRBIEN_",",.03)=NOW
  1. S IPLUPD(9000011,PRBIEN_",",.14)=DUZ
  1. ;
  1. ;Add the IPL PIP flag
  1. S DIC="^BJPNPL("_PIPIEN_",5,"
  1. S DA(1)=PIPIEN
  1. S DLAYGO="90680.015",DIC("P")=$P(^DD(90680.01,5,0),U,2),DIC(0)="LOX"
  1. S X=NOW
  1. K DO,DD D FILE^DICN
  1. I +Y=-1 S II=II+1,@DATA@(II)="-1^Could not add PIP column history" G XSTS
  1. ;
  1. ;Add the User/PIP value
  1. S DA(1)=PIPIEN,DA=+Y,IENS=$$IENS^DILF(.DA)
  1. S BJPNUPD(90680.015,IENS,".02")=$S(PIP=1:1,1:0)
  1. S BJPNUPD(90680.015,IENS,".03")=DUZ
  1. ;
  1. D FILE^DIE("","BJPNUPD","ERROR")
  1. I $D(ERROR) S II=II+1,@DATA@(II)="-1^Status PIP update change failed"_$C(30) G XSTS
  1. D FILE^DIE("","IPLUPD","ERROR")
  1. I $D(ERROR) S II=II+1,@DATA@(II)="-1^Status IPL update change failed"_$C(30) G XSTS
  1. ;
  1. ;Broadcast update
  1. ;BJPN*2.0*7;Remove PPL alert since it has been removed
  1. ;D FIREEV^BJPNPDET("","REFRESH")
  1. ;D FIREEV^BJPNPDET("","PCC."_DFN_".PPL")
  1. D FIREEV^BJPNPDET("","PCC."_DFN_".PIP")
  1. ;
  1. S II=II+1,@DATA@(II)="1^"_$C(30)
  1. ;
  1. XSTS S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. SCO(DATA,PIPIEN,VIEN) ;EP - BJPN TOGGLE SCOPE
  1. ;
  1. ;Toggle the PIP scope of a problem
  1. ;
  1. NEW UID,II,SCO,RESULT,PRBIEN,NSCO,BJPNUPD,ERROR,DFN,IPLUPD
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNCPIP",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BJPNCPIP D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. ;Define Header
  1. S @DATA@(II)="T00005RESULT^T00150ERROR_MESSAGE"_$C(30)
  1. ;
  1. ;Input validation
  1. I $G(VIEN)="" S II=II+1,@DATA@(II)="-1^MISSING VISIT IEN"_$C(30) G XSCO
  1. I $G(PIPIEN)="" S II=II+1,@DATA@(II)="-1^MISSING PIPIEN"_$C(30) G XSCO
  1. ;
  1. D NOW^%DTC S NOW=%
  1. ;
  1. ;Get the problem (IPL) IEN
  1. S PRBIEN=$$GET1^DIQ(90680.01,PIPIEN_",",.1,"I") I PRBIEN="" S II=II+1,@DATA@(II)="-1^INVALID IPL POINTER"_$C(30) G XSCO
  1. S DFN=$$GET1^DIQ(9000011,PRBIEN_",",.02,"I")
  1. ;
  1. ;Get the current scope
  1. S SCO=$$GET1^DIQ(90680.01,PIPIEN_",",.07,"I")
  1. I SCO'="A",SCO'="C" S SCO="A"
  1. ;
  1. ;Define new values
  1. I SCO="A" S NSCO="C"
  1. I SCO="C" S NSCO="A"
  1. S BJPNUPD(90680.01,PIPIEN_",",.07)=NSCO
  1. S IPLUPD(9000011,PRBIEN_",",.03)=NOW
  1. S IPLUPD(9000011,PRBIEN_",",.14)=DUZ
  1. D FILE^DIE("","BJPNUPD","ERROR")
  1. I $D(ERROR) S II=II+1,@DATA@(II)="-1^Scope change failed"_$C(30) G XSCO
  1. D FILE^DIE("","IPLUPD","ERROR")
  1. I $D(ERROR) S II=II+1,@DATA@(II)="-1^Scope change failed"_$C(30) G XSCO
  1. ;
  1. ;Broadcast update
  1. ;D FIREEV^BJPNPDET("","REFRESH")
  1. ;BJPN*2.0*7;Remove refreshes as being handled by GUI
  1. ;D FIREEV^BJPNPDET("","PCC."_DFN_".PPL")
  1. ;D FIREEV^BJPNPDET("","PCC."_DFN_".PIP")
  1. ;
  1. S II=II+1,@DATA@(II)="1^"_$C(30)
  1. ;
  1. XSCO S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. NEW Y,ERRDTM
  1. S Y=$$NOW^XLFDT() X ^DD("DD") S ERRDTM=Y
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q