GMPLUTL1 ; SLC/MKB/KER -- PL Utilities (cont) ; 04/15/2002 ;;2.0;Problem List;**3,8,7,9,26**;Aug 25, 1994;Build 1 ; ; External References ; DBIA 446 ^AUTNPOV( ; DBIA 10082 ^ICD9( ; DBIA 1571 ^LEX(757.01 ; DBIA 10040 ^SC( ; DBIA 10060 ^VA(200 ; DBIA 10003 ^%DT ; DBIA 10104 $$UP^XLFSTR ; ; All entry points in this routine expect the ; PL("data item") array from routine ^GMPLUTL. ; ; Entry Expected Variable ; Point From VADPT^GMPLX1 ; AO GMPAGTOR ; IR GMPION ; EC GMPGULF ; HNC GMPHNC ; MST GMPMST ; Q DIAGNOSI ; ICD Diagnosis Pointer S:'$L($G(PL("DIAGNOSIS"))) PL("DIAGNOSIS")=$$NOS^GMPLX Q:$D(^ICD9(+PL("DIAGNOSIS"),0)) S GMPQUIT=1,PLY(0)="Invalid ICD Diagnosis" Q ; LEXICON ; Clinical Lexicon Pointer S:'$L($G(PL("LEXICON"))) PL("LEXICON")=1 Q:$D(^LEX(757.01,+PL("LEXICON"),0)) S GMPQUIT=1,PLY(0)="Invalid Lexicon term" Q DUPLICAT ; Problem Already on the List Q:$P($G(^GMPL(125.99,1,0)),U,6)'=1 S:'$L($G(PL("DIAGNOSIS"))) PL("DIAGNOSIS")=$$NOS^GMPLX I '$D(^AUPNPROB("B",+PL("DIAGNOSIS")))!('$D(^AUPNPROB("AC",GMPDFN))) Q F IFN=0:0 S IFN=$O(^AUPNPROB("AC",GMPDFN,IFN)) Q:IFN'>0 D Q:$D(GMPQUIT) . S (DUPL(1),DUPL(2))=0 . S NODE0=$G(^AUPNPROB(IFN,0)),NODE1=$G(^(1)) Q:$P(NODE1,U,2)="H" . I +PL("DIAGNOSIS")=+NODE0 S DUPL(1)=IFN . S:PL("NARRATIVE")=$$UP^XLFSTR($P(^AUTNPOV($P(NODE0,U,5),0),U)) DUPL(2)=IFN . I DUPL(1)>0&DUPL(2)>0 S GMPQUIT=1,PLY(0)="Duplicate problem" Q ; LOCATION ; Hospital Location (Clinic) Pointer S:'$D(PL("LOCATION")) PL("LOCATION")="" Q:'$L(PL("LOCATION")) I $D(^SC(+PL("LOCATION"),0)),$P(^(0),U,3)="C" Q S GMPQUIT=1,PLY(0)="Invalid hospital location" Q ; PROVIDER ; Responsible Provider S:'$D(PL("PROVIDER")) PL("PROVIDER")="" Q:'$L(PL("PROVIDER")) Q:$D(^VA(200,+PL("PROVIDER"),0)) S GMPQUIT=1,PLY(0)="Invalid provider" Q ; STATUS ; Problem Status S:$G(PL("STATUS"))="" PL("STATUS")="A" I "^A^I^a^i^"[(U_PL("STATUS")_U) S PL("STATUS")=$$UP^XLFSTR(PL("STATUS")) Q S GMPQUIT=1,PLY(0)="Invalid problem status" Q ; ONSET ; Date of Onset N %DT,Y,X S:'$D(PL("ONSET")) PL("ONSET")="" Q:'$L(PL("ONSET")) S %DT="P",%DT(0)="-NOW",X=PL("ONSET") D ^%DT I Y>0 S PL("ONSET")=Y Q S GMPQUIT=1,PLY(0)="Invalid Date of Onset" Q ; RESOLVED ; Date Resolved (Requires STATUS, ONSET) N %DT,Y,X S:'$D(PL("RESOLVED")) PL("RESOLVED")="" Q:'$L(PL("RESOLVED")) S %DT="P",%DT(0)="-NOW",X=PL("RESOLVED") D ^%DT I Y'>0 S GMPQUIT=1,PLY(0)="Invalid Date Resolved" Q I PL("STATUS")="A" S GMPQUIT=1,PLY(0)="Active problems cannot have a Date Resolved" Q I Y0 S GMPQUIT=1,PLY(0)="Invalid Date Recorded" Q I PL("RECORDED")