| 1 | RMPOLG ;HIN-CIOFO/RVD - HOME OXYGEN LETTERS (MANAGE LETTER) ;7/24/98 | 
|---|
| 2 | ;;3.0;PROSTHETICS;**29,46**;Feb 09, 1996 | 
|---|
| 3 | EN ; -- main entry point for manage letter list. | 
|---|
| 4 | ; Input: | 
|---|
| 5 | ;   RMPOLCD              - Selected Home Oxygen Letter code | 
|---|
| 6 | ; Called by: | 
|---|
| 7 | ;   RMPOLZ               - H.O. Letter Control module | 
|---|
| 8 | D EN^VALM("RMPO MANAGE LETTER") | 
|---|
| 9 | Q | 
|---|
| 10 | ; | 
|---|
| 11 | HDR ; -- header code | 
|---|
| 12 | S VALMHDR(1)=$$CNTR^RMPOLY(" ",$$EXTERNAL^DILFD(669.965,1,"",RMPOLCD),80) | 
|---|
| 13 | S VALMHDR(2)=$$CNTR^RMPOLY(" ","HOME OXYGEN PATIENT LETTER LIST",80) | 
|---|
| 14 | Q | 
|---|
| 15 | ; | 
|---|
| 16 | INIT ; -- init variables and list array | 
|---|
| 17 | N RMPODFN,REC,RMPOITEM,Y,X,SP | 
|---|
| 18 | ; | 
|---|
| 19 | ; for each entry in list for the selected letter type display details | 
|---|
| 20 | S RMPONAM="",VALMCNT=0,$P(SP," ",80)=" " | 
|---|
| 21 | F  S RMPONAM=$O(^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM)) Q:RMPONAM=""  D | 
|---|
| 22 | . S RMPODFN=$P(^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM),U,2) | 
|---|
| 23 | . S REC=^TMP($J,RMPOXITE,"RMPODEMO",RMPODFN),VALMCNT=VALMCNT+1 | 
|---|
| 24 | . S Y=$P(REC,U,3) D DD^%DT S RMPORX=Y,Y=$P(REC,U,4) | 
|---|
| 25 | . I Y'="" D DD^%DT | 
|---|
| 26 | . I Y="" S Y="No Rx!" | 
|---|
| 27 | . S RMPOEXP=Y,RMPOITEM=$P(REC,U,5) | 
|---|
| 28 | . S:RMPOITEM="" RMPOITEM="No Primary!" | 
|---|
| 29 | . ; | 
|---|
| 30 | . S X=$$SETFLD^VALM1($E(VALMCNT_SP,1,$P(VALMDDF("LINE #"),U,3)),"","LINE #") | 
|---|
| 31 | . S X=$$SETFLD^VALM1($P($P(REC,U),","),X,"PATIENT") | 
|---|
| 32 | . S X=$$SETFLD^VALM1($P(REC,U,2),X,"SSN") | 
|---|
| 33 | . S X=$$SETFLD^VALM1(RMPOITEM,X,"PRIMARY ITEM") | 
|---|
| 34 | . S X=$$SETFLD^VALM1(RMPORX,X,"ACTIVATION DATE") | 
|---|
| 35 | . S X=$$SETFLD^VALM1(RMPOEXP,X,"Rx EXPIRY DATE") | 
|---|
| 36 | . D SET^VALM10(VALMCNT,X,RMPODFN) | 
|---|
| 37 | Q | 
|---|
| 38 | ; | 
|---|
| 39 | HELP ; -- help code | 
|---|
| 40 | S X="?" D DISP^XQORM1 W !! | 
|---|
| 41 | Q | 
|---|
| 42 | ; | 
|---|
| 43 | EXIT ; -- exit code | 
|---|
| 44 | D CLEAN^VALM10 | 
|---|
| 45 | Q | 
|---|
| 46 | ; | 
|---|
| 47 | EN02 ; Delete list entry and code deleted in #665 | 
|---|
| 48 | N SEL,LINE | 
|---|
| 49 | ; Select lines to delete | 
|---|
| 50 | S SEL=$$SELN^RMPOLZA("L","Enter lines to delete",VALMCNT) | 
|---|
| 51 | I SEL="^" S ^TMP($J,RMPOXITE,"EXIT")=1 Q  ; quit to menu | 
|---|
| 52 | Q:'SEL | 
|---|
| 53 | N CNT | 
|---|
| 54 | ; for each patient selected remove 'Letter to be sent' from | 
|---|
| 55 | ; Prosthetics Patient File (665) | 
|---|
| 56 | F CNT=1:1 S LINE=$P(SEL,",",CNT) Q:LINE=""  D | 
|---|
| 57 | . S RMPODFN=$O(@VALMAR@("IDX",LINE,"")) | 
|---|
| 58 | . S RMPONAM=$P(^TMP($J,RMPOXITE,"RMPODEMO",RMPODFN),U,1) | 
|---|
| 59 | . S RMPONAM=$E(RMPONAM,1,15) | 
|---|
| 60 | . D UPDLTR^RMPOLZA(RMPODFN,"@") | 
|---|
| 61 | . ; purge work file holding data | 
|---|
| 62 | . K ^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM),^TMP($J,RMPOXITE,"RMPODEMO",RMPODFN) | 
|---|
| 63 | . Q:'$D(RMPOLCD) | 
|---|
| 64 | . I RMPOLCD="A" D | 
|---|
| 65 | . . S $P(^RMPR(665,RMPODFN,"RMPOA"),U,09)=DT,$P(^RMPR(665,RMPODFN,"RMPOA"),U,10)="D" | 
|---|
| 66 | . . S RMDBAT="RMPOXBAT1" | 
|---|
| 67 | . I RMPOLCD="B" D | 
|---|
| 68 | . . S $P(^RMPR(665,RMPODFN,"RMPOA"),U,11)=DT,$P(^RMPR(665,RMPODFN,"RMPOA"),U,12)="D" | 
|---|
| 69 | . . S RMDBAT="RMPOXBAT2" | 
|---|
| 70 | . I RMPOLCD="C" D | 
|---|
| 71 | . . S $P(^RMPR(665,RMPODFN,"RMPOA"),U,13)=DT,$P(^RMPR(665,RMPODFN,"RMPOA"),U,14)="D" | 
|---|
| 72 | . . S RMDBAT="RMPOXBAT3" | 
|---|
| 73 | . S DA=$O(^RMPR(669.9,RMPOXITE,RMDBAT,"B",RMPODFN,0)) | 
|---|
| 74 | . S DIK="^RMPR(669.9,"_RMPOXITE_",",DA(1)=RMPOXITE | 
|---|
| 75 | . S DIK=DIK_""""_RMDBAT_""""_"," D ^DIK | 
|---|
| 76 | K DIK,DA | 
|---|
| 77 | ; | 
|---|
| 78 | G AMEND | 
|---|
| 79 | ; | 
|---|
| 80 | ADD ; Add patient to the list entry. | 
|---|
| 81 | D FULL^VALM1 W @IOF | 
|---|
| 82 | K DIC,RMPODFN | 
|---|
| 83 | S DIC("S")="I '$D(^TMP($J,RMPOXITE,""RMPODEMO"",+Y)),$D(^RMPR(665,+Y,""RMPOA"")),$P(^(""RMPOA""),U,3)="""",$P(^(0),U,2)=RMPOSITE" | 
|---|
| 84 | DIC S DIC="^RMPR(665,",DIC(0)="EAMQN" D ^DIC I Y<0 G AMEND | 
|---|
| 85 | S RMPORX=$P($G(^RMPR(665,+Y,"RMPOB",0)),U,3) G:'$G(RMPORX) DIC | 
|---|
| 86 | I $G(RMPORX),'$D(^RMPR(665,+Y,"RMPOB",RMPORX,0)) W !,"Patient has no current prescription!!" G DIC | 
|---|
| 87 | S RMDEXP=$P(^RMPR(665,+Y,"RMPOB",RMPORX,0),U,3) | 
|---|
| 88 | I RMPORX,RMDEXP,RMDEXP<DT W !,"Rx prescription has expired - Unable to ADD patient to the list !!",! G DIC | 
|---|
| 89 | S RMPODFN=+Y,ADT=$P($G(^RMPR(665,+Y,"RMPOA")),U,2) | 
|---|
| 90 | ; | 
|---|
| 91 | GETPAT ;get patient information(demographics) | 
|---|
| 92 | D EXTRCT^RMPOLZA | 
|---|
| 93 | S RMPONAM=$P(^TMP($J,RMPOXITE,"RMPODEMO",RMPODFN),U,1) | 
|---|
| 94 | ;S RMI="",RMPOLTR=0 F  S RMI=$O(^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMI)) Q:RMI=""  S RMPOLTR=$P(^(RMI),U,1) | 
|---|
| 95 | S RMCOD=$S(RMPOLCD="A":"RMPOXBAT1",RMPOLCD="B":"RMPOXBAT2",RMPOLCD="C":"RMPOXBAT3",1:"") | 
|---|
| 96 | ;add the code to delete the entry in 665 for P and D entries and the dates. | 
|---|
| 97 | Q:$D(^RMPR(669.9,RMPOXITE,RMCOD,"B",RMPODFN)) | 
|---|
| 98 | K DD,DO S DA(1)=RMPOXITE,DIC="^RMPR(669.9,"_RMPOXITE_","_""""_RMCOD_""""_"," | 
|---|
| 99 | S DIC(0)="L",X=RMPODFN,DLAYGO=669.9 D FILE^DICN | 
|---|
| 100 | I '$D(DA) W !,"Patient was not added!!!" Q | 
|---|
| 101 | S RMPOLTR=$G(LTRX("C",RMPOLCD)) | 
|---|
| 102 | S ^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM)=RMPOLTR_"^"_RMPODFN_"^"_DA | 
|---|
| 103 | K DIC,DA,X | 
|---|
| 104 | ; | 
|---|
| 105 | AMEND ; delete listman data and rebuild list from amended work file | 
|---|
| 106 | D CLEAN^VALM10,INIT | 
|---|
| 107 | Q:'$D(@VALMAR)  ; Quit if there are no entries in list | 
|---|
| 108 | S VALMBCK="R" | 
|---|
| 109 | Q | 
|---|